class Parser

Parses log information

Attributes

formatter[R]
log_reader[R]
page_views[R]

Public Class Methods

new(log_reader: {}, quiet: false, verbose: false) click to toggle source
# File lib/log_parser/parser.rb, line 9
def initialize(log_reader: {}, quiet: false, verbose: false)
  @page_views = {}
  @log_reader = log_reader
  @formatter = Formatter.new
  @warning_handler = nil
end

Public Instance Methods

count_views(logs: log_reader.read_log) click to toggle source
# File lib/log_parser/parser.rb, line 22
def count_views(logs: log_reader.read_log)
  logs.each do |page, ip_addresses|
    @page_views[page] = { visits: ip_addresses.length,
                          unique_views: ip_addresses.uniq.length }
  end
end
formatted_full_warnings(add_color: false) click to toggle source
# File lib/log_parser/parser.rb, line 51
def formatted_full_warnings(add_color: false)
  formatter.format_full_warnings(warnings: warnings, add_color: add_color)
end
formatted_log_info(add_color: false) click to toggle source
# File lib/log_parser/parser.rb, line 42
def formatted_log_info(add_color: false)
  formatter.format_log_info(log_info: log_info, add_color: add_color)
end
formatted_minimal_warnings(add_color: false) click to toggle source
# File lib/log_parser/parser.rb, line 55
def formatted_minimal_warnings(add_color: false)
  formatter.format_minimal_warnings(warnings: warnings, add_color: add_color)
end
formatted_normal_warnings(add_color: false) click to toggle source
# File lib/log_parser/parser.rb, line 59
def formatted_normal_warnings(add_color: false)
  formatter.format_normal_warnings(warnings: warnings, add_color: add_color)
end
formatted_page_views(view_type:, add_color: false) click to toggle source
# File lib/log_parser/parser.rb, line 46
def formatted_page_views(view_type:, add_color: false)
  formatter.format_info(view_info: view_info(view_type: view_type),
                        add_color: add_color)
end
hash_format(verbose:) click to toggle source
# File lib/log_parser/parser.rb, line 63
def hash_format(verbose:)
  output = {}
  output['filesRead'] = log_info[:files_read]
  output['logsRead'] = log_info[:logs_read]
  output['logsAdded'] = log_info[:logs_added]
  output['pageVisits'] = {}
  output['uniquePageViews'] = {}
  page_views.each do |page, views|
    output['pageVisits'][page] = views[:visits]
    output['uniquePageViews'][page] = views[:unique_views]
  end
  if verbose
    warning_summary = warnings.map do |type, info|
      { WARNINGS_JSON[type] => {
        'numberWarnings': info[:warnings].length,
        'warnings': info[:warnings]
      } }
    end
  else
    warning_summary = warnings.map do |type, info|
      if info[:important]
        { WARNINGS_JSON[type] => {
          'numberWarnings': info[:warnings].length,
          'messages': info[:warnings]
        } }
      else
        { WARNINGS_JSON[type] => {
          'numberWarnings': info[:warnings].length
        } }
      end
    end
  end
  output['warnings'] = warning_summary
  output
end
log_info() click to toggle source
# File lib/log_parser/parser.rb, line 35
def log_info
  { files_read: (log_reader == {} ? [] : log_reader.files_read),
    logs_read: (log_reader == {} ? 0 : log_reader.logs_read),
    logs_added: (log_reader == {} ? 0 : log_reader.logs_added),
    warnings: (log_reader == {} ? [] :  log_reader.warnings) }
end
view_info(view_type:) click to toggle source
# File lib/log_parser/parser.rb, line 29
def view_info(view_type:)
  { title: INFO_TITLES[view_type],
    descriptor: DESCRIPTORS[view_type],
    info: @page_views.map { |page, views| [page, views[view_type]] } }
end
warnings() click to toggle source
# File lib/log_parser/parser.rb, line 16
def warnings
  WarningHandler.new(warnings: log_info[:warnings])
                .store_warning_info(warning_info: LOG_WARNINGS)
                .warnings_summary
end