workbook 0.8.2 → 0.9.0
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 -1
- 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 +4 -5
- metadata +15 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 898a4a79301299545d91cfdd5b5f1f261f4cde32337d4713256f21d894cc49f0
|
4
|
+
data.tar.gz: ee61cd9e3e3687092b5c8ca82e8aa10bf8f846553a3602ce3c46103b43ee4e9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27b2ab505f2ff035a12e839db5148337c504d81bb2c2517b2eb1ac4749df5e47f31fd281386c4c4d4880c2e24c75a3630d02c7a7bb13e5f62789543bf991f7f9
|
7
|
+
data.tar.gz: 465f709b61f96afe734739b214d1b56daa06e837ea8cd85f98c9343f9c1f7d3337409616bdc5617fa456de3718427d0d89ae89c1fa40a13efe4afbe8841ac175
|
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,12 +11,11 @@ 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")
|
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.0
|
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-09-14 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
|
@@ -209,6 +195,7 @@ files:
|
|
209
195
|
- README.md
|
210
196
|
- Rakefile
|
211
197
|
- bin/axldiff
|
198
|
+
- json_test.json
|
212
199
|
- lib/workbook.rb
|
213
200
|
- lib/workbook/book.rb
|
214
201
|
- lib/workbook/cell.rb
|
@@ -255,6 +242,7 @@ files:
|
|
255
242
|
- test/artifacts/book_with_tabs_and_colours.xlsx
|
256
243
|
- test/artifacts/complex_types.ods
|
257
244
|
- test/artifacts/complex_types.xls
|
245
|
+
- test/artifacts/currency_test.ods
|
258
246
|
- test/artifacts/excel_different_types.csv
|
259
247
|
- test/artifacts/excel_different_types.ods
|
260
248
|
- test/artifacts/excel_different_types.txt
|
@@ -337,6 +325,7 @@ test_files:
|
|
337
325
|
- test/artifacts/book_with_tabs_and_colours.xlsx
|
338
326
|
- test/artifacts/complex_types.ods
|
339
327
|
- test/artifacts/complex_types.xls
|
328
|
+
- test/artifacts/currency_test.ods
|
340
329
|
- test/artifacts/excel_different_types.csv
|
341
330
|
- test/artifacts/excel_different_types.ods
|
342
331
|
- test/artifacts/excel_different_types.txt
|