class SBSM::Index
Public Class Methods
new()
click to toggle source
# File lib/sbsm/index.rb, line 29 def initialize @values = [] @children = [] end
Public Instance Methods
delete(key, value)
click to toggle source
# File lib/sbsm/index.rb, line 33 def delete(key, value) if (key.size == 0) @values.delete(value) elsif (child = @children.at(key.chars.first.ord)) child.delete(key[1..-1], value) end end
fetch(key)
click to toggle source
# File lib/sbsm/index.rb, line 40 def fetch(key) if(key.size == 1) @values + @children[key.chars.first.ord].to_a elsif(key.size > 1 && @children.at(key.chars.first.ord)) @children.at(key.chars.first.ord)[key[1..-1]] else [] end end
Also aliased as: []
replace(oldkey, newkey, value)
click to toggle source
# File lib/sbsm/index.rb, line 49 def replace(oldkey, newkey, value) delete(oldkey, value) store(newkey, value) end
store(key, *values)
click to toggle source
# File lib/sbsm/index.rb, line 53 def store(key, *values) if(key.size == 0) @values += values else @children[key.chars.first.ord] ||= self.class.new @children.at(key.chars.first.ord).store(key[1..-1], *values) end end
Also aliased as: []=
to_a()
click to toggle source
# File lib/sbsm/index.rb, line 61 def to_a @values + @children.inject([]) { |inj, child| inj += child.to_a.compact } end