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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5acc292029d72d6edf08f6b588b4625bec532d8c9b3be03376c69c732ae4512f
4
- data.tar.gz: 61850de2e9b3d1da73ecb42e638d4c473a93442dd12d1012bcec1065ad672bb9
3
+ metadata.gz: 7ef151bc69ca24bc9d3b73d22d28ba23afa8aa1a7a6ddf312136880d71965e80
4
+ data.tar.gz: 7d8c795b6d6f910d8abdf31f5979e97ed56c61a45ed6d3df8814133059f10a09
5
5
  SHA512:
6
- metadata.gz: 355008ec8cf509d617a023779a6ae2824e87c9b4b41d0ff636a1b1f1d2557ab624b9a02a01e15eb9aff731cd755e2e5c63fbb379c9e056455d59fd7836a18021
7
- data.tar.gz: 8f1449e216cf16ff1a49198556880039806dd60adbf49c9edbfd638a6240c8c324297d5486dff4ab64f4360a93e8a81f90df933ef304e430fabf08997c764a64
6
+ metadata.gz: 7c203708cccb88b08401f3dfdc49273fe6d31da24112262677bb26c9e7472b25dc6bb700688de9dea435f05c174bd722c410224eab43ee85812460142db0a5a2
7
+ data.tar.gz: d4b85c049e047315a9ba2720c27c486ff5fd470c9c1cad40f14748bfd4986a7354b7d49eb65b2895ef1d8d5908f53f4f857679b4b9cc7547dabd772be128132e
@@ -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', '~> 3.3'
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', '~> 1.3'
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(:xlsx_file, :table_iterator) do |input, options|
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(:xlsx_file, :multi_sheet_table_iterator) do |input, options|
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, :xlsx_file) do |proc, options|
33
- filename = self.parameter(options, :filename, :xlsx_file)
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, :xlsx_file) do |data, options|
45
- filename = self.parameter(options, :filename, :xlsx_file)
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
  }
@@ -1,3 +1,3 @@
1
1
  class DataListConverter
2
- VERSION = "0.5.0".freeze
2
+ VERSION = "0.6.0".freeze
3
3
  end
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
- require 'data_list_converter/types/fast_xlsx_file'
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, :xlsx_file, ITEM_DATA, xlsx_file: {filename: filename})
89
- @c.convert(:xlsx_file, :item_data, {filename: filename}).must_equal ITEM_DATA
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, :xlsx_file, MULTI_SHEET_TABLE_DATA,
92
- xlsx_file: {filename: filename})
93
- @c.convert(:xlsx_file, :multi_sheet_table_data,
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.5.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: 2020-12-30 00:00:00.000000000 Z
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: '3.3'
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: '3.3'
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: '1.3'
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: '1.3'
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.8
192
+ rubygems_version: 3.0.9
193
193
  signing_key:
194
194
  specification_version: 4
195
195
  summary: convert data between different formats