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