workbook 0.8.0 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
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