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