Class: Valligator
- Inherits:
-
Object
- Object
- Valligator
- Defined in:
- lib/valligator.rb,
lib/valligator_helper.rb
Defined Under Namespace
Modules: Helper Classes: ValidationError
Constant Summary collapse
- VERSION =
File.read(Pathname(__FILE__).dirname.join('../VERSION')).strip
- INFINITY =
1/0.0
- Error =
Class.new(StandardError)
Instance Attribute Summary collapse
-
#names ⇒ Object
readonly
Returns the value of attribute names.
-
#stack ⇒ Object
readonly
Returns the value of attribute stack.
-
#testees ⇒ Object
readonly
Returns the value of attribute testees.
Instance Method Summary collapse
-
#asserts(method, *args) {|Object| ... } ⇒ Object
(also: #is, #has)
When no block given it passes if the testee, called with a given method and arguments, returns truthy value.
-
#asserts_not(method, *args) {|Object| ... } ⇒ Object
(also: #is_not, #does_not_have)
When no block given it passes if the testee, called with a given method and arguments, returns falsy value.
-
#does_not_speak(*methods) ⇒ Valligator
Passes when the testee does not respond to all the methods.
-
#initialize(*testees, names: nil) ⇒ Valligator
constructor
Creates a new Valligator instance.
-
#is_kind_of(*classes) ⇒ Valligator
(also: #is_a, #is_an)
Passes when the testee is an instance of either of the classes.
-
#is_not_kind_of(*classes) ⇒ Valligator
(also: #is_not_a, #is_not_an)
Passes when the testee is not an instance of all of the classes.
- #method_missing(method, *args, &block) ⇒ Object
-
#speaks(*methods) ⇒ Valligator
Passes when the testee responds to all the methods.
Constructor Details
#initialize(*testees, names: nil) ⇒ Valligator
Creates a new Valligator instance
51 52 53 54 55 |
# File 'lib/valligator.rb', line 51 def initialize(*testees, names: nil) @testees = testees @names = Array(names) @stack = [] end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/valligator.rb', line 59 def method_missing(method, *args, &block) case when method[/^does_not_speak_(.+)?$/] then does_not_speak(*args.unshift($1.to_sym)) when method[/^speaks_(.+)?$/ ] then speaks(*args.unshift($1.to_sym)) when method[/^asserts_not_(.+)?$/] then asserts_not($1.to_sym, *args, &block) when method[/^asserts_(.+)?$/] then asserts($1.to_sym, *args, &block) when method[/^does_not_have_(.+)?$/] then does_not_have($1.to_sym, *args, &block) when method[/^has_(.+)?$/] then has($1.to_sym, *args, &block) when method[/^is_not_(.+)?$/] then is_not($1.to_sym, *args, &block) when method[/^is_(.+)?$/] then is($1.to_sym, *args, &block) else super(method, *args, &block) end end |
Instance Attribute Details
#names ⇒ Object (readonly)
Returns the value of attribute names.
21 22 23 |
# File 'lib/valligator.rb', line 21 def names @names end |
#stack ⇒ Object (readonly)
Returns the value of attribute stack.
22 23 24 |
# File 'lib/valligator.rb', line 22 def stack @stack end |
#testees ⇒ Object (readonly)
Returns the value of attribute testees.
20 21 22 |
# File 'lib/valligator.rb', line 20 def testees @testees end |
Instance Method Details
#asserts(method, *args) {|Object| ... } ⇒ Object Also known as: is, has
When no block given it passes if the testee, called with a given method and arguments, returns truthy value.
When block is given then it calls the testee with the given method and arguments. Then it calls the block in the context of the value returned above, and if the block returns truthy value the validation passes.
P.S. Truthy value is anything but nil or false.
165 166 167 |
# File 'lib/valligator.rb', line 165 def asserts(method, *args, &block) clone._asserts(__method__, method, *args, &block) end |
#asserts_not(method, *args) {|Object| ... } ⇒ Object Also known as: is_not, does_not_have
When no block given it passes if the testee, called with a given method and arguments, returns falsy value.
When block is given then it calls the testee with the given method and arguments. Then it calls the block in the context of the value returned above, and if the block returns falsy value the validation passes.
P.S. Falsy value is either nil or false.
196 197 198 |
# File 'lib/valligator.rb', line 196 def asserts_not(method, *args, &block) clone._asserts(__method__, method, *args, &block) end |
#does_not_speak(*methods) ⇒ Valligator
Passes when the testee does not respond to all the methods
136 137 138 |
# File 'lib/valligator.rb', line 136 def does_not_speak(*methods) clone._speaks(__method__, *methods) end |
#is_kind_of(*classes) ⇒ Valligator Also known as: is_a, is_an
Passes when the testee is an instance of either of the classes
86 87 88 |
# File 'lib/valligator.rb', line 86 def is_kind_of(*classes) clone._is_kind_of(__method__, *classes) end |
#is_not_kind_of(*classes) ⇒ Valligator Also known as: is_not_a, is_not_an
Passes when the testee is not an instance of all of the classes
104 105 106 |
# File 'lib/valligator.rb', line 104 def is_not_kind_of(*classes) clone._is_kind_of(__method__, *classes) end |
#speaks(*methods) ⇒ Valligator
Passes when the testee responds to all the methods
121 122 123 |
# File 'lib/valligator.rb', line 121 def speaks(*methods) clone._speaks(__method__, *methods) end |