class Fib::Trie

Attributes

data[RW]
key[RW]
subnode[RW]

Public Class Methods

new(key, data, subnode={}) click to toggle source
# File lib/fib/trie.rb, line 5
def initialize key, data, subnode={}
  @key = key
  @data = data
  @subnode = subnode
end

Public Instance Methods

add_sub(key, node) click to toggle source
# File lib/fib/trie.rb, line 24
def add_sub key, node
  t = Trie.new key, node
  subnode[key] = t
  t
end
dig(*node_key) click to toggle source
# File lib/fib/trie.rb, line 11
def dig *node_key
  return nil unless node_key.is_a? Array

  if node_key.size < 1
    return data
  end

  current_key = node_key.first
  node_key.shift

  subnode.has_key?(current_key) ? subnode[current_key]&.dig(*node_key) : nil
end