Skip to content

Instantly share code, notes, and snippets.

@croaker
Forked from mironov/span_style_transformer.rb
Created February 9, 2010 12:11
Show Gist options
  • Save croaker/299147 to your computer and use it in GitHub Desktop.
Save croaker/299147 to your computer and use it in GitHub Desktop.
# Transforms the styles to HTML-Tags
styled_span_to_formatting_tags = lambda do |env|
original_node = env[:node]
wrap_with_tags = []
if original_node.name == "span" && original_node.has_attribute?("style")
css_rules = original_node.attribute("style").value.split(";")
wrap_with_tags = css_rules.collect do |css_rule|
case css_rule.strip
when /^text-decoration:\s*underline$/ then "u"
when /^font-style:\s*italic$/ then "i"
when /^font-weight:\s*bold$/ then "b"
end
end
wrap_with_tags.uniq!
end
unless wrap_with_tags.empty?
wrapper_nodes = wrap_with_tags.collect { |tag| Nokogiri::XML::Node.new(tag, original_node.document) }
wrapper_nodes.last.inner_html = original_node.inner_html
replacement = wrapper_nodes.shift
wrapper_nodes.each { |wrapper_node| replacement.add_child(wrapper_node) }
end
{ :node => replacement || original_node }
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment