]> git.openstreetmap.org Git - rails.git/blobdiff - config/initializers/sanitize.rb
Merge remote-tracking branch 'upstream/pull/5386'
[rails.git] / config / initializers / sanitize.rb
index b98523805a3e188806dd0eed7aaacc3d5449a6e2..c9d6a5dbac75d48b693e7b1927c19b1c9a297f30 100644 (file)
@@ -1,10 +1,28 @@
 Sanitize::Config::OSM = Sanitize::Config.merge(
   Sanitize::Config::RELAXED,
   :elements => Sanitize::Config::RELAXED[:elements] - %w[div style],
 Sanitize::Config::OSM = Sanitize::Config.merge(
   Sanitize::Config::RELAXED,
   :elements => Sanitize::Config::RELAXED[:elements] - %w[div style],
-  :add_attributes => { "a" => { "rel" => "nofollow noopener noreferrer" } },
   :remove_contents => %w[script style],
   :transformers => lambda do |env|
   :remove_contents => %w[script style],
   :transformers => lambda do |env|
+    style = env[:node]["style"] || ""
+
     env[:node].remove_class
     env[:node].remove_class
+    env[:node].remove_attribute("style")
+
     env[:node].add_class("table table-sm w-auto") if env[:node_name] == "table"
     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
 )
   end
 )