data_list_converter 0.4.3 → 0.4.4

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
  SHA256:
3
- metadata.gz: ed694a5c72e52682133a22004d381f3968c3d28db54cbeba194eda7c793e70a9
4
- data.tar.gz: 656daa9eb323ffa7b7bddb8e40df86606889f091f56c47069f39e37c9f434741
3
+ metadata.gz: f65479d343c6345e3dbaf9762d3dcd8e6e0fc353bfc8441cc1dd3e7d9385aaba
4
+ data.tar.gz: fc2be9587bfafe4a5da8558e10b49fd3a85b514e0c79057bb8abe61b5bb5f958
5
5
  SHA512:
6
- metadata.gz: ad413ccb9e7f0552a39965c69f7924df825eda9933d9acfb83e20455ea03cdd25f34dd8275187190ca868b34fa490c4025c1024820ebf8627345b7e1d6a8d969
7
- data.tar.gz: be36997b5d5b37af61e8c5281038ecb8187650ee3d8c506ea852fec5bba8c324a8434e53fe2e2ba729a86deb667376d331aed6194c9cd05286fd636cdbc48219
6
+ metadata.gz: 9faf4b96e80b3bc6146ead5b2cbbdc6b707ccd472489fbbaab88723d57e1e4865037d11adeec061b9162cdacdc4ba9c8942a70acf1b617a153d2603fb3201196
7
+ data.tar.gz: '090045d9d7b897e899bbdaa53135854a98f66b1a3a4e698df7ba24ecfeb0c05c0ebf5a7527576af67bae4d997611625398b1d0efbe2a31e70f9d3fdb81b07c49'
@@ -19,6 +19,8 @@ Gem::Specification.new do |s|
19
19
  s.add_development_dependency 'pry', '~> 0.10.1'
20
20
  s.add_development_dependency 'sqlite3', '~> 1.3'
21
21
  s.add_development_dependency 'activerecord', '~> 4.2'
22
+ s.add_development_dependency 'xlsxtream'
23
+ s.add_development_dependency 'creek'
22
24
 
23
25
  s.files = `git ls-files`.split("\n")
24
26
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -0,0 +1,58 @@
1
+ require 'xlsxtream'
2
+ require 'creek'
3
+
4
+ class DataListConverter
5
+
6
+ self.register_converter(:xlsx_file, :table_iterator) do |input, options|
7
+ lambda { |&block|
8
+ filename = self.parameter(input, :filename, :input)
9
+
10
+ creek = Creek::Book.new filename
11
+ sheet = creek.sheets[input[:sheet] || 0]
12
+ sheet.rows.each do |row|
13
+ block.call(row.values)
14
+ end
15
+ }
16
+ end
17
+
18
+ self.register_converter(:xlsx_file, :multi_sheet_table_iterator) do |input, options|
19
+ filename = self.parameter(input, :filename, :input)
20
+
21
+ creek = Creek::Book.new filename
22
+ creek.sheets.map do |sheet|
23
+ iterator = lambda { |&block|
24
+ sheet.rows.each do |row|
25
+ block.call(row.values)
26
+ end
27
+ }
28
+ [sheet.name.to_sym, iterator]
29
+ end.to_h
30
+ end
31
+
32
+ self.register_converter(:table_iterator, :xlsx_file) do |proc, options|
33
+ filename = self.parameter(options, :filename, :xlsx_file)
34
+ Xlsxtream::Workbook.open(filename) do |xlsx|
35
+ xlsx.write_worksheet (options[:sheet] || "Sheet1") do |sheet|
36
+ proc.call do |row|
37
+ sheet << row
38
+ end
39
+ end
40
+ end
41
+ filename
42
+ end
43
+
44
+ self.register_converter(:multi_sheet_table_iterator, :xlsx_file) do |data, options|
45
+ filename = self.parameter(options, :filename, :xlsx_file)
46
+ Xlsxtream::Workbook.open(filename) do |xlsx|
47
+ data.each do |name, table_iterator|
48
+ xlsx.write_worksheet(name.to_s) do |sheet|
49
+ table_iterator.call do |row|
50
+ sheet << row
51
+ end
52
+ end
53
+ end
54
+ end
55
+ filename
56
+ end
57
+
58
+ end
@@ -1,3 +1,3 @@
1
1
  class DataListConverter
2
- VERSION = "0.4.3".freeze
2
+ VERSION = "0.4.4".freeze
3
3
  end
@@ -79,6 +79,27 @@ describe DataListConverter do
79
79
  end
80
80
  end
81
81
 
82
+ require 'data_list_converter/types/fast_xlsx_file'
83
+
84
+ describe :xlsx_file do
85
+ specify do
86
+ filename = 'test.xlsx'
87
+ begin
88
+ @c.convert(:item_data, :xlsx_file, ITEM_DATA, xlsx_file: {filename: filename})
89
+ @c.convert(:xlsx_file, :item_data, {filename: filename}).must_equal ITEM_DATA
90
+
91
+ @c.convert(:multi_sheet_table_data, :xlsx_file, MULTI_SHEET_TABLE_DATA,
92
+ xlsx_file: {filename: filename})
93
+ @c.convert(:xlsx_file, :multi_sheet_table_data,
94
+ {filename: filename},
95
+ ).must_equal(MULTI_SHEET_TABLE_DATA)
96
+ ensure
97
+ FileUtils.rm_f(filename)
98
+ end
99
+ end
100
+
101
+ end
102
+
82
103
  describe :marshal do
83
104
  specify do
84
105
  filename = 'test.marshal'
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.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - linjunhalida
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-04 00:00:00.000000000 Z
11
+ date: 2020-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -108,6 +108,34 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '4.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: xlsxtream
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: creek
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
111
139
  description: Data List Converter is a tool to convert data between different formats.
112
140
  email:
113
141
  - linjunhalida@gmail.com
@@ -130,6 +158,7 @@ files:
130
158
  - lib/data_list_converter/helper.rb
131
159
  - lib/data_list_converter/types/basic.rb
132
160
  - lib/data_list_converter/types/csv_file.rb
161
+ - lib/data_list_converter/types/fast_xlsx_file.rb
133
162
  - lib/data_list_converter/types/marshal.rb
134
163
  - lib/data_list_converter/types/multi_sheet.rb
135
164
  - lib/data_list_converter/types/records.rb
@@ -160,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
160
189
  - !ruby/object:Gem::Version
161
190
  version: '0'
162
191
  requirements: []
163
- rubygems_version: 3.0.6
192
+ rubygems_version: 3.0.8
164
193
  signing_key:
165
194
  specification_version: 4
166
195
  summary: convert data between different formats