class RSpec::Core::ExampleStatusParser
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
Public Class Methods
new(string)
click to toggle source
# File lib/rspec/core/example_status_persister.rb, line 212 def initialize(string) @header_line, _, *@row_lines = string.lines.to_a end
parse(string)
click to toggle source
# File lib/rspec/core/example_status_persister.rb, line 208 def self.parse(string) new(string).parse end
Public Instance Methods
parse()
click to toggle source
# File lib/rspec/core/example_status_persister.rb, line 216 def parse @row_lines.map { |line| parse_row(line) } end
Private Instance Methods
headers()
click to toggle source
# File lib/rspec/core/example_status_persister.rb, line 226 def headers @headers ||= split_line(@header_line).grep(/\S/).map(&:to_sym) end
parse_row(line)
click to toggle source
# File lib/rspec/core/example_status_persister.rb, line 222 def parse_row(line) Hash[headers.zip(split_line(line))] end
split_line(line)
click to toggle source
# File lib/rspec/core/example_status_persister.rb, line 230 def split_line(line) line.split(/\s+\|\s+?/, -1) end