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 CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .idea/
@@ -2,7 +2,7 @@ module KeyValueTree
2
2
 
3
3
  class Hash
4
4
 
5
- def initialize(key=nil, parent = nil, store = KeyValueTree::MemortyStore.new())
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, @store)
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
@@ -7,12 +7,12 @@ module KeyValueTree
7
7
  end
8
8
 
9
9
  def delete_keys_start_with(key)
10
- keys_start_with(key.to_s).each do |each|
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 keys_start_with(key)
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
@@ -1,3 +1,3 @@
1
1
  module KeyValueTree
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
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(nil, nil, @store)
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 "be created from an object" do
18
+ should "create w/o arguments" do
19
19
  root = nil
20
- assert_nothing_raised(Exception) { root = KeyValueTree::Hash.new(@hash_object, nil, @store) }
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 "be created from an object with store" do
24
+ should "create with store" do
25
25
  root = nil
26
- assert_nothing_raised(Exception) { root = KeyValueTree::Hash.new(@hash_object, nil, @store) }
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.2
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: -4411598630716912686
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: -4411598630716912686
127
+ hash: 1144361209399156749
128
128
  requirements: []
129
129
  rubyforge_project:
130
130
  rubygems_version: 1.8.24