workbook 0.8.0 → 0.8.2
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/.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
|