data_list_converter 0.4.3 → 0.4.4
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/data_list_converter.gemspec +2 -0
- data/lib/data_list_converter/types/fast_xlsx_file.rb +58 -0
- data/lib/data_list_converter/version.rb +1 -1
- data/test/types_test.rb +21 -0
- metadata +32 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f65479d343c6345e3dbaf9762d3dcd8e6e0fc353bfc8441cc1dd3e7d9385aaba
|
4
|
+
data.tar.gz: fc2be9587bfafe4a5da8558e10b49fd3a85b514e0c79057bb8abe61b5bb5f958
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9faf4b96e80b3bc6146ead5b2cbbdc6b707ccd472489fbbaab88723d57e1e4865037d11adeec061b9162cdacdc4ba9c8942a70acf1b617a153d2603fb3201196
|
7
|
+
data.tar.gz: '090045d9d7b897e899bbdaa53135854a98f66b1a3a4e698df7ba24ecfeb0c05c0ebf5a7527576af67bae4d997611625398b1d0efbe2a31e70f9d3fdb81b07c49'
|
data/data_list_converter.gemspec
CHANGED
@@ -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
|
data/test/types_test.rb
CHANGED
@@ -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.
|
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-
|
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.
|
192
|
+
rubygems_version: 3.0.8
|
164
193
|
signing_key:
|
165
194
|
specification_version: 4
|
166
195
|
summary: convert data between different formats
|