data_list_converter 0.3.8 → 0.3.9

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: f357db4b2525dead9375cca320a5830b7fcc73ea
4
- data.tar.gz: ee1043d9b2f41d5ad41c871e31a3658b2f6ad348
3
+ metadata.gz: 2ecbbb8c5d6e3ad1e2de6f3b4a8fc5033cdc83ff
4
+ data.tar.gz: f4b8eb65bf43e3f28ed3607b06f5643eb278b4a4
5
5
  SHA512:
6
- metadata.gz: 06d419b8f559f1706a258f0f9c57e9062b8c677f4a08e7009a6a6fc24e22ccca21aba5f586c35a7914178fbbabee455e9d98996e7788919776b9dbca01335c48
7
- data.tar.gz: 42448560dab15937d25c9dfbcedabe3c657030648d454965c7e833c426a7413812a43acb29c82061b67570f7abe8eeceac06117fc75b81039d4c7e787438639b
6
+ metadata.gz: ea3669bc7a3bb7e381387538433bad76401ffe288d3dd54d2d7181797719951b138db9810fc98ac1460361fa3b25b6924d040c06f3cb19bb54db4bc43545b718
7
+ data.tar.gz: 159e246ba2bc8e83b0b699d4a503328bd2ddd2d5792cabaea6c541388f705d0d41a62b3c06fd09a1e6aceac3d1d7fb4632798a847d273fc2ab9c963524d44601
data/README.md CHANGED
@@ -98,7 +98,9 @@ end
98
98
 
99
99
  ## Todo
100
100
 
101
+ - check type exists
101
102
  - register can bind method again
102
103
  - better API
103
104
  - better error message
104
105
  - load file/save file with auto format by extname
106
+ - report error when cannot find type
data/changelog.md CHANGED
@@ -7,6 +7,7 @@ Refactor.
7
7
  - 0.3.5 add csv_raw type
8
8
  - 0.3.7 add marshal_file type, and load_from_file, save_to_file helper
9
9
  - 0.3.8 add raw type
10
+ - 0.3.9 add unify_item_data_keys helper
10
11
 
11
12
  ## 0.2
12
13
 
@@ -29,4 +29,21 @@ class DataListConverter
29
29
  matcher.match(type)
30
30
  end
31
31
  end
32
+
33
+ # sometimes item data keys don't exactly same, like:
34
+ # [{a: 12}, {b: 11}]
35
+ # should update to:
36
+ # [{a: 12, b: nil}, {a: nil, b: 11}]
37
+ # so it can be convent to table data
38
+ def self.unify_item_data_keys(list)
39
+ keys = Set.new
40
+ list.each do |item|
41
+ keys += item.keys
42
+ end
43
+ list.each do |item|
44
+ keys.each do |key|
45
+ item[key] ||= nil
46
+ end
47
+ end
48
+ end
32
49
  end
@@ -6,7 +6,7 @@ class DataListConverter
6
6
  lambda { |&block|
7
7
  records.find_each do |record|
8
8
  item = columns.map do |column|
9
- [column.first.to_sym, record.send(column[1])]
9
+ [column[0].to_sym, record.send(column[1])]
10
10
  end.to_h
11
11
  block.call(item)
12
12
  end
@@ -9,7 +9,7 @@ class DataListConverter
9
9
  sheet = book.worksheets[input[:sheet] || 0]
10
10
  sheet.each do |row|
11
11
  next unless row
12
- row_data = row.cells.map{|i| i.try(:value)}
12
+ row_data = row.cells.map{|i| i ? i.value : nil} # i maybe nil
13
13
  block.call(row_data)
14
14
  end
15
15
  }
@@ -66,7 +66,7 @@ class DataListConverter
66
66
  iterator = lambda { |&block|
67
67
  sheet.each do |row|
68
68
  next unless row
69
- row_data = row.cells.map{|i| i.try(:value)}
69
+ row_data = row.cells.map{|i| i ? i.value : nil} # i maybe nil
70
70
  block.call(row_data)
71
71
  end
72
72
  }
@@ -1,3 +1,3 @@
1
1
  class DataListConverter
2
- VERSION = "0.3.8".freeze
2
+ VERSION = "0.3.9".freeze
3
3
  end
data/test/helper_test.rb CHANGED
@@ -62,4 +62,12 @@ describe DataListConverter do
62
62
  end
63
63
  end
64
64
 
65
+ describe :unify_item_data_keys do
66
+ specify do
67
+ list = [{a: 12}, {b: 11}]
68
+ @c.unify_item_data_keys(list)
69
+ list.must_equal([{a: 12, b: nil}, {a: nil, b: 11}])
70
+ end
71
+ end
72
+
65
73
  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.3.8
4
+ version: 0.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - linjunhalida
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-13 00:00:00.000000000 Z
11
+ date: 2016-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake