From: Tom Hughes Date: Mon, 9 Jan 2023 11:10:11 +0000 (+0000) Subject: Make sanitize convert text alignment styles to bootstrap classes X-Git-Tag: live~823 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/f42a7a2d8dd507a3746a1e2de91deda9614cf807 Make sanitize convert text alignment styles to bootstrap classes 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. --- diff --git a/config/initializers/sanitize.rb b/config/initializers/sanitize.rb index a6cce19a9..c9d6a5dba 100644 --- a/config/initializers/sanitize.rb +++ b/config/initializers/sanitize.rb @@ -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"] || ""