worker_tools 1.1.1 → 1.2

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: 04c80c0e36c172bb743ef9906a76fa10ddc47c624c8b61bd86d0910c1808c452
4
- data.tar.gz: ce7cda946cace6bee98b2ad5d3faa0b89acad160eede6b93ea2ba464cd628cb7
3
+ metadata.gz: df0b1a0aede242ffcdd30a20f86adc4b05d78cf1634e998ad25c5edb0b654b9e
4
+ data.tar.gz: be05c13b2ab05fc02d67692bc676087c97502b9ef8d7598910d54650c9122241
5
5
  SHA512:
6
- metadata.gz: 93b3c452a9238d6b85d6c39a5f47b9717535728e8f264a96dddea871455f48f2d81506b2d55003e075d055e377e4d670d48d83db915fff75381c7d04ec11b1ab
7
- data.tar.gz: dcfac783ca52f62365be559827ad4de0690b95e62724975a40c8b4daaf58e861878cf61503613ecad6669d948ae76a833aa8c718a2a457e670ce1467110699fb
6
+ metadata.gz: ea0934e1b034b0011707909f2ef17c98c52458885d1ead4ee537373c668cf50a72c44c5b3dfcb6dfc1e9beab7a97e12892372415fe9f73c1b4a2952b9c032584
7
+ data.tar.gz: 27550fcf2510fe836215ee316b24780f732afda39714d69a8d1d60047048c91c01c6595475cc0396cc2b64d838d4eb9e953efcf078e6660e52a3c36f13b565cc
@@ -1,3 +1,3 @@
1
1
  module WorkerTools
2
- VERSION = '1.1.1'.freeze
2
+ VERSION = '1.2'.freeze
3
3
  end
@@ -1,5 +1,8 @@
1
1
  require 'rubyXL'
2
+ require 'rubyXL/convenience_methods'
3
+
2
4
  module WorkerTools
5
+ # rubocop:disable Metrics/ModuleLength
3
6
  module XlsxOutput
4
7
  def xlsx_output_entries
5
8
  raise "xlsx_output_entries has to be defined in #{self}"
@@ -25,7 +28,8 @@ module WorkerTools
25
28
  label: 'Sheet 1',
26
29
  headers: xlsx_output_column_headers,
27
30
  rows: xlsx_output_entries.lazy.map { |entry| xlsx_output_row_values(entry) },
28
- column_style: xlsx_output_column_format
31
+ column_style: xlsx_output_column_format,
32
+ number_format: xlsx_output_number_format
29
33
  }
30
34
  }
31
35
  end
@@ -48,6 +52,21 @@ module WorkerTools
48
52
  {}
49
53
  end
50
54
 
55
+ def xlsx_output_number_format
56
+ # set the cell number format for a given column
57
+ # number format also applies to dates, see the excel documentation:
58
+ # https://support.microsoft.com/en-us/office/number-format-codes-in-excel-for-mac-5026bbd6-04bc-48cd-bf33-80f18b4eae68
59
+ # https://www.rubydoc.info/gems/rubyXL/3.3.21/RubyXL/NumberFormats
60
+ #
61
+ # Ex:
62
+ # @xlsx_output_number_format ||= {
63
+ # foo: :auto,
64
+ # bar: '0.00',
65
+ # # nothing for baz, it will go through `.to_s`
66
+ # }
67
+ {}
68
+ end
69
+
51
70
  def xlsx_output_insert_headers(spreadsheet, headers)
52
71
  return unless headers
53
72
 
@@ -62,13 +81,30 @@ module WorkerTools
62
81
  end
63
82
  end
64
83
 
65
- def xlsx_output_insert_rows(spreadsheet, rows, headers)
84
+ # rubocop:disable Metrics/AbcSize
85
+ # rubocop:disable Metrics/MethodLength
86
+ def xlsx_output_insert_rows(spreadsheet, rows, headers, number_formats)
87
+ number_format_by_col_index = Hash(number_formats).each_with_object({}) do |(col, number_format), hash|
88
+ hash[headers.keys.index(col)] = number_format
89
+ end
90
+
66
91
  rows.each_with_index do |row, row_index|
67
92
  xlsx_output_iterators(row, headers).each_with_index do |value, col_index|
68
- spreadsheet.add_cell(row_index + 1, col_index, value.to_s)
93
+ number_format = number_format_by_col_index[col_index]
94
+
95
+ case number_format
96
+ when :auto, 'auto'
97
+ spreadsheet.add_cell(row_index + 1, col_index, value)
98
+ when nil
99
+ spreadsheet.add_cell(row_index + 1, col_index, value.to_s)
100
+ else
101
+ spreadsheet.add_cell(row_index + 1, col_index, value).set_number_format(number_format)
102
+ end
69
103
  end
70
104
  end
71
105
  end
106
+ # rubocop:enable Metrics/AbcSize
107
+ # rubocop:enable Metrics/MethodLength
72
108
 
73
109
  def xlsx_output_iterators(iterable, compare_hash = nil)
74
110
  if iterable.is_a? Hash
@@ -108,6 +144,7 @@ module WorkerTools
108
144
  )
109
145
  end
110
146
 
147
+ # rubocop:disable Metrics/AbcSize
111
148
  def xlsx_output_write_sheet(workbook, sheet_content, index)
112
149
  sheet = workbook.worksheets[index]
113
150
  sheet = workbook.add_worksheet(sheet_content[:label]) if sheet.nil?
@@ -115,8 +152,9 @@ module WorkerTools
115
152
  sheet.sheet_name = sheet_content[:label]
116
153
  xlsx_output_style_columns(sheet, sheet_content[:column_style], sheet_content[:headers])
117
154
  xlsx_output_insert_headers(sheet, sheet_content[:headers])
118
- xlsx_output_insert_rows(sheet, sheet_content[:rows], sheet_content[:headers])
155
+ xlsx_output_insert_rows(sheet, sheet_content[:rows], sheet_content[:headers], sheet_content[:number_format])
119
156
  end
157
+ # rubocop:enable Metrics/AbcSize
120
158
 
121
159
  def xlsx_output_write_file
122
160
  book = RubyXL::Workbook.new
@@ -129,4 +167,5 @@ module WorkerTools
129
167
  xlsx_output_add_attachment
130
168
  end
131
169
  end
170
+ # rubocop:enable Metrics/ModuleLength
132
171
  end
data/worker_tools.gemspec CHANGED
@@ -39,7 +39,7 @@ Gem::Specification.new do |spec|
39
39
  spec.add_development_dependency 'mocha'
40
40
  spec.add_development_dependency 'pry'
41
41
  spec.add_development_dependency 'rake'
42
- spec.add_development_dependency 'rubocop', '0.71.0'
42
+ spec.add_development_dependency 'rubocop', '0.72.0'
43
43
  spec.add_development_dependency 'simplecov'
44
44
  spec.add_development_dependency 'sqlite3'
45
45
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: worker_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: '1.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - fsainz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-02-01 00:00:00.000000000 Z
11
+ date: 2025-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - '='
186
186
  - !ruby/object:Gem::Version
187
- version: 0.71.0
187
+ version: 0.72.0
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - '='
193
193
  - !ruby/object:Gem::Version
194
- version: 0.71.0
194
+ version: 0.72.0
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: simplecov
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -272,7 +272,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
272
272
  - !ruby/object:Gem::Version
273
273
  version: '0'
274
274
  requirements: []
275
- rubygems_version: 3.1.2
275
+ rubygems_version: 3.1.6
276
276
  signing_key:
277
277
  specification_version: 4
278
278
  summary: A collection of modules to help writing common worker tasks)