# frozen_string_literal: true module PdfTextToHtml module_function def call(page_text) output = +'' current_list = nil page_text.split(/\r?\n/).each do |line| stripped = line.strip if stripped.empty? output << close_list(current_list) if current_list current_list = nil next end current_list = process_line(stripped, output, current_list) end output << close_list(current_list) output end def process_line(stripped, output, current_list) if numbered_heading?(stripped) output << close_list(current_list) output << "

#{ERB::Util.html_escape(stripped)}

" nil elsif all_caps_heading?(stripped) output << close_list(current_list) output << "

#{ERB::Util.html_escape(stripped)}

" nil elsif (match = stripped.match(/\A[•*-]\s+(.+)/)) output << close_list(current_list) << '' else '' end end end