Class: FixedWidthFileValidator::RecordValidator
- Inherits:
-
Object
- Object
- FixedWidthFileValidator::RecordValidator
- Defined in:
- lib/fixed_width_file_validator/validator.rb
Overview
rubocop:enable Style/ClassVars
Instance Attribute Summary collapse
-
#bindings ⇒ Object
Returns the value of attribute bindings.
Instance Method Summary collapse
- #each_error(file_reader) ⇒ Object
- #find_all_errors(file_reader) ⇒ Object
-
#initialize(fields, unique_field_list = nil, reader = nil) ⇒ RecordValidator
constructor
A new instance of RecordValidator.
- #validate(record) ⇒ Object
Constructor Details
#initialize(fields, unique_field_list = nil, reader = nil) ⇒ RecordValidator
Returns a new instance of RecordValidator.
88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/fixed_width_file_validator/validator.rb', line 88 def initialize(fields, unique_field_list = nil, reader = nil) @field_validators = {} @bindings = {} non_unique_values = reader.find_non_unique_values(unique_field_list) fields.each do |field_name, conf| pos = conf[:start_column] width = conf[:end_column] - pos + 1 @field_validators[field_name] = FieldValidator.new(field_name, pos, width, fields[field_name][:validations]) @field_validators[field_name].non_unique_values = non_unique_values[field_name] if unique_field_list.include?(field_name) end end |
Instance Attribute Details
#bindings ⇒ Object
Returns the value of attribute bindings.
86 87 88 |
# File 'lib/fixed_width_file_validator/validator.rb', line 86 def bindings @bindings end |
Instance Method Details
#each_error(file_reader) ⇒ Object
109 110 111 112 113 114 115 116 |
# File 'lib/fixed_width_file_validator/validator.rb', line 109 def each_error(file_reader) file_reader.each_record do |record| errors = validate(record) errors.each do |err| yield err end end end |
#find_all_errors(file_reader) ⇒ Object
118 119 120 121 122 123 124 |
# File 'lib/fixed_width_file_validator/validator.rb', line 118 def find_all_errors(file_reader) errors = [] each_error(file_reader) do |err| errors << err end errors end |
#validate(record) ⇒ Object
102 103 104 105 106 107 |
# File 'lib/fixed_width_file_validator/validator.rb', line 102 def validate(record) errors = @field_validators.collect do |field, validator| validator.validate(record, field, @bindings) end errors.reject(&:empty?).flatten end |