class Kramdown::Parser::Html::ElementConverter
def convert_code(el)
def convert_code(el) raw = '' extract_text(el, raw) result = process_text(raw, true) begin str = result.inject('') do |mem, c| if c.type == :text mem << c.value elsif c.type == :entity if [60, 62, 34, 38].include?(c.value.code_point) mem << c.value.code_point.chr else mem << c.value.char end elsif c.type == :smart_quote || c.type == :typographic_sym mem << entity(c.value.to_s).char else raise "Bug - please report" end end result.clear result << Element.new(:text, str) rescue end if result.length > 1 || result.first.type != :text process_html_element(el, false, true) else if el.value == 'code' set_basics(el, :codespan) el.attr['class'].gsub!(/\s+\bhighlighter-\w+\b|\bhighlighter-\w+\b\s*/, '') if el.attr['class'] else set_basics(el, :codeblock) if el.children.size == 1 && el.children.first.value == 'code' value = (el.children.first.attr['class'] || '').scan(/\blanguage-\w[\w-]*\b/).first el.attr['class'] = "#{value} #{el.attr['class']}".rstrip if value end end el.value = result.first.value el.children.clear end end