class LIVR::Rules::Meta::ListOf

Public Class Methods

new(*rules) click to toggle source
# File lib/livr/rules/meta.rb, line 53
def initialize(*rules)
  livr = { field: rules.flatten }
  @validator = Validator.new(livr).prepare
end

Public Instance Methods

call(values, user_data, field_results) click to toggle source
# File lib/livr/rules/meta.rb, line 58
def call(values, user_data, field_results)
  return if is_no_value(values)
  return 'FORMAT_ERROR' unless values.is_a?(Array)

  results = []
  errors = []
  has_errors = false

  values.each do |value|
    result = @validator.validate(field: value)

    if result
      results << result[:field]
      errors << nil
    else
      has_errors = true
      errors << @validator.get_errors[:field]
      results << nil
    end
  end

  if has_errors
    return errors
  else
    field_results << results
    return
  end
end