From f42a7a2d8dd507a3746a1e2de91deda9614cf807 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Mon, 9 Jan 2023 11:10:11 +0000 Subject: [PATCH] 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. --- config/initializers/sanitize.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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"] || "" -- 2.43.2