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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7862bf6ab71eb4187b03ba25e7bd199ea9d3eb51
4
- data.tar.gz: f095138e55e9cc72c1691628c782a9c7ec5a203d
3
+ metadata.gz: 000647a6a079b0e77c3db5e459ab44b2943b6c8f
4
+ data.tar.gz: 88ba97184130264200af4780a5a54c020d84629a
5
5
  SHA512:
6
- metadata.gz: dfaa0989bafc3ae7e8d8675827b5728dd0476e1f62f79021b121407af2fa05ee4b47456f1db22aa46eb3aadfb4549a4ca3d0cf0c85bd0f8e6334c5105b36f1aa
7
- data.tar.gz: f9056d920a5164dc109490c809fd8d57174ffcc30d6851f52cb676937befce297e42ff89c702b60b2d2b825c3edc55b8b744538744296bb6c83c36e4a1bcf9ad
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
@@ -2,6 +2,8 @@
2
2
 
3
3
  Add parameter check, type check, change record type API.
4
4
 
5
+ - 0.4.1 add max_level to flatten helper
6
+
5
7
  ## 0.3
6
8
 
7
9
  Refactor.
@@ -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
- case v
68
- when Hash
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
@@ -1,3 +1,3 @@
1
1
  class DataListConverter
2
- VERSION = "0.4.0".freeze
2
+ VERSION = "0.4.1".freeze
3
3
  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.0
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-02 00:00:00.000000000 Z
11
+ date: 2016-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake