rxl 0.2.0 → 0.2.1

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: cd17d97488a9891b7bce15f8352bd0fb4a1b5ccb030be154d20f4eeee9369c78
4
- data.tar.gz: 7c0dc41d7cac1f81724a951d3d228af7fa76d2c4c0d76878c06d15b4e73613bd
3
+ metadata.gz: 423f052155f315079efc3acd473a98ba955f378571aeba1eee1706f99d30c8a3
4
+ data.tar.gz: bf910f39824c12a512b7fafdcd94a6d478d1fc64bcfdcaa26c5a45c2d5c4b8d2
5
5
  SHA512:
6
- metadata.gz: 74d0cc8be8633bb2ff9bb6258a48dd5496819d6902133802af7416fcb19c691af13bd60e7b052346efc7bc9ae5566d9e39fb1593db76b89e965e897e30c42db7
7
- data.tar.gz: 0c6f3fdbb3d88bb2f3ab73f20b9d593d9cddb693505ffd049ff40d354763a568d38bc8f97a5adf6266147aa8a79809553f0503659d792874e9ce14983116657a
6
+ metadata.gz: 5489f6b1c8500457e0bb093b4437614c3ac3ecda3d28d9bae9c6f519817355217fa5e7701a33b331e34d18873ac4d38e3749110ddb4ab2cc23f33255eb70ac2e
7
+ data.tar.gz: dbab0226eb5a2e6bb82d5f345630f50d4f6da2bbdff5c96eeed154998821c228e5dab0610e9bbefbce2f6088f2daf09b171d343d98280843c4e7ff4909084576
data/README.md CHANGED
@@ -101,6 +101,35 @@ The format of the excel table read hash has the following skeleton:
101
101
  }
102
102
  ```
103
103
 
104
+ ### Read multiple files at once
105
+
106
+ Pass a hash of filepaths to read, get a hash of file contents back.
107
+
108
+ ```ruby
109
+ filepaths_hash = {
110
+ first_file: 'path/to/file.xlsx',
111
+ second_file: 'path/to/file.xlsx'
112
+ }
113
+
114
+ Rxl.read_files(filepaths_hash)
115
+ Rxl.read_files(filepaths_hash, :as_tables)
116
+ ```
117
+
118
+ Returns the files with sheet contents populated with hash of cells (or array of rows if :as_tables read type is specified):
119
+
120
+ ```ruby
121
+ {
122
+ first_file: {
123
+ "Sheet1" => 'sheet_contents',
124
+ "Sheet2" => 'sheet_contents'
125
+ },
126
+ second_file: {
127
+ "Sheet1" => 'sheet_contents',
128
+ "Sheet2" => 'sheet_contents'
129
+ },
130
+ }
131
+ ```
132
+
104
133
  ### Write to file
105
134
 
106
135
  To write a file pass the filename and hash:
@@ -109,16 +138,13 @@ To write a file pass the filename and hash:
109
138
  Rxl.write_file('path/to/save.xlsx', hash_workbook)
110
139
  ```
111
140
 
112
- The format of the excel hash_workbook must contain at least the following skeleton:
141
+ The format of the excel hash_workbook has sheet names as keys and hashes of cells as values:
113
142
 
114
143
  ```ruby
115
144
  {
116
145
  "Sheet1" => {
117
- cells: {
118
- 'A1' => {
119
- value: 'abc',
120
- format: 'text'
121
- }
146
+ 'A1' => {
147
+ value: 'abc'
122
148
  }
123
149
  }
124
150
  }
@@ -150,21 +176,27 @@ The following rules are validated for write_file:
150
176
  * The hash_workbook keys must be strings
151
177
  * The hash_workbook values (hash_worksheet) must be hashes
152
178
 
153
-
154
- * The hash_worksheet keys must be symbols
155
- * The following keys are allowed for hash_worksheet: :cells, :rows, :columns
156
- * The hash_worksheet values must be arrays - those arrays must contain only hashes
157
-
158
-
159
- * The arrays' child hash keys must be strings of valid Excel cell id format (or stringified number for a row, capitalised alpha for a column)
160
- * The arrays' child hash values must be hashes (hash_cell)
179
+ * The hash_worksheet keys must be strings of valid Excel cell id format
180
+ * The hash_worksheet values must be hashes (specifying cells)
161
181
  * The hash_cell keys must conform the the cell specification as below
162
182
 
163
183
  * If a formula is provided the value must be nil or an empty string
164
184
  * If a number format is provided the value must be consistent with it
165
185
 
166
186
 
167
- TODO: Add further detail
187
+ Cells are specified as hashes following this example:
188
+
189
+ ```ruby
190
+ {
191
+ value: 'abc'
192
+ }
193
+ ```
194
+
195
+ Other keys can be specified:
196
+ * v_align: :top, :centre or :bottom (default)
197
+ * h_align: :left (default), :centre or :right
198
+
199
+ TODO: add full description for hash_cell_to_rubyxl_cell and rubyxl_cell_to_hash_cell (and check they're as consistent as possible)
168
200
 
169
201
  ## Development
170
202
 
@@ -76,18 +76,6 @@ module Cell
76
76
  end
77
77
  end
78
78
 
79
- def self.get_combined_hash_cell(hash_worksheet, hash_cell_key, hash_cell)
80
- # first get data from the matching column if it's specified
81
- column_keys = hash_worksheet[:columns].keys.select { |key| hash_cell_key =~ /^#{key}\d+$/ }
82
- column_keys.empty? ? hash_column = {} : hash_column = hash_worksheet[:columns][column_keys[0]]
83
- combined_hash_cell = hash_column.merge(hash_cell)
84
- # then get data from the matching row if it's specified
85
- row_keys = hash_worksheet[:rows].keys.select { |key| hash_cell_key =~ /^\D+#{key}$/ }
86
- row_keys.empty? ? hash_row = {} : hash_row = hash_worksheet[:rows][row_keys[0]]
87
- combined_hash_cell = hash_row.merge(combined_hash_cell)
88
- hash_worksheet[:worksheet].merge(combined_hash_cell)
89
- end
90
-
91
79
 
92
80
  ##################################
93
81
  ### VALIDATE HASH CELL ###
@@ -1,3 +1,3 @@
1
1
  module Rxl
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -21,7 +21,6 @@ module Workbook
21
21
  else
22
22
  rubyxl_workbook.add_worksheet(hash_key)
23
23
  end
24
- Worksheet.set_hash_worksheet_defaults(hash_value)
25
24
  Worksheet.hash_worksheet_to_rubyxl_worksheet(hash_value, rubyxl_workbook[hash_key])
26
25
  end
27
26
  rubyxl_workbook
@@ -26,11 +26,10 @@ module Worksheet
26
26
 
27
27
  def self.hash_worksheet_to_rubyxl_worksheet(hash_worksheet, rubyxl_worksheet)
28
28
  process_sheet_to_populated_block(hash_worksheet)
29
- (hash_worksheet[:cells] || {}).sort.each do |hash_cell_key, hash_cell|
30
- combined_hash_cell = Cell.get_combined_hash_cell(hash_worksheet, hash_cell_key, hash_cell)
29
+ (hash_worksheet || {}).sort.each do |hash_cell_key, hash_cell|
31
30
  row_index, column_index = RubyXL::Reference.ref2ind(hash_cell_key)
32
- Cell.add_rubyxl_cells(combined_hash_cell, rubyxl_worksheet, row_index, column_index)
33
- Cell.hash_cell_to_rubyxl_cell(combined_hash_cell, rubyxl_worksheet, row_index, column_index)
31
+ Cell.add_rubyxl_cells(hash_cell, rubyxl_worksheet, row_index, column_index)
32
+ Cell.hash_cell_to_rubyxl_cell(hash_cell, rubyxl_worksheet, row_index, column_index)
34
33
  end
35
34
  end
36
35
 
@@ -64,12 +63,6 @@ module Worksheet
64
63
  ### OTHER PUBLIC METHODS ###
65
64
  ####################################
66
65
 
67
- def self.set_hash_worksheet_defaults(hash_worksheet)
68
- %i[worksheet columns rows].each do |key|
69
- hash_worksheet[key] = {} unless hash_worksheet.has_key?(key)
70
- end
71
- end
72
-
73
66
  def self.hash_worksheet_to_hash_table(raw_hash)
74
67
  cells = Mitrush.deep_copy(raw_hash)
75
68
  columns = cells.keys.map { |key| key[/\D+/] }.uniq
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.2.0
4
+ version: 0.2.1
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-02-03 00:00:00.000000000 Z
11
+ date: 2019-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -112,8 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  - !ruby/object:Gem::Version
113
113
  version: '0'
114
114
  requirements: []
115
- rubyforge_project:
116
- rubygems_version: 2.7.7
115
+ rubygems_version: 3.0.2
117
116
  signing_key:
118
117
  specification_version: 4
119
118
  summary: A ruby spreadsheet interface