Module: Struct::Validatable::SubclassClassMethods
- Defined in:
- lib/struct/validatable/subclass_class_methods.rb
Utils collapse
- #adjustable?(proc) ⇒ Boolean
- #adjuster_for(key) ⇒ Object
- #autonym_for_index(index) ⇒ Object
- #autonym_for_key(key) ⇒ Object
- #autonym_for_member(name) ⇒ Object
- #condition_for(key) ⇒ Object
- #conditionable?(obj) ⇒ Boolean
- #with_adjuster?(key) ⇒ Boolean
- #with_condition?(key) ⇒ Boolean (also: #restrict?)
Instance Method Summary collapse
-
#WHEN(pattern, adjuster) ⇒ Proc
Adjuster Builders Apply adjuster when passed pattern.
Instance Method Details
#adjustable?(proc) ⇒ Boolean
69 70 71 |
# File 'lib/struct/validatable/subclass_class_methods.rb', line 69 def adjustable?(proc) (Proc === proc) && (proc.arity.abs == 1) end |
#adjuster_for(key) ⇒ Object
22 23 24 |
# File 'lib/struct/validatable/subclass_class_methods.rb', line 22 def adjuster_for(key) @adjusters.fetch(autonym_for_key(key)) end |
#autonym_for_index(index) ⇒ Object
53 54 55 |
# File 'lib/struct/validatable/subclass_class_methods.rb', line 53 def autonym_for_index(index) members.fetch(index.to_int) end |
#autonym_for_key(key) ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/struct/validatable/subclass_class_methods.rb', line 32 def autonym_for_key(key) case key when ->k { k.respond_to?(:to_sym) } autonym_for_member(key) when ->k { k.respond_to?(:to_int) } members.fetch(key.to_int) else raise TypeError, key end end |
#autonym_for_member(name) ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/struct/validatable/subclass_class_methods.rb', line 44 def autonym_for_member(name) name = name.to_sym raise NameError, name unless members.include?(name) name end |
#condition_for(key) ⇒ Object
10 11 12 |
# File 'lib/struct/validatable/subclass_class_methods.rb', line 10 def condition_for(key) @conditions.fetch(autonym_for_key(key)) end |
#conditionable?(obj) ⇒ Boolean
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/struct/validatable/subclass_class_methods.rb', line 57 def conditionable?(obj) case obj when Proc obj.arity.abs == 1 when Method obj.arity.abs <= 1 else obj.respond_to?(:===) end end |
#WHEN(pattern, adjuster) ⇒ Proc
Adjuster Builders Apply adjuster when passed pattern.
80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/struct/validatable/subclass_class_methods.rb', line 80 def WHEN(pattern, adjuster) unless Eqq.pattern?(pattern) raise ArgumentError, 'wrong object for pattern' end unless adjustable?(adjuster) raise ArgumentError, 'wrong object for adjuster' end ->v { _valid?(pattern, v) ? adjuster.call(v) : v } end |
#with_adjuster?(key) ⇒ Boolean
27 28 29 |
# File 'lib/struct/validatable/subclass_class_methods.rb', line 27 def with_adjuster?(key) @adjusters.key?(autonym_for_key(key)) end |
#with_condition?(key) ⇒ Boolean Also known as: restrict?
15 16 17 |
# File 'lib/struct/validatable/subclass_class_methods.rb', line 15 def with_condition?(key) @conditions.key?(autonym_for_key(key)) end |