Class: PatternMatch::PatternObjectDeconstructor

Inherits:
PatternDeconstructor show all
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, #directly_quantified?, #quantified?, #quantifier?, #quasibinding, #root, #root?, #to_a, #validate, #vars, #|

Methods included from PatternMatch::Pattern::Backtrackable

#choice_points

Constructor Details

#initialize(deconstructor, *subpatterns) ⇒ PatternObjectDeconstructor

Returns a new instance of PatternObjectDeconstructor.



206
207
208
209
# File 'lib/pattern-match/core.rb', line 206

def initialize(deconstructor, *subpatterns)
  super(*subpatterns)
  @deconstructor = deconstructor
end

Instance Method Details

#inspectObject



221
222
223
# File 'lib/pattern-match/core.rb', line 221

def inspect
  "#<#{self.class.name}: deconstructor=#{@deconstructor.inspect}, subpatterns=#{subpatterns.inspect}>"
end

#match(vals) ⇒ Object



211
212
213
214
215
216
217
218
219
# File 'lib/pattern-match/core.rb', line 211

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