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 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