Class: FixedWidthFileValidator::RecordValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/fixed_width_file_validator/validator.rb

Overview

rubocop:enable Style/ClassVars

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#bindingsObject

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