Class: PatternMatch::PatternObjectDeconstructor

Inherits:
PatternDeconstructor show all
Includes:
HasOrderedSubPatterns
Defined in:
lib/pattern-match/core.rb

Instance Attribute Summary

Attributes inherited from Pattern

#next, #parent, #prev

Instance Method Summary collapse

Methods inherited from PatternElement

#quantifier?

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

#inspectObject



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