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 = Kramdown::Utils::StringScanner.new(raw) result = [] until 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]&.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