class Scad4r::ResultParser
Public Instance Methods
parse(result)
click to toggle source
# File lib/scad4r/result_parser.rb, line 3 def parse(result) parse_timings(result).merge(parse_messages(result)) end
Protected Instance Methods
extract_echos(result)
click to toggle source
# File lib/scad4r/result_parser.rb, line 26 def extract_echos(result) find_messages(result, "ECHO") end
extract_warnings(result)
click to toggle source
# File lib/scad4r/result_parser.rb, line 22 def extract_warnings(result) find_messages(result, "WARNING") end
parse_messages(result)
click to toggle source
# File lib/scad4r/result_parser.rb, line 8 def parse_messages(result) case result when %r{Parser error in line (\d+): (.*)$} {error: "#{$2} line #{$1}"} when %r{Object isn't} {error: result} when %r{WARNING:}, %r{ECHO:} { warnings: extract_warnings(result), echos: extract_echos(result)} else {} end end
parse_timings(result)
click to toggle source
# File lib/scad4r/result_parser.rb, line 30 def parse_timings(result) {real: extract_time(result, :real), user: extract_time(result, :user), sys: extract_time(result, :sys) } end
Private Instance Methods
extract_time(result, type)
click to toggle source
# File lib/scad4r/result_parser.rb, line 50 def extract_time(result, type) if matching = result.match(/([\d\.]+) #{type}/) matching[1] end end
find_messages(result, message)
click to toggle source
# File lib/scad4r/result_parser.rb, line 39 def find_messages(result, message) found_messages = [] message_regexp = /^#{message}: ([^\n]*)$/m scanner = StringScanner.new(result) while message = scanner.scan_until(message_regexp) found_messages << scanner.matched.match(message_regexp)[1] end found_messages end