Module: KeyValidatable
- Defined in:
- lib/keyvalidatable.rb,
lib/keyvalidatable/errors.rb,
lib/keyvalidatable/version.rb,
lib/keyvalidatable/refinements.rb,
lib/keyvalidatable/singleton_class.rb
Defined Under Namespace
Modules: Refinements
Classes: InvalidKeysError
Constant Summary
collapse
- VERSION =
'0.2.1'
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.keys_for(key_value_pairs) ⇒ Array
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/keyvalidatable/singleton_class.rb', line 70
def keys_for(key_value_pairs)
pairs = (
case
when key_value_pairs.respond_to?(:to_hash)
key_value_pairs.to_hash
when key_value_pairs.respond_to?(:to_h)
key_value_pairs.to_h
else
key_value_pairs
end
)
case
when pairs.respond_to?(:keys)
pairs.keys
when pairs.respond_to?(:members)
pairs.members
else
raise TypeError, "#{key_value_pairs.inspect} is not pairs object"
end
end
|
.valid_array?(keys, requirements) ⇒ Boolean
59
60
61
62
63
64
65
66
|
# File 'lib/keyvalidatable/singleton_class.rb', line 59
def valid_array?(keys, requirements)
assert_requirements(requirements)
validate_array(keys, requirements)
rescue InvalidKeysError
false
else
true
end
|
.valid_keys?(key_value_pairs, requirements) ⇒ Boolean
Also known as:
valid_members?
49
50
51
|
# File 'lib/keyvalidatable/singleton_class.rb', line 49
def valid_keys?(key_value_pairs, requirements)
valid_array?(keys_for(key_value_pairs), requirements)
end
|
.validate_array(keys, requirements) ⇒ nil
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/keyvalidatable/singleton_class.rb', line 30
def validate_array(keys, requirements)
assert_requirements(requirements)
musts, lets = musts_for(requirements), lets_for(requirements)
shortage_keys = shortage_elements(keys.to_ary, musts)
excess_keys = excess_elements(keys.to_ary, musts, lets)
unless [*shortage_keys, *excess_keys].empty?
raise InvalidKeysError,
"Shortage: #{shortage_keys} / Excess: #{excess_keys}"
end
nil
end
|
.validate_keys_in_pairs(key_value_pairs, requirements) ⇒ nil
Also known as:
validate_keys, validate_members_in_pairs, assert_keys_in_pairs, assert_members_in_pairs
12
13
14
|
# File 'lib/keyvalidatable/singleton_class.rb', line 12
def validate_keys_in_pairs(key_value_pairs, requirements)
validate_array(keys_for(key_value_pairs), requirements)
end
|
Instance Method Details
#valid_keys?(requirements) ⇒ Boolean
19
20
21
|
# File 'lib/keyvalidatable.rb', line 19
def valid_keys?(requirements)
KeyValidatable.__send__(__callee__, self, requirements)
end
|
#valid_members? ⇒ Boolean
22
23
24
|
# File 'lib/keyvalidatable.rb', line 22
def valid_keys?(requirements)
KeyValidatable.__send__(__callee__, self, requirements)
end
|
#validate_keys(requirements) ⇒ Object
Also known as:
validate_members, assert_keys
12
13
14
|
# File 'lib/keyvalidatable.rb', line 12
def validate_keys(requirements)
KeyValidatable.__send__(__callee__, self, requirements)
end
|