key_tree 0.5.2 → 0.5.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.
- checksums.yaml +4 -4
- data/RELEASE_NOTES.md +13 -0
- data/lib/key_tree/forest.rb +28 -19
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9cfde9ce8a431f8ce658b0d092958dcb97cf237fd1132b459a80191b72ef002b
|
4
|
+
data.tar.gz: f51c7e7ce679a1830d929e24114089820f8c1a79082c3e487ef5ac4fa23fa81f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a904cca7e3be01bfb902b5c144685fc8c6dd3b52227f22fbd048e8d9e98e1675473bf766cc159ed422b6ac1c35a3b94969beea50dd29bdb528e4242a149a0c77
|
7
|
+
data.tar.gz: c9f17cdd2fff51099699d625a72a57bec483859369518c1b273db0478099320426aa24292a71eb07234d8f92ccabcda06875319356c9dae209b267be2657e75e
|
data/RELEASE_NOTES.md
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
# Release Notes
|
2
2
|
|
3
|
+
## v0.5.3 – 2018-05-25
|
4
|
+
|
5
|
+
### Bug fixes
|
6
|
+
|
7
|
+
#### Fix forest default values
|
8
|
+
Previous release broke default value propagation for forests.
|
9
|
+
|
10
|
+
* c0eccde4 Update forest specs vs default values
|
11
|
+
* 35367fd1 Consider Tree default values for Forest#[]
|
12
|
+
* 7e10dda5 Add method to find trees with default values
|
13
|
+
* 57a320ac Revert "Use proper method to retreive values from trees"
|
14
|
+
* 8173775d Make tree_with_key methods private
|
15
|
+
|
3
16
|
## v0.5.2 – 2018-05-19
|
4
17
|
|
5
18
|
### Bug fixes
|
data/lib/key_tree/forest.rb
CHANGED
@@ -22,35 +22,20 @@ module KeyTree
|
|
22
22
|
# key path matches in trees further away, returning nil. This preserves
|
23
23
|
# the constraints that only leaves may contain a value.
|
24
24
|
#
|
25
|
-
def [](key
|
25
|
+
def [](key)
|
26
26
|
return super(key) if key.is_a?(Numeric)
|
27
|
-
|
27
|
+
tree_with_default_key(key)[key]
|
28
28
|
rescue KeyError
|
29
29
|
nil
|
30
30
|
end
|
31
31
|
|
32
32
|
def fetch(key)
|
33
|
-
return tree_with_key(key)
|
33
|
+
return tree_with_key(key).fetch(key) unless block_given?
|
34
34
|
|
35
|
-
values = trees_with_key(key).map { |tree| tree
|
35
|
+
values = trees_with_key(key).map { |tree| tree.fetch(key) }
|
36
36
|
values.reverse.reduce { |left, right| yield(key, left, right) }
|
37
37
|
end
|
38
38
|
|
39
|
-
def tree_with_key(key)
|
40
|
-
result = trees.detect do |tree|
|
41
|
-
tree.prefix?(key) || tree.default_key?(key)
|
42
|
-
end
|
43
|
-
result || raise(KeyError, "key not found: #{key}")
|
44
|
-
end
|
45
|
-
|
46
|
-
def trees_with_key(key)
|
47
|
-
result = trees.select do |tree|
|
48
|
-
tree.prefix?(key) || tree.default_key?(key)
|
49
|
-
end
|
50
|
-
raise(KeyError, "key not found: #{key}") if result.empty?
|
51
|
-
result
|
52
|
-
end
|
53
|
-
|
54
39
|
def key?(key)
|
55
40
|
trees.any? { |tree| tree.key?(key) }
|
56
41
|
end
|
@@ -78,5 +63,29 @@ module KeyTree
|
|
78
63
|
end
|
79
64
|
end
|
80
65
|
end
|
66
|
+
|
67
|
+
private
|
68
|
+
|
69
|
+
def tree_with_default_key(key)
|
70
|
+
result = trees.detect do |tree|
|
71
|
+
tree.prefix?(key) || tree.default_key?(key)
|
72
|
+
end
|
73
|
+
result || raise(KeyError, %(key not found: "#{key}"))
|
74
|
+
end
|
75
|
+
|
76
|
+
def tree_with_key(key)
|
77
|
+
result = trees.detect do |tree|
|
78
|
+
tree.prefix?(key)
|
79
|
+
end
|
80
|
+
result || raise(KeyError, %(key not found: "#{key}"))
|
81
|
+
end
|
82
|
+
|
83
|
+
def trees_with_key(key)
|
84
|
+
result = trees.select do |tree|
|
85
|
+
tree.prefix?(key)
|
86
|
+
end
|
87
|
+
raise(KeyError, %(key not found: "#{key}")) if result.empty?
|
88
|
+
result
|
89
|
+
end
|
81
90
|
end
|
82
91
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: key_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Calle Englund
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: git-version-bump
|