workbook 0.8.0 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +21 -0
- data/.gitignore +4 -1
- data/.ruby-version +1 -1
- data/.travis.yml +4 -4
- data/CHANGELOG.md +16 -0
- data/Gemfile +4 -2
- data/README.md +9 -7
- data/Rakefile +9 -7
- data/lib/workbook/book.rb +74 -61
- data/lib/workbook/cell.rb +59 -12
- data/lib/workbook/column.rb +33 -29
- data/lib/workbook/format.rb +24 -23
- data/lib/workbook/generatetypes.rb +6 -5
- data/lib/workbook/modules/cache.rb +8 -7
- data/lib/workbook/modules/cell.rb +78 -99
- data/lib/workbook/modules/diff_sort.rb +93 -82
- data/lib/workbook/modules/raw_objects_storage.rb +7 -7
- data/lib/workbook/modules/type_parser.rb +31 -21
- data/lib/workbook/nil_value.rb +5 -9
- data/lib/workbook/readers/csv_reader.rb +7 -9
- data/lib/workbook/readers/ods_reader.rb +49 -49
- data/lib/workbook/readers/txt_reader.rb +7 -7
- data/lib/workbook/readers/xls_reader.rb +22 -32
- data/lib/workbook/readers/xls_shared.rb +107 -116
- data/lib/workbook/readers/xlsx_reader.rb +47 -46
- data/lib/workbook/row.rb +100 -83
- data/lib/workbook/sheet.rb +48 -37
- data/lib/workbook/table.rb +97 -71
- data/lib/workbook/template.rb +13 -14
- data/lib/workbook/types/date.rb +2 -1
- data/lib/workbook/types/false.rb +1 -1
- data/lib/workbook/types/false_class.rb +2 -1
- data/lib/workbook/types/nil.rb +1 -1
- data/lib/workbook/types/nil_class.rb +3 -2
- data/lib/workbook/types/numeric.rb +3 -2
- data/lib/workbook/types/string.rb +3 -2
- data/lib/workbook/types/time.rb +3 -2
- data/lib/workbook/types/true.rb +1 -1
- data/lib/workbook/types/true_class.rb +3 -2
- data/lib/workbook/version.rb +3 -2
- data/lib/workbook/writers/csv_table_writer.rb +11 -12
- data/lib/workbook/writers/html_writer.rb +35 -37
- data/lib/workbook/writers/json_table_writer.rb +9 -10
- data/lib/workbook/writers/xls_writer.rb +31 -35
- data/lib/workbook/writers/xlsx_writer.rb +46 -28
- data/lib/workbook.rb +17 -14
- data/test/helper.rb +8 -5
- data/test/test_book.rb +43 -38
- data/test/test_column.rb +29 -25
- data/test/test_format.rb +53 -55
- data/test/test_functional.rb +9 -8
- data/test/test_modules_cache.rb +20 -17
- data/test/test_modules_cell.rb +49 -46
- data/test/test_modules_table_diff_sort.rb +56 -63
- data/test/test_modules_type_parser.rb +63 -31
- data/test/test_readers_csv_reader.rb +50 -42
- data/test/test_readers_ods_reader.rb +30 -31
- data/test/test_readers_txt_reader.rb +23 -23
- data/test/test_readers_xls_reader.rb +22 -23
- data/test/test_readers_xls_shared.rb +5 -4
- data/test/test_readers_xlsx_reader.rb +46 -37
- data/test/test_row.rb +107 -109
- data/test/test_sheet.rb +43 -35
- data/test/test_table.rb +84 -60
- data/test/test_template.rb +18 -15
- data/test/test_types_date.rb +7 -7
- data/test/test_writers_csv_writer.rb +24 -0
- data/test/test_writers_html_writer.rb +44 -41
- data/test/test_writers_json_writer.rb +11 -9
- data/test/test_writers_xls_writer.rb +52 -35
- data/test/test_writers_xlsx_writer.rb +64 -34
- data/workbook.gemspec +26 -27
- metadata +93 -27
data/test/test_table.rb
CHANGED
@@ -1,37 +1,41 @@
|
|
1
|
-
#
|
2
|
-
require File.join(File.dirname(__FILE__), 'helper')
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
|
3
|
+
require File.join(File.dirname(__FILE__), "helper")
|
4
|
+
|
5
|
+
class TestTable < Minitest::Test
|
5
6
|
def test_initialize
|
6
7
|
t = Workbook::Table.new
|
7
|
-
assert_equal(
|
8
|
+
assert_equal([], t.rows)
|
8
9
|
c = Workbook::Cell.new("celllll")
|
9
10
|
t = Workbook::Table.new [[c]]
|
10
11
|
|
11
|
-
assert_equal([[c]],t)
|
12
|
+
assert_equal([[c]], t.rows.map(&:cells))
|
12
13
|
end
|
14
|
+
|
13
15
|
def test_header
|
14
16
|
t = Workbook::Table.new
|
15
17
|
assert_nil(t.header)
|
16
18
|
t = Workbook::Table.new [[1]]
|
17
|
-
assert_equal(t.header,[1])
|
18
|
-
assert_equal(t.header.class,Workbook::Row)
|
19
|
+
assert_equal(t.header, [1])
|
20
|
+
assert_equal(t.header.class, Workbook::Row)
|
19
21
|
end
|
20
22
|
|
21
23
|
def test_new_row
|
22
24
|
t = Workbook::Table.new
|
23
25
|
assert_equal(t.count, 0)
|
24
26
|
|
25
|
-
r = t.new_row [1,2,3,4]
|
26
|
-
assert_equal(r, [1,2,3,4])
|
27
|
+
r = t.new_row [1, 2, 3, 4]
|
28
|
+
assert_equal(r, [1, 2, 3, 4])
|
27
29
|
assert_equal(r.class, Workbook::Row)
|
28
|
-
assert_equal(1,t.count)
|
30
|
+
assert_equal(1, t.count)
|
29
31
|
|
30
32
|
r = t.new_row
|
31
33
|
assert_equal(r.empty?, true)
|
32
34
|
assert_equal(r.class, Workbook::Row)
|
33
35
|
|
34
36
|
assert_equal(2, t.count)
|
37
|
+
|
38
|
+
assert_equal(r, t.rows.last)
|
35
39
|
assert_equal(r, t.last)
|
36
40
|
|
37
41
|
r << 2
|
@@ -41,19 +45,19 @@ class TestTable< Minitest::Test
|
|
41
45
|
|
42
46
|
def test_append_row
|
43
47
|
t = Workbook::Table.new
|
44
|
-
row = t.new_row(["a","b"])
|
48
|
+
row = t.new_row(["a", "b"])
|
45
49
|
assert_equal(row, t.header)
|
46
|
-
row = Workbook::Row.new([1,2])
|
50
|
+
row = Workbook::Row.new([1, 2])
|
47
51
|
assert_nil(row.table)
|
48
52
|
t.push(row)
|
49
53
|
assert_equal(t, row.table)
|
50
|
-
row = Workbook::Row.new([3,4])
|
54
|
+
row = Workbook::Row.new([3, 4])
|
51
55
|
assert_nil(row.table)
|
52
56
|
t << row
|
53
57
|
assert_equal(t, row.table)
|
54
58
|
t = Workbook::Table.new
|
55
|
-
t << [1,2,3,4]
|
56
|
-
assert_equal(Workbook::Row,t.first.class)
|
59
|
+
t << [1, 2, 3, 4]
|
60
|
+
assert_equal(Workbook::Row, t.first.class)
|
57
61
|
end
|
58
62
|
|
59
63
|
def test_sheet
|
@@ -70,56 +74,65 @@ class TestTable< Minitest::Test
|
|
70
74
|
end
|
71
75
|
|
72
76
|
def test_delete_all
|
73
|
-
w = Workbook::Book.new [["a","b"],[1,2],[3,4]]
|
77
|
+
w = Workbook::Book.new [["a", "b"], [1, 2], [3, 4]]
|
74
78
|
t = w.sheet.table
|
75
79
|
t.delete_all
|
76
|
-
assert_equal(Workbook::Table,t.class)
|
77
|
-
assert_equal(0,t.count)
|
80
|
+
assert_equal(Workbook::Table, t.class)
|
81
|
+
assert_equal(0, t.count)
|
78
82
|
end
|
79
83
|
|
80
84
|
def test_clone
|
81
|
-
w = Workbook::Book.new [["a","b"],[1,2],[3,4]]
|
85
|
+
w = Workbook::Book.new [["a", "b"], [1, 2], [3, 4]]
|
82
86
|
t = w.sheet.table
|
83
|
-
assert_equal(3,t[2][:a])
|
87
|
+
assert_equal(3, t[2][:a])
|
84
88
|
t2 = t.clone
|
85
89
|
t2[2][:a] = 5
|
86
|
-
assert_equal(3,t[2][:a])
|
87
|
-
assert_equal(5,t2[2][:a])
|
90
|
+
assert_equal(3, t[2][:a])
|
91
|
+
assert_equal(5, t2[2][:a])
|
88
92
|
end
|
89
93
|
|
90
94
|
def test_clone_custom_header
|
91
|
-
w = Workbook::Book.new [[nil, nil],["a","b"],[1,2],[3,4]]
|
95
|
+
w = Workbook::Book.new [[nil, nil], ["a", "b"], [1, 2], [3, 4]]
|
92
96
|
t = w.sheet.table
|
93
|
-
t.header=t[1]
|
94
|
-
assert_equal(3,t[3][:a])
|
97
|
+
t.header = t[1]
|
98
|
+
assert_equal(3, t[3][:a])
|
95
99
|
t2 = t.clone
|
100
|
+
assert_equal(1, t2.header_row_index)
|
101
|
+
|
96
102
|
t2[3][:a] = 5
|
97
|
-
assert_equal(3,t[3][:a])
|
98
|
-
assert_equal(5,t2[3][:a])
|
103
|
+
assert_equal(3, t[3][:a])
|
104
|
+
assert_equal(5, t2[3][:a])
|
99
105
|
end
|
100
106
|
|
101
107
|
def test_spreadsheet_style_cell_addressing
|
102
|
-
w = Workbook::Book.new [[nil, nil],["a","b"],[1,2],[3,4]]
|
108
|
+
w = Workbook::Book.new [[nil, nil], ["a", "b"], [1, 2], [3, 4]]
|
103
109
|
t = w.sheet.table
|
104
110
|
assert_nil(t["A1"].value)
|
105
111
|
assert_nil(t["B1"].value)
|
106
|
-
assert_equal("a",t["A2"].value)
|
107
|
-
assert_equal("b",t["B2"].value)
|
108
|
-
assert_equal(1,t["A3"].value)
|
109
|
-
assert_equal(2,t["B3"].value)
|
110
|
-
assert_equal(3,t["A4"].value)
|
111
|
-
assert_equal(4,t["B4"].value)
|
112
|
+
assert_equal("a", t["A2"].value)
|
113
|
+
assert_equal("b", t["B2"].value)
|
114
|
+
assert_equal(1, t["A3"].value)
|
115
|
+
assert_equal(2, t["B3"].value)
|
116
|
+
assert_equal(3, t["A4"].value)
|
117
|
+
assert_equal(4, t["B4"].value)
|
118
|
+
assert_equal(["b", 2, 4], t["B"].map(&:value))
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_column_retrieval_trough_symbol
|
122
|
+
t = Workbook::Book.new([["a", "Andere Kolom"], [1, 2], [3, 4]]).sheet.table
|
123
|
+
assert_equal([1, 3], t[:a].map(&:value))
|
124
|
+
assert_equal([2, 4], t[:andere_kolom].map(&:value))
|
112
125
|
end
|
113
126
|
|
114
127
|
def test_multirowselect_through_collections
|
115
|
-
w = Workbook::Book.new [["a","b"],[1,2],[3,4]]
|
128
|
+
w = Workbook::Book.new [["a", "b"], [1, 2], [3, 4]]
|
116
129
|
t = w.sheet.table
|
117
|
-
assert_equal(Workbook::Table,t[0..2].class)
|
118
|
-
assert_equal(2,t[0..2][1][1])
|
130
|
+
assert_equal(Workbook::Table, t[0..2].class)
|
131
|
+
assert_equal(2, t[0..2][1][1])
|
119
132
|
end
|
120
133
|
|
121
134
|
def test_table
|
122
|
-
w = Workbook::Book.new [[nil,nil],["a","b"],[1,2],[3,4]]
|
135
|
+
w = Workbook::Book.new [[nil, nil], ["a", "b"], [1, 2], [3, 4]]
|
123
136
|
t = w.sheet.table
|
124
137
|
w2 = Workbook::Book.new
|
125
138
|
w2.sheet.table = t[2..3]
|
@@ -127,7 +140,7 @@ class TestTable< Minitest::Test
|
|
127
140
|
end
|
128
141
|
|
129
142
|
def test_array_style_assignment
|
130
|
-
w = Workbook::Book.new [["a","b"],[1,2],[3,4]]
|
143
|
+
w = Workbook::Book.new [["a", "b"], [1, 2], [3, 4]]
|
131
144
|
t = w.sheet.table
|
132
145
|
r = t[1].clone
|
133
146
|
assert_nil(r.table)
|
@@ -136,7 +149,7 @@ class TestTable< Minitest::Test
|
|
136
149
|
end
|
137
150
|
|
138
151
|
def test_delete_at
|
139
|
-
w = Workbook::Book.new [["a","b"],[1,2],[3,4]]
|
152
|
+
w = Workbook::Book.new [["a", "b"], [1, 2], [3, 4]]
|
140
153
|
t = w.sheet.table
|
141
154
|
t.delete_at 2
|
142
155
|
assert_equal(1, t.last.first.value)
|
@@ -144,50 +157,61 @@ class TestTable< Minitest::Test
|
|
144
157
|
|
145
158
|
def test_trim!
|
146
159
|
t = Workbook::Table.new
|
147
|
-
t << [1,2,3]
|
148
|
-
t << [1,2,nil,nil]
|
160
|
+
t << [1, 2, 3]
|
161
|
+
t << [1, 2, nil, nil]
|
149
162
|
t.trim!
|
150
|
-
assert_equal("1,2,3\n1,2,\n",t.to_csv)
|
163
|
+
assert_equal("1,2,3\n1,2,\n", t.to_csv)
|
151
164
|
t = Workbook::Table.new
|
152
|
-
t << [1,2,3]
|
165
|
+
t << [1, 2, 3]
|
153
166
|
t << [nil]
|
154
|
-
t << [1,2,nil,nil]
|
155
|
-
t << [nil,nil,nil,nil]
|
156
|
-
t << [nil,nil,nil,nil]
|
167
|
+
t << [1, 2, nil, nil]
|
168
|
+
t << [nil, nil, nil, nil]
|
169
|
+
t << [nil, nil, nil, nil]
|
157
170
|
t.trim!
|
158
|
-
assert_equal("1,2,3\n,,\n1,2,\n",t.to_csv)
|
171
|
+
assert_equal("1,2,3\n,,\n1,2,\n", t.to_csv)
|
159
172
|
end
|
173
|
+
|
160
174
|
def test_performance
|
161
175
|
table = Workbook::Table.new
|
162
|
-
headers = 100.times.collect{|a| "header#{a}"}
|
163
|
-
first_row = 100.times.collect{|a| Time.now}
|
176
|
+
headers = 100.times.collect { |a| "header#{a}" }
|
177
|
+
first_row = 100.times.collect { |a| Time.now }
|
164
178
|
table << headers.shuffle
|
165
179
|
table << first_row
|
166
180
|
1000.times do |times|
|
167
181
|
row = table[1].clone
|
168
182
|
table << row
|
169
183
|
headers.each do |a|
|
170
|
-
row[a.to_sym]=Time.now
|
184
|
+
row[a.to_sym] = Time.now
|
171
185
|
end
|
172
186
|
end
|
173
|
-
last_line = table.count-1
|
187
|
+
last_line = table.count - 1
|
174
188
|
delta_start = table[12][0].value - table[2][0].value
|
175
|
-
delta_end = table[last_line][0].value - table[last_line-10][0].value
|
176
|
-
average_run_time = (delta_start+delta_end / 20)
|
189
|
+
delta_end = table[last_line][0].value - table[last_line - 10][0].value
|
190
|
+
average_run_time = (delta_start + delta_end / 20)
|
177
191
|
if (delta_end - delta_start) > average_run_time
|
178
192
|
puts "Performance issue"
|
179
193
|
end
|
180
194
|
end
|
195
|
+
|
181
196
|
def test_columns
|
182
197
|
table = Workbook::Table.new([[]])
|
183
|
-
assert_equal(table.columns,[])
|
184
|
-
table = Workbook::Table.new([[:a
|
185
|
-
assert_equal(table.columns.count,2)
|
198
|
+
assert_equal(table.columns, [])
|
199
|
+
table = Workbook::Table.new([[:a, :b], [1, 2]])
|
200
|
+
assert_equal(table.columns.count, 2)
|
186
201
|
end
|
202
|
+
|
187
203
|
def test_dimensions
|
188
204
|
table = Workbook::Table.new([[]])
|
189
|
-
assert_equal([0,1],table.dimensions)
|
190
|
-
table = Workbook::Table.new([[:a
|
191
|
-
assert_equal([4,2],table.dimensions)
|
205
|
+
assert_equal([0, 1], table.dimensions)
|
206
|
+
table = Workbook::Table.new([[:a, :b], [1, 2, 3, 4]])
|
207
|
+
assert_equal([4, 2], table.dimensions)
|
208
|
+
end
|
209
|
+
|
210
|
+
def test_push
|
211
|
+
table = Workbook::Table.new([["a", 2, 3]])
|
212
|
+
table.push(["b", 2, 3])
|
213
|
+
assert_equal("b", table[1][0].value)
|
214
|
+
table.push(["c", 2, 3], ["d", 2, 3])
|
215
|
+
assert_equal("d", table[3][0].value)
|
192
216
|
end
|
193
217
|
end
|
data/test/test_template.rb
CHANGED
@@ -1,39 +1,42 @@
|
|
1
|
-
#
|
2
|
-
require File.join(File.dirname(__FILE__), 'helper')
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
|
3
|
+
require File.join(File.dirname(__FILE__), "helper")
|
5
4
|
|
5
|
+
class TestTemplate < Minitest::Test
|
6
6
|
def test_initalize
|
7
7
|
t = Workbook::Template.new
|
8
|
-
assert_equal(true,(t.methods.include?(:add_raw)
|
9
|
-
assert_equal(true,(t.methods.include?(:has_raw_for?)
|
10
|
-
assert_equal(true,(t.methods.include?(:raws)
|
8
|
+
assert_equal(true, (t.methods.include?(:add_raw) || t.methods.include?("add_raw")))
|
9
|
+
assert_equal(true, (t.methods.include?(:has_raw_for?) || t.methods.include?("has_raw_for?")))
|
10
|
+
assert_equal(true, (t.methods.include?(:raws) || t.methods.include?("raws")))
|
11
11
|
end
|
12
12
|
|
13
13
|
def test_add_raw_and_has_raw_for
|
14
14
|
t = Workbook::Template.new
|
15
15
|
t.add_raw "asdfsadf"
|
16
|
-
assert_equal(false,t.has_raw_for?(Integer))
|
17
|
-
assert_equal(true,t.has_raw_for?(String))
|
16
|
+
assert_equal(false, t.has_raw_for?(Integer))
|
17
|
+
assert_equal(true, t.has_raw_for?(String))
|
18
18
|
end
|
19
|
+
|
19
20
|
def test_raws
|
20
21
|
t = Workbook::Template.new
|
21
22
|
t.add_raw "asdfsadf"
|
22
|
-
assert_equal({String=>"asdfsadf"}, t.raws)
|
23
|
+
assert_equal({String => "asdfsadf"}, t.raws)
|
23
24
|
end
|
25
|
+
|
24
26
|
def test_set_default_formats!
|
25
27
|
t = Workbook::Template.new
|
26
28
|
t.set_default_formats!
|
27
|
-
assert_equal({font_weight: "bold"},t.formats[:header][:default])
|
29
|
+
assert_equal({font_weight: "bold"}, t.formats[:header][:default])
|
28
30
|
end
|
31
|
+
|
29
32
|
def test_add_formats
|
30
33
|
t = Workbook::Template.new
|
31
|
-
t.add_format Workbook::Format.new({font:"Arial"})
|
32
|
-
t.add_format Workbook::Format.new({font:"Times"})
|
33
|
-
assert_equal(2,t.formats.keys.count)
|
34
|
-
named_format = Workbook::Format.new({font:"Times"})
|
34
|
+
t.add_format Workbook::Format.new({font: "Arial"})
|
35
|
+
t.add_format Workbook::Format.new({font: "Times"})
|
36
|
+
assert_equal(2, t.formats.keys.count)
|
37
|
+
named_format = Workbook::Format.new({font: "Times"})
|
35
38
|
named_format.name = 1
|
36
39
|
t.add_format named_format
|
37
|
-
assert_equal(2,t.formats.keys.count)
|
40
|
+
assert_equal(2, t.formats.keys.count)
|
38
41
|
end
|
39
42
|
end
|
data/test/test_types_date.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), "helper")
|
3
4
|
|
4
5
|
class TestTypesDate < Minitest::Test
|
5
6
|
def test_init
|
6
|
-
w = Workbook::Types::Date.new(2001,2,2)
|
7
|
+
w = Workbook::Types::Date.new(2001, 2, 2)
|
7
8
|
assert_equal(Workbook::Types::Date, w.class)
|
8
|
-
assert_equal(Date.new(2001,2,2),w)
|
9
|
-
assert_equal(Date.new(2001,2,2),w.value)
|
9
|
+
assert_equal(Date.new(2001, 2, 2), w)
|
10
|
+
assert_equal(Date.new(2001, 2, 2), w.value)
|
10
11
|
assert_equal(true, w.is_a?(Date))
|
11
12
|
assert_equal(true, w.is_a?(Workbook::Modules::Cell))
|
12
|
-
|
13
13
|
end
|
14
|
-
end
|
14
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), "helper")
|
4
|
+
module Readers
|
5
|
+
class TestCsvWriter < Minitest::Test
|
6
|
+
def test_to_csv
|
7
|
+
w = Workbook::Book.new
|
8
|
+
w.import File.join(File.dirname(__FILE__), "artifacts/simple_csv.csv")
|
9
|
+
# reads
|
10
|
+
# a,b,c,d
|
11
|
+
# 1,2,3,4
|
12
|
+
# 5,3,2,1
|
13
|
+
# "asdf",123,12,2001-02-02
|
14
|
+
#
|
15
|
+
assert_equal("untitled document.csv", w.sheet.table.write_to_csv)
|
16
|
+
csv_result = File.read("untitled document.csv").split("\n")
|
17
|
+
csv_original = File.read(File.join(File.dirname(__FILE__), "artifacts/simple_csv.csv")).split("\n")
|
18
|
+
assert_equal(csv_original[0], csv_result[0])
|
19
|
+
assert_equal(csv_original[1], csv_result[1])
|
20
|
+
assert_equal(csv_original[2], csv_result[2])
|
21
|
+
assert_equal(csv_original[3], csv_result[3])
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,73 +1,76 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), "helper")
|
3
4
|
|
4
5
|
module Writers
|
5
6
|
class TestHtmlWriter < Minitest::Test
|
6
7
|
def test_to_html
|
7
|
-
#jruby and ruby's output differ a bit... both produce valid results though
|
8
|
+
# jruby and ruby's output differ a bit... both produce valid results though
|
8
9
|
# match = Workbook::Book.new.to_html.match(/<table \/>/) ? true : false #jruby
|
9
10
|
# puts Workbook::Book.new.to_html
|
10
11
|
# match = (Workbook::Book.new.to_html.match(/<table><thead><\/thead><tbody><\/tbody><\/table>/) ? true : false) if match == false #ruby
|
11
12
|
# assert_equal(true, match)
|
12
|
-
html = Workbook::Book.new([[
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
assert_equal(true, match)
|
17
|
-
match = html.match(/<th class=\"a\" data-key=\"a\">a<\/th>/) ? true : false
|
18
|
-
assert_equal(true, match)
|
13
|
+
html = Workbook::Book.new([["a", "b"], [1, 2], [3, 4]]).to_html
|
14
|
+
|
15
|
+
assert_match(/<td>1<\/td>/, html)
|
16
|
+
assert_match(/<th class="a" data-key="a">a<\/th>/, html)
|
19
17
|
end
|
18
|
+
|
20
19
|
def test_to_html_format_names
|
21
|
-
b = Workbook::Book.new([[
|
20
|
+
b = Workbook::Book.new([["a", "b"], [1, 2], [3, 4]])
|
22
21
|
c = b[0][0][0][0]
|
23
|
-
c.format.name="testname"
|
22
|
+
c.format.name = "testname"
|
24
23
|
c = b[0][0][1][0]
|
25
|
-
c.format.name="testname"
|
24
|
+
c.format.name = "testname"
|
25
|
+
|
26
26
|
html = b.to_html
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
assert_equal(true, match)
|
27
|
+
|
28
|
+
assert_match(/<th class="testname a" data-key="a">a<\/th>/, html)
|
29
|
+
assert_match(/<td class="testname">1<\/td>/, html)
|
31
30
|
end
|
31
|
+
|
32
32
|
def test_build_cell_options
|
33
|
-
b = Workbook::Book.new([[
|
34
|
-
result = b.sheet.table.build_cell_options(b.sheet.table.first.first,{data: {a:"a"}})
|
35
|
-
|
33
|
+
b = Workbook::Book.new([["a", "b"], [1, 2], [3, 4]])
|
34
|
+
result = b.sheet.table.build_cell_options(b.sheet.table.first.first, {data: {a: "a"}})
|
35
|
+
|
36
|
+
assert_equal("a", result[:"data-a"])
|
36
37
|
end
|
38
|
+
|
37
39
|
def test_to_html_css
|
38
|
-
b = Workbook::Book.new([[
|
40
|
+
b = Workbook::Book.new([["a", "b"], [1, 2], [3, 4]])
|
39
41
|
c = b[0][0][0][0]
|
40
|
-
c.format[:background]="#f00"
|
42
|
+
c.format[:background] = "#f00"
|
41
43
|
c = b[0][0][1][0]
|
42
|
-
c.format[:background]="#ff0"
|
44
|
+
c.format[:background] = "#ff0"
|
45
|
+
|
43
46
|
html = b.to_html
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
assert_equal(true, match)
|
51
|
-
match = html.match(/<td style="background: #ff0">1<\/td>/) ? true : false
|
52
|
-
assert_equal(true, match)
|
47
|
+
assert_match(/<th class="a" data-key="a">a<\/th>/, html)
|
48
|
+
assert_match(/<td>1<\/td>/, html)
|
49
|
+
|
50
|
+
html = b.to_html({style_with_inline_css: true})
|
51
|
+
assert_match(/<th class="a" data-key="a" style="background: #f00">a<\/th>/, html)
|
52
|
+
assert_match(/<td style="background: #ff0">1<\/td>/, html)
|
53
53
|
end
|
54
|
+
|
54
55
|
def test_sheet_and_table_names
|
55
|
-
b = Workbook::Book.new([[
|
56
|
+
b = Workbook::Book.new([["a", "b"], [1, 2], [3, 4]])
|
56
57
|
b.sheet.name = "Sheet name"
|
57
58
|
b.sheet.table.name = "Table name"
|
59
|
+
|
58
60
|
html = b.to_html
|
59
|
-
|
60
|
-
|
61
|
+
|
62
|
+
assert_match(/<h1>Sheet name<\/h1>/, html)
|
63
|
+
assert_match(/<h2>Table name<\/h2>/, html)
|
61
64
|
end
|
65
|
+
|
62
66
|
def test_col_and_rowspans
|
63
67
|
w = Workbook::Book.new
|
64
|
-
w.import File.join(File.dirname(__FILE__),
|
68
|
+
w.import File.join(File.dirname(__FILE__), "artifacts/sheet_with_combined_cells.ods")
|
65
69
|
html = w.to_html
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
end
|
70
|
+
assert_match(/rowspan="2">15 nov 11 15 nov 11/, html)
|
71
|
+
|
72
|
+
assert_match(/colspan="2" rowspan="2">13 mrt 12 15 mrt 12 13 mrt 12 15 mrt 12/, html)
|
73
|
+
assert_match(/colspan="2">14 90589/, html)
|
71
74
|
end
|
72
75
|
end
|
73
76
|
end
|
@@ -1,19 +1,21 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), "helper")
|
3
4
|
|
4
5
|
module Writers
|
5
6
|
class TestJsonWriter < Minitest::Test
|
6
7
|
def test_to_array_of_hashes_with_values
|
7
|
-
assert_equal([],Workbook::Table.new.to_array_of_hashes_with_values)
|
8
|
-
assert_equal([],Workbook::Table.new([["a","b"]]).to_array_of_hashes_with_values)
|
9
|
-
assert_equal([{:
|
10
|
-
Workbook::Table.new([["a","b"],[1,2],[Date.new(2012,1,1),nil]]).to_array_of_hashes_with_values)
|
8
|
+
assert_equal([], Workbook::Table.new.to_array_of_hashes_with_values)
|
9
|
+
assert_equal([], Workbook::Table.new([["a", "b"]]).to_array_of_hashes_with_values)
|
10
|
+
assert_equal([{a: 1, b: 2}, {a: Date.new(2012, 1, 1), b: nil}],
|
11
|
+
Workbook::Table.new([["a", "b"], [1, 2], [Date.new(2012, 1, 1), nil]]).to_array_of_hashes_with_values)
|
11
12
|
end
|
13
|
+
|
12
14
|
def test_to_json
|
13
|
-
assert_equal("[]",Workbook::Table.new.to_json)
|
14
|
-
assert_equal("[]",Workbook::Table.new([["a","b"]]).to_json)
|
15
|
+
assert_equal("[]", Workbook::Table.new.to_json)
|
16
|
+
assert_equal("[]", Workbook::Table.new([["a", "b"]]).to_json)
|
15
17
|
assert_equal("[{\"a\":1,\"b\":2},{\"a\":\"2012-01-01\",\"b\":null}]",
|
16
|
-
Workbook::Table.new([["a","b"],[1,2],[Date.new(2012,1,1),nil]]).to_json)
|
18
|
+
Workbook::Table.new([["a", "b"], [1, 2], [Date.new(2012, 1, 1), nil]]).to_json)
|
17
19
|
end
|
18
20
|
end
|
19
21
|
end
|