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