2024-05-17 09:09:32 -04:00
|
|
|
class Import::Field
|
|
|
|
def self.iso_date_validator(value)
|
|
|
|
Date.iso8601(value)
|
|
|
|
true
|
|
|
|
rescue
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.bigdecimal_validator(value)
|
|
|
|
BigDecimal(value)
|
|
|
|
true
|
|
|
|
rescue
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
|
|
|
attr_reader :key, :label, :validator
|
|
|
|
|
2024-06-11 18:46:44 -04:00
|
|
|
def initialize(key:, label:, is_optional: false, validator: nil)
|
2024-05-17 09:09:32 -04:00
|
|
|
@key = key.to_s
|
|
|
|
@label = label
|
2024-06-11 18:46:44 -04:00
|
|
|
@is_optional = is_optional
|
2024-05-17 09:09:32 -04:00
|
|
|
@validator = validator
|
|
|
|
end
|
|
|
|
|
2024-06-11 18:46:44 -04:00
|
|
|
def optional?
|
|
|
|
@is_optional
|
|
|
|
end
|
|
|
|
|
2024-05-17 09:09:32 -04:00
|
|
|
def define_validator(validator = nil, &block)
|
|
|
|
@validator = validator || block
|
|
|
|
end
|
|
|
|
|
|
|
|
def validate(value)
|
|
|
|
return true if validator.nil?
|
|
|
|
validator.call(value)
|
|
|
|
end
|
|
|
|
end
|