workbook 0.8.1 → 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 (72) 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 +7 -0
  7. data/Gemfile +2 -2
  8. data/README.md +9 -7
  9. data/Rakefile +6 -6
  10. data/lib/workbook/book.rb +73 -62
  11. data/lib/workbook/cell.rb +58 -13
  12. data/lib/workbook/column.rb +31 -28
  13. data/lib/workbook/format.rb +23 -24
  14. data/lib/workbook/generatetypes.rb +4 -4
  15. data/lib/workbook/modules/cache.rb +6 -7
  16. data/lib/workbook/modules/cell.rb +77 -100
  17. data/lib/workbook/modules/diff_sort.rb +92 -83
  18. data/lib/workbook/modules/raw_objects_storage.rb +6 -8
  19. data/lib/workbook/modules/type_parser.rb +30 -22
  20. data/lib/workbook/nil_value.rb +4 -9
  21. data/lib/workbook/readers/csv_reader.rb +7 -10
  22. data/lib/workbook/readers/ods_reader.rb +48 -50
  23. data/lib/workbook/readers/txt_reader.rb +6 -8
  24. data/lib/workbook/readers/xls_reader.rb +21 -33
  25. data/lib/workbook/readers/xls_shared.rb +106 -117
  26. data/lib/workbook/readers/xlsx_reader.rb +45 -46
  27. data/lib/workbook/row.rb +99 -84
  28. data/lib/workbook/sheet.rb +47 -38
  29. data/lib/workbook/table.rb +96 -72
  30. data/lib/workbook/template.rb +12 -15
  31. data/lib/workbook/types/false.rb +0 -1
  32. data/lib/workbook/types/nil.rb +0 -1
  33. data/lib/workbook/types/nil_class.rb +1 -1
  34. data/lib/workbook/types/numeric.rb +1 -1
  35. data/lib/workbook/types/string.rb +1 -1
  36. data/lib/workbook/types/time.rb +1 -1
  37. data/lib/workbook/types/true.rb +0 -1
  38. data/lib/workbook/types/true_class.rb +1 -1
  39. data/lib/workbook/version.rb +2 -3
  40. data/lib/workbook/writers/csv_table_writer.rb +10 -13
  41. data/lib/workbook/writers/html_writer.rb +34 -38
  42. data/lib/workbook/writers/json_table_writer.rb +8 -11
  43. data/lib/workbook/writers/xls_writer.rb +30 -36
  44. data/lib/workbook/writers/xlsx_writer.rb +45 -29
  45. data/lib/workbook.rb +16 -15
  46. data/test/helper.rb +6 -5
  47. data/test/test_book.rb +41 -38
  48. data/test/test_column.rb +26 -24
  49. data/test/test_format.rb +51 -55
  50. data/test/test_functional.rb +7 -8
  51. data/test/test_modules_cache.rb +18 -17
  52. data/test/test_modules_cell.rb +47 -46
  53. data/test/test_modules_table_diff_sort.rb +55 -64
  54. data/test/test_modules_type_parser.rb +61 -31
  55. data/test/test_readers_csv_reader.rb +48 -42
  56. data/test/test_readers_ods_reader.rb +28 -31
  57. data/test/test_readers_txt_reader.rb +21 -23
  58. data/test/test_readers_xls_reader.rb +20 -23
  59. data/test/test_readers_xls_shared.rb +2 -3
  60. data/test/test_readers_xlsx_reader.rb +44 -37
  61. data/test/test_row.rb +105 -109
  62. data/test/test_sheet.rb +41 -35
  63. data/test/test_table.rb +82 -60
  64. data/test/test_template.rb +16 -15
  65. data/test/test_types_date.rb +4 -6
  66. data/test/test_writers_csv_writer.rb +24 -0
  67. data/test/test_writers_html_writer.rb +42 -41
  68. data/test/test_writers_json_writer.rb +9 -9
  69. data/test/test_writers_xls_writer.rb +50 -35
  70. data/test/test_writers_xlsx_writer.rb +62 -34
  71. data/workbook.gemspec +26 -27
  72. metadata +92 -27
@@ -1,30 +1,40 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # -*- encoding : utf-8 -*-
4
- require File.join(File.dirname(__FILE__), 'helper')
3
+ require File.join(File.dirname(__FILE__), "helper")
5
4
 
6
5
  module Writers
7
6
  class TestXlsWriter < Minitest::Test
8
7
  def test_to_xls
9
- b = Workbook::Book.new [['a','b','c'],[1,2,3],[3,2,3]]
10
- 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")
11
10
  t = Workbook::Template.new
12
11
  t.add_raw raw
13
12
  b.template = t
14
13
  assert_equal(true, b.to_xls.is_a?(Spreadsheet::Workbook))
15
14
 
16
- 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)
17
26
  end
18
27
 
19
28
  def test_roundtrip
20
- b = Workbook::Book.open File.join(File.dirname(__FILE__), 'artifacts/simple_sheet.xls')
21
- 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])
22
31
  filename = b.write_to_xls
23
32
  b = Workbook::Book.open filename
24
- assert_equal(3.85546875,b.sheet.table.first[:a].format[:width])
33
+ assert_equal(3.85546875, b.sheet.table.first[:a].format[:width])
25
34
  end
35
+
26
36
  def test_delete_row
27
- 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")
28
38
  # a b c d e
29
39
  # 14 90589 a 19 apr 12 23 apr 12
30
40
  # 15 90588 b 15 nov 11 16 jul 12
@@ -32,18 +42,19 @@ module Writers
32
42
  # 33 90490 d 13 mrt 12 15 mrt 12
33
43
  t = b.sheet.table
34
44
  assert_equal(33, t.last.first.value)
35
- t.delete_at(4) #delete last row
45
+ t.delete_at(4) # delete last row
36
46
  filename = b.write_to_xls
37
47
  b = Workbook::Book.open filename
38
48
  t = b.sheet.table
39
49
  # puts t.to_csv
40
- #TODO: NOT true delete... need to work on this...
50
+ # TODO: NOT true delete... need to work on this...
41
51
  assert_equal(25, t[3].first.value)
42
52
  assert_nil(t[4].first.value)
43
53
  assert_nil(t[4].last.value)
44
54
  end
55
+
45
56
  def test_pop_row
46
- 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")
47
58
  # a b c d e
48
59
  # 14 90589 a 19 apr 12 23 apr 12
49
60
  # 15 90588 b 15 nov 11 16 jul 12
@@ -51,22 +62,22 @@ module Writers
51
62
  # 33 90490 d 13 mrt 12 15 mrt 12
52
63
  t = b.sheet.table
53
64
  assert_equal(33, t.last.first.value)
54
- t.pop(2) #delete last two row
65
+ t.pop(2) # delete last two row
55
66
  # puts t.to_csv
56
67
  filename = b.write_to_xls
57
68
  b = Workbook::Book.open filename
58
69
  t = b.sheet.table
59
70
  # puts t.to_csv
60
- #TODO: NOT true delete... need to work on this...
71
+ # TODO: NOT true delete... need to work on this...
61
72
  assert_nil(t[3].first.value)
62
73
  assert_nil(t[4].first.value)
63
74
  assert_nil(t[4].last.value)
64
75
  assert_equal(15, t[2].first.value)
65
76
  assert_nil(t.last.first.value)
66
-
67
77
  end
78
+
68
79
  def test_pop_bigtable
69
- 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")
70
81
  # a b c d e
71
82
  # 14 90589 a 19 apr 12 23 apr 12
72
83
  # 15 90588 b 15 nov 11 16 jul 12
@@ -74,68 +85,72 @@ module Writers
74
85
  # 33 90490 d 13 mrt 12 15 mrt 12
75
86
  t = b.sheet.table
76
87
  assert_equal(574, t.count)
77
- t.pop(300) #delete last two row
88
+ t.pop(300) # delete last two row
89
+ assert_equal(274, t.count)
78
90
  assert_equal(274, t.trim.count)
79
91
  filename = b.write_to_xls
92
+
80
93
  b = Workbook::Book.open filename
81
94
  t = b.sheet.table
82
95
  assert_equal(274, t.trim.count)
83
-
84
-
85
96
  end
97
+
86
98
  def test_cloning_roundtrip
87
- 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")
88
100
  b.sheet.table << b.sheet.table[2]
89
- assert_equal(90588,b.sheet.table[5][:b].value)
90
- 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])
91
103
  filename = b.write_to_xls
92
104
  b = Workbook::Book.open filename
93
- assert_equal(90588,b.sheet.table[5][:b].value)
94
- 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])
95
107
  end
108
+
96
109
  def test_parse_font_family
97
110
  b = Workbook::Book.new
98
- assert_equal(:none,b.parse_font_family({:font_family=>"asdfsdf"}))
99
- assert_equal(:swiss,b.parse_font_family({:font_family=>"ArIAL"}))
100
- assert_equal(:swiss,b.parse_font_family({:font_family=>:swiss}))
101
- assert_equal(:roman,b.parse_font_family({:font_family=>"Times"}))
102
- 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"}))
103
116
  end
104
117
 
105
118
  def test_init_spreadsheet_template
106
119
  b = Workbook::Book.new
107
120
  b.init_spreadsheet_template
108
- assert_equal(Spreadsheet::Workbook,b.xls_template.class)
121
+ assert_equal(Spreadsheet::Workbook, b.xls_template.class)
109
122
  end
110
123
 
111
124
  def test_xls_sheet
112
125
  b = Workbook::Book.new
113
126
  b.init_spreadsheet_template
114
- assert_equal(Spreadsheet::Worksheet,b.xls_sheet(100).class)
127
+ assert_equal(Spreadsheet::Worksheet, b.xls_sheet(100).class)
115
128
  end
129
+
116
130
  def test_strftime_to_ms_format_nil
117
131
  assert_nil(Workbook::Book.new.strftime_to_ms_format(nil))
118
132
  end
133
+
119
134
  def test_xls_sheet_writer
120
135
  b = Workbook::Book.new
121
136
  b << Workbook::Sheet.new
122
137
  b << Workbook::Sheet.new
123
138
  b[0].name = "A"
124
139
  b[1].name = "B"
125
- assert_equal(["A","B"], b.collect{|a| a.name})
140
+ assert_equal(["A", "B"], b.collect { |a| a.name })
126
141
  filename = b.write_to_xls
127
142
  b = Workbook::Book.open filename
128
- assert_equal(["A","B"], b.collect{|a| a.name})
143
+ assert_equal(["A", "B"], b.collect { |a| a.name })
129
144
  end
145
+
130
146
  def test_removal_of_sheets_in_excel_when_using_template
131
- 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")
132
148
  assert_equal(10, b.count)
133
149
  b.pop(4)
134
150
  assert_equal(6, b.count)
135
151
  filename = b.write_to_xls
136
152
  b = Workbook::Book.open filename
137
153
  assert_equal(6, b.count)
138
-
139
154
  end
140
155
  end
141
156
  end
@@ -1,40 +1,46 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # -*- encoding : utf-8 -*-
4
- require File.join(File.dirname(__FILE__), 'helper')
3
+ require File.join(File.dirname(__FILE__), "helper")
5
4
 
6
5
  module Writers
7
6
  class TestXlsxWriter < Minitest::Test
8
7
  def test_empty_to_xlsx
9
- 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")]]
10
9
  assert_equal(true, b.to_xlsx.is_a?(Axlsx::Package))
11
10
  dimensions = b.sheet.table.dimensions
12
- assert_equal('untitled document.xlsx', b.write_to_xlsx)
13
- 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"
14
13
  assert_equal(dimensions, b.sheet.table.dimensions)
15
14
  end
16
15
 
17
16
  def test_roundtrip
18
- b = Workbook::Book.open File.join(File.dirname(__FILE__), 'artifacts/simple_sheet.xlsx')
19
- assert_equal(14,b[0][0]["A2"])
20
- 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)
21
20
  # puts b.sheet.table.to_csv
22
21
  filename = b.write_to_xlsx
23
22
  b = Workbook::Book.open filename
24
- assert_equal(14,b[0][0]["A2"].value)
25
- 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)
26
25
  end
26
+
27
27
  def test_roundtrip_with_modification
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)
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)
31
31
  filename = b.write_to_xlsx
32
32
  b = Workbook::Book.open filename
33
- assert_equal(12,b[0][0]["A2"].value)
34
- 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)
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"))
35
40
  end
41
+
36
42
  def test_delete_row
37
- 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")
38
44
  # a b c d e
39
45
  # 14 90589 a 19 apr 12 23 apr 12
40
46
  # 15 90588 b 15 nov 11 16 jul 12
@@ -42,16 +48,17 @@ module Writers
42
48
  # 33 90490 d 13 mrt 12 15 mrt 12
43
49
  t = b.sheet.table
44
50
  assert_equal(33, t.last.first.value)
45
- t.delete_at(4) #delete last row
51
+ t.delete_at(4) # delete last row
46
52
  filename = b.write_to_xlsx
47
53
  b = Workbook::Book.open filename
48
54
  t = b.sheet.table
49
- #TODO: NOT true delete... need to work on this...
55
+ # TODO: NOT true delete... need to work on this...
50
56
  assert_equal(25, t[3].first.value)
51
57
  assert_nil(t[4])
52
58
  end
59
+
53
60
  def test_pop_row
54
- 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")
55
62
  # a b c d e
56
63
  # 14 90589 a 19 apr 12 23 apr 12
57
64
  # 15 90588 b 15 nov 11 16 jul 12
@@ -67,8 +74,9 @@ module Writers
67
74
  assert_nil(t[4])
68
75
  assert_equal(15, t[2].first.value)
69
76
  end
77
+
70
78
  def test_pop_bigtable
71
- 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")
72
80
  t = b.sheet.table
73
81
  assert_equal(553, t.count)
74
82
  t.pop(300)
@@ -81,40 +89,60 @@ module Writers
81
89
 
82
90
  # Uncommented colour testing, this is broken since the switch to roo/axlsx
83
91
  def test_cloning_roundtrip
84
- 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")
85
93
  b.sheet.table << b.sheet.table[2]
86
- assert_equal(90588,b.sheet.table[5][:b].value)
94
+ assert_equal(90588, b.sheet.table[5][:b].value)
87
95
  # assert_equal("#FFFF00",b.sheet.table[2][:c].format[:background_color])
88
96
  # assert_equal("#FFFF00",b.sheet.table[5][:c].format[:background_color])
89
97
  filename = b.write_to_xls
90
98
  b = Workbook::Book.open filename
91
- assert_equal(90588,b.sheet.table[5][:b].value)
99
+ assert_equal(90588, b.sheet.table[5][:b].value)
92
100
  # assert_equal("#FF00FF",b.sheet.table[5][:c].format[:background_color])
93
101
  end
94
102
 
95
103
  def test_format_to_xlsx_format
96
- b = Workbook::Book.new
97
- xlsx_format = b.format_to_xlsx_format(Workbook::Format.new({font_weight: "bold", color: "#FF0000"}))
98
- assert_equal(true,xlsx_format[:b])
99
- 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])
100
112
  end
101
113
 
102
114
  def test_formats_to_xlsx_format
103
115
  b = Workbook::Book.new
104
116
  b.template.set_default_formats!
105
117
  b.formats_to_xlsx_format
106
- raw_keys = b.template.create_or_find_format_by(:header).raws.keys
107
- assert((raw_keys.include?(Integer) or raw_keys.include?(Fixnum)))
118
+ # raw_keys = b.template.create_or_find_format_by(:header).raws
119
+ end
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
108
134
  end
109
135
 
136
+ # TODO: Formatting doesn't actually work
110
137
  def test_format_to_xlsx_integrated
111
- b = Workbook::Book.new [[:a,:b],[1,2],[3,4]]
138
+ b = Workbook::Book.new [[:a, :b], [1, 2], [3, 4]]
112
139
  c2 = b.sheet.table[2][1]
113
140
  c2.format = Workbook::Format.new({font_weight: "bold", color: "#CC5500", font_style: :italic, text_decoration: :underline})
114
- # Can't test this for real yet... :/ but the examples here seem to work b.write_to_xlsx("untitled document.xlsx")
115
- # c = Workbook::Book.open("untitled document.xlsx")
116
- # 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)
117
146
  end
118
-
119
147
  end
120
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.1
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-03-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"
@@ -235,6 +298,7 @@ files:
235
298
  - test/test_table.rb
236
299
  - test/test_template.rb
237
300
  - test/test_types_date.rb
301
+ - test/test_writers_csv_writer.rb
238
302
  - test/test_writers_html_writer.rb
239
303
  - test/test_writers_json_writer.rb
240
304
  - test/test_writers_xls_writer.rb
@@ -244,7 +308,7 @@ homepage: http://murb.nl/blog?tags=workbook
244
308
  licenses:
245
309
  - MIT
246
310
  metadata: {}
247
- post_install_message:
311
+ post_install_message:
248
312
  rdoc_options: []
249
313
  require_paths:
250
314
  - lib
@@ -259,8 +323,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
259
323
  - !ruby/object:Gem::Version
260
324
  version: '0'
261
325
  requirements: []
262
- rubygems_version: 3.0.3
263
- signing_key:
326
+ rubygems_version: 3.4.6
327
+ signing_key:
264
328
  specification_version: 4
265
329
  summary: Workbook is a datastructure to contain books of tables (an anlogy used in
266
330
  e.g. Excel)
@@ -316,6 +380,7 @@ test_files:
316
380
  - test/test_table.rb
317
381
  - test/test_template.rb
318
382
  - test/test_types_date.rb
383
+ - test/test_writers_csv_writer.rb
319
384
  - test/test_writers_html_writer.rb
320
385
  - test/test_writers_json_writer.rb
321
386
  - test/test_writers_xls_writer.rb