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 +4 -4
- data/lib/worker_tools/version.rb +1 -1
- data/lib/worker_tools/xlsx_output.rb +43 -4
- data/worker_tools.gemspec +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df0b1a0aede242ffcdd30a20f86adc4b05d78cf1634e998ad25c5edb0b654b9e
|
4
|
+
data.tar.gz: be05c13b2ab05fc02d67692bc676087c97502b9ef8d7598910d54650c9122241
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea0934e1b034b0011707909f2ef17c98c52458885d1ead4ee537373c668cf50a72c44c5b3dfcb6dfc1e9beab7a97e12892372415fe9f73c1b4a2952b9c032584
|
7
|
+
data.tar.gz: 27550fcf2510fe836215ee316b24780f732afda39714d69a8d1d60047048c91c01c6595475cc0396cc2b64d838d4eb9e953efcf078e6660e52a3c36f13b565cc
|
data/lib/worker_tools/version.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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.
|
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.
|
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:
|
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.
|
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.
|
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.
|
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)
|