def process_markdown_inside_elements(doc)
elts = []
@fragment.each_element('//*[@markdown]') do |e|
elts << e
end
d = @fragment.children.first
if d && HTML_INLINE_ELEMS.include?(first_node_name)
elts << d unless d.attributes['markdown']
elts += span_descendents(d)
end
elts.each do |e|
how = e.attributes['markdown']
e.attributes.delete('markdown')
next if "0" == how
parse_blocks = (how == 'block') || BLOCK_TAGS.include?(e.name)
e.texts.each do |original_text|
s = MaRuKu::Out::HTML.escapeHTML(original_text.value)
unless s.strip.empty?
parsed = parse_blocks ? doc.parse_text_as_markdown(s) : doc.parse_span(s)
padding = /\A(\s*).*?(\s*)\z/.match(s)
parsed = [padding[1]] + parsed + [padding[2]] if padding
el = doc.md_el(:dummy, parsed)
new_html = "<dummy>"
el.children_to_html.each do |x|
new_html << x.to_s
end
new_html << "</dummy>"
newdoc = REXML::Document.new(new_html).root
p = original_text.parent
newdoc.children.each do |c|
p.insert_before(original_text, c)
end
p.delete(original_text)
end
end
end
end