class MemDB::Index::PrefixTree::Item
Attributes
value[R]
Public Class Methods
new(bucket:)
click to toggle source
# File lib/mem_db/index/prefix_tree.rb, line 55 def initialize(bucket:) @bucket = bucket end
Public Instance Methods
add(prefix, i, obj, value)
click to toggle source
# File lib/mem_db/index/prefix_tree.rb, line 71 def add(prefix, i, obj, value) if prefix.length == i set_value(obj, value) else item = fetch_children(prefix[i]) item.add(prefix, i + 1, obj, value) end end
fetch_children(idx)
click to toggle source
# File lib/mem_db/index/prefix_tree.rb, line 85 def fetch_children(idx) @children ||= {} @children[idx] ||= Item.new(bucket: @bucket) end
select_values(content, i, query:, out:)
click to toggle source
# File lib/mem_db/index/prefix_tree.rb, line 59 def select_values(content, i, query:, out:) @value&.query(query, out: out) return if content.length == i return unless @children if (item = @children[content[i]]) item.select_values(content, i + 1, query: query, out: out) end end
set_value(obj, value)
click to toggle source
# File lib/mem_db/index/prefix_tree.rb, line 80 def set_value(obj, value) @value ||= @bucket.new @value.add(obj, value) end