Parses a string that has been previously dumped by ExampleStatusDumper. Note that this parser is a bit naive in that it does a simple split on “n” and “ | ”, with no concern for handling escaping. For now, that's OK because the values we plan to persist (example id, status, and perhaps example duration) are highly unlikely to contain “n” or “ | ” – after all, who puts those in file names? @private
# File lib/rspec/core/example_status_persister.rb, line 212 def initialize(string) @header_line, _, *@row_lines = string.lines.to_a end
# File lib/rspec/core/example_status_persister.rb, line 208 def self.parse(string) new(string).parse end
# File lib/rspec/core/example_status_persister.rb, line 216 def parse @row_lines.map { |line| parse_row(line) } end
# File lib/rspec/core/example_status_persister.rb, line 226 def headers @headers ||= split_line(@header_line).grep(/\S/).map(&:to_sym) end
# File lib/rspec/core/example_status_persister.rb, line 222 def parse_row(line) Hash[headers.zip(split_line(line))] end
# File lib/rspec/core/example_status_persister.rb, line 230 def split_line(line) line.split(/\s+\|\s+?/, -1) end