added validation options at the selction level

This commit is contained in:
Gant
2014-07-31 14:38:16 -05:00
parent 815bec0cfc
commit 60c48b982e
2 changed files with 11 additions and 4 deletions

View File

@@ -11,9 +11,9 @@ module RubyMotionQuery
end
# @return [RMQ]
def validates(rule)
def validates(rule, options={})
selected.each do |view|
view.rmq_data.validations << Validation.new(rule)
view.rmq_data.validations << Validation.new(rule, options)
end
self
end
@@ -53,13 +53,15 @@ module RubyMotionQuery
class Validation
def initialize(rule)
def initialize(rule, options={})
@rule = @@validation_methods[rule]
@options = options
raise "RMQ validation error: :#{rule} is not one of the supported validation methods." unless @rule
end
def valid?(data, options={})
@rule.call(data, options)
@options = options.merge(@options)
@rule.call(data, @options)
end
class << self

View File

@@ -128,11 +128,16 @@ describe 'validation' do
vc.rmq.append(UITextField).validates(:digits).data('taco loco').tag(:one)
vc.rmq.append(UITextField).validates(:digits).data('123455').tag(:two)
vc.rmq.append(UITextField).validates(:digits).data('1234').tag(:three)
# selections with options
vc.rmq.append(UITextField).validates(:length, min_length: 2, max_length: 10).data('1234').tag(:four)
vc.rmq.append(UITextField).validates(:length, exact_length: 5).data('1234').tag(:five)
vc.rmq.all.valid?.should == false
vc.rmq(:one).valid?.should == false
vc.rmq(:one, :two).valid?.should == false
vc.rmq(:three, :two).valid?.should == true
vc.rmq(:four).valid?.should == true
vc.rmq(:five).valid?.should == false
end