class LogfileInterval::Logfile

Constants

ORDER_VALID_VALUES

Attributes

filename[R]
parser[R]

Public Class Methods

new(filename, parser, order = :desc) click to toggle source
# File lib/logfile_interval/logfile.rb, line 7
def initialize(filename, parser, order = :desc)
  @filename = filename
  @parser   = parser
  @order    = order

  raise ArgumentError, "invalid order value: #{@order}" unless ORDER_VALID_VALUES.include?(@order.to_sym)
end

Public Instance Methods

each()
Alias for: each_parsed_line
each_line() { |l| ... } click to toggle source
# File lib/logfile_interval/logfile.rb, line 30
def each_line
  return unless exist?
  return enum_for(:each_line) unless block_given?

  case @order
  when :asc
    each_line_ascending { |l| yield l }
  when :desc
    each_line_descending { |l| yield l }
  end
end
each_parsed_line() { |record| ... } click to toggle source
# File lib/logfile_interval/logfile.rb, line 42
def each_parsed_line
  return enum_for(:each_parsed_line) unless block_given?
  each_line do |line|
    record = parser.create_record(line)
    yield record if record && !record.skip?
  end
end
Also aliased as: each
exist?() click to toggle source
# File lib/logfile_interval/logfile.rb, line 15
def exist?
  filename && File.exist?(@filename)
end
first()
Alias for: first_parsed_line
first_parsed_line() click to toggle source
# File lib/logfile_interval/logfile.rb, line 51
def first_parsed_line
  each_parsed_line.first
end
Also aliased as: first
first_timestamp() click to toggle source
# File lib/logfile_interval/logfile.rb, line 19
def first_timestamp
  return unless exist?
  File.open(@filename) do |f|
    while line = f.gets
      if record = parser.create_record(line)
        return record.time
      end
    end
  end
end

Private Instance Methods

each_line_ascending() { |chomp| ... } click to toggle source
# File lib/logfile_interval/logfile.rb, line 65
def each_line_ascending
  File.open(@filename) do |f|
    f.each_line do |line|
      yield line.chomp
    end
  end
end
each_line_descending() { |chomp| ... } click to toggle source
# File lib/logfile_interval/logfile.rb, line 57
def each_line_descending
  f = Util::FileBackward.new(@filename)
  while(line = f.gets)
    yield line.chomp
  end
  f.close
end