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 +10 -0
- data/Manifest.txt +1 -0
- data/lib/spreadsheet.rb +1 -1
- data/lib/spreadsheet/encodings.rb +0 -14
- data/lib/spreadsheet/excel/worksheet.rb +4 -4
- data/lib/spreadsheet/worksheet.rb +3 -3
- data/test/data/test_empty.xls +0 -0
- data/test/integration.rb +19 -0
- metadata +3 -2
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
data/lib/spreadsheet.rb
CHANGED
@@ -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
|
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
|
+
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-
|
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
|