Class: Filigree::DestructuringPattern

Inherits:
MultipleObjectPattern show all
Defined in:
lib/filigree/match.rb

Overview

A pattern that matches an instance of a class and destructures it so that the values contained by the object may be matched upon.

Instance Method Summary collapse

Methods included from AbstractClass

#abstract_method, extended, #install_icvars, #new

Methods inherited from BasicPattern

#as, #match_pattern_element

Constructor Details

#initialize(klass, *pattern) ⇒ DestructuringPattern

Create a new destructuring pattern.

Parameters:

  • klass (Class)

    Class to match instances of. It must be destructurable.

  • pattern (Object)

    Pattern elements to use in matching the object’s values



451
452
453
454
# File 'lib/filigree/match.rb', line 451

def initialize(klass, *pattern)
	@klass = klass
	super(pattern)
end

Instance Method Details

#match?(object, env) ⇒ Boolean

Test to see if the object is an instance of the appropriate class, and if so destructure it and test it’s values against the sub-pattern elements.

Parameters:

  • object (Object)

    Object to test pattern against

  • env (Object)

    Binding environment

Returns:

  • (Boolean)


464
465
466
# File 'lib/filigree/match.rb', line 464

def match?(object, env)
	object.is_a?(@klass) and super(object.destructure(@pattern.length), env)
end