Class: FactoryTrace::TraceReader

Inherits:
Object
  • Object
show all
Defined in:
lib/factory_trace/readers/trace_reader.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(io, config: Configuration.new) ⇒ TraceReader

Returns a new instance of TraceReader.



12
13
14
15
# File 'lib/factory_trace/readers/trace_reader.rb', line 12

def initialize(io, config: Configuration.new)
  @io = io
  @config = config
end

Class Method Details

.read_from_files(*file_names, config: Configuration.new) ⇒ Object



5
6
7
8
9
10
# File 'lib/factory_trace/readers/trace_reader.rb', line 5

def self.read_from_files(*file_names, config: Configuration.new)
  file_names.reduce({}) do |hash, file_name|
    reader = new(File.open(file_name, 'r'), config: config)
    hash.merge(reader.read) { |_key, v1, v2| v1 | v2 }
  end
end

Instance Method Details

#readObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/factory_trace/readers/trace_reader.rb', line 17

def read
  @data ||= {}

  io.each_line do |line|
    factory, *traits = line.strip.split(',').map(&:to_sym)

    if factory
      @data[factory] ||= Set.new
      @data[factory] |= traits
    end
  end

  @data
end