]> git.openstreetmap.org Git - rails.git/commitdiff
Make sanitize convert text alignment styles to bootstrap classes
authorTom Hughes <tom@compton.nu>
Mon, 9 Jan 2023 11:10:11 +0000 (11:10 +0000)
committerTom Hughes <tom@compton.nu>
Mon, 9 Jan 2023 11:10:11 +0000 (11:10 +0000)
The kramdown converter for markdown uses inline styles for table
column alignment which gets lost when we strip the styles so add
bootstrap classes to replace it.

config/initializers/sanitize.rb

index a6cce19a96633437469f0345c07a350825345511..c9d6a5dbac75d48b693e7b1927c19b1c9a297f30 100644 (file)
@@ -3,10 +3,22 @@ Sanitize::Config::OSM = Sanitize::Config.merge(
   :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].kwattr_remove("style", nil)
+    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"] || ""