class MidasTouch::InputGroup

Attributes

filters[RW]
inputs[RW]
validations[RW]

Public Class Methods

new() click to toggle source
# File lib/midas-touch/input_group.rb, line 10
def initialize
  @inputs      = Array.new
  @filters     = Array.new
  @validations = Array.new
  @failures    = Array.new
end

Public Instance Methods

[](name) click to toggle source
# File lib/midas-touch/input_group.rb, line 22
def [](name)
  input = input(name)
  input.value if input
end
each(&block) click to toggle source
# File lib/midas-touch/input_group.rb, line 68
def each(&block)
  to_h.each(&block)
end
error_on?(name) click to toggle source
# File lib/midas-touch/input_group.rb, line 54
def error_on?(name)
  @failures.include?(input(name))
end
fields() click to toggle source
# File lib/midas-touch/input_group.rb, line 34
def fields
  @inputs.map(&:name)
end
Also aliased as: keys
filter!() click to toggle source
# File lib/midas-touch/input_group.rb, line 27
def filter!
  @inputs.each do |input|
    filters.each { |filter| input.value = filter.call(input.value) }
    input.filter!
  end
end
input(name) click to toggle source
# File lib/midas-touch/input_group.rb, line 17
def input(name)
  name = name.to_sym
  @inputs.find { |input| input.name == name }
end
invalidate_input(input_name) click to toggle source
# File lib/midas-touch/input_group.rb, line 58
def invalidate_input(input_name)
  input = input(input_name)
  input.invalidate!
  @failures << input
end
keys()
Alias for: fields
to_h() click to toggle source
# File lib/midas-touch/input_group.rb, line 64
def to_h
  Hash[@inputs.map { |input| [input.name, input.value] }]
end
valid?() click to toggle source
# File lib/midas-touch/input_group.rb, line 39
def valid?
  @failures = Array.new
  @inputs.each do |input|
    validations.each do |rule|
      if !rule.call(input.value)
        @failures << input
        break
      end
    end
    @failures << input unless input.valid?
  end
  @failures.uniq!
  @failures.empty?
end