Method: FormKeeper::Rule::Criteria::Field#initialize

Defined in:
lib/formkeeper.rb

#initialize(criteria) ⇒ Field

Returns a new instance of Field.



516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
# File 'lib/formkeeper.rb', line 516

def initialize(criteria)
  if criteria.has_key?(:default)
    default = criteria.delete :default
    @default = default.empty? ? nil : default
  else
    @default = nil
  end
  if criteria.has_key?(:filters)
    filters = criteria.delete :filters
    case filters
    when Array
      @filters = filters.collect(&:to_sym)
    when String
      @filters = [filters.to_sym]
    when Symbol
      @filters = [filters]
    else
      raise ArgumentError.new 'invalid :filters'
    end
  else
    @filters = []
  end

  if criteria.has_key?(:present)
    if not @default.nil?
      raise ArgumentError.new "don't set both :default and :present at once"
    end
    present = criteria.delete :present
    @present = !!present
  else
    @present = false
  end
  @constraints = criteria
end