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

[](key)
Alias for: fetch
[]=(key, *values)
Alias for: store
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