folder 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/lib/folder.rb +12 -15
- data/lib/folder/version.rb +1 -1
- data/spec/folder_spec.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b37a87a7f8797c77d94180fb1e8a132d72beb03
|
4
|
+
data.tar.gz: 9f5071b913ae8c3ca6a1896d23dd6e34148a9249
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36d9ddc63cdc8f7bec143219bbef82b1bb5be3430606933e119d97969af9e5556c84274c4db1d0e9aa4ceaa90be0f14b523a22d88e40d959038d22e62b7cae59
|
7
|
+
data.tar.gz: fb990149e3cb434886cf42f2b0f10a8388212728b362531a5b19be5b15d14dd7beda08e6c2f65f833673438d1953796806e623bf2fdd502b05c4053af3758b62
|
data/README.md
CHANGED
data/lib/folder.rb
CHANGED
@@ -4,34 +4,31 @@ module Folder
|
|
4
4
|
DEFAULT_SEPARATOR = '.'.freeze
|
5
5
|
|
6
6
|
def fold!(separator = DEFAULT_SEPARATOR)
|
7
|
-
klass
|
8
|
-
|
7
|
+
klass = self.class
|
8
|
+
folded = klass.new
|
9
9
|
|
10
10
|
each do |key, value|
|
11
|
-
next unless key.is_a?(String) and key.
|
11
|
+
next unless key.is_a?(String) and key.include?(separator)
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
keys = key.split(separator, -1)
|
14
|
+
last = keys.pop
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
16
|
+
current = keys.reduce(folded) {|memo, item|
|
17
|
+
memo[item].is_a?(klass) ?
|
18
|
+
memo[item] : (memo[item] = klass.new)
|
19
|
+
}
|
21
20
|
|
22
21
|
current[last] = value unless current[last].is_a?(klass)
|
23
22
|
delete key
|
24
23
|
end
|
25
24
|
|
26
|
-
merge!
|
25
|
+
merge! folded
|
27
26
|
end
|
28
27
|
|
29
28
|
def fold(separator = DEFAULT_SEPARATOR)
|
30
|
-
|
29
|
+
clone.fold! separator
|
31
30
|
end
|
32
31
|
end
|
33
32
|
|
34
|
-
|
35
|
-
include Folder
|
36
|
-
end
|
33
|
+
Hash.__send__(:include, Folder)
|
37
34
|
|
data/lib/folder/version.rb
CHANGED
data/spec/folder_spec.rb
CHANGED