roo 1.11.1 → 1.11.2
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/CHANGELOG +9 -0
- data/README.markdown +5 -5
- data/VERSION +1 -1
- data/lib/roo.rb +1 -23
- data/lib/roo/csv.rb +23 -26
- data/lib/roo/excel2003xml.rb +3 -2
- data/lib/roo/excelx.rb +8 -9
- data/lib/roo/generic_spreadsheet.rb +2 -1
- data/lib/roo/spreadsheet.rb +25 -0
- data/roo.gemspec +6 -3
- data/spec/lib/roo/excel2003xml_spec.rb +15 -0
- data/spec/lib/roo/excelx/format_spec.rb +3 -1
- data/spec/lib/roo/spreadsheet_spec.rb +14 -0
- metadata +13 -8
data/CHANGELOG
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
== 1.11.2 (unreleased)
|
2
|
+
|
3
|
+
* 4 bugfixes
|
4
|
+
* Fix that Roo::Spreadsheet.open wasn't tolerant to case differences.
|
5
|
+
* Fix that Roo::Excel2003XML loading was broken https://github.com/Empact/roo/pull/27
|
6
|
+
* Enable loading Roo::Csv files from uris, just as other file types https://github.com/Empact/roo/pull/31
|
7
|
+
* Fix that Excelx "m/d/yy h:mm" was improperly being interpreted as date rather
|
8
|
+
than datetime https://github.com/Empact/roo/pull/29
|
9
|
+
|
1
10
|
== 1.11.1 2013-03-18
|
2
11
|
|
3
12
|
* 1 bugfix
|
data/README.markdown
CHANGED
@@ -19,12 +19,12 @@ file but not the formula itself)
|
|
19
19
|
|
20
20
|
require 'roo'
|
21
21
|
|
22
|
-
s = Openoffice.new("myspreadsheet.ods") # creates an Openoffice Spreadsheet instance
|
23
|
-
s = Excel.new("myspreadsheet.xls") # creates an Excel Spreadsheet instance
|
24
|
-
s = Google.new("myspreadsheetkey_at_google") # creates an Google Spreadsheet instance
|
25
|
-
s = Excelx.new("myspreadsheet.xlsx") # creates an Excel Spreadsheet instance for Excel .xlsx files
|
22
|
+
s = Roo::Openoffice.new("myspreadsheet.ods") # creates an Openoffice Spreadsheet instance
|
23
|
+
s = Roo::Excel.new("myspreadsheet.xls") # creates an Excel Spreadsheet instance
|
24
|
+
s = Roo::Google.new("myspreadsheetkey_at_google") # creates an Google Spreadsheet instance
|
25
|
+
s = Roo::Excelx.new("myspreadsheet.xlsx") # creates an Excel Spreadsheet instance for Excel .xlsx files
|
26
26
|
|
27
|
-
s.default_sheet = s.sheets.first
|
27
|
+
s.default_sheet = s.sheets.first # first sheet in the spreadsheet file will be used
|
28
28
|
|
29
29
|
# s.sheet is an array which holds the names of the sheets within
|
30
30
|
# a spreadsheet.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.11.
|
1
|
+
1.11.2
|
data/lib/roo.rb
CHANGED
@@ -2,29 +2,7 @@ module Roo
|
|
2
2
|
|
3
3
|
VERSION = '1.10.3'
|
4
4
|
|
5
|
-
|
6
|
-
class << self
|
7
|
-
def open(file)
|
8
|
-
file = File === file ? file.path : file
|
9
|
-
case File.extname(file)
|
10
|
-
when '.xls'
|
11
|
-
Roo::Excel.new(file)
|
12
|
-
when '.xlsx'
|
13
|
-
Roo::Excelx.new(file)
|
14
|
-
when '.ods'
|
15
|
-
Roo::Openoffice.new(file)
|
16
|
-
when '.xml'
|
17
|
-
Roo::Excel2003XML.new(file)
|
18
|
-
when ''
|
19
|
-
Roo::Google.new(file)
|
20
|
-
when '.csv'
|
21
|
-
Roo::Csv.new(file)
|
22
|
-
else
|
23
|
-
raise ArgumentError, "Don't know how to open file #{file}"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
5
|
+
autoload :Spreadsheet, 'roo/spreadsheet'
|
28
6
|
|
29
7
|
autoload :GenericSpreadsheet, 'roo/generic_spreadsheet'
|
30
8
|
autoload :Openoffice, 'roo/openoffice'
|
data/lib/roo/csv.rb
CHANGED
@@ -19,6 +19,8 @@ class Roo::Csv < Roo::GenericSpreadsheet
|
|
19
19
|
@last_column = Hash.new
|
20
20
|
end
|
21
21
|
|
22
|
+
attr_reader :filename
|
23
|
+
|
22
24
|
# Returns an array with the names of the sheets. In Csv class there is only
|
23
25
|
# one dummy sheet, because a csv file cannot have more than one sheet.
|
24
26
|
def sheets
|
@@ -56,6 +58,17 @@ class Roo::Csv < Roo::GenericSpreadsheet
|
|
56
58
|
TYPE_MAP[value.class]
|
57
59
|
end
|
58
60
|
|
61
|
+
def data
|
62
|
+
@data ||=
|
63
|
+
make_tmpdir do |tmpdir|
|
64
|
+
File.open(
|
65
|
+
uri?(filename) ?
|
66
|
+
open_from_uri(filename, tmpdir) :
|
67
|
+
filename
|
68
|
+
) { |f| f.read }
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
59
72
|
def read_cells(sheet=nil)
|
60
73
|
sheet ||= @default_sheet
|
61
74
|
@cell_type = {} unless @cell_type
|
@@ -65,7 +78,7 @@ class Roo::Csv < Roo::GenericSpreadsheet
|
|
65
78
|
@first_column[sheet] = 1
|
66
79
|
@last_column[sheet] = 1
|
67
80
|
rownum = 1
|
68
|
-
CSV.
|
81
|
+
CSV.parse data do |row|
|
69
82
|
row.each_with_index do |elem,i|
|
70
83
|
@cell[[rownum,i+1]] = cell_postprocessing rownum,i+1, elem
|
71
84
|
@cell_type[[rownum,i+1]] = celltype_class @cell[[rownum,i+1]]
|
@@ -78,41 +91,25 @@ class Roo::Csv < Roo::GenericSpreadsheet
|
|
78
91
|
end
|
79
92
|
@cells_read[sheet] = true
|
80
93
|
#-- adjust @first_row if neccessary
|
81
|
-
|
82
|
-
|
83
|
-
@first_row[sheet] += 1
|
84
|
-
else
|
85
|
-
break
|
86
|
-
end
|
94
|
+
while !row(@first_row[sheet]).any? and @first_row[sheet] < @last_row[sheet]
|
95
|
+
@first_row[sheet] += 1
|
87
96
|
end
|
88
97
|
#-- adjust @last_row if neccessary
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
@last_row[sheet] -= 1
|
93
|
-
else
|
94
|
-
break
|
95
|
-
end
|
98
|
+
while !row(@last_row[sheet]).any? and @last_row[sheet] and
|
99
|
+
@last_row[sheet] > @first_row[sheet]
|
100
|
+
@last_row[sheet] -= 1
|
96
101
|
end
|
97
102
|
#-- adjust @first_column if neccessary
|
98
|
-
|
99
|
-
if !column(@first_column[sheet]).any? and
|
103
|
+
while !column(@first_column[sheet]).any? and
|
100
104
|
@first_column[sheet] and
|
101
105
|
@first_column[sheet] < @last_column[sheet]
|
102
|
-
|
103
|
-
else
|
104
|
-
break
|
105
|
-
end
|
106
|
+
@first_column[sheet] += 1
|
106
107
|
end
|
107
108
|
#-- adjust @last_column if neccessary
|
108
|
-
|
109
|
-
if !column(@last_column[sheet]).any? and
|
109
|
+
while !column(@last_column[sheet]).any? and
|
110
110
|
@last_column[sheet] and
|
111
111
|
@last_column[sheet] > @first_column[sheet]
|
112
|
-
|
113
|
-
else
|
114
|
-
break
|
115
|
-
end
|
112
|
+
@last_column[sheet] -= 1
|
116
113
|
end
|
117
114
|
end
|
118
115
|
end # class Csv
|
data/lib/roo/excel2003xml.rb
CHANGED
@@ -2,6 +2,7 @@ require 'fileutils'
|
|
2
2
|
require 'date'
|
3
3
|
require 'base64'
|
4
4
|
require 'cgi'
|
5
|
+
require 'nokogiri'
|
5
6
|
|
6
7
|
class Roo::Excel2003XML < Roo::GenericSpreadsheet
|
7
8
|
|
@@ -118,7 +119,7 @@ class Roo::Excel2003XML < Roo::GenericSpreadsheet
|
|
118
119
|
|
119
120
|
def sheets
|
120
121
|
@doc.xpath("/ss:Workbook/ss:Worksheet").map do |sheet|
|
121
|
-
sheet['Name']
|
122
|
+
sheet['ss:Name']
|
122
123
|
end
|
123
124
|
end
|
124
125
|
|
@@ -229,7 +230,7 @@ class Roo::Excel2003XML < Roo::GenericSpreadsheet
|
|
229
230
|
end
|
230
231
|
c.xpath('./ss:Data').each do |cell|
|
231
232
|
formula = cell['Formula']
|
232
|
-
value_type = cell['Type'].downcase.to_sym
|
233
|
+
value_type = cell['ss:Type'].downcase.to_sym
|
233
234
|
v = cell.content
|
234
235
|
str_v = v
|
235
236
|
case value_type
|
data/lib/roo/excelx.rb
CHANGED
@@ -7,9 +7,6 @@ class Roo::Excelx < Roo::GenericSpreadsheet
|
|
7
7
|
EXCEPTIONAL_FORMATS = {
|
8
8
|
'h:mm am/pm' => :date,
|
9
9
|
'h:mm:ss am/pm' => :date,
|
10
|
-
'm/d/yy h:mm' => :date,
|
11
|
-
'#,##0 ;[red](#,##0)' => :float,
|
12
|
-
'#,##0.00;[red](#,##0.00)' => :float
|
13
10
|
}
|
14
11
|
|
15
12
|
STANDARD_FORMATS = {
|
@@ -47,6 +44,8 @@ class Roo::Excelx < Roo::GenericSpreadsheet
|
|
47
44
|
format = format.to_s.downcase
|
48
45
|
if type = EXCEPTIONAL_FORMATS[format]
|
49
46
|
type
|
47
|
+
elsif format.include?('#')
|
48
|
+
:float
|
50
49
|
elsif format.include?('d') || format.include?('y')
|
51
50
|
if format.include?('h') || format.include?('s')
|
52
51
|
:datetime
|
@@ -405,7 +404,7 @@ class Roo::Excelx < Roo::GenericSpreadsheet
|
|
405
404
|
# 2011-02-25 END
|
406
405
|
# 2011-09-15 BEGIN
|
407
406
|
when 'inlineStr'
|
408
|
-
|
407
|
+
:inlinestr
|
409
408
|
# 2011-09-15 END
|
410
409
|
else
|
411
410
|
format = attribute2format(s_attribute)
|
@@ -531,7 +530,7 @@ Datei xl/comments1.xml
|
|
531
530
|
|
532
531
|
def read_labels
|
533
532
|
@label ||= Hash[@workbook_doc.xpath("//xmlns:definedName").map do |defined_name|
|
534
|
-
|
533
|
+
# "Sheet1!$C$5"
|
535
534
|
sheet, coordinates = defined_name.text.split('!$', 2)
|
536
535
|
col,row = coordinates.split('$')
|
537
536
|
[defined_name['name'], [sheet,row,col]]
|
@@ -549,10 +548,10 @@ Datei xl/comments1.xml
|
|
549
548
|
}
|
550
549
|
end
|
551
550
|
# if entry.to_s.end_with?('sharedStrings.xml')
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
551
|
+
# at least one application creates this file with another (incorrect?)
|
552
|
+
# casing. It doesn't hurt, if we ignore here the correct casing - there
|
553
|
+
# won't be both names in the archive.
|
554
|
+
# Changed the casing of all the following filenames.
|
556
555
|
if entry.to_s.downcase.end_with?('sharedstrings.xml')
|
557
556
|
open(tmpdir+'/'+'roo_sharedStrings.xml','wb') {|f|
|
558
557
|
f << zip.read(entry)
|
@@ -524,6 +524,7 @@ class Roo::GenericSpreadsheet
|
|
524
524
|
'.xls' => 'Roo::Excel.new',
|
525
525
|
'.xlsx' => 'Roo::Excelx.new',
|
526
526
|
'.csv' => 'Roo::Csv.new',
|
527
|
+
'.xml' => 'Roo::Excel2003XML.new',
|
527
528
|
}
|
528
529
|
if packed == :zip
|
529
530
|
# lalala.ods.zip => lalala.ods
|
@@ -532,7 +533,7 @@ class Roo::GenericSpreadsheet
|
|
532
533
|
filename = File.basename(filename,File.extname(filename))
|
533
534
|
end
|
534
535
|
case ext
|
535
|
-
when '.ods', '.xls', '.xlsx', '.csv'
|
536
|
+
when '.ods', '.xls', '.xlsx', '.csv', '.xml'
|
536
537
|
correct_class = "use #{new_expression[ext]} to handle #{ext} spreadsheet files. This has #{File.extname(filename).downcase}"
|
537
538
|
else
|
538
539
|
raise "unknown file type: #{ext}"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Roo
|
2
|
+
class Spreadsheet
|
3
|
+
class << self
|
4
|
+
def open(file)
|
5
|
+
file = File === file ? file.path : file
|
6
|
+
case File.extname(file).downcase
|
7
|
+
when '.xls'
|
8
|
+
Roo::Excel.new(file)
|
9
|
+
when '.xlsx'
|
10
|
+
Roo::Excelx.new(file)
|
11
|
+
when '.ods'
|
12
|
+
Roo::Openoffice.new(file)
|
13
|
+
when '.xml'
|
14
|
+
Roo::Excel2003XML.new(file)
|
15
|
+
when ''
|
16
|
+
Roo::Google.new(file)
|
17
|
+
when '.csv'
|
18
|
+
Roo::Csv.new(file)
|
19
|
+
else
|
20
|
+
raise ArgumentError, "Don't know how to open file #{file}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/roo.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "roo"
|
8
|
-
s.version = "1.11.
|
8
|
+
s.version = "1.11.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Thomas Preymesser", "Hugh McGowan", "Ben Woosley"]
|
12
|
-
s.date = "2013-
|
12
|
+
s.date = "2013-04-10"
|
13
13
|
s.description = "Roo can access the contents of various spreadsheet files. It can handle\n* Openoffice\n* Excel\n* Google spreadsheets\n* Excelx\n* Libreoffice\n* CSV"
|
14
14
|
s.email = "ruby.ruby.ruby.roo@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -38,10 +38,13 @@ Gem::Specification.new do |s|
|
|
38
38
|
"lib/roo/google.rb",
|
39
39
|
"lib/roo/openoffice.rb",
|
40
40
|
"lib/roo/roo_rails_helper.rb",
|
41
|
+
"lib/roo/spreadsheet.rb",
|
41
42
|
"lib/roo/worksheet.rb",
|
42
43
|
"roo.gemspec",
|
43
44
|
"scripts/txt2html",
|
45
|
+
"spec/lib/roo/excel2003xml_spec.rb",
|
44
46
|
"spec/lib/roo/excelx/format_spec.rb",
|
47
|
+
"spec/lib/roo/spreadsheet_spec.rb",
|
45
48
|
"spec/spec_helper.rb",
|
46
49
|
"test/all_ss.rb",
|
47
50
|
"test/files/1900_base.xls",
|
@@ -162,7 +165,7 @@ Gem::Specification.new do |s|
|
|
162
165
|
s.rubyforge_project = "roo"
|
163
166
|
s.rubygems_version = "1.8.24"
|
164
167
|
s.summary = "Roo can access the contents of various spreadsheet files."
|
165
|
-
s.test_files = ["spec/lib/roo/excelx/format_spec.rb", "spec/spec_helper.rb", "test/all_ss.rb", "test/files/1900_base.xls", "test/files/1904_base.xls", "test/files/
|
168
|
+
s.test_files = ["spec/lib/roo/excel2003xml_spec.rb", "spec/lib/roo/excelx/format_spec.rb", "spec/lib/roo/spreadsheet_spec.rb", "spec/spec_helper.rb", "test/all_ss.rb", "test/files/1900_base.xls", "test/files/1904_base.xls", "test/files/bad_excel_date.xls", "test/files/bbu.ods", "test/files/bbu.xls", "test/files/bbu.xlsx", "test/files/bbu.xml", "test/files/Bibelbund.csv", "test/files/Bibelbund.ods", "test/files/Bibelbund.xls", "test/files/Bibelbund.xlsx", "test/files/Bibelbund.xml", "test/files/Bibelbund1.ods", "test/files/bode-v1.ods.zip", "test/files/bode-v1.xls.zip", "test/files/boolean.ods", "test/files/boolean.xls", "test/files/boolean.xlsx", "test/files/boolean.xml", "test/files/borders.ods", "test/files/borders.xls", "test/files/borders.xlsx", "test/files/borders.xml", "test/files/bug-row-column-fixnum-float.xls", "test/files/bug-row-column-fixnum-float.xml", "test/files/comments.ods", "test/files/comments.xls", "test/files/comments.xlsx", "test/files/csvtypes.csv", "test/files/datetime.ods", "test/files/datetime.xls", "test/files/datetime.xlsx", "test/files/datetime.xml", "test/files/datetime_floatconv.xls", "test/files/datetime_floatconv.xml", "test/files/dreimalvier.ods", "test/files/emptysheets.ods", "test/files/emptysheets.xls", "test/files/emptysheets.xlsx", "test/files/emptysheets.xml", "test/files/excel2003.xml", "test/files/false_encoding.xls", "test/files/false_encoding.xml", "test/files/formula.ods", "test/files/formula.xls", "test/files/formula.xlsx", "test/files/formula.xml", "test/files/formula_parse_error.xls", "test/files/formula_parse_error.xml", "test/files/formula_string_error.xlsx", "test/files/html-escape.ods", "test/files/matrix.ods", "test/files/matrix.xls", "test/files/named_cells.ods", "test/files/named_cells.xls", "test/files/named_cells.xlsx", "test/files/no_spreadsheet_file.txt", "test/files/numbers1.csv", "test/files/numbers1.ods", "test/files/numbers1.xls", "test/files/numbers1.xlsx", "test/files/numbers1.xml", "test/files/only_one_sheet.ods", "test/files/only_one_sheet.xls", "test/files/only_one_sheet.xlsx", "test/files/only_one_sheet.xml", "test/files/paragraph.ods", "test/files/paragraph.xls", "test/files/paragraph.xlsx", "test/files/paragraph.xml", "test/files/Pfand_from_windows_phone.xlsx", "test/files/prova.xls", "test/files/ric.ods", "test/files/simple_spreadsheet.ods", "test/files/simple_spreadsheet.xls", "test/files/simple_spreadsheet.xlsx", "test/files/simple_spreadsheet.xml", "test/files/simple_spreadsheet_from_italo.ods", "test/files/simple_spreadsheet_from_italo.xls", "test/files/simple_spreadsheet_from_italo.xml", "test/files/so_datetime.csv", "test/files/style.ods", "test/files/style.xls", "test/files/style.xlsx", "test/files/style.xml", "test/files/time-test.csv", "test/files/time-test.ods", "test/files/time-test.xls", "test/files/time-test.xlsx", "test/files/time-test.xml", "test/files/type_excel.ods", "test/files/type_excel.xlsx", "test/files/type_excelx.ods", "test/files/type_excelx.xls", "test/files/type_openoffice.xls", "test/files/type_openoffice.xlsx", "test/files/whitespace.ods", "test/files/whitespace.xls", "test/files/whitespace.xlsx", "test/files/whitespace.xml", "test/rm_sub_test.rb", "test/rm_test.rb", "test/test_generic_spreadsheet.rb", "test/test_helper.rb", "test/test_roo.rb"]
|
166
169
|
|
167
170
|
if s.respond_to? :specification_version then
|
168
171
|
s.specification_version = 3
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Roo::Excel2003XML do
|
4
|
+
describe '.new' do
|
5
|
+
context 'with an xml file' do
|
6
|
+
let(:path) { 'test/files/datetime.xml' }
|
7
|
+
|
8
|
+
it 'loads the file' do
|
9
|
+
expect {
|
10
|
+
Roo::Excel2003XML.new(path)
|
11
|
+
}.to_not raise_error
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -21,11 +21,12 @@ describe Roo::Excelx::Format do
|
|
21
21
|
'h:mm:ss AM/PM' => :date,
|
22
22
|
'h:mm' => :time,
|
23
23
|
'h:mm:ss' => :time,
|
24
|
-
'm/d/yy h:mm' => :
|
24
|
+
'm/d/yy h:mm' => :datetime,
|
25
25
|
'#,##0 ;(#,##0)' => :float,
|
26
26
|
'#,##0 ;[Red](#,##0)' => :float,
|
27
27
|
'#,##0.00;(#,##0.00)' => :float,
|
28
28
|
'#,##0.00;[Red](#,##0.00)' => :float,
|
29
|
+
'#,##0_);[Red](#,##0)' => :float,
|
29
30
|
'mm:ss' => :time,
|
30
31
|
'[h]:mm:ss' => :time,
|
31
32
|
'mmss.0' => :time,
|
@@ -36,6 +37,7 @@ describe Roo::Excelx::Format do
|
|
36
37
|
'dd/mm/yy' => :date,
|
37
38
|
'hh:mm:ss' => :time,
|
38
39
|
"dd/mm/yy\\ hh:mm" => :datetime,
|
40
|
+
'dd/mmm/yy\\ hh:mm' => :datetime,
|
39
41
|
'dd/mmm/yy' => :date, # 2011-05-21
|
40
42
|
'yyyy-mm-dd' => :date, # 2011-09-16
|
41
43
|
'yyyy-mm-dd;@' => :date
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Roo::Spreadsheet do
|
4
|
+
describe '.open' do
|
5
|
+
context 'when the file extension is uppercase' do
|
6
|
+
let(:filename) { 'file.XLS' }
|
7
|
+
|
8
|
+
it 'loads the proper type' do
|
9
|
+
Roo::Excel.should_receive(:new).with(filename)
|
10
|
+
Roo::Spreadsheet.open(filename)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.11.
|
4
|
+
version: 1.11.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-
|
14
|
+
date: 2013-04-10 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: spreadsheet
|
@@ -118,10 +118,13 @@ files:
|
|
118
118
|
- lib/roo/google.rb
|
119
119
|
- lib/roo/openoffice.rb
|
120
120
|
- lib/roo/roo_rails_helper.rb
|
121
|
+
- lib/roo/spreadsheet.rb
|
121
122
|
- lib/roo/worksheet.rb
|
122
123
|
- roo.gemspec
|
123
124
|
- scripts/txt2html
|
125
|
+
- spec/lib/roo/excel2003xml_spec.rb
|
124
126
|
- spec/lib/roo/excelx/format_spec.rb
|
127
|
+
- spec/lib/roo/spreadsheet_spec.rb
|
125
128
|
- spec/spec_helper.rb
|
126
129
|
- test/all_ss.rb
|
127
130
|
- test/files/1900_base.xls
|
@@ -260,23 +263,24 @@ signing_key:
|
|
260
263
|
specification_version: 3
|
261
264
|
summary: Roo can access the contents of various spreadsheet files.
|
262
265
|
test_files:
|
266
|
+
- spec/lib/roo/excel2003xml_spec.rb
|
263
267
|
- spec/lib/roo/excelx/format_spec.rb
|
268
|
+
- spec/lib/roo/spreadsheet_spec.rb
|
264
269
|
- spec/spec_helper.rb
|
265
270
|
- test/all_ss.rb
|
266
271
|
- test/files/1900_base.xls
|
267
272
|
- test/files/1904_base.xls
|
273
|
+
- test/files/bad_excel_date.xls
|
274
|
+
- test/files/bbu.ods
|
275
|
+
- test/files/bbu.xls
|
276
|
+
- test/files/bbu.xlsx
|
277
|
+
- test/files/bbu.xml
|
268
278
|
- test/files/Bibelbund.csv
|
269
279
|
- test/files/Bibelbund.ods
|
270
280
|
- test/files/Bibelbund.xls
|
271
281
|
- test/files/Bibelbund.xlsx
|
272
282
|
- test/files/Bibelbund.xml
|
273
283
|
- test/files/Bibelbund1.ods
|
274
|
-
- test/files/Pfand_from_windows_phone.xlsx
|
275
|
-
- test/files/bad_excel_date.xls
|
276
|
-
- test/files/bbu.ods
|
277
|
-
- test/files/bbu.xls
|
278
|
-
- test/files/bbu.xlsx
|
279
|
-
- test/files/bbu.xml
|
280
284
|
- test/files/bode-v1.ods.zip
|
281
285
|
- test/files/bode-v1.xls.zip
|
282
286
|
- test/files/boolean.ods
|
@@ -334,6 +338,7 @@ test_files:
|
|
334
338
|
- test/files/paragraph.xls
|
335
339
|
- test/files/paragraph.xlsx
|
336
340
|
- test/files/paragraph.xml
|
341
|
+
- test/files/Pfand_from_windows_phone.xlsx
|
337
342
|
- test/files/prova.xls
|
338
343
|
- test/files/ric.ods
|
339
344
|
- test/files/simple_spreadsheet.ods
|