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.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +21 -0
  3. data/.gitignore +4 -1
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +4 -4
  6. data/CHANGELOG.md +16 -0
  7. data/Gemfile +4 -2
  8. data/README.md +9 -7
  9. data/Rakefile +9 -7
  10. data/lib/workbook/book.rb +74 -61
  11. data/lib/workbook/cell.rb +59 -12
  12. data/lib/workbook/column.rb +33 -29
  13. data/lib/workbook/format.rb +24 -23
  14. data/lib/workbook/generatetypes.rb +6 -5
  15. data/lib/workbook/modules/cache.rb +8 -7
  16. data/lib/workbook/modules/cell.rb +78 -99
  17. data/lib/workbook/modules/diff_sort.rb +93 -82
  18. data/lib/workbook/modules/raw_objects_storage.rb +7 -7
  19. data/lib/workbook/modules/type_parser.rb +31 -21
  20. data/lib/workbook/nil_value.rb +5 -9
  21. data/lib/workbook/readers/csv_reader.rb +7 -9
  22. data/lib/workbook/readers/ods_reader.rb +49 -49
  23. data/lib/workbook/readers/txt_reader.rb +7 -7
  24. data/lib/workbook/readers/xls_reader.rb +22 -32
  25. data/lib/workbook/readers/xls_shared.rb +107 -116
  26. data/lib/workbook/readers/xlsx_reader.rb +47 -46
  27. data/lib/workbook/row.rb +100 -83
  28. data/lib/workbook/sheet.rb +48 -37
  29. data/lib/workbook/table.rb +97 -71
  30. data/lib/workbook/template.rb +13 -14
  31. data/lib/workbook/types/date.rb +2 -1
  32. data/lib/workbook/types/false.rb +1 -1
  33. data/lib/workbook/types/false_class.rb +2 -1
  34. data/lib/workbook/types/nil.rb +1 -1
  35. data/lib/workbook/types/nil_class.rb +3 -2
  36. data/lib/workbook/types/numeric.rb +3 -2
  37. data/lib/workbook/types/string.rb +3 -2
  38. data/lib/workbook/types/time.rb +3 -2
  39. data/lib/workbook/types/true.rb +1 -1
  40. data/lib/workbook/types/true_class.rb +3 -2
  41. data/lib/workbook/version.rb +3 -2
  42. data/lib/workbook/writers/csv_table_writer.rb +11 -12
  43. data/lib/workbook/writers/html_writer.rb +35 -37
  44. data/lib/workbook/writers/json_table_writer.rb +9 -10
  45. data/lib/workbook/writers/xls_writer.rb +31 -35
  46. data/lib/workbook/writers/xlsx_writer.rb +46 -28
  47. data/lib/workbook.rb +17 -14
  48. data/test/helper.rb +8 -5
  49. data/test/test_book.rb +43 -38
  50. data/test/test_column.rb +29 -25
  51. data/test/test_format.rb +53 -55
  52. data/test/test_functional.rb +9 -8
  53. data/test/test_modules_cache.rb +20 -17
  54. data/test/test_modules_cell.rb +49 -46
  55. data/test/test_modules_table_diff_sort.rb +56 -63
  56. data/test/test_modules_type_parser.rb +63 -31
  57. data/test/test_readers_csv_reader.rb +50 -42
  58. data/test/test_readers_ods_reader.rb +30 -31
  59. data/test/test_readers_txt_reader.rb +23 -23
  60. data/test/test_readers_xls_reader.rb +22 -23
  61. data/test/test_readers_xls_shared.rb +5 -4
  62. data/test/test_readers_xlsx_reader.rb +46 -37
  63. data/test/test_row.rb +107 -109
  64. data/test/test_sheet.rb +43 -35
  65. data/test/test_table.rb +84 -60
  66. data/test/test_template.rb +18 -15
  67. data/test/test_types_date.rb +7 -7
  68. data/test/test_writers_csv_writer.rb +24 -0
  69. data/test/test_writers_html_writer.rb +44 -41
  70. data/test/test_writers_json_writer.rb +11 -9
  71. data/test/test_writers_xls_writer.rb +52 -35
  72. data/test/test_writers_xlsx_writer.rb +64 -34
  73. data/workbook.gemspec +26 -27
  74. metadata +93 -27
@@ -1,28 +1,40 @@
1
- # -*- encoding : utf-8 -*-
2
- require File.join(File.dirname(__FILE__), 'helper')
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 [['a','b','c'],[1,2,3],[3,2,3]]
8
- raw = Spreadsheet.open File.join(File.dirname(__FILE__), 'artifacts/simple_sheet.xls')
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('untitled document.xls', b.write_to_xls)
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__), 'artifacts/simple_sheet.xls')
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__), 'artifacts/simple_sheet.xls')
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__), 'artifacts/simple_sheet.xls')
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__), 'artifacts/bigtable.xls')
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__), 'artifacts/book_with_tabs_and_colours.xls')
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({:font_family=>"asdfsdf"}))
97
- assert_equal(:swiss,b.parse_font_family({:font_family=>"ArIAL"}))
98
- assert_equal(:swiss,b.parse_font_family({:font_family=>:swiss}))
99
- assert_equal(:roman,b.parse_font_family({:font_family=>"Times"}))
100
- assert_equal(:roman,b.parse_font_family({:font_family=>"roman"}))
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__), 'artifacts/simple_sheet_many_sheets.xls')
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
- # -*- encoding : utf-8 -*-
2
- require File.join(File.dirname(__FILE__), 'helper')
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 [['a','b','c'],[1,2,3],[3,2,3]]
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('untitled document.xlsx', b.write_to_xlsx)
11
- b = Workbook::Book.open 'untitled document.xlsx'
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__), 'artifacts/simple_sheet.xlsx')
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__), 'artifacts/simple_sheet.xlsx')
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__), 'artifacts/simple_sheet.xlsx')
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__), 'artifacts/simple_sheet.xlsx')
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__), 'artifacts/bigtable.xlsx')
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__), 'artifacts/book_with_tabs_and_colours.xlsx')
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
- b = Workbook::Book.new
95
- xlsx_format = b.format_to_xlsx_format(Workbook::Format.new({font_weight: "bold", color: "#FF0000"}))
96
- assert_equal(true,xlsx_format[:b])
97
- assert_equal("FFFF0000",xlsx_format[:fg_color])
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.keys
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,:b],[1,2],[3,4]]
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
- # Can't test this for real yet... :/ but the examples here seem to work b.write_to_xlsx("untitled document.xlsx")
113
- # c = Workbook::Book.open("untitled document.xlsx")
114
- # p c.inspect
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
- # -*- encoding: utf-8 -*-
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 'date'
5
+ require "date"
7
6
 
8
7
  Gem::Specification.new do |s|
9
- s.name = 'workbook'
10
- s.rubyforge_project = 'workbook'
8
+ s.name = "workbook"
11
9
  s.license = "MIT"
12
- s.version = Workbook::VERSION
13
- s.date = Time.new.to_date.to_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 = ["Maarten Brouwers"]
17
- s.add_development_dependency 'ruby-prof', '~> 0.14'
18
- s.add_development_dependency("rake", '~> 12.0')
19
- s.add_development_dependency('minitest', '~> 5.4')
20
- s.add_dependency('spreadsheet', '~> 1.1')
21
- s.add_dependency("rchardet", "~> 1.3")
22
- s.add_dependency("json", '~> 2.1')
23
- # s.add_dependency("rubyzip", '~> 1.2', '>= 1.2.1')
24
- s.add_dependency('axlsx', '~> 3.0.0.pre')
25
- s.add_dependency('nokogiri', '~> 1.8')
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
- s.platform = Gem::Platform::RUBY
28
- s.files = `git ls-files`.split($/)
29
- s.test_files = s.files.grep(%r{^(test|spec|features)/})
30
- s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
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 = ['gem@murb.nl']
33
- s.homepage =
34
- 'http://murb.nl/blog?tags=workbook'
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.0
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: 2019-02-27 00:00:00.000000000 Z
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: spreadsheet
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: '1.1'
62
- type: :runtime
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: '1.1'
82
+ version: 0.1.0
69
83
  - !ruby/object:Gem::Dependency
70
- name: rchardet
84
+ name: simplecov
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '1.3'
76
- type: :runtime
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: '1.3'
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.1'
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.1'
138
+ version: '2.3'
97
139
  - !ruby/object:Gem::Dependency
98
- name: axlsx
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: 3.0.0.pre
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: 3.0.0.pre
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.8'
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.8'
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.0.1
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