class Report # ------------------------------------------------------------------------------------ private # ------------------------------------------------------------------------------------ def state_arguments() puts puts "-----------------------------------------------------------------" puts " directory to scan = #{@args[0]}" puts " obsolete_uris_file = #{@args[1]}" puts " known exceptions file = #{@args[2]}" puts " complete = #{!@args[3].nil?}" puts "-----------------------------------------------------------------" puts end def file_summary() puts " scanned #{@file_count} files" @extensions_count.sort.each do |pair| puts " #{pair[0]} #{pair[1]}" end puts "-----------------------------------------------------------------" puts end def collate_and_list_events() hash = Hash.new{|h, k| []} @events.each do |event| hash[event.path] = hash[event.path] << event end # puts "FLAT: #{hash.to_a.flatten}" hash.sort.each do |path, events| puts "#{path}" events.sort{|a, b| a.line_number <=> b.line_number }.each do |e| puts " #{e.line_number} #{e.line}" puts " #{e.is_localname ? "Localname" : "URI"} #{e.string}" end puts "--------------------" end end def list_events() @events.each do |event| puts "Event: #{event}" end end # ------------------------------------------------------------------------------------ public # ------------------------------------------------------------------------------------ def initialize(args) @args = args; @file_count = 0 @extensions_count = Hash.new(0) @events = [] end def register_file(path) @file_count += 1 @extensions_count[File.extname(path)] += 1 end def add_event(event) @events << event end def report() state_arguments() file_summary() # list_events() collate_and_list_events() end end