Class: SBSM::Index
- Inherits:
-
Object
- Object
- SBSM::Index
- Defined in:
- lib/sbsm/index.rb
Instance Method Summary collapse
- #delete(key, value) ⇒ Object
- #fetch(key) ⇒ Object (also: #[])
-
#initialize ⇒ Index
constructor
A new instance of Index.
- #replace(oldkey, newkey, value) ⇒ Object
- #store(key, *values) ⇒ Object (also: #[]=)
- #to_a ⇒ Object
Constructor Details
#initialize ⇒ Index
Returns a new instance of Index.
28 29 30 31 |
# File 'lib/sbsm/index.rb', line 28 def initialize @values = [] @children = [] end |
Instance Method Details
#delete(key, value) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/sbsm/index.rb', line 32 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) ⇒ Object Also known as: []
39 40 41 42 43 44 45 46 47 |
# File 'lib/sbsm/index.rb', line 39 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 |
#replace(oldkey, newkey, value) ⇒ Object
48 49 50 51 |
# File 'lib/sbsm/index.rb', line 48 def replace(oldkey, newkey, value) delete(oldkey, value) store(newkey, value) end |
#store(key, *values) ⇒ Object Also known as: []=
52 53 54 55 56 57 58 59 |
# File 'lib/sbsm/index.rb', line 52 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 |
#to_a ⇒ Object
60 61 62 |
# File 'lib/sbsm/index.rb', line 60 def to_a @values + @children.inject([]) { |inj, child| inj += child.to_a.compact } end |