spreadsheet 1.3.3 → 1.3.4

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/lib/parseexcel/parseexcel.rb +66 -58
  3. data/lib/parseexcel/parser.rb +1 -1
  4. data/lib/parseexcel.rb +1 -1
  5. data/lib/spreadsheet/column.rb +11 -9
  6. data/lib/spreadsheet/compatibility.rb +3 -1
  7. data/lib/spreadsheet/datatypes.rb +149 -147
  8. data/lib/spreadsheet/encodings.rb +20 -16
  9. data/lib/spreadsheet/errors.rb +2 -2
  10. data/lib/spreadsheet/excel/error.rb +23 -22
  11. data/lib/spreadsheet/excel/internals/biff5.rb +11 -11
  12. data/lib/spreadsheet/excel/internals/biff8.rb +13 -13
  13. data/lib/spreadsheet/excel/internals.rb +451 -451
  14. data/lib/spreadsheet/excel/offset.rb +32 -31
  15. data/lib/spreadsheet/excel/password_hash.rb +18 -18
  16. data/lib/spreadsheet/excel/reader/biff5.rb +34 -35
  17. data/lib/spreadsheet/excel/reader/biff8.rb +234 -222
  18. data/lib/spreadsheet/excel/reader.rb +1320 -1274
  19. data/lib/spreadsheet/excel/rgb.rb +91 -91
  20. data/lib/spreadsheet/excel/row.rb +99 -91
  21. data/lib/spreadsheet/excel/sst_entry.rb +40 -38
  22. data/lib/spreadsheet/excel/workbook.rb +86 -76
  23. data/lib/spreadsheet/excel/worksheet.rb +125 -107
  24. data/lib/spreadsheet/excel/writer/biff8.rb +56 -55
  25. data/lib/spreadsheet/excel/writer/format.rb +273 -256
  26. data/lib/spreadsheet/excel/writer/n_worksheet.rb +837 -798
  27. data/lib/spreadsheet/excel/writer/workbook.rb +671 -635
  28. data/lib/spreadsheet/excel/writer/worksheet.rb +898 -861
  29. data/lib/spreadsheet/excel/writer.rb +1 -1
  30. data/lib/spreadsheet/excel.rb +18 -11
  31. data/lib/spreadsheet/font.rb +30 -26
  32. data/lib/spreadsheet/format.rb +74 -59
  33. data/lib/spreadsheet/link.rb +7 -5
  34. data/lib/spreadsheet/note.rb +6 -6
  35. data/lib/spreadsheet/noteObject.rb +5 -5
  36. data/lib/spreadsheet/row.rb +33 -23
  37. data/lib/spreadsheet/version.rb +1 -1
  38. data/lib/spreadsheet/workbook.rb +27 -13
  39. data/lib/spreadsheet/worksheet.rb +102 -68
  40. data/lib/spreadsheet/writer.rb +3 -0
  41. data/lib/spreadsheet.rb +12 -15
  42. data/test/excel/reader.rb +8 -8
  43. data/test/excel/row.rb +35 -31
  44. data/test/excel/writer/workbook.rb +18 -16
  45. data/test/excel/writer/worksheet.rb +10 -8
  46. data/test/font.rb +44 -32
  47. data/test/format.rb +38 -33
  48. data/test/integration.rb +627 -598
  49. data/test/row.rb +5 -3
  50. data/test/suite.rb +7 -7
  51. data/test/workbook.rb +15 -14
  52. data/test/workbook_protection.rb +5 -5
  53. data/test/worksheet.rb +36 -34
  54. metadata +48 -6
data/test/row.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
  # TestRow -- Spreadsheet -- 08.01.2009 -- hwyss@ywesee.com
3
3
 
4
- $: << File.expand_path('../../lib', File.dirname(__FILE__))
4
+ $: << File.expand_path("../../lib", File.dirname(__FILE__))
5
5
 
6
- require 'test/unit'
7
- require 'spreadsheet'
6
+ require "test/unit"
7
+ require "spreadsheet"
8
8
 
9
9
  module Spreadsheet
10
10
  class TestRow < Test::Unit::TestCase
@@ -13,12 +13,14 @@ module Spreadsheet
13
13
  @worksheet = Excel::Worksheet.new
14
14
  @workbook.add_worksheet @worksheet
15
15
  end
16
+
16
17
  def test_formatted
17
18
  row = Row.new @worksheet, 0, [nil, 1]
18
19
  assert_equal 2, row.formatted.size
19
20
  row.set_format 3, Format.new
20
21
  assert_equal 4, row.formatted.size
21
22
  end
23
+
22
24
  def test_concat
23
25
  row = Row.new @worksheet, 0, [nil, 1, nil]
24
26
  assert_equal [nil, 1, nil], row
data/test/suite.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
  # suite.rb -- spreadsheet -- 22.12.2011 -- jsaak@napalm.hu
3
- require 'rubygems'
4
- require 'bundler'
5
- require 'find'
6
- require 'simplecov'
3
+ require "rubygems"
4
+ require "bundler"
5
+ require "find"
6
+ require "simplecov"
7
7
  SimpleCov.start
8
8
 
9
9
  $VERBOSE = true
@@ -13,8 +13,8 @@ here = File.dirname(__FILE__)
13
13
  $: << here
14
14
 
15
15
  Find.find(here) do |file|
16
- next if File.basename(file) == 'suite.rb'
17
- if file =~ /\.rb$/o
18
- require file[here.size+1..-1]
16
+ next if File.basename(file) == "suite.rb"
17
+ if /\.rb$/o.match?(file)
18
+ require file[here.size + 1..]
19
19
  end
20
20
  end
data/test/workbook.rb CHANGED
@@ -1,32 +1,34 @@
1
1
  #!/usr/bin/env ruby
2
2
  # TestWorkbook -- Spreadsheet -- 24.09.2008 -- hwyss@ywesee.com
3
3
 
4
- $: << File.expand_path('../lib', File.dirname(__FILE__))
4
+ $: << File.expand_path("../lib", File.dirname(__FILE__))
5
5
 
6
- require 'test/unit'
7
- require 'spreadsheet'
8
- require 'fileutils'
9
- require 'stringio'
6
+ require "test/unit"
7
+ require "spreadsheet"
8
+ require "fileutils"
9
+ require "stringio"
10
10
 
11
11
  module Spreadsheet
12
12
  class TestWorkbook < Test::Unit::TestCase
13
13
  def setup
14
- @io = StringIO.new ''
14
+ @io = StringIO.new ""
15
15
  @book = Workbook.new
16
16
  end
17
+
17
18
  def test_writer__default_excel
18
19
  assert_instance_of Excel::Writer::Workbook, @book.writer(@io)
19
20
  end
21
+
20
22
  def test_sheet_count
21
- @worksheet1 = Excel::Worksheet.new
22
- @book.add_worksheet @worksheet1
23
- assert_equal 1, @book.sheet_count
24
- @worksheet2 = Excel::Worksheet.new
25
- @book.add_worksheet @worksheet2
26
- assert_equal 2, @book.sheet_count
23
+ @worksheet1 = Excel::Worksheet.new
24
+ @book.add_worksheet @worksheet1
25
+ assert_equal 1, @book.sheet_count
26
+ @worksheet2 = Excel::Worksheet.new
27
+ @book.add_worksheet @worksheet2
28
+ assert_equal 2, @book.sheet_count
27
29
  end
28
- def test_add_format
29
30
 
31
+ def test_add_format
30
32
  assert_equal 1, @book.formats.length # Received a default format
31
33
 
32
34
  f1 = Format.new
@@ -50,6 +52,5 @@ module Spreadsheet
50
52
  assert_equal(changed_count, original_count + 1)
51
53
  assert_equal(original_count, @book.sheet_count)
52
54
  end
53
-
54
55
  end
55
56
  end
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- $: << File.expand_path('../lib', File.dirname(__FILE__))
3
+ $: << File.expand_path("../lib", File.dirname(__FILE__))
4
4
 
5
- require 'test/unit'
6
- require 'spreadsheet'
5
+ require "test/unit"
6
+ require "spreadsheet"
7
7
 
8
8
  module Spreadsheet
9
9
  module Excel
@@ -11,8 +11,8 @@ module Spreadsheet
11
11
  def test_password_hashing
12
12
  hashing_module = Spreadsheet::Excel::Password
13
13
  # Some examples found on the web
14
- assert_equal(0xFEF1, hashing_module.password_hash('abcdefghij'))
15
- assert_equal(hashing_module.password_hash('test'), hashing_module.password_hash('zzyw'))
14
+ assert_equal(0xFEF1, hashing_module.password_hash("abcdefghij"))
15
+ assert_equal(hashing_module.password_hash("test"), hashing_module.password_hash("zzyw"))
16
16
  end
17
17
  end
18
18
  end
data/test/worksheet.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
  # TestWorksheet -- Spreadheet -- 30.09.2008 -- hwyss@ywesee.com
3
3
 
4
- $: << File.expand_path('../lib', File.dirname(__FILE__))
4
+ $: << File.expand_path("../lib", File.dirname(__FILE__))
5
5
 
6
- require 'test/unit'
7
- require 'spreadsheet'
6
+ require "test/unit"
7
+ require "spreadsheet"
8
8
 
9
9
  module Spreadsheet
10
10
  class TestWorksheet < Test::Unit::TestCase
@@ -12,49 +12,52 @@ module Spreadsheet
12
12
  @book = Workbook.new
13
13
  @sheet = @book.create_worksheet
14
14
  end
15
+
15
16
  def test_cell_writer
16
- assert_nil @sheet[0,0]
17
+ assert_nil @sheet[0, 0]
17
18
  assert_equal 0, @sheet.column_count
18
19
  assert_equal 0, @sheet.row_count
19
- @sheet[0,0] = 'foo'
20
- assert_equal 'foo', @sheet[0,0]
20
+ @sheet[0, 0] = "foo"
21
+ assert_equal "foo", @sheet[0, 0]
21
22
  assert_equal 1, @sheet.column_count
22
23
  assert_equal 1, @sheet.row_count
23
- @sheet[1,0] = 'bar'
24
+ @sheet[1, 0] = "bar"
24
25
  assert_equal 1, @sheet.column_count
25
26
  assert_equal 2, @sheet.row_count
26
- @sheet[0,1] = 'bar'
27
+ @sheet[0, 1] = "bar"
27
28
  assert_equal 2, @sheet.column_count
28
29
  assert_equal 2, @sheet.row_count
29
- @sheet[1,0] = nil
30
+ @sheet[1, 0] = nil
30
31
  assert_equal 2, @sheet.column_count
31
32
  assert_equal 2, @sheet.row_count
32
- @sheet[0,1] = nil
33
+ @sheet[0, 1] = nil
33
34
  assert_equal 2, @sheet.column_count
34
35
  assert_equal 2, @sheet.row_count
35
36
  end
37
+
36
38
  def test_column_count
37
39
  assert_equal 0, @sheet.column_count
38
- @sheet.replace_row 3, nil, nil, 1, 2, 'foo, bar'
40
+ @sheet.replace_row 3, nil, nil, 1, 2, "foo, bar"
39
41
  assert_equal 3, @sheet.column_count
40
- @sheet.replace_row 8, nil, 'something', 4, 7, nil
42
+ @sheet.replace_row 8, nil, "something", 4, 7, nil
41
43
  assert_equal 4, @sheet.column_count
42
- @sheet.replace_row 5, 4, 'something', 4, 7, nil
44
+ @sheet.replace_row 5, 4, "something", 4, 7, nil
43
45
  assert_equal 5, @sheet.column_count
44
- @sheet.replace_row 5, nil, 'something', 4, 7, nil
46
+ @sheet.replace_row 5, nil, "something", 4, 7, nil
45
47
  assert_equal 4, @sheet.column_count
46
48
  @sheet.replace_row 3
47
49
  assert_equal 4, @sheet.column_count
48
50
  end
51
+
49
52
  def test_row_count
50
53
  assert_equal 0, @sheet.row_count
51
- @sheet.replace_row 3, nil, nil, 1, 2, 'foo, bar'
54
+ @sheet.replace_row 3, nil, nil, 1, 2, "foo, bar"
52
55
  assert_equal 1, @sheet.row_count
53
- @sheet.replace_row 8, nil, 'something', 4, 7, nil
56
+ @sheet.replace_row 8, nil, "something", 4, 7, nil
54
57
  assert_equal 6, @sheet.row_count
55
- @sheet.replace_row 5, 4, 'something', 4, 7, nil
58
+ @sheet.replace_row 5, 4, "something", 4, 7, nil
56
59
  assert_equal 6, @sheet.row_count
57
- @sheet.replace_row 5, nil, 'something', 4, 7, nil
60
+ @sheet.replace_row 5, nil, "something", 4, 7, nil
58
61
  assert_equal 6, @sheet.row_count
59
62
  @sheet.replace_row 3
60
63
  assert_equal 6, @sheet.row_count
@@ -67,6 +70,7 @@ module Spreadsheet
67
70
  @sheet.delete_row 2
68
71
  assert_equal 3, @sheet.row_count
69
72
  end
73
+
70
74
  def test_modify_column
71
75
  assert_equal 10, @sheet.column(0).width
72
76
  @sheet.column(1).width = 20
@@ -76,6 +80,7 @@ module Spreadsheet
76
80
  assert_equal 30, @sheet.column(0).width
77
81
  assert_equal 20, @sheet.column(1).width
78
82
  end
83
+
79
84
  def test_format_dates!
80
85
  rowi = -1
81
86
 
@@ -83,30 +88,29 @@ module Spreadsheet
83
88
  # No dates = no new formats
84
89
  assert_equal 1, @book.formats.length # Default format
85
90
 
86
- @sheet.row(rowi+=1).concat(["Hello", "World"])
91
+ @sheet.row(rowi += 1).concat(["Hello", "World"])
87
92
  @sheet.format_dates!
88
93
  # No dates = no new formats
89
94
  assert_equal 1, @book.formats.length
90
95
 
91
- @sheet.row(rowi+=1).concat([Date.new(2010,1,1)])
96
+ @sheet.row(rowi += 1).concat([Date.new(2010, 1, 1)])
92
97
  @sheet.format_dates!
93
98
  # 1 date = 1 new format
94
99
  assert_equal 2, @book.formats.length
95
100
 
96
- @sheet.row(rowi+=1).concat([Date.new(2011,1,1)])
97
- @sheet.row(rowi+=1).concat([Date.new(2012,1,1)])
98
- @sheet.row(rowi+=1).concat([Date.new(2013,1,1)])
101
+ @sheet.row(rowi += 1).concat([Date.new(2011, 1, 1)])
102
+ @sheet.row(rowi += 1).concat([Date.new(2012, 1, 1)])
103
+ @sheet.row(rowi += 1).concat([Date.new(2013, 1, 1)])
99
104
  @sheet.format_dates!
100
105
  # 4 dates = only 1 new format across them:
101
106
  assert_equal 3, @book.formats.length
102
107
 
103
- @sheet.row(rowi+=1).concat([Date.new(2014,1,1)])
108
+ @sheet.row(rowi += 1).concat([Date.new(2014, 1, 1)])
104
109
  @sheet.row(rowi).default_format = Format.new
105
- @sheet.row(rowi+=1).concat([Date.new(2015,1,1)])
110
+ @sheet.row(rowi + 1).concat([Date.new(2015, 1, 1)])
106
111
  @sheet.format_dates!
107
112
  # 6 dates = 2 new formats across them:
108
113
  assert_equal 6, @book.formats.length
109
-
110
114
  end
111
115
 
112
116
  def test_freeze_panel!
@@ -118,20 +122,19 @@ module Spreadsheet
118
122
  assert_equal 2, @sheet.froze_top
119
123
  assert_equal 3, @sheet.froze_left
120
124
  assert_equal true, @sheet.has_frozen_panel?
121
-
122
125
  end
123
126
 
124
127
  def test_each_with_skip
125
- @sheet[0, 0] = 'foo'
126
- @sheet[1, 0] = 'bar'
128
+ @sheet[0, 0] = "foo"
129
+ @sheet[1, 0] = "bar"
127
130
 
128
131
  assert_equal @sheet.each(1).count, 1
129
- assert_equal @sheet.each(1).first[0], 'bar'
132
+ assert_equal @sheet.each(1).first[0], "bar"
130
133
  end
131
134
 
132
135
  def test_each_with_index
133
- @sheet[0, 0] = 'foo'
134
- @sheet[1, 0] = 'bar'
136
+ @sheet[0, 0] = "foo"
137
+ @sheet[1, 0] = "bar"
135
138
 
136
139
  @sheet.each.with_index do |row, index|
137
140
  assert_equal row[0], @sheet[index, 0]
@@ -140,8 +143,7 @@ module Spreadsheet
140
143
 
141
144
  def test_name
142
145
  worksheet = Worksheet.new(name: '\a/b*c?d:e[f]')
143
- assert_equal '_a_b_c_d_e_f_', worksheet.name
146
+ assert_equal "_a_b_c_d_e_f_", worksheet.name
144
147
  end
145
-
146
148
  end
147
149
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spreadsheet
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.3
4
+ version: 1.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hannes F. Wyss, Masaomi Hatakeyama, Zeno R.R. Davatz
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-20 00:00:00.000000000 Z
11
+ date: 2025-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: logger
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bigdecimal
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +94,34 @@ dependencies:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: debug
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: standard
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
83
125
  description: As of version 0.6.0, only Microsoft Excel compatible spreadsheets are
84
126
  supported
85
127
  email: hannes.wyss@gmail.com, mhatakeyama@ywesee.com, zdavatz@ywesee.com
@@ -180,7 +222,7 @@ licenses:
180
222
  metadata:
181
223
  changelog_uri: https://github.com/zdavatz/spreadsheet/blob/master/History.md
182
224
  funding_uri: https://github.com/sponsors/zdavatz
183
- post_install_message:
225
+ post_install_message:
184
226
  rdoc_options: []
185
227
  require_paths:
186
228
  - lib
@@ -188,7 +230,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
188
230
  requirements:
189
231
  - - ">="
190
232
  - !ruby/object:Gem::Version
191
- version: '0'
233
+ version: '2.6'
192
234
  required_rubygems_version: !ruby/object:Gem::Requirement
193
235
  requirements:
194
236
  - - ">="
@@ -196,7 +238,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
238
  version: '0'
197
239
  requirements: []
198
240
  rubygems_version: 3.5.3
199
- signing_key:
241
+ signing_key:
200
242
  specification_version: 4
201
243
  summary: The Spreadsheet Library is designed to read and write Spreadsheet Documents
202
244
  test_files: