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~954 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/f42a7a2d8dd507a3746a1e2de91deda9614cf807?hp=fbbcbf5c63cb5fe31048c968334a754834c8a321 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"] || ""