data_list_converter 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/data_list_converter.gemspec +2 -2
- data/lib/data_list_converter/filters/remove_debug.rb +7 -2
- data/lib/data_list_converter/helper.rb +2 -2
- data/lib/data_list_converter/types/fast_xlsx_file.rb +11 -6
- data/lib/data_list_converter/types/xls_file.rb +6 -3
- data/lib/data_list_converter/version.rb +1 -1
- data/test/helper_test.rb +17 -4
- data/test/types_test.rb +7 -8
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ef151bc69ca24bc9d3b73d22d28ba23afa8aa1a7a6ddf312136880d71965e80
|
4
|
+
data.tar.gz: 7d8c795b6d6f910d8abdf31f5979e97ed56c61a45ed6d3df8814133059f10a09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c203708cccb88b08401f3dfdc49273fe6d31da24112262677bb26c9e7472b25dc6bb700688de9dea435f05c174bd722c410224eab43ee85812460142db0a5a2
|
7
|
+
data.tar.gz: d4b85c049e047315a9ba2720c27c486ff5fd470c9c1cad40f14748bfd4986a7354b7d49eb65b2895ef1d8d5908f53f4f857679b4b9cc7547dabd772be128132e
|
data/data_list_converter.gemspec
CHANGED
@@ -15,9 +15,9 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.add_development_dependency 'rake', '~> 10.4'
|
16
16
|
s.add_development_dependency 'minitest', '~> 5.7'
|
17
17
|
s.add_development_dependency 'spreadsheet', '~> 1.0'
|
18
|
-
s.add_development_dependency 'rubyXL', '
|
18
|
+
s.add_development_dependency 'rubyXL', '3.3.15'
|
19
19
|
s.add_development_dependency 'pry', '~> 0.10.1'
|
20
|
-
s.add_development_dependency 'sqlite3',
|
20
|
+
s.add_development_dependency 'sqlite3', "1.3.11"
|
21
21
|
s.add_development_dependency 'activerecord', '~> 4.2'
|
22
22
|
s.add_development_dependency 'xlsxtream'
|
23
23
|
s.add_development_dependency 'creek'
|
@@ -6,9 +6,14 @@ class DataListConverter
|
|
6
6
|
proc.call do |row|
|
7
7
|
unless columns
|
8
8
|
columns = row
|
9
|
-
debug_index = columns.index('debug')
|
9
|
+
debug_index = columns.index('debug') || columns.index('Debug')
|
10
|
+
end
|
11
|
+
|
12
|
+
if debug_index != nil
|
13
|
+
block.call(row[0..(debug_index-1)])
|
14
|
+
else
|
15
|
+
block.call(row)
|
10
16
|
end
|
11
|
-
block.call(row[0..(debug_index-1)])
|
12
17
|
end
|
13
18
|
}
|
14
19
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
class DataListConverter
|
2
2
|
def self.save_to_file(filename, data, data_format=:item_data, options={})
|
3
|
-
file_format = self.get_file_format(filename)
|
3
|
+
file_format = options.delete(:file_format) || self.get_file_format(filename)
|
4
4
|
options[file_format] = {filename: filename}
|
5
5
|
DataListConverter.convert(data_format, file_format, data, options)
|
6
6
|
end
|
7
7
|
|
8
8
|
def self.load_from_file(filename, data_format=:item_data, options={})
|
9
|
-
file_format = self.get_file_format(filename)
|
9
|
+
file_format = options.delete(:file_format) || self.get_file_format(filename)
|
10
10
|
options[:filename] = filename
|
11
11
|
DataListConverter.convert(file_format, data_format, options)
|
12
12
|
end
|
@@ -1,9 +1,14 @@
|
|
1
1
|
require 'xlsxtream'
|
2
2
|
require 'creek'
|
3
3
|
|
4
|
+
# usage:
|
5
|
+
# require 'data_list_converter/types/fast_xlsx_file'
|
6
|
+
# d = [{a: 12.3, b: 'xx'}]
|
7
|
+
# DataListConverter.save_to_file("t.xls", d, :item_data, file_format: :fast_xlsx_file)
|
8
|
+
|
4
9
|
class DataListConverter
|
5
10
|
|
6
|
-
self.register_converter(:
|
11
|
+
self.register_converter(:fast_xlsx_file, :table_iterator) do |input, options|
|
7
12
|
lambda { |&block|
|
8
13
|
filename = self.parameter(input, :filename, :input)
|
9
14
|
|
@@ -15,7 +20,7 @@ class DataListConverter
|
|
15
20
|
}
|
16
21
|
end
|
17
22
|
|
18
|
-
self.register_converter(:
|
23
|
+
self.register_converter(:fast_xlsx_file, :multi_sheet_table_iterator) do |input, options|
|
19
24
|
filename = self.parameter(input, :filename, :input)
|
20
25
|
|
21
26
|
creek = Creek::Book.new filename
|
@@ -29,8 +34,8 @@ class DataListConverter
|
|
29
34
|
end.to_h
|
30
35
|
end
|
31
36
|
|
32
|
-
self.register_converter(:table_iterator, :
|
33
|
-
filename = self.parameter(options, :filename, :
|
37
|
+
self.register_converter(:table_iterator, :fast_xlsx_file) do |proc, options|
|
38
|
+
filename = self.parameter(options, :filename, :fast_xlsx_file)
|
34
39
|
Xlsxtream::Workbook.open(filename) do |xlsx|
|
35
40
|
xlsx.write_worksheet (options[:sheet] || "Sheet1") do |sheet|
|
36
41
|
proc.call do |row|
|
@@ -41,8 +46,8 @@ class DataListConverter
|
|
41
46
|
filename
|
42
47
|
end
|
43
48
|
|
44
|
-
self.register_converter(:multi_sheet_table_iterator, :
|
45
|
-
filename = self.parameter(options, :filename, :
|
49
|
+
self.register_converter(:multi_sheet_table_iterator, :fast_xlsx_file) do |data, options|
|
50
|
+
filename = self.parameter(options, :filename, :fast_xlsx_file)
|
46
51
|
Xlsxtream::Workbook.open(filename) do |xlsx|
|
47
52
|
data.each do |name, table_iterator|
|
48
53
|
xlsx.write_worksheet(name.to_s) do |sheet|
|
@@ -15,11 +15,13 @@ class DataListConverter
|
|
15
15
|
end
|
16
16
|
|
17
17
|
self.register_converter(:table_iterator, :xls_file) do |proc, options|
|
18
|
+
type = options[:type]
|
18
19
|
book = Spreadsheet::Workbook.new
|
19
20
|
sheet = book.create_worksheet(name: (options[:sheet] || "Sheet1"))
|
21
|
+
|
20
22
|
i = 0
|
21
23
|
proc.call do |row|
|
22
|
-
row = row.map(&:to_s)
|
24
|
+
row = row.map(&:to_s) unless type == :raw
|
23
25
|
sheet.row(i).push *row
|
24
26
|
i += 1
|
25
27
|
end
|
@@ -29,12 +31,13 @@ class DataListConverter
|
|
29
31
|
end
|
30
32
|
|
31
33
|
self.register_converter(:multi_sheet_table_iterator, :xls_file) do |data, options|
|
34
|
+
type = options[:type]
|
32
35
|
book = Spreadsheet::Workbook.new
|
33
36
|
data.each do |name, table_iterator|
|
34
37
|
sheet = book.create_worksheet(name: name.to_s)
|
35
38
|
i = 0
|
36
39
|
table_iterator.call do |row|
|
37
|
-
row = row.map(&:to_s)
|
40
|
+
row = row.map(&:to_s) unless type == :raw
|
38
41
|
sheet.row(i).concat(row)
|
39
42
|
i += 1
|
40
43
|
end
|
@@ -49,7 +52,7 @@ class DataListConverter
|
|
49
52
|
book = Spreadsheet.open(filename)
|
50
53
|
book.worksheets.map do |sheet|
|
51
54
|
iterator = lambda { |&block|
|
52
|
-
sheet.each do |row|
|
55
|
+
sheet.each do |row|
|
53
56
|
block.call(row.to_a)
|
54
57
|
end
|
55
58
|
}
|
data/test/helper_test.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'data_list_converter/types/csv_file'
|
2
2
|
require 'data_list_converter/types/xls_file'
|
3
3
|
require 'data_list_converter/types/xlsx_file'
|
4
|
+
require 'data_list_converter/types/fast_xlsx_file'
|
4
5
|
require 'data_list_converter/types/marshal'
|
5
6
|
|
6
7
|
describe DataListConverter do
|
@@ -19,7 +20,7 @@ describe DataListConverter do
|
|
19
20
|
:multi_sheet_item_iterator,
|
20
21
|
:multi_sheet_table_iterator,
|
21
22
|
:marshal_file,
|
22
|
-
:csv_file, :csv_raw, :xls_file, :xlsx_file,
|
23
|
+
:csv_file, :csv_raw, :fast_xlsx_file, :xls_file, :xlsx_file,
|
23
24
|
:records, :raw,
|
24
25
|
].sort
|
25
26
|
)
|
@@ -30,7 +31,7 @@ describe DataListConverter do
|
|
30
31
|
specify do
|
31
32
|
@c.file_types.must_equal(
|
32
33
|
[
|
33
|
-
:csv_file, :xlsx_file, :xls_file, :marshal_file
|
34
|
+
:csv_file, :fast_xlsx_file, :xlsx_file, :xls_file, :marshal_file
|
34
35
|
].sort
|
35
36
|
)
|
36
37
|
end
|
@@ -48,17 +49,29 @@ describe DataListConverter do
|
|
48
49
|
describe :load_and_save_to_file do
|
49
50
|
specify do
|
50
51
|
filename = 'result.csv'
|
52
|
+
data = [{a: '12', b: '3'}, {a: '1', b: '4'}]
|
53
|
+
table_data = [['a', 'b'], ['a1', 'b1']]
|
54
|
+
|
51
55
|
begin
|
52
|
-
data = [{a: '12', b: '3'}, {a: '1', b: '4'}]
|
53
56
|
@c.save_to_file(filename, data)
|
54
57
|
@c.load_from_file(filename).must_equal(data)
|
55
58
|
|
56
|
-
table_data = [['a', 'b'], ['a1', 'b1']]
|
57
59
|
@c.save_to_file(filename, table_data, :table_data)
|
58
60
|
@c.load_from_file(filename, :table_data).must_equal(table_data)
|
59
61
|
ensure
|
60
62
|
FileUtils.rm_rf(filename)
|
61
63
|
end
|
64
|
+
|
65
|
+
filename = "result.xlsx"
|
66
|
+
begin
|
67
|
+
@c.save_to_file(filename, data, :item_data, file_format: :fast_xlsx_file)
|
68
|
+
@c.load_from_file(filename, :item_data, file_format: :fast_xlsx_file).must_equal(data)
|
69
|
+
|
70
|
+
@c.save_to_file(filename, table_data, :table_data, file_format: :fast_xlsx_file)
|
71
|
+
@c.load_from_file(filename, :table_data, file_format: :fast_xlsx_file).must_equal(table_data)
|
72
|
+
ensure
|
73
|
+
FileUtils.rm_rf(filename)
|
74
|
+
end
|
62
75
|
end
|
63
76
|
end
|
64
77
|
|
data/test/types_test.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'data_list_converter/types/csv_file'
|
2
2
|
require 'data_list_converter/types/xls_file'
|
3
3
|
require 'data_list_converter/types/xlsx_file'
|
4
|
+
require 'data_list_converter/types/fast_xlsx_file'
|
4
5
|
require 'data_list_converter/types/marshal'
|
5
6
|
|
6
7
|
describe DataListConverter do
|
@@ -79,18 +80,16 @@ describe DataListConverter do
|
|
79
80
|
end
|
80
81
|
end
|
81
82
|
|
82
|
-
|
83
|
-
|
84
|
-
describe :xlsx_file do
|
83
|
+
describe :fast_xlsx_file do
|
85
84
|
specify do
|
86
85
|
filename = 'test.xlsx'
|
87
86
|
begin
|
88
|
-
@c.convert(:item_data, :
|
89
|
-
@c.convert(:
|
87
|
+
@c.convert(:item_data, :fast_xlsx_file, ITEM_DATA, fast_xlsx_file: {filename: filename})
|
88
|
+
@c.convert(:fast_xlsx_file, :item_data, {filename: filename}).must_equal ITEM_DATA
|
90
89
|
|
91
|
-
@c.convert(:multi_sheet_table_data, :
|
92
|
-
|
93
|
-
@c.convert(:
|
90
|
+
@c.convert(:multi_sheet_table_data, :fast_xlsx_file, MULTI_SHEET_TABLE_DATA,
|
91
|
+
fast_xlsx_file: {filename: filename})
|
92
|
+
@c.convert(:fast_xlsx_file, :multi_sheet_table_data,
|
94
93
|
{filename: filename},
|
95
94
|
).must_equal(MULTI_SHEET_TABLE_DATA)
|
96
95
|
ensure
|
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
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- linjunhalida
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -56,16 +56,16 @@ dependencies:
|
|
56
56
|
name: rubyXL
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 3.3.15
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 3.3.15
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: pry
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,16 +84,16 @@ dependencies:
|
|
84
84
|
name: sqlite3
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - '='
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 1.3.11
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - '='
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 1.3.11
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: activerecord
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -189,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
189
189
|
- !ruby/object:Gem::Version
|
190
190
|
version: '0'
|
191
191
|
requirements: []
|
192
|
-
rubygems_version: 3.0.
|
192
|
+
rubygems_version: 3.0.9
|
193
193
|
signing_key:
|
194
194
|
specification_version: 4
|
195
195
|
summary: convert data between different formats
|