X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/5368f9f9b45f47a57bd9caa3debaa834e087b61a..75042a04a1e2dec2c821de14237a6b4d5a95382a:/config/initializers/sanitize.rb?ds=sidebyside diff --git a/config/initializers/sanitize.rb b/config/initializers/sanitize.rb index 6f2e30852..c9d6a5dba 100644 --- a/config/initializers/sanitize.rb +++ b/config/initializers/sanitize.rb @@ -1,8 +1,28 @@ -Sanitize::Config::OSM = Sanitize::Config::RELAXED.dup - -Sanitize::Config::OSM[:elements] -= %w[div style] -Sanitize::Config::OSM[:add_attributes] = { "a" => { "rel" => "nofollow noopener noreferrer" } } -Sanitize::Config::OSM[:remove_contents] = %w[script style] -Sanitize::Config::OSM[:transformers] = lambda do |env| - env[:node].add_class("table table-sm w-auto") if env[:node_name] == "table" -end +Sanitize::Config::OSM = Sanitize::Config.merge( + Sanitize::Config::RELAXED, + :elements => Sanitize::Config::RELAXED[:elements] - %w[div style], + :remove_contents => %w[script style], + :transformers => lambda do |env| + style = env[:node]["style"] || "" + + env[:node].remove_class + env[:node].remove_attribute("style") + + env[:node].add_class("table table-sm w-auto") if env[:node_name] == "table" + + case style + when /\btext-align:\s+left\b/ + env[:node].add_class("text-start") + when /\btext-align:\s+center\b/ + env[:node].add_class("text-center") + when /\btext-align:\s+right\b/ + env[:node].add_class("text-end") + end + + if env[:node_name] == "a" + rel = env[:node]["rel"] || "" + + env[:node]["rel"] = rel.split.select { |r| r == "me" }.append("nofollow", "noopener", "noreferrer").sort.join(" ") + end + end +)