class Piawe::FileParser

Class to read people and rules files and convert them into a PIAWE report

Public Class Methods

new( people_file_name, rules_file_name, report_date_string ) click to toggle source

Create a new FileParser to generate a PIAWE report from files

Parameters

  • people_file_name - Fully qualified path of the people file

  • rules_file_name - Fully qualified path of the rules file

  • report_date_string - Report date to use, in YYYY/MM/DD format

# File lib/piawe/file_parser.rb, line 13
def initialize( people_file_name, rules_file_name, report_date_string )
        @people_file_name = people_file_name
        @rules_file_name = rules_file_name
        @report_date_string = report_date_string
end

Public Instance Methods

report() click to toggle source

Generate a JSON hash containing the PIAWE report

# File lib/piawe/file_parser.rb, line 20
def report
        JSON.pretty_generate( { piawe_report: Piawe.new( people_array, rules_array ).report( report_date ) } )
end

Private Instance Methods

people_array() click to toggle source
# File lib/piawe/file_parser.rb, line 26
def people_array
        people_hash["people"] || (raise ArgumentError, "people hash did not contain a people key!")
end
people_file() click to toggle source
# File lib/piawe/file_parser.rb, line 36
def people_file
        File.exist?(@people_file_name) ? File.new(@people_file_name) : (raise ArgumentError, "Could not find file #{@people_file_name}")
end
people_hash() click to toggle source
# File lib/piawe/file_parser.rb, line 31
def people_hash
        JSON.parse people_file.read
end
report_date() click to toggle source
# File lib/piawe/file_parser.rb, line 56
def report_date
        /^(?<yyyy>\d{4})\/(?<mm>\d{2})\/(?<dd>\d{2})$/ =~ @report_date_string || (raise ArgumentError, "report_date_string was not in YYYY/MM/DD format")
        result = nil
        begin
                result = Date.new(yyyy.to_i, mm.to_i, dd.to_i)
        rescue ArgumentError => ex
                raise ArgumentError, "report_date_string does not represent a valid date: #{@report_date_string}"
        end
        result
end
rules_array() click to toggle source
# File lib/piawe/file_parser.rb, line 41
def rules_array
        rules_hash["rules"] || (raise ArgumentError, "rules hash did not contain a rules key")
end
rules_file() click to toggle source
# File lib/piawe/file_parser.rb, line 51
def rules_file
        File.exist?(@rules_file_name) ? File.new(@rules_file_name) : (raise ArgumentError, "Could not find file #{@rules_file_name}")
end
rules_hash() click to toggle source
# File lib/piawe/file_parser.rb, line 46
def rules_hash
        JSON.parse rules_file.read
end