spreadsheet 0.6.1.4 → 0.6.1.5

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.
data/History.txt CHANGED
@@ -1,3 +1,13 @@
1
+ === 0.6.1.4 / 2008-10-24
2
+
3
+ * 2 Bugfixes
4
+
5
+ * Removed obsolete code which triggered Iconv::InvalidEncoding
6
+ on Systems with non-gnu Iconv:
7
+ http://rubyforge.org/tracker/index.php?func=detail&aid=22541&group_id=678&atid=2677
8
+ * Handle empty Worksheets
9
+ (Thanks to Charles Lowe for the Patches)
10
+
1
11
  === 0.6.1.4 / 2008-10-23
2
12
 
3
13
  * 1 Bugfix
data/Manifest.txt CHANGED
@@ -38,6 +38,7 @@ lib/spreadsheet/workbook.rb
38
38
  lib/spreadsheet/worksheet.rb
39
39
  lib/spreadsheet/writer.rb
40
40
  test/data/test_copy.xls
41
+ test/data/test_empty.xls
41
42
  test/data/test_version_excel5.xls
42
43
  test/data/test_version_excel95.xls
43
44
  test/data/test_version_excel97.xls
data/lib/spreadsheet.rb CHANGED
@@ -42,7 +42,7 @@ module Spreadsheet
42
42
 
43
43
  ##
44
44
  # The version of Spreadsheet you are using.
45
- VERSION = '0.6.1.4'
45
+ VERSION = '0.6.1.5'
46
46
 
47
47
  ##
48
48
  # Default client Encoding. Change this value if your application uses a
@@ -3,9 +3,6 @@ module Spreadsheet
3
3
  # Methods for Encoding-conversions. You should not need to use any of these.
4
4
  module Encodings
5
5
  if RUBY_VERSION >= '1.9'
6
- def ascii string
7
- string.encode 'ASCII//TRANSLIT//IGNORE'
8
- end
9
6
  def client string, internal='UTF-16LE'
10
7
  string.encode Spreadsheet.client_encoding
11
8
  end
@@ -14,15 +11,7 @@ module Spreadsheet
14
11
  end
15
12
  else
16
13
  require 'iconv'
17
- @@utf8_utf16 = Iconv.new('UTF-16LE', 'UTF-8')
18
- @@utf16_ascii = Iconv.new('ASCII//TRANSLIT//IGNORE', 'UTF-16LE')
19
- @@utf16_utf8 = Iconv.new('UTF-8//TRANSLIT//IGNORE', 'UTF-16LE')
20
14
  @@iconvs = {}
21
- def ascii string
22
- @@utf16_ascii.iconv string
23
- rescue
24
- string.gsub /[^\x20-\x7e]+/, ''
25
- end
26
15
  def client string, internal='UTF-16LE'
27
16
  key = [Spreadsheet.client_encoding, internal]
28
17
  iconv = @@iconvs[key] ||= Iconv.new(Spreadsheet.client_encoding, internal)
@@ -36,9 +25,6 @@ module Spreadsheet
36
25
  end
37
26
  rescue LoadError
38
27
  warn "You don't have Iconv support compiled in your Ruby. Spreadsheet may not work as expected"
39
- def ascii string
40
- string.gsub /[^\x20-\x7e]+/, ''
41
- end
42
28
  def client string, internal='UTF-16LE'
43
29
  string.delete "\0"
44
30
  end
@@ -78,17 +78,17 @@ class Worksheet < Spreadsheet::Worksheet
78
78
  shorten @rows
79
79
  @dimensions = []
80
80
  @dimensions[0] = [ index_of_first(@rows),
81
- index_of_first(@row_addresses) ].compact.min
82
- @dimensions[1] = [ @rows.size, @row_addresses.size ].compact.max
81
+ index_of_first(@row_addresses) ].compact.min || 0
82
+ @dimensions[1] = [ @rows.size, @row_addresses.size ].compact.max || 0
83
83
  compact = @rows.compact
84
84
  first_rows = compact.collect do |row| index_of_first row end.compact.min
85
85
  first_addrs = @row_addresses.compact.collect do |addr|
86
86
  addr[:first_used] end.min
87
- @dimensions[2] = [ first_rows, first_addrs ].compact.min
87
+ @dimensions[2] = [ first_rows, first_addrs ].compact.min || 0
88
88
  last_rows = compact.collect do |row| row.size end.max
89
89
  last_addrs = @row_addresses.compact.collect do |addr|
90
90
  addr[:first_unused] end.max
91
- @dimensions[3] = [last_rows, last_addrs].compact.max
91
+ @dimensions[3] = [last_rows, last_addrs].compact.max || 0
92
92
  @dimensions
93
93
  end
94
94
  end
@@ -242,11 +242,11 @@ module Spreadsheet
242
242
  def recalculate_dimensions # :nodoc:
243
243
  shorten @rows
244
244
  @dimensions = []
245
- @dimensions[0] = index_of_first @rows
245
+ @dimensions[0] = index_of_first(@rows) || 0
246
246
  @dimensions[1] = @rows.size
247
247
  compact = @rows.compact
248
- @dimensions[2] = compact.collect do |row| index_of_first row end.compact.min
249
- @dimensions[3] = compact.collect do |row| row.size end.max
248
+ @dimensions[2] = compact.collect do |row| index_of_first row end.compact.min || 0
249
+ @dimensions[3] = compact.collect do |row| row.size end.max || 0
250
250
  @dimensions
251
251
  end
252
252
  def shorten ary # :nodoc:
Binary file
data/test/integration.rb CHANGED
@@ -30,6 +30,25 @@ module Spreadsheet
30
30
  ensure
31
31
  File.delete copy if File.exist? copy
32
32
  end
33
+ def test_empty_workbook
34
+ path = File.join @data, 'test_empty.xls'
35
+ book = Spreadsheet.open path
36
+ assert_instance_of Excel::Workbook, book
37
+ assert_equal 8, book.biff_version
38
+ assert_equal 'Microsoft Excel 97/2000/XP', book.version_string
39
+ enc = 'UTF-16LE'
40
+ if defined? Encoding
41
+ enc = Encoding.find enc
42
+ end
43
+ assert_equal enc, book.encoding
44
+ assert_equal 21, book.formats.size
45
+ assert_equal 4, book.fonts.size
46
+ assert_equal 0, book.sst.size
47
+ sheet = book.worksheet 0
48
+ assert_equal 0, sheet.row_count
49
+ assert_equal 0, sheet.column_count
50
+ assert_nothing_raised do sheet.inspect end
51
+ end
33
52
  def test_version_excel97__ooffice__utf16
34
53
  Spreadsheet.client_encoding = 'UTF-16LE'
35
54
  assert_equal 'UTF-16LE', Spreadsheet.client_encoding
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spreadsheet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1.4
4
+ version: 0.6.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hannes Wyss
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-23 00:00:00 +02:00
12
+ date: 2008-10-24 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -86,6 +86,7 @@ files:
86
86
  - lib/spreadsheet/worksheet.rb
87
87
  - lib/spreadsheet/writer.rb
88
88
  - test/data/test_copy.xls
89
+ - test/data/test_empty.xls
89
90
  - test/data/test_version_excel5.xls
90
91
  - test/data/test_version_excel95.xls
91
92
  - test/data/test_version_excel97.xls