data_list_converter 0.4.0 → 0.4.1
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/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
|