Class: LogfileInterval::LogfileSet

Inherits:
Object
  • Object
show all
Defined in:
lib/logfile_interval/logfile_set.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filenames, parser) ⇒ LogfileSet

Returns a new instance of LogfileSet.



5
6
7
8
# File 'lib/logfile_interval/logfile_set.rb', line 5

def initialize(filenames, parser)
  @parser    = parser
  @filenames = filenames
end

Instance Attribute Details

#parserObject (readonly)

Returns the value of attribute parser.



3
4
5
# File 'lib/logfile_interval/logfile_set.rb', line 3

def parser
  @parser
end

Instance Method Details

#each_lineObject



34
35
36
37
38
39
40
41
42
43
# File 'lib/logfile_interval/logfile_set.rb', line 34

def each_line
  return enum_for(:each_line) unless block_given?

  ordered_filenames.each do |filename|
    tfile = Logfile.new(filename, parser)
    tfile.each_line do |line|
      yield line
    end
  end
end

#each_parsed_lineObject



23
24
25
26
27
28
29
30
31
32
# File 'lib/logfile_interval/logfile_set.rb', line 23

def each_parsed_line
  return enum_for(:each_parsed_line) unless block_given?

  ordered_filenames.each do |filename|
    tfile = Logfile.new(filename, parser)
    tfile.each_parsed_line do |record|
      yield record
    end
  end
end

#existing_filenamesObject



10
11
12
# File 'lib/logfile_interval/logfile_set.rb', line 10

def existing_filenames
  @existing_filenames ||= @filenames.select { |f| File.exist?(f) }
end

#last_recordObject



45
46
47
48
49
# File 'lib/logfile_interval/logfile_set.rb', line 45

def last_record
  each_parsed_line do |record|
    return record
  end
end

#ordered_filenamesObject



14
15
16
17
18
19
20
21
# File 'lib/logfile_interval/logfile_set.rb', line 14

def ordered_filenames
  time_for_file = existing_filenames.inject({}) do |h, filename|
    file = Logfile.new(filename, parser)
    h[filename] = file.first_timestamp
    h
  end
  time_for_file.to_a.sort_by { |arr| arr[1] }.map { |arr| arr[0] }.reverse
end