Templates are used to match tuples in Rinda.
Methods
Instance Public methods
match(tuple)
Link
Matches this template against tuple. The tuple
must be the same size as the template. An element with a nil
value in a template acts as a wildcard, matching any value in the
corresponding position in the tuple. Elements of the template match the
tuple if the are #== or ===.
Template.new([:foo, 5]).match Tuple.new([:foo, 5]) # => true
Template.new([:foo, nil]).match Tuple.new([:foo, 5]) # => true
Template.new([String]).match Tuple.new(['hello']) # => true
Template.new([:foo]).match Tuple.new([:foo, 5]) # => false
Template.new([:foo, 6]).match Tuple.new([:foo, 5]) # => false
Template.new([:foo, nil]).match Tuple.new([:foo]) # => false
Template.new([:foo, 6]).match Tuple.new([:foo]) # => false
# File lib/rinda/rinda.rb, line 148 def match(tuple) return false unless tuple.respond_to?(:size) return false unless tuple.respond_to?(:fetch) return false unless self.size == tuple.size each do |k, v| begin it = tuple.fetch(k) rescue return false end next if v.nil? next if v == it next if v === it return false end return true end