data_list_converter 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/changelog.md +2 -0
- data/lib/data_list_converter/helper.rb +5 -6
- data/lib/data_list_converter/version.rb +1 -1
- data/test/helper_test.rb +6 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 000647a6a079b0e77c3db5e459ab44b2943b6c8f
|
4
|
+
data.tar.gz: 88ba97184130264200af4780a5a54c020d84629a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43ccdbc2a602eee3c559bb5d109924bb7ec10a3471c6f3d990eab0af91a5bc38ee4b1a71bec5ae0c0e5e8ebb7776bdc9ca165e6de10bfb5d7e602b8e10a5b291
|
7
|
+
data.tar.gz: 98943a57fd68dad7012834199852f45880a2ef1ee7a460d142b87b74a4619fa9b02137ad1a7af21f4696ab95850ab8ff723e9a7d78f4fc990281279013951f5b
|
data/README.md
CHANGED
@@ -71,7 +71,7 @@ Please see [test examples](https://github.com/halida/data_list_converter/blob/ma
|
|
71
71
|
- **save_to_file**: Save data to file, it will use `get_file_format` to find proper file format. `DataListConverter.save_to_file(filename, data, data_format=:item_data)`
|
72
72
|
- **load_from_file**: Get data from file, it will use `get_file_format` to find proper file format. `DataListConverter.load_from_file(filename, data_format=:item_data)`
|
73
73
|
- **unify_item_data_keys**: Sometimes in the `item_data` list, each data keys don't exactly same, so use this function to fix it, example: `DataListConverter.unify_item_data_keys([{a: 12}, {b: 11}]) == [{a: 12, b: nil}, {a: nil, b: 11}]`.
|
74
|
-
- **flatten**: Flatten multi level item_data list into one level, example: `DataListConverter.flatten({a: {b: 12}, c: {d: {e: 11}}}) == {:"a:b"=>12, :"c:d:e"=>11}`, can change seperator: `DataListConverter.flatten(data, '_')`
|
74
|
+
- **flatten**: Flatten multi level item_data list into one level, example: `DataListConverter.flatten({a: {b: 12}, c: {d: {e: 11}}}) == {:"a:b"=>12, :"c:d:e"=>11}`, can change seperator: `DataListConverter.flatten(data, '_')`, set max level: `DataListConverter.flatten(data, '_', 2)`
|
75
75
|
|
76
76
|
## Extend
|
77
77
|
|
data/changelog.md
CHANGED
@@ -55,18 +55,17 @@ class DataListConverter
|
|
55
55
|
# {a: {b: 12}, c: {d: {e: 11}}}
|
56
56
|
# =>
|
57
57
|
# {:"a:b"=>12, :"c:d:e"=>11}
|
58
|
-
def self.flatten(data, sep=':')
|
58
|
+
def self.flatten(data, sep=':', max_level=nil)
|
59
59
|
out = {}
|
60
|
-
recursive_flatten(out, data, nil, sep)
|
60
|
+
recursive_flatten(out, data, nil, sep, 1, max_level)
|
61
61
|
out
|
62
62
|
end
|
63
63
|
|
64
|
-
def self.recursive_flatten(out, data, header, sep)
|
64
|
+
def self.recursive_flatten(out, data, header, sep, level, max_level)
|
65
65
|
data.each do |k, v|
|
66
66
|
k = header ? :"#{header}#{sep}#{k}" : k
|
67
|
-
|
68
|
-
|
69
|
-
recursive_flatten(out, v, k, sep)
|
67
|
+
if v.kind_of?(Hash) and (!max_level or level <= max_level)
|
68
|
+
recursive_flatten(out, v, k, sep, level+1, max_level)
|
70
69
|
else
|
71
70
|
out[k] = v
|
72
71
|
end
|
data/test/helper_test.rb
CHANGED
@@ -79,6 +79,12 @@ describe DataListConverter do
|
|
79
79
|
# change sep
|
80
80
|
data = {a: {b: 12}, c: {d: {e: 11}}}
|
81
81
|
@c.flatten(data, '_').must_equal({:"a_b"=>12, :"c_d_e"=>11})
|
82
|
+
|
83
|
+
# set max level
|
84
|
+
data = {a: {b: 12}, c: {d: {e: {f: 11}}}}
|
85
|
+
@c.flatten(data, ':', 1).must_equal({:"a:b"=>12, :"c:d"=>{e: {f: 11}}})
|
86
|
+
data = {a: {b: 12}, c: {d: {e: {f: 11}}}}
|
87
|
+
@c.flatten(data, ':', 2).must_equal({:"a:b"=>12, :"c:d:e"=>{f: 11}})
|
82
88
|
end
|
83
89
|
end
|
84
90
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: data_list_converter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- linjunhalida
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|