class Kramdown::Parser::Html::ElementConverter
def process_text(raw, preserve = false)
Process the HTML text +raw+: compress whitespace (if +preserve+ is +false+) and convert
def process_text(raw, preserve = false) raw.gsub!(/\s+/, ' ') unless preserve src = StringScanner.new(raw) result = [] while !src.eos? if tmp = src.scan_until(/(?=#{HTML_ENTITY_RE})/) result << Element.new(:text, tmp) src.scan(HTML_ENTITY_RE) val = src[1] || (src[2] && src[2].to_i) || src[3].hex result << if %w{lsquo rsquo ldquo rdquo}.include?(val) Element.new(:smart_quote, val.intern) elsif %w{mdash ndash hellip laquo raquo}.include?(val) Element.new(:typographic_sym, val.intern) else begin Element.new(:entity, entity(val), nil, :original => src.matched) rescue ::Kramdown::Error src.pos -= src.matched_size - 1 Element.new(:entity, ::Kramdown::Utils::Entities.entity('amp')) end end else result << Element.new(:text, src.rest) src.terminate end end result end