rxl 0.5.1 → 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/README.md +35 -29
- data/lib/rxl.rb +2 -2
- data/lib/rxl/version.rb +1 -1
- data/lib/workbook.rb +2 -4
- data/lib/worksheet.rb +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de4749440f95c5322dd8ebd53fbe5cb404ea1fb74cf8f8f3ccb5075bf8546a13
|
4
|
+
data.tar.gz: 45c65180dff5b3ea3caa4e419b6dbc484bc3f08ec893c498bd0eefa292dc03a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d14ae0ec6967b65750b93b5bd83f586f709f54ec59d6b67d88c79f2eae50121532520714f104eda924615d246ed8ff5a5c466d9a5485c96bd81b07fab91eb828
|
7
|
+
data.tar.gz: 04fb929742e396df0798f59d92fdb78b98d93be0c303a13fb5c30a25d6b3596ffc438c59570f4354776822c90a870ad45eef2b2a7f9da1d442c2126dd6e72314
|
data/README.md
CHANGED
@@ -10,6 +10,10 @@ The mechanics of the conversion between xlsx and ruby hash have been implemented
|
|
10
10
|
|
11
11
|
https://github.com/weshatheleopard/rubyXL
|
12
12
|
|
13
|
+
## Breaking changes
|
14
|
+
|
15
|
+
Version 0.6.0 introduces a breaking change in the format of inputs for writing as tables, refer to revised documentation below.
|
16
|
+
|
13
17
|
## Installation
|
14
18
|
|
15
19
|
Add this line to your application's Gemfile:
|
@@ -240,35 +244,37 @@ TODO: add full description for hash_cell_to_rubyxl_cell and rubyxl_cell_to_hash_
|
|
240
244
|
To write a file as pass the filename and hash:
|
241
245
|
|
242
246
|
```ruby
|
243
|
-
Rxl.write_file_as_tables('path/to/save.xlsx', hash_tables
|
247
|
+
Rxl.write_file_as_tables('path/to/save.xlsx', hash_tables)
|
244
248
|
```
|
245
249
|
|
246
|
-
The worksheets' top row will be populated with values specified in the `
|
250
|
+
The worksheets' top row will be populated with values specified in the `columns` array. Those array items will also be used to extract the current row from the current hash.
|
247
251
|
|
248
|
-
* use `nil` in the `
|
252
|
+
* use `nil` in the `columns` array to leave blank columns (including blank header)
|
249
253
|
* string or symbol keys can be used, so long as the key in order is the same as in the hashes
|
250
254
|
|
251
255
|
The format of the excel hash_workbook has sheet names as keys and hashes of rows as values:
|
252
256
|
|
253
257
|
```ruby
|
254
|
-
order = %i[header_a header_b]
|
255
258
|
hash_tables = {
|
256
|
-
'Sheet1' =>
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
259
|
+
'Sheet1' => {
|
260
|
+
columns: %i[header_a header_b],
|
261
|
+
rows: [
|
262
|
+
{
|
263
|
+
header_a: 'some_value',
|
264
|
+
header_b: 'other_value'
|
265
|
+
},
|
266
|
+
{
|
267
|
+
header_a: 'some_value',
|
268
|
+
header_b: 'other_value'
|
269
|
+
}
|
270
|
+
]
|
271
|
+
}
|
266
272
|
}
|
267
273
|
```
|
268
274
|
|
269
275
|
#### Formatting for tables
|
270
276
|
|
271
|
-
Add formatting to tables by adding a `:formats` key to the
|
277
|
+
Add formatting to tables by adding a `:formats` key to the sheet hash.
|
272
278
|
|
273
279
|
Inside the formatting hash add child hashes with keys for the relevant table.
|
274
280
|
|
@@ -279,10 +285,10 @@ Formatting for rows is not currently implemented.
|
|
279
285
|
Additionally inside the table hash add a key `:headers` with a cell hash (excluding `:value`) to set formatting for the header row.
|
280
286
|
|
281
287
|
```ruby
|
282
|
-
order = %i[header_a header_b]
|
283
288
|
hash_tables = {
|
284
|
-
|
285
|
-
|
289
|
+
'Sheet1' => {
|
290
|
+
columns: %i[header_a header_b],
|
291
|
+
formats: {
|
286
292
|
headers: {
|
287
293
|
bold: true,
|
288
294
|
align: 'center'
|
@@ -290,18 +296,18 @@ hash_tables = {
|
|
290
296
|
'B' => {
|
291
297
|
fill: 'feb302'
|
292
298
|
}
|
293
|
-
}
|
294
|
-
},
|
295
|
-
'Sheet1' => [
|
296
|
-
{
|
297
|
-
'col_1' => 'some_value',
|
298
|
-
'col_2' => 'other_value'
|
299
299
|
},
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
300
|
+
rows: [
|
301
|
+
{
|
302
|
+
'col_1' => 'some_value',
|
303
|
+
'col_2' => 'other_value'
|
304
|
+
},
|
305
|
+
{
|
306
|
+
'col_1' => 'some_value',
|
307
|
+
'col_2' => 'other_value'
|
308
|
+
}
|
309
|
+
]
|
310
|
+
}
|
305
311
|
}
|
306
312
|
```
|
307
313
|
|
data/lib/rxl.rb
CHANGED
@@ -10,8 +10,8 @@ module Rxl
|
|
10
10
|
nil
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.write_file_as_tables(filepath, hash_tables,
|
14
|
-
hash_workbook = Workbook.hashes_to_hash_workbook(hash_tables,
|
13
|
+
def self.write_file_as_tables(filepath, hash_tables, write_headers: true)
|
14
|
+
hash_workbook = Workbook.hashes_to_hash_workbook(hash_tables, write_headers: write_headers)
|
15
15
|
write_file(filepath, hash_workbook)
|
16
16
|
nil
|
17
17
|
end
|
data/lib/rxl/version.rb
CHANGED
data/lib/workbook.rb
CHANGED
@@ -26,12 +26,10 @@ module Workbook
|
|
26
26
|
rubyxl_workbook
|
27
27
|
end
|
28
28
|
|
29
|
-
def self.hashes_to_hash_workbook(hash_tables,
|
29
|
+
def self.hashes_to_hash_workbook(hash_tables, write_headers: true)
|
30
30
|
hash_workbook = {}
|
31
|
-
all_formats = hash_tables.delete(:formats) || {}
|
32
31
|
hash_tables.each do |k, v|
|
33
|
-
|
34
|
-
hash_workbook[k] = Worksheet.hashes_to_hash_worksheet(v, order, formats, write_headers: write_headers)
|
32
|
+
hash_workbook[k] = Worksheet.hashes_to_hash_worksheet(v[:rows], v[:columns], v[:formats] || {}, write_headers: write_headers)
|
35
33
|
end
|
36
34
|
hash_workbook
|
37
35
|
end
|
data/lib/worksheet.rb
CHANGED
@@ -38,11 +38,11 @@ module Worksheet
|
|
38
38
|
### GET RUBYXL WORKSHEET FROM HASHES ###
|
39
39
|
################################################
|
40
40
|
|
41
|
-
def self.hashes_to_hash_worksheet(hashes,
|
41
|
+
def self.hashes_to_hash_worksheet(hashes, columns, formats, write_headers: true)
|
42
42
|
rows = hashes.map do |hash|
|
43
|
-
|
43
|
+
columns.map { |item| hash[item] }
|
44
44
|
end
|
45
|
-
rows.unshift(
|
45
|
+
rows.unshift(columns.map { |item| "#{item}" }) if write_headers
|
46
46
|
hash_worksheet = rows_to_hash_worksheet(rows)
|
47
47
|
format_hash_worksheet(hash_worksheet, formats, write_headers) if formats
|
48
48
|
hash_worksheet
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rxl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian McWilliams
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|