openstreetmap-website/config/initializers/sanitize.rb
Tom Hughes f42a7a2d8d 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.
2023-01-09 11:10:11 +00:00

28 lines
866 B
Ruby

Sanitize::Config::OSM = Sanitize::Config.merge(
Sanitize::Config::RELAXED,
: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].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"] || ""
env[:node]["rel"] = rel.split.select { |r| r == "me" }.append("nofollow", "noopener", "noreferrer").sort.join(" ")
end
end
)