Class: Typeguard::Validation::FixedHash
- Defined in:
- lib/typeguard/types.rb
Instance Method Summary collapse
-
#initialize(node) ⇒ FixedHash
constructor
A new instance of FixedHash.
- #valid?(value) ⇒ Boolean
Methods inherited from Base
Constructor Details
#initialize(node) ⇒ FixedHash
Returns a new instance of FixedHash.
100 101 102 103 104 105 106 107 108 |
# File 'lib/typeguard/types.rb', line 100 def initialize(node) @klass = node.[:const] @map = node.children.transpose.each_with_object({}) do |(k, v), h| index = k.[:key] k_validator = Base.from(k) v_validators = v.map { |val| Base.from(val) } h[index] = [k_validator, v_validators] end end |
Instance Method Details
#valid?(value) ⇒ Boolean
110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/typeguard/types.rb', line 110 def valid?(value) return false unless value.is_a?(@klass) value.all? do |k, v| index = k.to_s return false unless @map.key?(index) k_validator, v_validator = @map[index] key_valid = k_validator.valid?(k) value_valid = v_validator.any? { |child| child.valid?(v) } key_valid && value_valid end end |