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 ruby/lib/rinda/rinda.rb, line 150 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