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