workbook 0.8.2 → 0.9.1
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/CHANGELOG.md +2 -1
- data/json_test.json +1 -0
- data/lib/workbook/readers/ods_reader.rb +3 -0
- data/lib/workbook/version.rb +1 -2
- data/test/artifacts/currency_test.ods +0 -0
- data/test/test_modules_cell.rb +8 -0
- data/test/test_readers_ods_reader.rb +8 -0
- data/test/test_sheet.rb +0 -12
- data/test/test_writers_json_writer.rb +7 -0
- data/workbook.gemspec +5 -7
- metadata +30 -84
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec0bdb507a80fb55be5230a13bf28eab6b650dd8f7c8609895dcba90d53b02f3
|
4
|
+
data.tar.gz: dab18c494f909fd3f486ab0e3cd971992aa40984d2e780f433adb6c96721ebb7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e4e6e75a967577561848fe714857a044192331362674a68a20a63248e47bb65e5cd34ad2847ed20ff8c3ebe2c195c9a8c52f589350a06d720fc2bdec003fd50
|
7
|
+
data.tar.gz: 9ac507805db929954970ea95f88483665c3e1f8a63d64be94be09f76d0e527b2eec0e0d1e4886055b27c25f1e2e9c0284b157bf7681beba261fb35c8f695ff70
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
### 0.9.0
|
3
|
+
### 0.9.0
|
4
4
|
|
5
5
|
* Dropped inheritance from Array and borrowed from the Enumerable module instead (this might break some existing implementations; please create pull request if you miss Array like functionality)
|
6
|
+
* Fix: ODS: Currency formatted cell now no longer returns String
|
6
7
|
|
7
8
|
### 0.8.1
|
8
9
|
|
data/json_test.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
[{"a":1,"b":2},{"a":"2012-01-01","b":null}]
|
@@ -138,6 +138,7 @@ module Workbook
|
|
138
138
|
def parse_local_value(valuetype)
|
139
139
|
value = CGI.unescapeHTML(@cell.xpath("text:p//text()").to_s)
|
140
140
|
value = value == "" ? nil : value
|
141
|
+
|
141
142
|
case valuetype
|
142
143
|
when "integer"
|
143
144
|
value = @cell.xpath("@office:value").to_s.to_i
|
@@ -146,6 +147,8 @@ module Workbook
|
|
146
147
|
value = value.to_i unless /\./.match?(@cell.xpath("@office:value").to_s) # sadly most integers are typed as floats...
|
147
148
|
when "date"
|
148
149
|
value = DateTime.parse(@cell.xpath("@office:date-value").to_s)
|
150
|
+
when "currency"
|
151
|
+
value = @cell.xpath("@office:value").to_s.to_f
|
149
152
|
end
|
150
153
|
value
|
151
154
|
end
|
data/lib/workbook/version.rb
CHANGED
Binary file
|
data/test/test_modules_cell.rb
CHANGED
@@ -142,6 +142,14 @@ class TestModulesCell < Minitest::Test
|
|
142
142
|
assert_equal(2, t[2][2].index)
|
143
143
|
end
|
144
144
|
|
145
|
+
def test_inspect
|
146
|
+
c = Workbook::Cell.new(1)
|
147
|
+
assert_equal("<Workbook::Cell @value=1 @cell_type=integer>", c.inspect)
|
148
|
+
c = Workbook::Cell.new(Date.new(2023,12,1))
|
149
|
+
assert_equal("<Workbook::Cell @value=2023-12-01 @cell_type=date>", c.inspect)
|
150
|
+
end
|
151
|
+
|
152
|
+
|
145
153
|
def test_key
|
146
154
|
t = Workbook::Table.new [[:a, :b, :c], [1, 2, 3], [4, 5, 6]]
|
147
155
|
assert_equal(:c, t[2][2].key)
|
@@ -31,6 +31,14 @@ module Readers
|
|
31
31
|
assert_equal(1.2, w.sheet.table[3][1].value)
|
32
32
|
end
|
33
33
|
|
34
|
+
def test_currency
|
35
|
+
w = Workbook::Book.new
|
36
|
+
w.import File.join(File.dirname(__FILE__), "artifacts/currency_test.ods")
|
37
|
+
|
38
|
+
assert_equal(1200, w.sheet.table["H2"].value)
|
39
|
+
assert_equal(1200.4, w.sheet.table["H4"].value)
|
40
|
+
end
|
41
|
+
|
34
42
|
def test_excel_standardized_open
|
35
43
|
w = Workbook::Book.new
|
36
44
|
w.import File.join(File.dirname(__FILE__), "artifacts/excel_different_types.ods")
|
data/test/test_sheet.rb
CHANGED
@@ -71,18 +71,6 @@ class TestWorkbook < Minitest::Test
|
|
71
71
|
assert_equal(false, table1 == table0)
|
72
72
|
end
|
73
73
|
|
74
|
-
def test_profile_speed
|
75
|
-
w = Workbook::Book.new [["a", "b"], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4]]
|
76
|
-
require "ruby-prof"
|
77
|
-
RubyProf.start
|
78
|
-
w.sheet.table.each do |row|
|
79
|
-
row[:a].value
|
80
|
-
end
|
81
|
-
result = RubyProf.stop
|
82
|
-
printer = RubyProf::MultiPrinter.new(result)
|
83
|
-
printer.print(path: ".", profile: "profile")
|
84
|
-
end
|
85
|
-
|
86
74
|
def test_name
|
87
75
|
b = Workbook::Book.new [["a", "b"], [1, 2]]
|
88
76
|
b.push Workbook::Sheet.new([["a", "b"], [2, 2]])
|
@@ -17,5 +17,12 @@ module Writers
|
|
17
17
|
assert_equal("[{\"a\":1,\"b\":2},{\"a\":\"2012-01-01\",\"b\":null}]",
|
18
18
|
Workbook::Table.new([["a", "b"], [1, 2], [Date.new(2012, 1, 1), nil]]).to_json)
|
19
19
|
end
|
20
|
+
|
21
|
+
def test_write_to_json
|
22
|
+
filename = Workbook::Table.new([["a", "b"], [1, 2], [Date.new(2012, 1, 1), nil]]).write_to_json("json_test.json")
|
23
|
+
json_written = File.read(filename)
|
24
|
+
assert_equal("[{\"a\":1,\"b\":2},{\"a\":\"2012-01-01\",\"b\":null}]",json_written)
|
25
|
+
|
26
|
+
end
|
20
27
|
end
|
21
28
|
end
|
data/workbook.gemspec
CHANGED
@@ -11,23 +11,21 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.summary = "Workbook is a datastructure to contain books of tables (an anlogy used in e.g. Excel)"
|
12
12
|
s.description = "Workbook contains workbooks, as in a table, contains rows, contains cells, reads/writes excel, ods and csv and tab separated files, and offers basic diffing and sorting capabilities."
|
13
13
|
s.authors = ["Maarten Brouwers"]
|
14
|
-
s.add_development_dependency
|
15
|
-
s.add_development_dependency("
|
16
|
-
s.add_development_dependency("minitest", "~> 5.4")
|
14
|
+
s.add_development_dependency("rake", "> 12.0")
|
15
|
+
s.add_development_dependency("minitest", "> 5.4")
|
17
16
|
s.add_development_dependency("byebug", "> 10")
|
18
|
-
s.add_development_dependency("standard", "
|
19
|
-
s.add_development_dependency("simplecov", "
|
17
|
+
s.add_development_dependency("standard", "> 1.0")
|
18
|
+
s.add_development_dependency("simplecov", "> 0.17.0")
|
20
19
|
s.add_dependency("spreadsheet", "> 1.2")
|
21
20
|
s.add_dependency("rchardet", ">= 1.8.0")
|
22
21
|
s.add_dependency("json", "> 2.3")
|
23
22
|
s.add_dependency("rubyzip", "> 1.2", ">= 1.2.1")
|
24
23
|
s.add_dependency("caxlsx", "> 3.0")
|
25
24
|
s.add_dependency("nokogiri", "> 1.10")
|
26
|
-
|
25
|
+
s.add_dependency("csv", "> 3.0.0")
|
27
26
|
|
28
27
|
s.platform = Gem::Platform::RUBY
|
29
28
|
s.files = `git ls-files`.split($/)
|
30
|
-
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
31
29
|
s.executables = s.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
32
30
|
s.require_paths = ["lib"]
|
33
31
|
s.email = ["gem@murb.nl"]
|
metadata
CHANGED
@@ -1,55 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: workbook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maarten Brouwers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: ruby-prof
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.14'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0.14'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: rake
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
|
-
- - "
|
17
|
+
- - ">"
|
32
18
|
- !ruby/object:Gem::Version
|
33
19
|
version: '12.0'
|
34
20
|
type: :development
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
|
-
- - "
|
24
|
+
- - ">"
|
39
25
|
- !ruby/object:Gem::Version
|
40
26
|
version: '12.0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: minitest
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- - "
|
31
|
+
- - ">"
|
46
32
|
- !ruby/object:Gem::Version
|
47
33
|
version: '5.4'
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- - "
|
38
|
+
- - ">"
|
53
39
|
- !ruby/object:Gem::Version
|
54
40
|
version: '5.4'
|
55
41
|
- !ruby/object:Gem::Dependency
|
@@ -70,28 +56,28 @@ dependencies:
|
|
70
56
|
name: standard
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
|
-
- - "
|
59
|
+
- - ">"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
61
|
+
version: '1.0'
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- - "
|
66
|
+
- - ">"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
68
|
+
version: '1.0'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: simplecov
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- - "
|
73
|
+
- - ">"
|
88
74
|
- !ruby/object:Gem::Version
|
89
75
|
version: 0.17.0
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- - "
|
80
|
+
- - ">"
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: 0.17.0
|
97
83
|
- !ruby/object:Gem::Dependency
|
@@ -184,6 +170,20 @@ dependencies:
|
|
184
170
|
- - ">"
|
185
171
|
- !ruby/object:Gem::Version
|
186
172
|
version: '1.10'
|
173
|
+
- !ruby/object:Gem::Dependency
|
174
|
+
name: csv
|
175
|
+
requirement: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - ">"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: 3.0.0
|
180
|
+
type: :runtime
|
181
|
+
prerelease: false
|
182
|
+
version_requirements: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - ">"
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: 3.0.0
|
187
187
|
description: Workbook contains workbooks, as in a table, contains rows, contains cells,
|
188
188
|
reads/writes excel, ods and csv and tab separated files, and offers basic diffing
|
189
189
|
and sorting capabilities.
|
@@ -209,6 +209,7 @@ files:
|
|
209
209
|
- README.md
|
210
210
|
- Rakefile
|
211
211
|
- bin/axldiff
|
212
|
+
- json_test.json
|
212
213
|
- lib/workbook.rb
|
213
214
|
- lib/workbook/book.rb
|
214
215
|
- lib/workbook/cell.rb
|
@@ -255,6 +256,7 @@ files:
|
|
255
256
|
- test/artifacts/book_with_tabs_and_colours.xlsx
|
256
257
|
- test/artifacts/complex_types.ods
|
257
258
|
- test/artifacts/complex_types.xls
|
259
|
+
- test/artifacts/currency_test.ods
|
258
260
|
- test/artifacts/excel_different_types.csv
|
259
261
|
- test/artifacts/excel_different_types.ods
|
260
262
|
- test/artifacts/excel_different_types.txt
|
@@ -323,65 +325,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
323
325
|
- !ruby/object:Gem::Version
|
324
326
|
version: '0'
|
325
327
|
requirements: []
|
326
|
-
rubygems_version: 3.
|
328
|
+
rubygems_version: 3.5.18
|
327
329
|
signing_key:
|
328
330
|
specification_version: 4
|
329
331
|
summary: Workbook is a datastructure to contain books of tables (an anlogy used in
|
330
332
|
e.g. Excel)
|
331
|
-
test_files:
|
332
|
-
- test/artifacts/bigtable.xls
|
333
|
-
- test/artifacts/bigtable.xlsx
|
334
|
-
- test/artifacts/book_with_colspans.ods
|
335
|
-
- test/artifacts/book_with_tabs_and_colours.ods
|
336
|
-
- test/artifacts/book_with_tabs_and_colours.xls
|
337
|
-
- test/artifacts/book_with_tabs_and_colours.xlsx
|
338
|
-
- test/artifacts/complex_types.ods
|
339
|
-
- test/artifacts/complex_types.xls
|
340
|
-
- test/artifacts/excel_different_types.csv
|
341
|
-
- test/artifacts/excel_different_types.ods
|
342
|
-
- test/artifacts/excel_different_types.txt
|
343
|
-
- test/artifacts/excel_different_types.xls
|
344
|
-
- test/artifacts/excel_different_types.xlsx
|
345
|
-
- test/artifacts/failing_import1.xls
|
346
|
-
- test/artifacts/heavy.xlsx
|
347
|
-
- test/artifacts/integer_test.xlsx
|
348
|
-
- test/artifacts/native_xlsx.xlsx
|
349
|
-
- test/artifacts/semicolonseparated_in_csv.csv
|
350
|
-
- test/artifacts/sheet_with_combined_cells.ods
|
351
|
-
- test/artifacts/sheetduplication.xls
|
352
|
-
- test/artifacts/simple_csv.csv
|
353
|
-
- test/artifacts/simple_excel_csv.csv
|
354
|
-
- test/artifacts/simple_sheet.ods
|
355
|
-
- test/artifacts/simple_sheet.xls
|
356
|
-
- test/artifacts/simple_sheet.xlsx
|
357
|
-
- test/artifacts/simple_sheet_many_sheets.xls
|
358
|
-
- test/artifacts/skippingcells.xlsx
|
359
|
-
- test/artifacts/txt_in_xls.xls
|
360
|
-
- test/artifacts/xls_with_txt_extension.txt
|
361
|
-
- test/artifacts/xlsx_with_empty_start.xlsx
|
362
|
-
- test/artifacts/zip_in_xls.xls
|
363
|
-
- test/helper.rb
|
364
|
-
- test/test_book.rb
|
365
|
-
- test/test_column.rb
|
366
|
-
- test/test_format.rb
|
367
|
-
- test/test_functional.rb
|
368
|
-
- test/test_modules_cache.rb
|
369
|
-
- test/test_modules_cell.rb
|
370
|
-
- test/test_modules_table_diff_sort.rb
|
371
|
-
- test/test_modules_type_parser.rb
|
372
|
-
- test/test_readers_csv_reader.rb
|
373
|
-
- test/test_readers_ods_reader.rb
|
374
|
-
- test/test_readers_txt_reader.rb
|
375
|
-
- test/test_readers_xls_reader.rb
|
376
|
-
- test/test_readers_xls_shared.rb
|
377
|
-
- test/test_readers_xlsx_reader.rb
|
378
|
-
- test/test_row.rb
|
379
|
-
- test/test_sheet.rb
|
380
|
-
- test/test_table.rb
|
381
|
-
- test/test_template.rb
|
382
|
-
- test/test_types_date.rb
|
383
|
-
- test/test_writers_csv_writer.rb
|
384
|
-
- test/test_writers_html_writer.rb
|
385
|
-
- test/test_writers_json_writer.rb
|
386
|
-
- test/test_writers_xls_writer.rb
|
387
|
-
- test/test_writers_xlsx_writer.rb
|
333
|
+
test_files: []
|