class AWS::Record::CountValidator

def validate_attribute record, attribute_name, value

def validate_attribute record, attribute_name, value
  count = case value
  when nil then 0
  when String then 1
  when Enumerable then value.count
  else 1
  end
  if exact = options[:exactly]
    unless count == exact
      record.errors.add(attribute_name, wrong_number(exact, count))
    end
  end
  if within = options[:within]
    if count < within.first
      record.errors.add(attribute_name, too_few(within.first, count))
    end
    if count > within.last
      record.errors.add(attribute_name, too_many(within.last, count))
    end
  end
  if min = options[:minimum]
    if count < min
      record.errors.add(attribute_name, too_few(min, count))
    end
  end
  if max = options[:maximum]
    if count > max
      record.errors.add(attribute_name, too_many(max, count))
    end
  end
end