Class: PatternMatch::PatternKeywordArgStyleDeconstructor
- Inherits:
-
PatternDeconstructor
- Object
- Pattern
- PatternElement
- PatternDeconstructor
- PatternMatch::PatternKeywordArgStyleDeconstructor
- Defined in:
- lib/pattern-match/core.rb
Instance Attribute Summary
Attributes inherited from Pattern
Instance Method Summary collapse
-
#initialize(klass, checker, getter, *keyarg_subpatterns) ⇒ PatternKeywordArgStyleDeconstructor
constructor
A new instance of PatternKeywordArgStyleDeconstructor.
- #inspect ⇒ Object
- #match(vals) ⇒ Object
Methods inherited from PatternElement
Methods inherited from Pattern
#!@, #&, #ancestors, #append, #quantified?, #quantifier?, #quasibinding, #root, #root?, #to_a, #validate, #vars, #|
Constructor Details
#initialize(klass, checker, getter, *keyarg_subpatterns) ⇒ PatternKeywordArgStyleDeconstructor
Returns a new instance of PatternKeywordArgStyleDeconstructor.
230 231 232 233 234 235 236 237 |
# File 'lib/pattern-match/core.rb', line 230 def initialize(klass, checker, getter, *keyarg_subpatterns) spec = normalize_keyword_arg(keyarg_subpatterns) super(*spec.values) @klass = klass @checker = checker @getter = getter @spec = spec end |
Instance Method Details
#inspect ⇒ Object
249 250 251 |
# File 'lib/pattern-match/core.rb', line 249 def inspect "#<#{self.class.name}: klass=#{@klass.inspect}, spec=#{@spec.inspect}>" end |
#match(vals) ⇒ Object
239 240 241 242 243 244 245 246 247 |
# File 'lib/pattern-match/core.rb', line 239 def match(vals) super do |val| next false unless val.kind_of?(@klass) next false unless @spec.keys.all? {|k| val.__send__(@checker, k) } @spec.all? do |k, pat| pat.match([val.__send__(@getter, k)]) rescue false end end end |