class MemDB::Index::SequenceMatch
Public Class Methods
new(idx:, bucket: MemDB::Bucket)
click to toggle source
# File lib/mem_db/index/sequence_match.rb, line 111 def initialize(idx:, bucket: MemDB::Bucket) @idx = idx @bucket = bucket @patterns = {} @matchers = {} end
Public Instance Methods
add(obj, value)
click to toggle source
# File lib/mem_db/index/sequence_match.rb, line 118 def add(obj, value) obj.idx_value(@idx).each do |pattern| @patterns[pattern] ||= @bucket.new @patterns[pattern].add(obj, value) @matchers[pattern] ||= SequenceIndex.new(pattern) end end
query(query, out: MemDB::Out.new)
click to toggle source
# File lib/mem_db/index/sequence_match.rb, line 127 def query(query, out: MemDB::Out.new) query.idx_value(@idx).each do |seq| select_one(query, seq, out) end out end
Private Instance Methods
select_one(query, seq, out)
click to toggle source
# File lib/mem_db/index/sequence_match.rb, line 137 def select_one(query, seq, out) @matchers.each do |pattern, sequence| next if seq.length < pattern.length @patterns[pattern].query(query, out: out) if sequence.index(seq) > -1 end end