Method: TexLogParser::PrefixedMultiLinePattern#read
- Defined in:
- lib/tex_log_parser/patterns/prefixed_multi_line_pattern.rb
permalink #read(lines) ⇒ Array<(Message, Int)>
Reads a message from the given lines.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/tex_log_parser/patterns/prefixed_multi_line_pattern.rb', line 23 def read(lines) # @type [Message] msg # @type [Int] consumed msg, consumed = super(lines) case @start_match[3] when 'Error' msg.level = :error when 'Warning' msg.level = :warning when 'Info', 'Message' msg.level = :info else # TODO: abort? Logger.debug 'Unhandled message type!' end # source file from scope, parser does it # BROKEN_BY_LINEBREAKS # TODO: may be split across lines --> remove whitespace before extracting suffix_match = /on input line\s+(\d+)(?:\.\s*)?\z/.match(msg.) unless suffix_match.nil? line = suffix_match[1].to_i msg.source_lines = { from: line, to: line } end # Remove uninformative line prefixes (e.g. `(tocbasic)`) unless @start_match[2].nil? msg..gsub!(@ending[:pattern][@start_match], ' ' * (@start_match[2].length + 2)) end [msg, consumed] end |