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