Class: PatternMatch::PatternObjectDeconstructor
- Inherits:
-
PatternDeconstructor
- Object
- Pattern
- PatternElement
- PatternDeconstructor
- PatternMatch::PatternObjectDeconstructor
- Includes:
- HasOrderedSubPatterns
- Defined in:
- lib/pattern-match/core.rb
Instance Attribute Summary
Attributes inherited from Pattern
Instance Method Summary collapse
-
#initialize(deconstructor, *subpatterns) ⇒ PatternObjectDeconstructor
constructor
A new instance of PatternObjectDeconstructor.
- #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(deconstructor, *subpatterns) ⇒ PatternObjectDeconstructor
Returns a new instance of PatternObjectDeconstructor.
209 210 211 212 |
# File 'lib/pattern-match/core.rb', line 209 def initialize(deconstructor, *subpatterns) super(*subpatterns) @deconstructor = deconstructor end |
Instance Method Details
#inspect ⇒ Object
224 225 226 |
# File 'lib/pattern-match/core.rb', line 224 def inspect "#<#{self.class.name}: deconstructor=#{@deconstructor.inspect}, subpatterns=#{@subpatterns.inspect}>" end |
#match(vals) ⇒ Object
214 215 216 217 218 219 220 221 222 |
# File 'lib/pattern-match/core.rb', line 214 def match(vals) super do |val| deconstructed_vals = @deconstructor.deconstruct(val) if @subpatterns.empty? next deconstructed_vals.empty? end @subpatterns[0].match(deconstructed_vals) end end |