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.
This commit is contained in:
Tom Hughes 2023-01-09 11:10:11 +00:00
parent fbbcbf5c63
commit f42a7a2d8d

View 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"] || ""