keyvaluetree 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
 - data/lib/keyvaluetree/hash.rb +6 -2
 - data/lib/keyvaluetree/store.rb +2 -2
 - data/lib/keyvaluetree/version.rb +1 -1
 - data/test/hash_test.rb +13 -5
 - metadata +3 -3
 
    
        data/.gitignore
    CHANGED
    
    
    
        data/lib/keyvaluetree/hash.rb
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ module KeyValueTree 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
              class Hash
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
                def initialize(key=nil, parent = nil 
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize(store = KeyValueTree::MemoryStore.new(), key=nil, parent = nil)
         
     | 
| 
       6 
6 
     | 
    
         
             
                  @key = key.to_s
         
     | 
| 
       7 
7 
     | 
    
         
             
                  @parent = parent
         
     | 
| 
       8 
8 
     | 
    
         
             
                  @store = store
         
     | 
| 
         @@ -11,7 +11,7 @@ module KeyValueTree 
     | 
|
| 
       11 
11 
     | 
    
         
             
                def [] (key)
         
     | 
| 
       12 
12 
     | 
    
         
             
                  value = @store.key(key_path_string(key))
         
     | 
| 
       13 
13 
     | 
    
         
             
                  return value unless value.nil?
         
     | 
| 
       14 
     | 
    
         
            -
                  return KeyValueTree::Hash.new(key, self 
     | 
| 
      
 14 
     | 
    
         
            +
                  return KeyValueTree::Hash.new(@store, key, self)
         
     | 
| 
       15 
15 
     | 
    
         
             
                end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
                def []= (key, value)
         
     | 
| 
         @@ -71,6 +71,10 @@ module KeyValueTree 
     | 
|
| 
       71 
71 
     | 
    
         
             
                  @store.delete(key_path_string(key.to_s))
         
     | 
| 
       72 
72 
     | 
    
         
             
                end
         
     | 
| 
       73 
73 
     | 
    
         | 
| 
      
 74 
     | 
    
         
            +
                def keys
         
     | 
| 
      
 75 
     | 
    
         
            +
                  @store.keys_starting_with(key_path_string()).map { |each| each.split(".").first }.uniq
         
     | 
| 
      
 76 
     | 
    
         
            +
                end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
       74 
78 
     | 
    
         
             
              end
         
     | 
| 
       75 
79 
     | 
    
         | 
| 
       76 
80 
     | 
    
         
             
            end
         
     | 
    
        data/lib/keyvaluetree/store.rb
    CHANGED
    
    | 
         @@ -7,12 +7,12 @@ module KeyValueTree 
     | 
|
| 
       7 
7 
     | 
    
         
             
                end
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                def delete_keys_start_with(key)
         
     | 
| 
       10 
     | 
    
         
            -
                   
     | 
| 
      
 10 
     | 
    
         
            +
                  keys_starting_with(key.to_s).each do |each|
         
     | 
| 
       11 
11 
     | 
    
         
             
                    self.basic_delete(each)
         
     | 
| 
       12 
12 
     | 
    
         
             
                  end
         
     | 
| 
       13 
13 
     | 
    
         
             
                end
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
                def  
     | 
| 
      
 15 
     | 
    
         
            +
                def keys_starting_with(key)
         
     | 
| 
       16 
16 
     | 
    
         
             
                  self.keys.select do |sub_key|
         
     | 
| 
       17 
17 
     | 
    
         
             
                    sub_key.start_with?(key.to_s)
         
     | 
| 
       18 
18 
     | 
    
         
             
                  end
         
     | 
    
        data/lib/keyvaluetree/version.rb
    CHANGED
    
    
    
        data/test/hash_test.rb
    CHANGED
    
    | 
         @@ -8,22 +8,22 @@ class HashTest < Test::Unit::TestCase 
     | 
|
| 
       8 
8 
     | 
    
         
             
                  @hash_object ={:a => :b}
         
     | 
| 
       9 
9 
     | 
    
         
             
                  @array_object = [:a, :b]
         
     | 
| 
       10 
10 
     | 
    
         
             
                  @store = KeyValueTree::MemoryStore.new()
         
     | 
| 
       11 
     | 
    
         
            -
                  @root = KeyValueTree::Hash.new( 
     | 
| 
      
 11 
     | 
    
         
            +
                  @root = KeyValueTree::Hash.new(@store)
         
     | 
| 
       12 
12 
     | 
    
         
             
                  @key1 = 'key1'
         
     | 
| 
       13 
13 
     | 
    
         
             
                  @value1 = 'value1'
         
     | 
| 
       14 
14 
     | 
    
         
             
                  @key2 = 'key2'
         
     | 
| 
       15 
15 
     | 
    
         
             
                  @value2 = 'key2'
         
     | 
| 
       16 
16 
     | 
    
         
             
                end
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
                should " 
     | 
| 
      
 18 
     | 
    
         
            +
                should "create w/o arguments" do
         
     | 
| 
       19 
19 
     | 
    
         
             
                  root = nil
         
     | 
| 
       20 
     | 
    
         
            -
                  assert_nothing_raised(Exception) { root = KeyValueTree::Hash.new(@ 
     | 
| 
      
 20 
     | 
    
         
            +
                  assert_nothing_raised(Exception) { root = KeyValueTree::Hash.new(@store) }
         
     | 
| 
       21 
21 
     | 
    
         
             
                  assert_instance_of(KeyValueTree::Hash, root)
         
     | 
| 
       22 
22 
     | 
    
         
             
                end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
                should " 
     | 
| 
      
 24 
     | 
    
         
            +
                should "create with store" do
         
     | 
| 
       25 
25 
     | 
    
         
             
                  root = nil
         
     | 
| 
       26 
     | 
    
         
            -
                  assert_nothing_raised(Exception) { root = KeyValueTree::Hash.new(@ 
     | 
| 
      
 26 
     | 
    
         
            +
                  assert_nothing_raised(Exception) { root = KeyValueTree::Hash.new(@store) }
         
     | 
| 
       27 
27 
     | 
    
         
             
                  assert_instance_of(KeyValueTree::Hash, root)
         
     | 
| 
       28 
28 
     | 
    
         
             
                end
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
         @@ -68,8 +68,16 @@ class HashTest < Test::Unit::TestCase 
     | 
|
| 
       68 
68 
     | 
    
         | 
| 
       69 
69 
     | 
    
         
             
                  @root.delete(:two)
         
     | 
| 
       70 
70 
     | 
    
         
             
                  assert_equal 1, @store.keys.size
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
       71 
72 
     | 
    
         | 
| 
      
 73 
     | 
    
         
            +
                should "return keys" do
         
     | 
| 
      
 74 
     | 
    
         
            +
                  @root.one.a.A = 'A'
         
     | 
| 
      
 75 
     | 
    
         
            +
                  @root.one.a.B = 'B'
         
     | 
| 
      
 76 
     | 
    
         
            +
                  @root.two.b.A = 'AA'
         
     | 
| 
      
 77 
     | 
    
         
            +
                  @root.two.b.B = 'BB'
         
     | 
| 
      
 78 
     | 
    
         
            +
                  assert_same_elements ["one", "two"], @root.keys
         
     | 
| 
       72 
79 
     | 
    
         
             
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
       73 
81 
     | 
    
         
             
              end
         
     | 
| 
       74 
82 
     | 
    
         | 
| 
       75 
83 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: keyvaluetree
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.3
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -115,7 +115,7 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       115 
115 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       116 
116 
     | 
    
         
             
                  segments:
         
     | 
| 
       117 
117 
     | 
    
         
             
                  - 0
         
     | 
| 
       118 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 118 
     | 
    
         
            +
                  hash: 1144361209399156749
         
     | 
| 
       119 
119 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       120 
120 
     | 
    
         
             
              none: false
         
     | 
| 
       121 
121 
     | 
    
         
             
              requirements:
         
     | 
| 
         @@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       124 
124 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       125 
125 
     | 
    
         
             
                  segments:
         
     | 
| 
       126 
126 
     | 
    
         
             
                  - 0
         
     | 
| 
       127 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 127 
     | 
    
         
            +
                  hash: 1144361209399156749
         
     | 
| 
       128 
128 
     | 
    
         
             
            requirements: []
         
     | 
| 
       129 
129 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       130 
130 
     | 
    
         
             
            rubygems_version: 1.8.24
         
     |