thoughtbot--shoulda-matchers/spec/warnings_spy/reader.rb

54 lines
950 B
Ruby

class WarningsSpy
class Reader
attr_reader :warning_groups
def initialize(filesystem)
@warnings_file = filesystem.warnings_file
@current_group = []
@warning_groups = []
end
def read
warnings_file.rewind
warnings_file.each_line do |line|
process_line(line)
end
add_group(current_group)
end
protected
attr_reader :warnings_file, :current_group
private
def process_line(line)
if start_of_group?(line)
add_group(current_group)
@current_group = []
end
current_group << line
end
def start_of_group?(line)
line =~ /^\S/
end
def add_group(group)
unless group.empty? || group_already_added?(group)
warning_groups << group
end
end
def group_already_added?(group_to_be_added)
warning_groups.any? do |group|
group == group_to_be_added
end
end
end
end