spreadsheet 0.6.1.4 → 0.6.1.5

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