data_list_converter 0.5.0 → 0.6.0

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 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