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
@@ -1,28 +1,40 @@
|
|
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 TestXlsWriter < Minitest::Test
|
6
7
|
def test_to_xls
|
7
|
-
b = Workbook::Book.new [[
|
8
|
-
raw = Spreadsheet.open File.join(File.dirname(__FILE__),
|
8
|
+
b = Workbook::Book.new [["a", "b", "c"], [1, 2, 3], [3, 2, BigDecimal("3")]]
|
9
|
+
raw = Spreadsheet.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xls")
|
9
10
|
t = Workbook::Template.new
|
10
11
|
t.add_raw raw
|
11
12
|
b.template = t
|
12
13
|
assert_equal(true, b.to_xls.is_a?(Spreadsheet::Workbook))
|
13
14
|
|
14
|
-
assert_equal(
|
15
|
+
assert_equal("untitled document.xls", b.write_to_xls)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_big_sheet
|
19
|
+
b = Workbook::Book.new
|
20
|
+
1000.times do |row_index|
|
21
|
+
b.sheet.table << [row_index, 1, 2, 3, 4]
|
22
|
+
end
|
23
|
+
filename = b.write_to_xls
|
24
|
+
b = Workbook::Book.open filename
|
25
|
+
assert_equal(1000, b.sheet.table.count)
|
15
26
|
end
|
16
27
|
|
17
28
|
def test_roundtrip
|
18
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
19
|
-
assert_equal(3.85546875,b.sheet.table.first[:a].format[:width])
|
29
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xls")
|
30
|
+
assert_equal(3.85546875, b.sheet.table.first[:a].format[:width])
|
20
31
|
filename = b.write_to_xls
|
21
32
|
b = Workbook::Book.open filename
|
22
|
-
assert_equal(3.85546875,b.sheet.table.first[:a].format[:width])
|
33
|
+
assert_equal(3.85546875, b.sheet.table.first[:a].format[:width])
|
23
34
|
end
|
35
|
+
|
24
36
|
def test_delete_row
|
25
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
37
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xls")
|
26
38
|
# a b c d e
|
27
39
|
# 14 90589 a 19 apr 12 23 apr 12
|
28
40
|
# 15 90588 b 15 nov 11 16 jul 12
|
@@ -30,18 +42,19 @@ module Writers
|
|
30
42
|
# 33 90490 d 13 mrt 12 15 mrt 12
|
31
43
|
t = b.sheet.table
|
32
44
|
assert_equal(33, t.last.first.value)
|
33
|
-
t.delete_at(4) #delete last row
|
45
|
+
t.delete_at(4) # delete last row
|
34
46
|
filename = b.write_to_xls
|
35
47
|
b = Workbook::Book.open filename
|
36
48
|
t = b.sheet.table
|
37
49
|
# puts t.to_csv
|
38
|
-
#TODO: NOT true delete... need to work on this...
|
50
|
+
# TODO: NOT true delete... need to work on this...
|
39
51
|
assert_equal(25, t[3].first.value)
|
40
52
|
assert_nil(t[4].first.value)
|
41
53
|
assert_nil(t[4].last.value)
|
42
54
|
end
|
55
|
+
|
43
56
|
def test_pop_row
|
44
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
57
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xls")
|
45
58
|
# a b c d e
|
46
59
|
# 14 90589 a 19 apr 12 23 apr 12
|
47
60
|
# 15 90588 b 15 nov 11 16 jul 12
|
@@ -49,22 +62,22 @@ module Writers
|
|
49
62
|
# 33 90490 d 13 mrt 12 15 mrt 12
|
50
63
|
t = b.sheet.table
|
51
64
|
assert_equal(33, t.last.first.value)
|
52
|
-
t.pop(2) #delete last two row
|
65
|
+
t.pop(2) # delete last two row
|
53
66
|
# puts t.to_csv
|
54
67
|
filename = b.write_to_xls
|
55
68
|
b = Workbook::Book.open filename
|
56
69
|
t = b.sheet.table
|
57
70
|
# puts t.to_csv
|
58
|
-
#TODO: NOT true delete... need to work on this...
|
71
|
+
# TODO: NOT true delete... need to work on this...
|
59
72
|
assert_nil(t[3].first.value)
|
60
73
|
assert_nil(t[4].first.value)
|
61
74
|
assert_nil(t[4].last.value)
|
62
75
|
assert_equal(15, t[2].first.value)
|
63
76
|
assert_nil(t.last.first.value)
|
64
|
-
|
65
77
|
end
|
78
|
+
|
66
79
|
def test_pop_bigtable
|
67
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
80
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/bigtable.xls")
|
68
81
|
# a b c d e
|
69
82
|
# 14 90589 a 19 apr 12 23 apr 12
|
70
83
|
# 15 90588 b 15 nov 11 16 jul 12
|
@@ -72,68 +85,72 @@ module Writers
|
|
72
85
|
# 33 90490 d 13 mrt 12 15 mrt 12
|
73
86
|
t = b.sheet.table
|
74
87
|
assert_equal(574, t.count)
|
75
|
-
t.pop(300) #delete last two row
|
88
|
+
t.pop(300) # delete last two row
|
89
|
+
assert_equal(274, t.count)
|
76
90
|
assert_equal(274, t.trim.count)
|
77
91
|
filename = b.write_to_xls
|
92
|
+
|
78
93
|
b = Workbook::Book.open filename
|
79
94
|
t = b.sheet.table
|
80
95
|
assert_equal(274, t.trim.count)
|
81
|
-
|
82
|
-
|
83
96
|
end
|
97
|
+
|
84
98
|
def test_cloning_roundtrip
|
85
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
99
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/book_with_tabs_and_colours.xls")
|
86
100
|
b.sheet.table << b.sheet.table[2]
|
87
|
-
assert_equal(90588,b.sheet.table[5][:b].value)
|
88
|
-
assert_equal("#FFFF00",b.sheet.table[5][:c].format[:background_color])
|
101
|
+
assert_equal(90588, b.sheet.table[5][:b].value)
|
102
|
+
assert_equal("#FFFF00", b.sheet.table[5][:c].format[:background_color])
|
89
103
|
filename = b.write_to_xls
|
90
104
|
b = Workbook::Book.open filename
|
91
|
-
assert_equal(90588,b.sheet.table[5][:b].value)
|
92
|
-
assert_equal("#FFFF00",b.sheet.table[5][:c].format[:background_color])
|
105
|
+
assert_equal(90588, b.sheet.table[5][:b].value)
|
106
|
+
assert_equal("#FFFF00", b.sheet.table[5][:c].format[:background_color])
|
93
107
|
end
|
108
|
+
|
94
109
|
def test_parse_font_family
|
95
110
|
b = Workbook::Book.new
|
96
|
-
assert_equal(:none,b.parse_font_family({:
|
97
|
-
assert_equal(:swiss,b.parse_font_family({:
|
98
|
-
assert_equal(:swiss,b.parse_font_family({:
|
99
|
-
assert_equal(:roman,b.parse_font_family({:
|
100
|
-
assert_equal(:roman,b.parse_font_family({:
|
111
|
+
assert_equal(:none, b.parse_font_family({font_family: "asdfsdf"}))
|
112
|
+
assert_equal(:swiss, b.parse_font_family({font_family: "ArIAL"}))
|
113
|
+
assert_equal(:swiss, b.parse_font_family({font_family: :swiss}))
|
114
|
+
assert_equal(:roman, b.parse_font_family({font_family: "Times"}))
|
115
|
+
assert_equal(:roman, b.parse_font_family({font_family: "roman"}))
|
101
116
|
end
|
102
117
|
|
103
118
|
def test_init_spreadsheet_template
|
104
119
|
b = Workbook::Book.new
|
105
120
|
b.init_spreadsheet_template
|
106
|
-
assert_equal(Spreadsheet::Workbook,b.xls_template.class)
|
121
|
+
assert_equal(Spreadsheet::Workbook, b.xls_template.class)
|
107
122
|
end
|
108
123
|
|
109
124
|
def test_xls_sheet
|
110
125
|
b = Workbook::Book.new
|
111
126
|
b.init_spreadsheet_template
|
112
|
-
assert_equal(Spreadsheet::Worksheet,b.xls_sheet(100).class)
|
127
|
+
assert_equal(Spreadsheet::Worksheet, b.xls_sheet(100).class)
|
113
128
|
end
|
129
|
+
|
114
130
|
def test_strftime_to_ms_format_nil
|
115
131
|
assert_nil(Workbook::Book.new.strftime_to_ms_format(nil))
|
116
132
|
end
|
133
|
+
|
117
134
|
def test_xls_sheet_writer
|
118
135
|
b = Workbook::Book.new
|
119
136
|
b << Workbook::Sheet.new
|
120
137
|
b << Workbook::Sheet.new
|
121
138
|
b[0].name = "A"
|
122
139
|
b[1].name = "B"
|
123
|
-
assert_equal(["A","B"], b.collect{|a| a.name})
|
140
|
+
assert_equal(["A", "B"], b.collect { |a| a.name })
|
124
141
|
filename = b.write_to_xls
|
125
142
|
b = Workbook::Book.open filename
|
126
|
-
assert_equal(["A","B"], b.collect{|a| a.name})
|
143
|
+
assert_equal(["A", "B"], b.collect { |a| a.name })
|
127
144
|
end
|
145
|
+
|
128
146
|
def test_removal_of_sheets_in_excel_when_using_template
|
129
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
147
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet_many_sheets.xls")
|
130
148
|
assert_equal(10, b.count)
|
131
149
|
b.pop(4)
|
132
150
|
assert_equal(6, b.count)
|
133
151
|
filename = b.write_to_xls
|
134
152
|
b = Workbook::Book.open filename
|
135
153
|
assert_equal(6, b.count)
|
136
|
-
|
137
154
|
end
|
138
155
|
end
|
139
156
|
end
|
@@ -1,38 +1,46 @@
|
|
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 TestXlsxWriter < Minitest::Test
|
6
7
|
def test_empty_to_xlsx
|
7
|
-
b = Workbook::Book.new [[
|
8
|
+
b = Workbook::Book.new [["a", "b", "c"], [1, 2, 3], [3, 2, BigDecimal("3")]]
|
8
9
|
assert_equal(true, b.to_xlsx.is_a?(Axlsx::Package))
|
9
10
|
dimensions = b.sheet.table.dimensions
|
10
|
-
assert_equal(
|
11
|
-
b = Workbook::Book.open
|
11
|
+
assert_equal("untitled document.xlsx", b.write_to_xlsx)
|
12
|
+
b = Workbook::Book.open "untitled document.xlsx"
|
12
13
|
assert_equal(dimensions, b.sheet.table.dimensions)
|
13
14
|
end
|
14
15
|
|
15
16
|
def test_roundtrip
|
16
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
17
|
-
assert_equal(14,b[0][0]["A2"])
|
18
|
-
assert_equal(DateTime.new(2011,11,15),b[0][0]["D3"].value)
|
17
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xlsx")
|
18
|
+
assert_equal(14, b[0][0]["A2"])
|
19
|
+
assert_equal(DateTime.new(2011, 11, 15), b[0][0]["D3"].value)
|
19
20
|
# puts b.sheet.table.to_csv
|
20
21
|
filename = b.write_to_xlsx
|
21
22
|
b = Workbook::Book.open filename
|
22
|
-
assert_equal(14,b[0][0]["A2"].value)
|
23
|
-
assert_equal(DateTime.new(2011,11,15),b[0][0]["D3"].value)
|
23
|
+
assert_equal(14, b[0][0]["A2"].value)
|
24
|
+
assert_equal(DateTime.new(2011, 11, 15), b[0][0]["D3"].value)
|
24
25
|
end
|
26
|
+
|
25
27
|
def test_roundtrip_with_modification
|
26
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
27
|
-
b[0][0]["A2"]= 12
|
28
|
-
assert_equal(DateTime.new(2011,11,15),b[0][0]["D3"].value)
|
28
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xlsx")
|
29
|
+
b[0][0]["A2"] = 12
|
30
|
+
assert_equal(DateTime.new(2011, 11, 15), b[0][0]["D3"].value)
|
29
31
|
filename = b.write_to_xlsx
|
30
32
|
b = Workbook::Book.open filename
|
31
|
-
assert_equal(12,b[0][0]["A2"].value)
|
32
|
-
assert_equal(DateTime.new(2011,11,15),b[0][0]["D3"].value)
|
33
|
+
assert_equal(12, b[0][0]["A2"].value)
|
34
|
+
assert_equal(DateTime.new(2011, 11, 15), b[0][0]["D3"].value)
|
33
35
|
end
|
36
|
+
|
37
|
+
def test_stream_xlsx
|
38
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xlsx")
|
39
|
+
assert(b.stream_xlsx.start_with?("PK"))
|
40
|
+
end
|
41
|
+
|
34
42
|
def test_delete_row
|
35
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
43
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xlsx")
|
36
44
|
# a b c d e
|
37
45
|
# 14 90589 a 19 apr 12 23 apr 12
|
38
46
|
# 15 90588 b 15 nov 11 16 jul 12
|
@@ -40,16 +48,17 @@ module Writers
|
|
40
48
|
# 33 90490 d 13 mrt 12 15 mrt 12
|
41
49
|
t = b.sheet.table
|
42
50
|
assert_equal(33, t.last.first.value)
|
43
|
-
t.delete_at(4) #delete last row
|
51
|
+
t.delete_at(4) # delete last row
|
44
52
|
filename = b.write_to_xlsx
|
45
53
|
b = Workbook::Book.open filename
|
46
54
|
t = b.sheet.table
|
47
|
-
#TODO: NOT true delete... need to work on this...
|
55
|
+
# TODO: NOT true delete... need to work on this...
|
48
56
|
assert_equal(25, t[3].first.value)
|
49
57
|
assert_nil(t[4])
|
50
58
|
end
|
59
|
+
|
51
60
|
def test_pop_row
|
52
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
61
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/simple_sheet.xlsx")
|
53
62
|
# a b c d e
|
54
63
|
# 14 90589 a 19 apr 12 23 apr 12
|
55
64
|
# 15 90588 b 15 nov 11 16 jul 12
|
@@ -65,8 +74,9 @@ module Writers
|
|
65
74
|
assert_nil(t[4])
|
66
75
|
assert_equal(15, t[2].first.value)
|
67
76
|
end
|
77
|
+
|
68
78
|
def test_pop_bigtable
|
69
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
79
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/bigtable.xlsx")
|
70
80
|
t = b.sheet.table
|
71
81
|
assert_equal(553, t.count)
|
72
82
|
t.pop(300)
|
@@ -79,40 +89,60 @@ module Writers
|
|
79
89
|
|
80
90
|
# Uncommented colour testing, this is broken since the switch to roo/axlsx
|
81
91
|
def test_cloning_roundtrip
|
82
|
-
b = Workbook::Book.open File.join(File.dirname(__FILE__),
|
92
|
+
b = Workbook::Book.open File.join(File.dirname(__FILE__), "artifacts/book_with_tabs_and_colours.xlsx")
|
83
93
|
b.sheet.table << b.sheet.table[2]
|
84
|
-
assert_equal(90588,b.sheet.table[5][:b].value)
|
94
|
+
assert_equal(90588, b.sheet.table[5][:b].value)
|
85
95
|
# assert_equal("#FFFF00",b.sheet.table[2][:c].format[:background_color])
|
86
96
|
# assert_equal("#FFFF00",b.sheet.table[5][:c].format[:background_color])
|
87
97
|
filename = b.write_to_xls
|
88
98
|
b = Workbook::Book.open filename
|
89
|
-
assert_equal(90588,b.sheet.table[5][:b].value)
|
99
|
+
assert_equal(90588, b.sheet.table[5][:b].value)
|
90
100
|
# assert_equal("#FF00FF",b.sheet.table[5][:c].format[:background_color])
|
91
101
|
end
|
92
102
|
|
93
103
|
def test_format_to_xlsx_format
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
104
|
+
# TODO: breaks
|
105
|
+
# b = Workbook::Book.new
|
106
|
+
# ws.
|
107
|
+
# xlsx_format = b.format_to_xlsx_format(Workbook::Format.new({font_weight: "bold", color: "#FF0000", text_decoration: "underline"}))
|
108
|
+
# # p Axlsx::Styles.cellStyles.inspect
|
109
|
+
# assert_equal(true, xlsx_format[:b])
|
110
|
+
# assert_equal(true, xlsx_format[:u])
|
111
|
+
# assert_equal("FFFF0000", xlsx_format[:fg_color])
|
98
112
|
end
|
99
113
|
|
100
114
|
def test_formats_to_xlsx_format
|
101
115
|
b = Workbook::Book.new
|
102
116
|
b.template.set_default_formats!
|
103
117
|
b.formats_to_xlsx_format
|
104
|
-
raw_keys = b.template.create_or_find_format_by(:header).raws
|
105
|
-
assert((raw_keys.include?(Integer) or raw_keys.include?(Fixnum)))
|
118
|
+
# raw_keys = b.template.create_or_find_format_by(:header).raws
|
106
119
|
end
|
107
120
|
|
121
|
+
def test_string_outputs
|
122
|
+
given = [["test", "0001", "001.9", "1,9", "001,9"]]
|
123
|
+
b = Workbook::Book.new(given)
|
124
|
+
assert_equal(given[0], b.sheet.table[0].map(&:value))
|
125
|
+
|
126
|
+
filename = b.write_to_xlsx
|
127
|
+
|
128
|
+
b = Workbook::Book.open filename
|
129
|
+
t = b.sheet.table
|
130
|
+
|
131
|
+
3.times do |time|
|
132
|
+
assert_equal(given[0][time], t[0][time].value)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
# TODO: Formatting doesn't actually work
|
108
137
|
def test_format_to_xlsx_integrated
|
109
|
-
b = Workbook::Book.new [[:a
|
138
|
+
b = Workbook::Book.new [[:a, :b], [1, 2], [3, 4]]
|
110
139
|
c2 = b.sheet.table[2][1]
|
111
140
|
c2.format = Workbook::Format.new({font_weight: "bold", color: "#CC5500", font_style: :italic, text_decoration: :underline})
|
112
|
-
|
113
|
-
|
114
|
-
|
141
|
+
b.write_to_xlsx("untitled document.xlsx")
|
142
|
+
written_book = Workbook::Book.open("untitled document.xlsx")
|
143
|
+
written_cell = written_book.sheet.table["B3"]
|
144
|
+
assert_equal(4, written_cell.value)
|
145
|
+
# assert_equal("bold", written_cell.format)
|
115
146
|
end
|
116
|
-
|
117
147
|
end
|
118
148
|
end
|
data/workbook.gemspec
CHANGED
@@ -1,37 +1,36 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
|
5
4
|
require "workbook/version"
|
6
|
-
require
|
5
|
+
require "date"
|
7
6
|
|
8
7
|
Gem::Specification.new do |s|
|
9
|
-
s.name
|
10
|
-
s.rubyforge_project = 'workbook'
|
8
|
+
s.name = "workbook"
|
11
9
|
s.license = "MIT"
|
12
|
-
s.version
|
13
|
-
s.
|
14
|
-
s.summary = "Workbook is a datastructure to contain books of tables (an anlogy used in e.g. Excel)"
|
10
|
+
s.version = Workbook::VERSION
|
11
|
+
s.summary = "Workbook is a datastructure to contain books of tables (an anlogy used in e.g. Excel)"
|
15
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."
|
16
|
-
s.authors
|
17
|
-
s.add_development_dependency
|
18
|
-
s.add_development_dependency("rake",
|
19
|
-
s.add_development_dependency(
|
20
|
-
s.
|
21
|
-
s.
|
22
|
-
s.
|
23
|
-
|
24
|
-
s.add_dependency(
|
25
|
-
s.add_dependency(
|
13
|
+
s.authors = ["Maarten Brouwers"]
|
14
|
+
s.add_development_dependency "ruby-prof", "~> 0.14"
|
15
|
+
s.add_development_dependency("rake", "~> 12.0")
|
16
|
+
s.add_development_dependency("minitest", "~> 5.4")
|
17
|
+
s.add_development_dependency("byebug", "> 10")
|
18
|
+
s.add_development_dependency("standard", "~> 0.1.0")
|
19
|
+
s.add_development_dependency("simplecov", "~> 0.17.0")
|
20
|
+
s.add_dependency("spreadsheet", "> 1.2")
|
21
|
+
s.add_dependency("rchardet", ">= 1.8.0")
|
22
|
+
s.add_dependency("json", "> 2.3")
|
23
|
+
s.add_dependency("rubyzip", "> 1.2", ">= 1.2.1")
|
24
|
+
s.add_dependency("caxlsx", "> 3.0")
|
25
|
+
s.add_dependency("nokogiri", "> 1.10")
|
26
26
|
|
27
|
-
|
28
|
-
s.
|
29
|
-
s.
|
30
|
-
s.
|
27
|
+
|
28
|
+
s.platform = Gem::Platform::RUBY
|
29
|
+
s.files = `git ls-files`.split($/)
|
30
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
31
|
+
s.executables = s.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
31
32
|
s.require_paths = ["lib"]
|
32
|
-
s.email
|
33
|
-
s.homepage
|
34
|
-
|
33
|
+
s.email = ["gem@murb.nl"]
|
34
|
+
s.homepage =
|
35
|
+
"http://murb.nl/blog?tags=workbook"
|
35
36
|
end
|
36
|
-
|
37
|
-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: workbook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maarten Brouwers
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby-prof
|
@@ -53,75 +53,137 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '5.4'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: byebug
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: standard
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
type: :
|
75
|
+
version: 0.1.0
|
76
|
+
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
82
|
+
version: 0.1.0
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
84
|
+
name: simplecov
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
76
|
-
type: :
|
89
|
+
version: 0.17.0
|
90
|
+
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
96
|
+
version: 0.17.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: spreadsheet
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.2'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.2'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rchardet
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.8.0
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 1.8.0
|
83
125
|
- !ruby/object:Gem::Dependency
|
84
126
|
name: json
|
85
127
|
requirement: !ruby/object:Gem::Requirement
|
86
128
|
requirements:
|
87
|
-
- - "
|
129
|
+
- - ">"
|
88
130
|
- !ruby/object:Gem::Version
|
89
|
-
version: '2.
|
131
|
+
version: '2.3'
|
90
132
|
type: :runtime
|
91
133
|
prerelease: false
|
92
134
|
version_requirements: !ruby/object:Gem::Requirement
|
93
135
|
requirements:
|
94
|
-
- - "
|
136
|
+
- - ">"
|
95
137
|
- !ruby/object:Gem::Version
|
96
|
-
version: '2.
|
138
|
+
version: '2.3'
|
97
139
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
140
|
+
name: rubyzip
|
99
141
|
requirement: !ruby/object:Gem::Requirement
|
100
142
|
requirements:
|
101
|
-
- - "
|
143
|
+
- - ">"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '1.2'
|
146
|
+
- - ">="
|
102
147
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
148
|
+
version: 1.2.1
|
104
149
|
type: :runtime
|
105
150
|
prerelease: false
|
106
151
|
version_requirements: !ruby/object:Gem::Requirement
|
107
152
|
requirements:
|
108
|
-
- - "
|
153
|
+
- - ">"
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '1.2'
|
156
|
+
- - ">="
|
109
157
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
158
|
+
version: 1.2.1
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: caxlsx
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - ">"
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '3.0'
|
166
|
+
type: :runtime
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - ">"
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '3.0'
|
111
173
|
- !ruby/object:Gem::Dependency
|
112
174
|
name: nokogiri
|
113
175
|
requirement: !ruby/object:Gem::Requirement
|
114
176
|
requirements:
|
115
|
-
- - "
|
177
|
+
- - ">"
|
116
178
|
- !ruby/object:Gem::Version
|
117
|
-
version: '1.
|
179
|
+
version: '1.10'
|
118
180
|
type: :runtime
|
119
181
|
prerelease: false
|
120
182
|
version_requirements: !ruby/object:Gem::Requirement
|
121
183
|
requirements:
|
122
|
-
- - "
|
184
|
+
- - ">"
|
123
185
|
- !ruby/object:Gem::Version
|
124
|
-
version: '1.
|
186
|
+
version: '1.10'
|
125
187
|
description: Workbook contains workbooks, as in a table, contains rows, contains cells,
|
126
188
|
reads/writes excel, ods and csv and tab separated files, and offers basic diffing
|
127
189
|
and sorting capabilities.
|
@@ -132,6 +194,7 @@ executables:
|
|
132
194
|
extensions: []
|
133
195
|
extra_rdoc_files: []
|
134
196
|
files:
|
197
|
+
- ".codeclimate.yml"
|
135
198
|
- ".gitignore"
|
136
199
|
- ".ruby-version"
|
137
200
|
- ".travis.yml"
|
@@ -140,6 +203,7 @@ files:
|
|
140
203
|
- ".yardoc/objects/root.dat"
|
141
204
|
- ".yardoc/proxy_types"
|
142
205
|
- ".yardopts"
|
206
|
+
- CHANGELOG.md
|
143
207
|
- Gemfile
|
144
208
|
- LICENSE.txt
|
145
209
|
- README.md
|
@@ -234,6 +298,7 @@ files:
|
|
234
298
|
- test/test_table.rb
|
235
299
|
- test/test_template.rb
|
236
300
|
- test/test_types_date.rb
|
301
|
+
- test/test_writers_csv_writer.rb
|
237
302
|
- test/test_writers_html_writer.rb
|
238
303
|
- test/test_writers_json_writer.rb
|
239
304
|
- test/test_writers_xls_writer.rb
|
@@ -243,7 +308,7 @@ homepage: http://murb.nl/blog?tags=workbook
|
|
243
308
|
licenses:
|
244
309
|
- MIT
|
245
310
|
metadata: {}
|
246
|
-
post_install_message:
|
311
|
+
post_install_message:
|
247
312
|
rdoc_options: []
|
248
313
|
require_paths:
|
249
314
|
- lib
|
@@ -258,8 +323,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
258
323
|
- !ruby/object:Gem::Version
|
259
324
|
version: '0'
|
260
325
|
requirements: []
|
261
|
-
rubygems_version: 3.
|
262
|
-
signing_key:
|
326
|
+
rubygems_version: 3.4.6
|
327
|
+
signing_key:
|
263
328
|
specification_version: 4
|
264
329
|
summary: Workbook is a datastructure to contain books of tables (an anlogy used in
|
265
330
|
e.g. Excel)
|
@@ -315,6 +380,7 @@ test_files:
|
|
315
380
|
- test/test_table.rb
|
316
381
|
- test/test_template.rb
|
317
382
|
- test/test_types_date.rb
|
383
|
+
- test/test_writers_csv_writer.rb
|
318
384
|
- test/test_writers_html_writer.rb
|
319
385
|
- test/test_writers_json_writer.rb
|
320
386
|
- test/test_writers_xls_writer.rb
|