lib/csv2hash/validator.rb in csv2hash-0.5.0 vs lib/csv2hash/validator.rb in csv2hash-0.6.0
- old
+ new
@@ -1,46 +1,47 @@
module Csv2hash
module Validator
def validate_rules y=nil
- definition.rules.each do |rule|
- _y, x = position rule.fetch(:position)
+ # binding.pry
+ definition.cells.each do |cell|
+ _y, x = position cell.rules.fetch(:position)
begin
- validate_cell (_y||y), x, rule
+ validate_cell (_y||y), x, cell
rescue => e
- self.errors << { y: (_y||y), x: x, message: e.message, key: rule.fetch(:key) }
+ self.errors << { y: (_y||y), x: x, message: e.message, key: cell.rules.fetch(:key) }
raise if break_on_failure
end
end
end
def valid?() self.errors.empty?; end
protected
- def validate_cell y, x, rule
+ def validate_cell y, x, cell
value = data_source[y][x] rescue nil
begin
- raise unless value unless rule.fetch :allow_blank
- if (extra_validator = rule.fetch :extra_validator) && extra_validator.kind_of?(Csv2hash::ExtraValidator)
- raise unless extra_validator.valid? rule, value
+ raise unless value unless cell.rules.fetch :allow_blank
+ if (extra_validator = cell.rules.fetch :extra_validator) && extra_validator.kind_of?(Csv2hash::ExtraValidator)
+ raise unless extra_validator.valid? cell.rules, value
else
- if value && (values = rule.fetch :values)
+ if value && (values = cell.rules.fetch :values)
if values.class == Range
raise unless values.include?(value.to_f)
else
raise unless values.include?(value)
end
end
end
rescue => e
- raise message(rule, y, x)
+ raise message(cell, y, x)
end
end
- def message rule, y, x
- msg = rule.fetch(:message).tap do |msg|
- rule.each { |key, value| msg.gsub!(":#{key.to_s}", value.to_s) unless key == :position }
+ def message cell, y, x
+ msg = cell.rules.fetch(:message).tap do |msg|
+ cell.rules.each { |key, value| msg.gsub!(":#{key.to_s}", value.to_s) unless key == :position }
end
msg.gsub ':position', "[#{y}, #{x}]"
end
end