roo 1.2.2 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +8 -1
- data/Manifest.txt +1 -0
- data/lib/roo/excel.rb +6 -1
- data/lib/roo/generic_spreadsheet.rb +44 -9
- data/lib/roo/version.rb +1 -1
- data/test/datetime.xlsx +0 -0
- data/test/test_roo.rb +153 -117
- data/website/index.html +4 -2
- data/website/index.txt +1 -1
- metadata +3 -2
data/History.txt
CHANGED
@@ -1,9 +1,16 @@
|
|
1
|
-
== 1.2.
|
1
|
+
== 1.2.3 2009-01-04
|
2
|
+
|
3
|
+
* bugfix
|
4
|
+
* fixed encoding in #cell at exported Google-spreadsheets (.xls)
|
5
|
+
|
6
|
+
== 1.2.2 2008-12-14
|
7
|
+
|
2
8
|
* 2 enhancements
|
3
9
|
* added celltype :datetime in Excelx
|
4
10
|
* added celltype :datetime in Google
|
5
11
|
|
6
12
|
== 1.2.1 2008-11-13
|
13
|
+
|
7
14
|
* 1 enhancement
|
8
15
|
* added celltype :datetime in Openoffice and Excel
|
9
16
|
|
data/Manifest.txt
CHANGED
data/lib/roo/excel.rb
CHANGED
@@ -91,7 +91,11 @@ class Excel < GenericSpreadsheet
|
|
91
91
|
yyyy,mm,dd = @cell[sheet][[row,col]].split('-')
|
92
92
|
return Date.new(yyyy.to_i,mm.to_i,dd.to_i)
|
93
93
|
end
|
94
|
-
|
94
|
+
if celltype(row,col,sheet) == :string
|
95
|
+
return platform_specific_iconv(@cell[sheet][[row,col]])
|
96
|
+
else
|
97
|
+
return @cell[sheet][[row,col]]
|
98
|
+
end
|
95
99
|
end
|
96
100
|
|
97
101
|
# returns the type of a cell:
|
@@ -265,6 +269,7 @@ class Excel < GenericSpreadsheet
|
|
265
269
|
|
266
270
|
def every_second_null?(str)
|
267
271
|
result = true
|
272
|
+
return false if str.length < 2
|
268
273
|
0.upto(str.length/2-1) do |i|
|
269
274
|
c = str[i*2,1]
|
270
275
|
n = str[i*2+1,1]
|
@@ -434,21 +434,56 @@ class GenericSpreadsheet
|
|
434
434
|
return row,col
|
435
435
|
end
|
436
436
|
|
437
|
+
# def open_from_uri(uri)
|
438
|
+
# require 'open-uri' ;
|
439
|
+
# tempfilename = File.join(@tmpdir, File.basename(uri))
|
440
|
+
# f = File.open(tempfilename,"wb")
|
441
|
+
# begin
|
442
|
+
# open(uri) do |net|
|
443
|
+
# f.write(net.read)
|
444
|
+
# end
|
445
|
+
# rescue
|
446
|
+
# raise "could not open #{uri}"
|
447
|
+
# end
|
448
|
+
# f.close
|
449
|
+
# File.join(@tmpdir, File.basename(uri))
|
450
|
+
# end
|
451
|
+
|
452
|
+
# OpenURI::HTTPError
|
453
|
+
# def open_from_uri(uri)
|
454
|
+
# require 'open-uri'
|
455
|
+
# #existiert URL?
|
456
|
+
# r = Net::HTTP.get_response(URI.parse(uri))
|
457
|
+
# raise "URL nicht verfuegbar" unless r.is_a? Net::HTTPOK
|
458
|
+
# tempfilename = File.join(@tmpdir, File.basename(uri))
|
459
|
+
# f = File.open(tempfilename,"wb")
|
460
|
+
# open(uri) do |net|
|
461
|
+
# f.write(net.read)
|
462
|
+
# end
|
463
|
+
# # rescue
|
464
|
+
# # raise "could not open #{uri}"
|
465
|
+
# # end
|
466
|
+
# f.close
|
467
|
+
# File.join(@tmpdir, File.basename(uri))
|
468
|
+
# end
|
469
|
+
|
437
470
|
def open_from_uri(uri)
|
438
|
-
require 'open-uri'
|
439
|
-
|
440
|
-
f = File.open(tempfilename,"wb")
|
471
|
+
require 'open-uri'
|
472
|
+
response = ''
|
441
473
|
begin
|
442
|
-
open(uri)
|
443
|
-
|
444
|
-
|
445
|
-
|
474
|
+
open(uri, "User-Agent" => "Ruby/#{RUBY_VERSION}") { |net|
|
475
|
+
response = net.read
|
476
|
+
tempfilename = File.join(@tmpdir, File.basename(uri))
|
477
|
+
f = File.open(tempfilename,"wb")
|
478
|
+
f.write(response)
|
479
|
+
f.close
|
480
|
+
}
|
481
|
+
rescue OpenURI::HTTPError
|
446
482
|
raise "could not open #{uri}"
|
447
483
|
end
|
448
|
-
f.close
|
449
484
|
File.join(@tmpdir, File.basename(uri))
|
450
485
|
end
|
451
|
-
|
486
|
+
|
452
487
|
def open_from_stream(stream)
|
453
488
|
tempfilename = File.join(@tmpdir, "spreadsheet")
|
454
489
|
f = File.open(tempfilename,"wb")
|
data/lib/roo/version.rb
CHANGED
data/test/datetime.xlsx
ADDED
Binary file
|
data/test/test_roo.rb
CHANGED
@@ -113,7 +113,7 @@ class TestRoo < Test::Unit::TestCase
|
|
113
113
|
EXCELX = true # do Excel-X Tests? (.xlsx-files)
|
114
114
|
|
115
115
|
OPENOFFICEWRITE = false # experimental: write access with OO-Documents
|
116
|
-
ONLINE =
|
116
|
+
ONLINE = true
|
117
117
|
LONG_RUN = false
|
118
118
|
GLOBAL_TIMEOUT = 48.minutes #*60 # 2*12*60 # seconds
|
119
119
|
|
@@ -1972,7 +1972,7 @@ class TestRoo < Test::Unit::TestCase
|
|
1972
1972
|
end
|
1973
1973
|
|
1974
1974
|
def test_excel_zipped
|
1975
|
-
after Date.new(
|
1975
|
+
after Date.new(2009,1,10) do
|
1976
1976
|
if EXCEL
|
1977
1977
|
$log.level = Logger::DEBUG
|
1978
1978
|
excel = Excel.new(File.join("test","bode-v1.xls.zip"), :zip)
|
@@ -3398,23 +3398,23 @@ class TestRoo < Test::Unit::TestCase
|
|
3398
3398
|
end
|
3399
3399
|
|
3400
3400
|
def test_should_raise_file_not_found_error
|
3401
|
-
|
3402
|
-
|
3403
|
-
|
3404
|
-
|
3405
|
-
|
3406
|
-
|
3407
|
-
|
3408
|
-
|
3409
|
-
|
3410
|
-
|
3411
|
-
|
3412
|
-
|
3413
|
-
|
3414
|
-
|
3415
|
-
|
3416
|
-
|
3417
|
-
|
3401
|
+
if OPENOFFICE
|
3402
|
+
assert_raise(IOError) {
|
3403
|
+
oo = Openoffice.new(File.join('testnichtvorhanden','Bibelbund.ods'))
|
3404
|
+
}
|
3405
|
+
end
|
3406
|
+
if EXCEL
|
3407
|
+
assert_raise(IOError) {
|
3408
|
+
oo = Excel.new(File.join('testnichtvorhanden','Bibelbund.xls'))
|
3409
|
+
}
|
3410
|
+
end
|
3411
|
+
if EXCELX
|
3412
|
+
assert_raise(IOError) {
|
3413
|
+
oo = Excelx.new(File.join('testnichtvorhanden','Bibelbund.xlsx'))
|
3414
|
+
}
|
3415
|
+
end
|
3416
|
+
if GOOGLE
|
3417
|
+
after Date.new(2009,1,15) do
|
3418
3418
|
assert_raise(IOError) {
|
3419
3419
|
# oo = Google.new(key_of('testnichtvorhanden'+'Bibelbund.ods'))
|
3420
3420
|
oo = Google.new('testnichtvorhanden')
|
@@ -3422,7 +3422,7 @@ class TestRoo < Test::Unit::TestCase
|
|
3422
3422
|
end
|
3423
3423
|
end
|
3424
3424
|
end
|
3425
|
-
|
3425
|
+
|
3426
3426
|
def test_bug_cell_no_default_sheet
|
3427
3427
|
if GOOGLE
|
3428
3428
|
oo = Google.new(key_of("numbers1"))
|
@@ -3876,20 +3876,20 @@ Sheet 3:
|
|
3876
3876
|
end
|
3877
3877
|
|
3878
3878
|
def test_bug_row_column_fixnum_float
|
3879
|
-
|
3880
|
-
|
3881
|
-
|
3882
|
-
|
3883
|
-
|
3884
|
-
|
3885
|
-
|
3886
|
-
|
3879
|
+
if EXCEL
|
3880
|
+
ex = Excel.new(File.join('test','bug-row-column-fixnum-float.xls'))
|
3881
|
+
ex.default_sheet = ex.sheets.first
|
3882
|
+
assert_equal 42.5, ex.cell('b',2)
|
3883
|
+
assert_equal 43 , ex.cell('c',2)
|
3884
|
+
assert_equal ['hij',42.5, 43], ex.row(2)
|
3885
|
+
assert_equal ['def',42.5, 'nop'], ex.column(2)
|
3886
|
+
end
|
3887
3887
|
|
3888
3888
|
end
|
3889
3889
|
|
3890
3890
|
def test_bug_c2
|
3891
3891
|
if EXCEL
|
3892
|
-
after Date.new(
|
3892
|
+
after Date.new(2009,1,6) do
|
3893
3893
|
local_only do
|
3894
3894
|
expected = ['Supermodel X','T6','Shaun White','Jeremy','Custom',
|
3895
3895
|
'Warhol','Twin','Malolo','Supermodel','Air','Elite',
|
@@ -3914,7 +3914,7 @@ Sheet 3:
|
|
3914
3914
|
end
|
3915
3915
|
|
3916
3916
|
def test_bug_c2_parseexcel
|
3917
|
-
after Date.new(
|
3917
|
+
after Date.new(2009,1,10) do
|
3918
3918
|
local_only do
|
3919
3919
|
#-- this is OK
|
3920
3920
|
@workbook = Spreadsheet::ParseExcel.parse(File.join('test',"problem.xls"))
|
@@ -3993,7 +3993,7 @@ Sheet 3:
|
|
3993
3993
|
|
3994
3994
|
def test_compare_csv_excelx_excel
|
3995
3995
|
if EXCELX
|
3996
|
-
after Date.new(2008,12,
|
3996
|
+
after Date.new(2008,12,30) do
|
3997
3997
|
# parseexcel bug
|
3998
3998
|
local_only do
|
3999
3999
|
s1 = Excel.new(File.join("test","problem.xls"))
|
@@ -4015,7 +4015,7 @@ Sheet 3:
|
|
4015
4015
|
end
|
4016
4016
|
|
4017
4017
|
def test_problemx_csv_imported
|
4018
|
-
after Date.new(
|
4018
|
+
after Date.new(2009,1,6) do
|
4019
4019
|
if EXCEL
|
4020
4020
|
local_only do
|
4021
4021
|
# wieder eingelesene CSV-Datei aus obigem Test
|
@@ -4164,24 +4164,24 @@ Sheet 3:
|
|
4164
4164
|
end
|
4165
4165
|
|
4166
4166
|
def test_open_from_uri
|
4167
|
-
|
4168
|
-
|
4169
|
-
|
4170
|
-
|
4171
|
-
|
4172
|
-
end
|
4173
|
-
if EXCEL
|
4174
|
-
assert_raises(RuntimeError) {
|
4175
|
-
oo = Excel.new("http://gibbsnichtdomainxxxxx.com/file.xls")
|
4176
|
-
}
|
4177
|
-
end
|
4178
|
-
if EXCELX
|
4179
|
-
assert_raises(RuntimeError) {
|
4180
|
-
oo = Excelx.new("http://gibbsnichtdomainxxxxx.com/file.xlsx")
|
4181
|
-
}
|
4182
|
-
end
|
4167
|
+
if ONLINE
|
4168
|
+
if OPENOFFICE
|
4169
|
+
assert_raises(RuntimeError) {
|
4170
|
+
oo = Openoffice.new("http://gibbsnichtdomainxxxxx.com/file.ods")
|
4171
|
+
}
|
4183
4172
|
end
|
4173
|
+
if EXCEL
|
4174
|
+
assert_raises(RuntimeError) {
|
4175
|
+
oo = Excel.new("http://gibbsnichtdomainxxxxx.com/file.xls")
|
4176
|
+
}
|
4177
|
+
end
|
4178
|
+
if EXCELX
|
4179
|
+
assert_raises(RuntimeError) {
|
4180
|
+
oo = Excelx.new("http://gibbsnichtdomainxxxxx.com/file.xlsx")
|
4181
|
+
}
|
4184
4182
|
end
|
4183
|
+
end
|
4184
|
+
end
|
4185
4185
|
|
4186
4186
|
def test_bug_last_row_excel
|
4187
4187
|
if EXCEL
|
@@ -4369,7 +4369,7 @@ Sheet 3:
|
|
4369
4369
|
|
4370
4370
|
def test_possible_bug_snowboard_cells
|
4371
4371
|
local_only do
|
4372
|
-
after Date.new(
|
4372
|
+
after Date.new(2009,1,6) do
|
4373
4373
|
# warten auf Bugfix in parseexcel
|
4374
4374
|
if EXCEL
|
4375
4375
|
ex = Excel.new(File.join('test','problem.xls'))
|
@@ -4697,24 +4697,26 @@ This attached file is the newer format of Microsoft Excel (.xlsx).
|
|
4697
4697
|
def test_huge_table_timing_10_000_openoffice
|
4698
4698
|
after Date.new(2009,1,1) do
|
4699
4699
|
if OPENOFFICE
|
4700
|
-
|
4701
|
-
Timeout::
|
4702
|
-
|
4703
|
-
|
4704
|
-
|
4705
|
-
|
4706
|
-
oo.
|
4707
|
-
|
4708
|
-
for
|
4709
|
-
|
4710
|
-
|
4700
|
+
if LONG_RUN
|
4701
|
+
assert_nothing_raised(Timeout::Error) {
|
4702
|
+
Timeout::timeout(3.minutes) do |timeout_length|
|
4703
|
+
oo = Openoffice.new("/home/tp/ruby-test/too-testing/speedtest_10000.ods")
|
4704
|
+
# process every cell
|
4705
|
+
sum = 0
|
4706
|
+
oo.sheets.each {|sheet|
|
4707
|
+
oo.default_sheet = sheet
|
4708
|
+
for row in oo.first_row..oo.last_row do
|
4709
|
+
for col in oo.first_column..oo.last_column do
|
4710
|
+
c = oo.cell(row,col)
|
4711
|
+
sum += c.length if c
|
4712
|
+
end
|
4711
4713
|
end
|
4712
|
-
|
4713
|
-
|
4714
|
-
|
4715
|
-
|
4716
|
-
|
4717
|
-
|
4714
|
+
p sum
|
4715
|
+
assert sum > 0
|
4716
|
+
}
|
4717
|
+
end
|
4718
|
+
}
|
4719
|
+
end
|
4718
4720
|
end
|
4719
4721
|
end
|
4720
4722
|
end
|
@@ -4722,24 +4724,26 @@ This attached file is the newer format of Microsoft Excel (.xlsx).
|
|
4722
4724
|
def test_huge_table_timing_10_000_excel
|
4723
4725
|
after Date.new(2009,1,1) do
|
4724
4726
|
if EXCEL
|
4725
|
-
|
4726
|
-
Timeout::
|
4727
|
-
|
4728
|
-
|
4729
|
-
|
4730
|
-
|
4731
|
-
oo.
|
4732
|
-
|
4733
|
-
for
|
4734
|
-
|
4735
|
-
|
4727
|
+
if LONG_RUN
|
4728
|
+
assert_nothing_raised(Timeout::Error) {
|
4729
|
+
Timeout::timeout(3.minutes) do |timeout_length|
|
4730
|
+
oo = Excel.new("/home/tp/ruby-test/too-testing/speedtest_10000.xls")
|
4731
|
+
# process every cell
|
4732
|
+
sum = 0
|
4733
|
+
oo.sheets.each {|sheet|
|
4734
|
+
oo.default_sheet = sheet
|
4735
|
+
for row in oo.first_row..oo.last_row do
|
4736
|
+
for col in oo.first_column..oo.last_column do
|
4737
|
+
c = oo.cell(row,col)
|
4738
|
+
sum += c.length if c
|
4739
|
+
end
|
4736
4740
|
end
|
4737
|
-
|
4738
|
-
|
4739
|
-
|
4740
|
-
|
4741
|
-
|
4742
|
-
|
4741
|
+
p sum
|
4742
|
+
assert sum > 0
|
4743
|
+
}
|
4744
|
+
end
|
4745
|
+
}
|
4746
|
+
end
|
4743
4747
|
end
|
4744
4748
|
end
|
4745
4749
|
end
|
@@ -4747,24 +4751,26 @@ This attached file is the newer format of Microsoft Excel (.xlsx).
|
|
4747
4751
|
def test_huge_table_timing_10_000_google
|
4748
4752
|
after Date.new(2009,1,1) do
|
4749
4753
|
if GOOGLE
|
4750
|
-
|
4751
|
-
Timeout::
|
4752
|
-
|
4753
|
-
|
4754
|
-
|
4755
|
-
|
4756
|
-
oo.
|
4757
|
-
|
4758
|
-
for
|
4759
|
-
|
4760
|
-
|
4754
|
+
if LONG_RUN
|
4755
|
+
assert_nothing_raised(Timeout::Error) {
|
4756
|
+
Timeout::timeout(3.minutes) do |timeout_length|
|
4757
|
+
oo = Excel.new(key_of("/home/tp/ruby-test/too-testing/speedtest_10000.xls"))
|
4758
|
+
# process every cell
|
4759
|
+
sum = 0
|
4760
|
+
oo.sheets.each {|sheet|
|
4761
|
+
oo.default_sheet = sheet
|
4762
|
+
for row in oo.first_row..oo.last_row do
|
4763
|
+
for col in oo.first_column..oo.last_column do
|
4764
|
+
c = oo.cell(row,col)
|
4765
|
+
sum += c.length if c
|
4766
|
+
end
|
4761
4767
|
end
|
4762
|
-
|
4763
|
-
|
4764
|
-
|
4765
|
-
|
4766
|
-
|
4767
|
-
|
4768
|
+
p sum
|
4769
|
+
assert sum > 0
|
4770
|
+
}
|
4771
|
+
end
|
4772
|
+
}
|
4773
|
+
end
|
4768
4774
|
end
|
4769
4775
|
end
|
4770
4776
|
end
|
@@ -4772,26 +4778,56 @@ This attached file is the newer format of Microsoft Excel (.xlsx).
|
|
4772
4778
|
def test_huge_table_timing_10_000_excelx
|
4773
4779
|
after Date.new(2009,1,1) do
|
4774
4780
|
if EXCELX
|
4775
|
-
|
4776
|
-
Timeout::
|
4777
|
-
|
4778
|
-
|
4779
|
-
|
4780
|
-
|
4781
|
-
oo.
|
4782
|
-
|
4783
|
-
for
|
4784
|
-
|
4785
|
-
|
4781
|
+
if LONG_RUN
|
4782
|
+
assert_nothing_raised(Timeout::Error) {
|
4783
|
+
Timeout::timeout(3.minutes) do |timeout_length|
|
4784
|
+
oo = Excelx.new("/home/tp/ruby-test/too-testing/speedtest_10000.xlsx")
|
4785
|
+
# process every cell
|
4786
|
+
sum = 0
|
4787
|
+
oo.sheets.each {|sheet|
|
4788
|
+
oo.default_sheet = sheet
|
4789
|
+
for row in oo.first_row..oo.last_row do
|
4790
|
+
for col in oo.first_column..oo.last_column do
|
4791
|
+
c = oo.cell(row,col)
|
4792
|
+
sum += c.length if c
|
4793
|
+
end
|
4786
4794
|
end
|
4787
|
-
|
4788
|
-
|
4789
|
-
|
4790
|
-
|
4791
|
-
|
4792
|
-
|
4795
|
+
p sum
|
4796
|
+
assert sum > 0
|
4797
|
+
}
|
4798
|
+
end
|
4799
|
+
}
|
4800
|
+
end
|
4793
4801
|
end
|
4794
4802
|
end
|
4795
4803
|
end
|
4796
4804
|
|
4805
|
+
# Eine Spreadsheetdatei wird nicht als Dateiname sondern direkt als Dokument
|
4806
|
+
# geoeffnettest_problemx_csv_imported
|
4807
|
+
def test_from_stream_openoffice
|
4808
|
+
after Date.new(2009,1,6) do
|
4809
|
+
if OPENOFFICE
|
4810
|
+
filecontent = nil
|
4811
|
+
File.open(File.join("test","numbers1.ods")) do |f|
|
4812
|
+
filecontent = f.read
|
4813
|
+
p filecontent.class
|
4814
|
+
p filecontent.size
|
4815
|
+
#p filecontent
|
4816
|
+
assert filecontent.size > 0
|
4817
|
+
# #stream macht das gleiche wie #new liest abe aus Stream anstatt Datei
|
4818
|
+
oo = Openoffice.stream(filecontent)
|
4819
|
+
end
|
4820
|
+
#oo = Openoffice.open()
|
4821
|
+
end
|
4822
|
+
end
|
4823
|
+
end
|
4824
|
+
|
4825
|
+
|
4826
|
+
def test_bug_encoding_exported_from_google
|
4827
|
+
if EXCEL
|
4828
|
+
xl = Excel.new(File.join("test","numbers1_from_google.xls"))
|
4829
|
+
xl.default_sheet = xl.sheets.first
|
4830
|
+
assert_equal 'test', xl.cell(2,'F')
|
4831
|
+
end
|
4832
|
+
end
|
4797
4833
|
end # class
|
data/website/index.html
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
<h1>roo</h1>
|
34
34
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/roo"; return false'>
|
35
35
|
Get Version
|
36
|
-
<a href="http://rubyforge.org/projects/roo" class="numbers">1.2.
|
36
|
+
<a href="http://rubyforge.org/projects/roo" class="numbers">1.2.2</a>
|
37
37
|
</div>
|
38
38
|
<h2>What</h2>
|
39
39
|
<p>This gem allows you to access the content of</p>
|
@@ -155,10 +155,12 @@ returned:</p>
|
|
155
155
|
<li>:percentage</li>
|
156
156
|
<li>:formula</li>
|
157
157
|
<li>:time</li>
|
158
|
+
<li>:datetime</li>
|
158
159
|
</ul>
|
159
160
|
<p>Numeric values are returned as type :float, the return value is a Ruby Float object (note: integer values like 42 are returned as 42.0 – not as a Fixnum 42 object).</p>
|
160
161
|
<p>String values are returned as type :string and Ruby String object.</p>
|
161
162
|
<p>Date values are returned as type :date and as a Ruby Date object.</p>
|
163
|
+
<p>Datetime values are returned as type :datetime and as a Ruby DateTime object.</p>
|
162
164
|
<p>Percentage are return as type :percentage and as Ruby Float object with the <br />
|
163
165
|
range from 0.0 to 1.0.</p>
|
164
166
|
<p>Formulas are returned as type :formula – the value of the cell is the computed<br />
|
@@ -372,7 +374,7 @@ h2. Feature Requests / Bugs</p>
|
|
372
374
|
<li>Thanks to Ryan Waldron for a bug-fix patch in Google set_value</li>
|
373
375
|
</ul>
|
374
376
|
<p class="coda">
|
375
|
-
<a href="mailto:thopre@gmail.com">Thomas Preymesser</a>,
|
377
|
+
<a href="mailto:thopre@gmail.com">Thomas Preymesser</a>, 8th December 2008<br>
|
376
378
|
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
377
379
|
</p>
|
378
380
|
</div>
|
data/website/index.txt
CHANGED
@@ -146,7 +146,7 @@ String values are returned as type :string and Ruby String object.
|
|
146
146
|
|
147
147
|
Date values are returned as type :date and as a Ruby Date object.
|
148
148
|
|
149
|
-
Datetime values are returned as type :
|
149
|
+
Datetime values are returned as type :datetime and as a Ruby DateTime object.
|
150
150
|
|
151
151
|
Percentage are return as type :percentage and as Ruby Float object with the
|
152
152
|
range from 0.0 to 1.0.
|
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.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Preymesser
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-01-05 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -138,6 +138,7 @@ files:
|
|
138
138
|
- test/emptysheets.xls
|
139
139
|
- test/datetime.ods
|
140
140
|
- test/datetime.xls
|
141
|
+
- test/datetime.xlsx
|
141
142
|
- website/index.html
|
142
143
|
- website/index.txt
|
143
144
|
- website/javascripts/rounded_corners_lite.inc.js
|