roo 0.9.0 → 0.9.1
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 +5 -0
- data/lib/roo/generic_spreadsheet.rb +16 -3
- data/lib/roo/google.rb +92 -82
- data/lib/roo/openoffice.rb +0 -15
- data/lib/roo/version.rb +1 -1
- data/test/test_roo.rb +305 -77
- data/website/index.html +3 -6
- data/website/index.txt +1 -3
- data/website/template.rhtml +1 -1
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
== 0.9.1 2008-03-23
|
2
|
+
* 1 enhancement
|
3
|
+
* additional 'sheet' parameter in Google#set_value
|
4
|
+
* 1 bugfix
|
5
|
+
* fixed a bug within Google#set_value. thanks to davecahill <dpcahill@gmail.com> for the patch.
|
1
6
|
== 0.9.0 2008-01-24
|
2
7
|
* 1 enhancement:
|
3
8
|
* better support of roo spreadsheets in rails views
|
@@ -304,7 +304,11 @@ class GenericSpreadsheet
|
|
304
304
|
#-- id
|
305
305
|
if args[0].class == Fixnum
|
306
306
|
rownum = args[0]
|
307
|
-
|
307
|
+
if @header_line
|
308
|
+
tmp = {}
|
309
|
+
else
|
310
|
+
tmp = []
|
311
|
+
end
|
308
312
|
1.upto(self.row(rownum).size) {|j|
|
309
313
|
x = ''
|
310
314
|
column_with.each { |key,val|
|
@@ -312,9 +316,18 @@ class GenericSpreadsheet
|
|
312
316
|
x = key
|
313
317
|
end
|
314
318
|
}
|
315
|
-
|
319
|
+
if @header_line
|
320
|
+
tmp[x] = cell(rownum,j)
|
321
|
+
else
|
322
|
+
tmp[j-1] = cell(rownum,j)
|
323
|
+
end
|
324
|
+
|
316
325
|
}
|
317
|
-
|
326
|
+
if @header_line
|
327
|
+
result = [ tmp ]
|
328
|
+
else
|
329
|
+
result = tmp
|
330
|
+
end
|
318
331
|
#-- :all
|
319
332
|
elsif args[0] == :all
|
320
333
|
if args[1].class == Hash
|
data/lib/roo/google.rb
CHANGED
@@ -27,8 +27,9 @@ module GData
|
|
27
27
|
end
|
28
28
|
|
29
29
|
#-- new
|
30
|
-
|
31
|
-
|
30
|
+
#@@ added sheet_no to definition
|
31
|
+
def save_entry_roo(entry, sheet_no)
|
32
|
+
path = "/feeds/cells/#{@spreadsheet_id}/#{sheet_no}/#{@headers ? 'private' : 'public'}/full"
|
32
33
|
post(path, entry)
|
33
34
|
end
|
34
35
|
|
@@ -42,8 +43,9 @@ XML
|
|
42
43
|
end
|
43
44
|
|
44
45
|
#-- new
|
45
|
-
|
46
|
-
|
46
|
+
#@@ added sheet_no to definition
|
47
|
+
def add_to_cell_roo(row,col,value, sheet_no=1)
|
48
|
+
save_entry_roo(entry_roo(value,row,col), sheet_no)
|
47
49
|
end
|
48
50
|
|
49
51
|
#-- new
|
@@ -261,8 +263,16 @@ class Google < GenericSpreadsheet
|
|
261
263
|
|
262
264
|
# sets the cell to the content of 'value'
|
263
265
|
# a formula can be set in the form of '=SUM(...)'
|
264
|
-
def set_value(row,col,value)
|
265
|
-
@
|
266
|
+
def set_value(row,col,value,sheet=nil)
|
267
|
+
sheet = @default_sheet unless sheet
|
268
|
+
raise RangeError, "sheet not set" unless sheet
|
269
|
+
#@@ Set and pass sheet_no
|
270
|
+
begin
|
271
|
+
sheet_no = sheets.index(sheet)+1
|
272
|
+
rescue
|
273
|
+
raise RangeError, "invalid sheet '"+sheet.to_s+"'"
|
274
|
+
end
|
275
|
+
@gs.add_to_cell_roo(row,col,value,sheet_no)
|
266
276
|
end
|
267
277
|
|
268
278
|
# returns the first non-empty row in a sheet
|
@@ -271,7 +281,7 @@ class Google < GenericSpreadsheet
|
|
271
281
|
unless @first_row[sheet]
|
272
282
|
sheet_no = sheets.index(sheet) + 1
|
273
283
|
@first_row[sheet], @last_row[sheet], @first_column[sheet], @last_column[sheet] = @gs.oben_unten_links_rechts(sheet_no)
|
274
|
-
end
|
284
|
+
end
|
275
285
|
return @first_row[sheet]
|
276
286
|
end
|
277
287
|
|
@@ -314,81 +324,81 @@ class Google < GenericSpreadsheet
|
|
314
324
|
# also in Openofiffe
|
315
325
|
# -----------------------------------------------------
|
316
326
|
#++
|
317
|
-
def find(*args)
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
end
|
327
|
+
#def find(*args)
|
328
|
+
# result_array = false
|
329
|
+
# args.each {|arg,val|
|
330
|
+
# if arg.class == Hash
|
331
|
+
# arg.each { |hkey,hval|
|
332
|
+
# if hkey == :array and hval == true
|
333
|
+
# result_array = true
|
334
|
+
# end
|
335
|
+
# }
|
336
|
+
# end
|
337
|
+
# }
|
338
|
+
# column_with = {}
|
339
|
+
# 1.upto(last_column) do |col|
|
340
|
+
# column_with[cell(@header_line,col)] = col
|
341
|
+
# end
|
342
|
+
# result = Array.new
|
343
|
+
# #-- id
|
344
|
+
# if args[0].class == Fixnum
|
345
|
+
# rownum = args[0]
|
346
|
+
# tmp = {}
|
347
|
+
# 1.upto(self.row(rownum).size) {|j|
|
348
|
+
# x = ''
|
349
|
+
# column_with.each { |key,val|
|
350
|
+
# if val == j
|
351
|
+
# x = key
|
352
|
+
# end
|
353
|
+
# }
|
354
|
+
# tmp[x] = cell(rownum,j)
|
355
|
+
# }
|
356
|
+
# result = [ tmp ] # row(rownum)
|
357
|
+
# #-- :all
|
358
|
+
# elsif args[0] == :all
|
359
|
+
# if args[1].class == Hash
|
360
|
+
# args[1].each {|key,val|
|
361
|
+
# if key == :conditions
|
362
|
+
# column_with = {}
|
363
|
+
# 1.upto(last_column) do |col|
|
364
|
+
# column_with[cell(@header_line,col)] = col
|
365
|
+
# end
|
366
|
+
# conditions = val
|
367
|
+
# first_row.upto(last_row) do |i|
|
368
|
+
# # are all conditions met?
|
369
|
+
# found = 1
|
370
|
+
# conditions.each { |key,val|
|
371
|
+
# if cell(i,column_with[key]) == val
|
372
|
+
# found *= 1
|
373
|
+
# else
|
374
|
+
# found *= 0
|
375
|
+
# end
|
376
|
+
# }
|
377
|
+
# # p self.row(i) if found > 0
|
378
|
+
# if found > 0
|
379
|
+
# tmp = {}
|
380
|
+
# 1.upto(self.row(i).size) {|j|
|
381
|
+
# x = ''
|
382
|
+
# column_with.each { |key,val|
|
383
|
+
# if val == j
|
384
|
+
# x = key
|
385
|
+
# end
|
386
|
+
# }
|
387
|
+
# tmp[x] = cell(i,j)
|
388
|
+
# }
|
389
|
+
# if result_array
|
390
|
+
# result << self.row(i)
|
391
|
+
# else
|
392
|
+
# result << tmp
|
393
|
+
# end
|
394
|
+
# end
|
395
|
+
# end
|
396
|
+
# end # :conditions
|
397
|
+
# }
|
398
|
+
# end
|
399
|
+
# end
|
400
|
+
# result
|
401
|
+
#end
|
392
402
|
private
|
393
403
|
|
394
404
|
# read all cells in a sheet
|
data/lib/roo/openoffice.rb
CHANGED
@@ -252,21 +252,6 @@ class Openoffice < GenericSpreadsheet
|
|
252
252
|
theformulas
|
253
253
|
end
|
254
254
|
|
255
|
-
# # write the current spreadsheet to stdout or into a file
|
256
|
-
# #TODO: refactoring --> GenericSpreadsheet
|
257
|
-
#
|
258
|
-
# def to_csv(filename=nil,sheet=nil)
|
259
|
-
# sheet = @default_sheet unless sheet
|
260
|
-
# if filename
|
261
|
-
# file = File.open(filename,"w") # do |file|
|
262
|
-
# write_csv_content(file,sheet)
|
263
|
-
# file.close
|
264
|
-
# else
|
265
|
-
# write_csv_content(STDOUT,sheet)
|
266
|
-
# end
|
267
|
-
# true
|
268
|
-
# end
|
269
|
-
|
270
255
|
private
|
271
256
|
|
272
257
|
# read the version of the OO-Version
|
data/lib/roo/version.rb
CHANGED
data/test/test_roo.rb
CHANGED
@@ -20,7 +20,7 @@ def local_only
|
|
20
20
|
end
|
21
21
|
|
22
22
|
DISPLAY_LOG = false
|
23
|
-
DB_LOG =
|
23
|
+
DB_LOG = true
|
24
24
|
|
25
25
|
if DB_LOG
|
26
26
|
# gem 'activerecord', '< 2.0.0'
|
@@ -117,25 +117,22 @@ class TestRoo < Test::Unit::TestCase
|
|
117
117
|
OPENOFFICE = true # do Openoffice-Spreadsheet Tests?
|
118
118
|
EXCEL = true # do Excel Tests?
|
119
119
|
GOOGLE = true # do Google-Spreadsheet Tests?
|
120
|
-
|
120
|
+
GNUMERIC_ODS = false # do gnumeric with ods files Tests?
|
121
|
+
|
121
122
|
OPENOFFICEWRITE = false # experimental: write access with OO-Documents
|
122
|
-
ONLINE =
|
123
|
+
ONLINE = true
|
123
124
|
LONG_RUN = false
|
124
125
|
GLOBAL_TIMEOUT = 2*12*60 # seconds
|
125
126
|
|
126
127
|
|
127
128
|
# helper method
|
128
129
|
def after(d)
|
129
|
-
if DateTime.now > d
|
130
|
-
yield
|
131
|
-
end
|
130
|
+
yield if DateTime.now > d
|
132
131
|
end
|
133
132
|
|
134
133
|
# helper method
|
135
134
|
def before(d)
|
136
|
-
if DateTime.now <= d
|
137
|
-
yield
|
138
|
-
end
|
135
|
+
yield if DateTime.now <= d
|
139
136
|
end
|
140
137
|
|
141
138
|
def setup
|
@@ -209,6 +206,24 @@ class TestRoo < Test::Unit::TestCase
|
|
209
206
|
end
|
210
207
|
end
|
211
208
|
|
209
|
+
def test_sheets_gnumeric_ods
|
210
|
+
if GNUMERIC_ODS
|
211
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
212
|
+
assert_equal ["Tabelle1","Name of Sheet 2","Sheet3","Sheet4","Sheet5"], oo.sheets
|
213
|
+
assert_raise(RangeError) {
|
214
|
+
oo.default_sheet = "no_sheet"
|
215
|
+
}
|
216
|
+
assert_raise(TypeError) {
|
217
|
+
oo.default_sheet = [1,2,3]
|
218
|
+
}
|
219
|
+
|
220
|
+
oo.sheets.each { |sh|
|
221
|
+
oo.default_sheet = sh
|
222
|
+
assert_equal sh, oo.default_sheet
|
223
|
+
}
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
212
227
|
def test_sheets_excel
|
213
228
|
if EXCEL
|
214
229
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
@@ -230,14 +245,12 @@ class TestRoo < Test::Unit::TestCase
|
|
230
245
|
if GOOGLE
|
231
246
|
oo = Google.new(key_of("numbers1"))
|
232
247
|
assert_equal ["Tabelle1","Name of Sheet 2","Sheet3","Sheet4","Sheet5"], oo.sheets
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
}
|
240
|
-
end
|
248
|
+
assert_raise(RangeError) {
|
249
|
+
oo.default_sheet = "no_sheet"
|
250
|
+
}
|
251
|
+
assert_raise(TypeError) {
|
252
|
+
oo.default_sheet = [1,2,3]
|
253
|
+
}
|
241
254
|
oo.sheets.each { |sh|
|
242
255
|
oo.default_sheet = sh
|
243
256
|
assert_equal sh, oo.default_sheet
|
@@ -284,6 +297,45 @@ class TestRoo < Test::Unit::TestCase
|
|
284
297
|
end
|
285
298
|
end
|
286
299
|
|
300
|
+
def test_cell_gnumeric_ods
|
301
|
+
if GNUMERIC_ODS
|
302
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
303
|
+
oo.default_sheet = oo.sheets.first
|
304
|
+
assert_equal 1, oo.cell(1,1)
|
305
|
+
assert_equal 2, oo.cell(1,2)
|
306
|
+
assert_equal 3, oo.cell(1,3)
|
307
|
+
assert_equal 4, oo.cell(1,4)
|
308
|
+
assert_equal 5, oo.cell(2,1)
|
309
|
+
assert_equal 6, oo.cell(2,2)
|
310
|
+
assert_equal 7, oo.cell(2,3)
|
311
|
+
assert_equal 8, oo.cell(2,4)
|
312
|
+
assert_equal 9, oo.cell(2,5)
|
313
|
+
assert_equal "test", oo.cell(2,6)
|
314
|
+
# assert_equal "string", oo.celltype(2,6)
|
315
|
+
assert_equal :string, oo.celltype(2,6)
|
316
|
+
assert_equal 11, oo.cell(2,7)
|
317
|
+
# assert_equal "float", oo.celltype(2,7)
|
318
|
+
assert_equal :float, oo.celltype(2,7)
|
319
|
+
|
320
|
+
assert_equal 10, oo.cell(4,1)
|
321
|
+
assert_equal 11, oo.cell(4,2)
|
322
|
+
assert_equal 12, oo.cell(4,3)
|
323
|
+
assert_equal 13, oo.cell(4,4)
|
324
|
+
assert_equal 14, oo.cell(4,5)
|
325
|
+
|
326
|
+
assert_equal 10, oo.cell(4,'A')
|
327
|
+
assert_equal 11, oo.cell(4,'B')
|
328
|
+
assert_equal 12, oo.cell(4,'C')
|
329
|
+
assert_equal 13, oo.cell(4,'D')
|
330
|
+
assert_equal 14, oo.cell(4,'E')
|
331
|
+
|
332
|
+
# assert_equal "date", oo.celltype(5,1)
|
333
|
+
assert_equal :date, oo.celltype(5,1)
|
334
|
+
assert_equal Date.new(1961,11,21), oo.cell(5,1)
|
335
|
+
assert_equal "1961-11-21", oo.cell(5,1).to_s
|
336
|
+
end
|
337
|
+
end
|
338
|
+
|
287
339
|
def test_cell_excel
|
288
340
|
if EXCEL
|
289
341
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
@@ -369,6 +421,11 @@ class TestRoo < Test::Unit::TestCase
|
|
369
421
|
oo.default_sheet = oo.sheets.first
|
370
422
|
assert_equal :string, oo.celltype(2,6)
|
371
423
|
end
|
424
|
+
if GNUMERIC_ODS
|
425
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
426
|
+
oo.default_sheet = oo.sheets.first
|
427
|
+
assert_equal :string, oo.celltype(2,6)
|
428
|
+
end
|
372
429
|
if EXCEL
|
373
430
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
374
431
|
oo.default_sheet = oo.sheets.first
|
@@ -406,6 +463,31 @@ class TestRoo < Test::Unit::TestCase
|
|
406
463
|
assert_equal "thisisd9", oo.cell('d',9)
|
407
464
|
assert_equal "thisisa11", oo.cell('a',11)
|
408
465
|
end
|
466
|
+
|
467
|
+
if GNUMERIC_ODS
|
468
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
469
|
+
oo.default_sheet = oo.sheets.first
|
470
|
+
assert_equal "tata", oo.cell(6,1)
|
471
|
+
assert_equal "tata", oo.cell(6,'A')
|
472
|
+
assert_equal "tata", oo.cell('A',6)
|
473
|
+
assert_equal "tata", oo.cell(6,'a')
|
474
|
+
assert_equal "tata", oo.cell('a',6)
|
475
|
+
|
476
|
+
assert_raise(ArgumentError) {
|
477
|
+
assert_equal "tata", oo.cell('a','f')
|
478
|
+
}
|
479
|
+
assert_raise(ArgumentError) {
|
480
|
+
assert_equal "tata", oo.cell('f','a')
|
481
|
+
}
|
482
|
+
assert_equal "thisisc8", oo.cell(8,3)
|
483
|
+
assert_equal "thisisc8", oo.cell(8,'C')
|
484
|
+
assert_equal "thisisc8", oo.cell('C',8)
|
485
|
+
assert_equal "thisisc8", oo.cell(8,'c')
|
486
|
+
assert_equal "thisisc8", oo.cell('c',8)
|
487
|
+
|
488
|
+
assert_equal "thisisd9", oo.cell('d',9)
|
489
|
+
assert_equal "thisisa11", oo.cell('a',11)
|
490
|
+
end
|
409
491
|
|
410
492
|
if EXCEL
|
411
493
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
@@ -463,9 +545,14 @@ class TestRoo < Test::Unit::TestCase
|
|
463
545
|
# Version of the (XML) office document
|
464
546
|
# please note that "1.0" is returned even if it was created with OpenOffice V. 2.0
|
465
547
|
def test_officeversion
|
466
|
-
|
467
|
-
|
468
|
-
|
548
|
+
if OPENOFFICE
|
549
|
+
oo = Openoffice.new(File.join("test","numbers1.ods"))
|
550
|
+
assert_equal "1.0", oo.officeversion
|
551
|
+
end
|
552
|
+
if GNUMERIC_ODS
|
553
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
554
|
+
assert_equal "1.0", oo.officeversion
|
555
|
+
end
|
469
556
|
if EXCEL
|
470
557
|
# excel does not have a officeversion
|
471
558
|
end
|
@@ -492,6 +579,22 @@ class TestRoo < Test::Unit::TestCase
|
|
492
579
|
assert_equal "fuenfundvierzig", oo.cell('e',16)
|
493
580
|
assert_equal ["einundvierzig", "zweiundvierzig", "dreiundvierzig", "vierundvierzig", "fuenfundvierzig"], oo.row(16)
|
494
581
|
end
|
582
|
+
if GNUMERIC_ODS
|
583
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
584
|
+
oo.default_sheet = oo.sheets.first
|
585
|
+
assert_equal 41, oo.cell('a',12)
|
586
|
+
assert_equal 42, oo.cell('b',12)
|
587
|
+
assert_equal 43, oo.cell('c',12)
|
588
|
+
assert_equal 44, oo.cell('d',12)
|
589
|
+
assert_equal 45, oo.cell('e',12)
|
590
|
+
assert_equal [41.0,42.0,43.0,44.0,45.0], oo.row(12)
|
591
|
+
assert_equal "einundvierzig", oo.cell('a',16)
|
592
|
+
assert_equal "zweiundvierzig", oo.cell('b',16)
|
593
|
+
assert_equal "dreiundvierzig", oo.cell('c',16)
|
594
|
+
assert_equal "vierundvierzig", oo.cell('d',16)
|
595
|
+
assert_equal "fuenfundvierzig", oo.cell('e',16)
|
596
|
+
assert_equal ["einundvierzig", "zweiundvierzig", "dreiundvierzig", "vierundvierzig", "fuenfundvierzig"], oo.row(16)
|
597
|
+
end
|
495
598
|
if EXCEL
|
496
599
|
#-- Excel
|
497
600
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
@@ -541,6 +644,11 @@ class TestRoo < Test::Unit::TestCase
|
|
541
644
|
oo.default_sheet = oo.sheets.first
|
542
645
|
assert_equal 18, oo.last_row
|
543
646
|
end
|
647
|
+
if GNUMERIC_ODS
|
648
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
649
|
+
oo.default_sheet = oo.sheets.first
|
650
|
+
assert_equal 18, oo.last_row
|
651
|
+
end
|
544
652
|
if EXCEL
|
545
653
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
546
654
|
oo.default_sheet = oo.sheets.first
|
@@ -559,8 +667,12 @@ class TestRoo < Test::Unit::TestCase
|
|
559
667
|
oo.default_sheet = oo.sheets.first
|
560
668
|
assert_equal 7, oo.last_column
|
561
669
|
end
|
670
|
+
if GNUMERIC_ODS
|
671
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
672
|
+
oo.default_sheet = oo.sheets.first
|
673
|
+
assert_equal 7, oo.last_column
|
674
|
+
end
|
562
675
|
if EXCEL
|
563
|
-
#-- Excel
|
564
676
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
565
677
|
oo.default_sheet = oo.sheets.first
|
566
678
|
assert_equal 7, oo.last_column
|
@@ -578,8 +690,12 @@ class TestRoo < Test::Unit::TestCase
|
|
578
690
|
oo.default_sheet = oo.sheets.first
|
579
691
|
assert_equal 'G', oo.last_column_as_letter
|
580
692
|
end
|
693
|
+
if GNUMERIC_ODS
|
694
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
695
|
+
oo.default_sheet = oo.sheets.first
|
696
|
+
assert_equal 'G', oo.last_column_as_letter
|
697
|
+
end
|
581
698
|
if EXCEL
|
582
|
-
#-- Excel
|
583
699
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
584
700
|
oo.default_sheet = 1 # oo.sheets.first
|
585
701
|
assert_equal 'G', oo.last_column_as_letter
|
@@ -597,8 +713,12 @@ class TestRoo < Test::Unit::TestCase
|
|
597
713
|
oo.default_sheet = oo.sheets.first
|
598
714
|
assert_equal 1, oo.first_row
|
599
715
|
end
|
716
|
+
if GNUMERIC_ODS
|
717
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
718
|
+
oo.default_sheet = oo.sheets.first
|
719
|
+
assert_equal 1, oo.first_row
|
720
|
+
end
|
600
721
|
if EXCEL
|
601
|
-
#-- Excel
|
602
722
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
603
723
|
oo.default_sheet = 1 # oo.sheets.first
|
604
724
|
assert_equal 1, oo.first_row
|
@@ -616,6 +736,11 @@ class TestRoo < Test::Unit::TestCase
|
|
616
736
|
oo.default_sheet = oo.sheets.first
|
617
737
|
assert_equal 1, oo.first_column
|
618
738
|
end
|
739
|
+
if GNUMERIC_ODS
|
740
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
741
|
+
oo.default_sheet = oo.sheets.first
|
742
|
+
assert_equal 1, oo.first_column
|
743
|
+
end
|
619
744
|
if EXCEL
|
620
745
|
#-- Excel
|
621
746
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
@@ -641,9 +766,16 @@ class TestRoo < Test::Unit::TestCase
|
|
641
766
|
end
|
642
767
|
end
|
643
768
|
|
769
|
+
def test_first_column_as_letter_gnumeric_ods
|
770
|
+
if GNUMERIC_ODS
|
771
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
772
|
+
oo.default_sheet = oo.sheets.first
|
773
|
+
assert_equal 'A', oo.first_column_as_letter
|
774
|
+
end
|
775
|
+
end
|
776
|
+
|
644
777
|
def test_first_column_as_letter_excel
|
645
778
|
if EXCEL
|
646
|
-
#-- Excel
|
647
779
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
648
780
|
oo.default_sheet = 1 # oo.sheets.first
|
649
781
|
assert_equal 'A', oo.first_column_as_letter
|
@@ -664,6 +796,11 @@ class TestRoo < Test::Unit::TestCase
|
|
664
796
|
oo.default_sheet = "Name of Sheet 2"
|
665
797
|
assert_equal 'I am sheet 2', oo.cell('C',5)
|
666
798
|
end
|
799
|
+
if GNUMERIC_ODS
|
800
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
801
|
+
oo.default_sheet = "Name of Sheet 2"
|
802
|
+
assert_equal 'I am sheet 2', oo.cell('C',5)
|
803
|
+
end
|
667
804
|
if EXCEL
|
668
805
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
669
806
|
oo.default_sheet = "Name of Sheet 2"
|
@@ -677,14 +814,24 @@ class TestRoo < Test::Unit::TestCase
|
|
677
814
|
end
|
678
815
|
|
679
816
|
def test_boundaries
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
817
|
+
if OPENOFFICE
|
818
|
+
oo = Openoffice.new(File.join("test","numbers1.ods"))
|
819
|
+
oo.default_sheet = "Name of Sheet 2"
|
820
|
+
assert_equal 2, oo.first_column
|
821
|
+
assert_equal 'B', oo.first_column_as_letter
|
822
|
+
assert_equal 5, oo.first_row
|
823
|
+
assert_equal 'E', oo.last_column_as_letter
|
824
|
+
assert_equal 14, oo.last_row
|
825
|
+
end
|
826
|
+
if GNUMERIC_ODS
|
827
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
828
|
+
oo.default_sheet = "Name of Sheet 2"
|
829
|
+
assert_equal 2, oo.first_column
|
830
|
+
assert_equal 'B', oo.first_column_as_letter
|
831
|
+
assert_equal 5, oo.first_row
|
832
|
+
assert_equal 'E', oo.last_column_as_letter
|
833
|
+
assert_equal 14, oo.last_row
|
834
|
+
end
|
688
835
|
if EXCEL
|
689
836
|
#-- Excel
|
690
837
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
@@ -698,7 +845,6 @@ class TestRoo < Test::Unit::TestCase
|
|
698
845
|
end
|
699
846
|
|
700
847
|
def test_multiple_letters
|
701
|
-
#-- OpenOffice
|
702
848
|
if OPENOFFICE
|
703
849
|
oo = Openoffice.new(File.join("test","numbers1.ods"))
|
704
850
|
oo.default_sheet = "Sheet3"
|
@@ -708,8 +854,16 @@ class TestRoo < Test::Unit::TestCase
|
|
708
854
|
assert_equal 'BA', oo.last_column_as_letter
|
709
855
|
assert_equal "i am BA", oo.cell(1,'BA')
|
710
856
|
end
|
857
|
+
if GNUMERIC_ODS
|
858
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
859
|
+
oo.default_sheet = "Sheet3"
|
860
|
+
assert_equal "i am AA", oo.cell('AA',1)
|
861
|
+
assert_equal "i am AB", oo.cell('AB',1)
|
862
|
+
assert_equal "i am BA", oo.cell('BA',1)
|
863
|
+
assert_equal 'BA', oo.last_column_as_letter
|
864
|
+
assert_equal "i am BA", oo.cell(1,'BA')
|
865
|
+
end
|
711
866
|
if EXCEL
|
712
|
-
#-- Excel
|
713
867
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
714
868
|
oo.default_sheet = 3 # "Sheet3"
|
715
869
|
assert_equal "i am AA", oo.cell('AA',1)
|
@@ -720,10 +874,6 @@ class TestRoo < Test::Unit::TestCase
|
|
720
874
|
end
|
721
875
|
end
|
722
876
|
|
723
|
-
def test_setting_cell
|
724
|
-
assert true
|
725
|
-
end
|
726
|
-
|
727
877
|
def test_argument_error
|
728
878
|
if EXCEL
|
729
879
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
@@ -749,6 +899,13 @@ class TestRoo < Test::Unit::TestCase
|
|
749
899
|
assert ! oo.empty?('a',15)
|
750
900
|
assert oo.empty?('a',20)
|
751
901
|
end
|
902
|
+
if GNUMERIC_ODS
|
903
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
904
|
+
oo.default_sheet = oo.sheets.first
|
905
|
+
assert oo.empty?('a',14)
|
906
|
+
assert ! oo.empty?('a',15)
|
907
|
+
assert oo.empty?('a',20)
|
908
|
+
end
|
752
909
|
if EXCEL
|
753
910
|
#-- Excel
|
754
911
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
@@ -805,6 +962,14 @@ class TestRoo < Test::Unit::TestCase
|
|
805
962
|
oo.reload
|
806
963
|
assert_equal 1, oo.cell(1,1)
|
807
964
|
end
|
965
|
+
if GNUMERIC_ODS
|
966
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
967
|
+
oo.default_sheet = oo.sheets.first
|
968
|
+
assert_equal 1, oo.cell(1,1)
|
969
|
+
|
970
|
+
oo.reload
|
971
|
+
assert_equal 1, oo.cell(1,1)
|
972
|
+
end
|
808
973
|
if EXCEL
|
809
974
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
810
975
|
oo.default_sheet = 1 # oo.sheets.first
|
@@ -825,6 +990,15 @@ class TestRoo < Test::Unit::TestCase
|
|
825
990
|
assert_equal 10, oo.cell('d',1)
|
826
991
|
assert_equal 10, oo.cell('e',1)
|
827
992
|
end
|
993
|
+
if GNUMERIC_ODS
|
994
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
995
|
+
oo.default_sheet = "Sheet4"
|
996
|
+
assert_equal Date.new(2007,06,16), oo.cell('a',1)
|
997
|
+
assert_equal 10, oo.cell('b',1)
|
998
|
+
assert_equal 10, oo.cell('c',1)
|
999
|
+
assert_equal 10, oo.cell('d',1)
|
1000
|
+
assert_equal 10, oo.cell('e',1)
|
1001
|
+
end
|
828
1002
|
#if EXCEL
|
829
1003
|
# # dieser Test ist fuer Excel sheets eigentlich nicht noetig,
|
830
1004
|
# # da der Bug nur bei OO-Dokumenten auftrat
|
@@ -860,6 +1034,24 @@ class TestRoo < Test::Unit::TestCase
|
|
860
1034
|
assert_equal 2, oo.cell('a',2)
|
861
1035
|
assert_equal 3, oo.cell('a',3)
|
862
1036
|
end
|
1037
|
+
if OPENOFFICE
|
1038
|
+
oo = Openoffice.new(File.join("test","numbers1.ods"))
|
1039
|
+
oo.default_sheet = "Sheet5"
|
1040
|
+
assert_equal 1, oo.cell('A',1)
|
1041
|
+
assert_equal 5, oo.cell('b',1)
|
1042
|
+
assert_equal 5, oo.cell('c',1)
|
1043
|
+
assert_equal 2, oo.cell('a',2)
|
1044
|
+
assert_equal 3, oo.cell('a',3)
|
1045
|
+
end
|
1046
|
+
if GNUMERIC_ODS
|
1047
|
+
oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
|
1048
|
+
oo.default_sheet = "Sheet5"
|
1049
|
+
assert_equal 1, oo.cell('A',1)
|
1050
|
+
assert_equal 5, oo.cell('b',1)
|
1051
|
+
assert_equal 5, oo.cell('c',1)
|
1052
|
+
assert_equal 2, oo.cell('a',2)
|
1053
|
+
assert_equal 3, oo.cell('a',3)
|
1054
|
+
end
|
863
1055
|
if EXCEL
|
864
1056
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
865
1057
|
oo.default_sheet = 5
|
@@ -879,7 +1071,7 @@ class TestRoo < Test::Unit::TestCase
|
|
879
1071
|
# assert_equal 3, oo.cell('a',3)
|
880
1072
|
#end
|
881
1073
|
end
|
882
|
-
|
1074
|
+
#2008-01-30
|
883
1075
|
def test_italo_table
|
884
1076
|
local_only do
|
885
1077
|
oo = Openoffice.new(File.join("test","simple_spreadsheet_from_italo.ods"))
|
@@ -1917,19 +2109,17 @@ class TestRoo < Test::Unit::TestCase
|
|
1917
2109
|
if OPENOFFICE
|
1918
2110
|
oo = Openoffice.new(File.join("test","numbers1.ods"))
|
1919
2111
|
oo.default_sheet = oo.sheets.first
|
2112
|
+
oo.header_line = nil
|
1920
2113
|
rec = oo.find 16
|
1921
2114
|
assert rec
|
1922
|
-
oo.header_line = nil
|
1923
2115
|
assert_nil oo.header_line
|
1924
2116
|
# keine Headerlines in diesem Beispiel definiert
|
1925
|
-
|
1926
|
-
|
1927
|
-
#assert_equal false, rec
|
2117
|
+
assert_equal "einundvierzig", rec[0]
|
2118
|
+
#assert_equal false, rec
|
1928
2119
|
|
1929
|
-
|
1930
|
-
|
1931
|
-
|
1932
|
-
end
|
2120
|
+
rec = oo.find 15
|
2121
|
+
assert rec
|
2122
|
+
assert_equal 41,rec[0]
|
1933
2123
|
end
|
1934
2124
|
end
|
1935
2125
|
|
@@ -1937,16 +2127,15 @@ class TestRoo < Test::Unit::TestCase
|
|
1937
2127
|
if EXCEL
|
1938
2128
|
oo = Excel.new(File.join("test","numbers1.xls"))
|
1939
2129
|
oo.default_sheet = oo.sheets.first
|
2130
|
+
oo.header_line = nil
|
1940
2131
|
rec = oo.find 16
|
1941
2132
|
assert rec
|
1942
2133
|
# keine Headerlines in diesem Beispiel definiert
|
1943
|
-
|
1944
|
-
assert_equal "einundvierzig", rec[0]
|
2134
|
+
assert_equal "einundvierzig", rec[0]
|
1945
2135
|
|
1946
|
-
|
1947
|
-
|
1948
|
-
|
1949
|
-
end
|
2136
|
+
rec = oo.find 15
|
2137
|
+
assert rec
|
2138
|
+
assert_equal 41,rec[0]
|
1950
2139
|
end
|
1951
2140
|
end
|
1952
2141
|
|
@@ -1954,16 +2143,15 @@ class TestRoo < Test::Unit::TestCase
|
|
1954
2143
|
if GOOGLE
|
1955
2144
|
oo = Google.new(key_of("numbers1"))
|
1956
2145
|
oo.default_sheet = oo.sheets.first
|
2146
|
+
oo.header_line = nil
|
1957
2147
|
rec = oo.find 16
|
1958
2148
|
assert rec
|
1959
2149
|
# keine Headerlines in diesem Beispiel definiert
|
1960
|
-
|
1961
|
-
assert_equal "einundvierzig", rec[0]
|
2150
|
+
assert_equal "einundvierzig", rec[0]
|
1962
2151
|
|
1963
|
-
|
1964
|
-
|
1965
|
-
|
1966
|
-
end
|
2152
|
+
rec = oo.find 15
|
2153
|
+
assert rec
|
2154
|
+
assert_equal 41,rec[0]
|
1967
2155
|
end
|
1968
2156
|
end
|
1969
2157
|
|
@@ -2347,19 +2535,17 @@ class TestRoo < Test::Unit::TestCase
|
|
2347
2535
|
|
2348
2536
|
def test_simple_spreadsheet_find_by_condition_google
|
2349
2537
|
if GOOGLE
|
2350
|
-
|
2351
|
-
|
2352
|
-
|
2353
|
-
|
2354
|
-
|
2355
|
-
|
2356
|
-
|
2357
|
-
|
2358
|
-
|
2359
|
-
|
2360
|
-
|
2361
|
-
assert_equal "Task 1" , erg[1]['Comment']
|
2362
|
-
end
|
2538
|
+
oo = Google.new(key_of("simple_spreadsheet"))
|
2539
|
+
oo.default_sheet = oo.sheets.first
|
2540
|
+
oo.header_line = 3
|
2541
|
+
erg = oo.find(:all, :conditions => {'Comment' => 'Task 1'})
|
2542
|
+
assert_equal Date.new(2007,05,07), erg[1]['Date']
|
2543
|
+
assert_equal 10.75 , erg[1]['Start time']
|
2544
|
+
assert_equal 12.50 , erg[1]['End time']
|
2545
|
+
assert_equal 0 , erg[1]['Pause']
|
2546
|
+
assert_kind_of Float, erg[1]['Sum']
|
2547
|
+
assert_equal 1.75 , erg[1]['Sum']
|
2548
|
+
assert_equal "Task 1" , erg[1]['Comment']
|
2363
2549
|
end
|
2364
2550
|
end
|
2365
2551
|
|
@@ -2520,11 +2706,11 @@ class TestRoo < Test::Unit::TestCase
|
|
2520
2706
|
}
|
2521
2707
|
end
|
2522
2708
|
if GOOGLE
|
2523
|
-
after Date.new(2008,1
|
2524
|
-
|
2525
|
-
|
2526
|
-
|
2527
|
-
|
2709
|
+
after Date.new(2008,4,1) do
|
2710
|
+
assert_raise(IOError) {
|
2711
|
+
# oo = Google.new(key_of('testnichtvorhanden'+'Bibelbund.ods'))
|
2712
|
+
oo = Google.new('testnichtvorhanden')
|
2713
|
+
}
|
2528
2714
|
end
|
2529
2715
|
end
|
2530
2716
|
end
|
@@ -2551,6 +2737,48 @@ class TestRoo < Test::Unit::TestCase
|
|
2551
2737
|
assert_equal "hello from the tests", oo.cell(1,1)
|
2552
2738
|
end
|
2553
2739
|
end
|
2740
|
+
|
2741
|
+
def test_bug_set_value_with_more_than_one_sheet_google
|
2742
|
+
# write.me: http://spreadsheets.google.com/ccc?key=ptu6bbahNZpY0N0RrxQbWdw&hl=en_GB
|
2743
|
+
if GOOGLE
|
2744
|
+
content1 = 'AAA'
|
2745
|
+
content2 = 'BBB'
|
2746
|
+
oo = Google.new('ptu6bbahNZpY0N0RrxQbWdw')
|
2747
|
+
oo.default_sheet = oo.sheets.first
|
2748
|
+
oo.set_value(1,1,content1)
|
2749
|
+
oo.default_sheet = oo.sheets[1]
|
2750
|
+
oo.set_value(1,1,content2) # in the second sheet
|
2751
|
+
oo.default_sheet = oo.sheets.first
|
2752
|
+
assert_equal content1, oo.cell(1,1)
|
2753
|
+
oo.default_sheet = oo.sheets[1]
|
2754
|
+
assert_equal content2, oo.cell(1,1)
|
2755
|
+
end
|
2756
|
+
end
|
2757
|
+
|
2758
|
+
def test_set_value_with_sheet_argument_google
|
2759
|
+
if GOOGLE
|
2760
|
+
random_row = rand(10)+1
|
2761
|
+
random_column = rand(10)+1
|
2762
|
+
oo = Google.new('ptu6bbahNZpY0N0RrxQbWdw')
|
2763
|
+
oo.default_sheet = oo.sheets.first
|
2764
|
+
content1 = 'ABC'
|
2765
|
+
content2 = 'DEF'
|
2766
|
+
oo.set_value(random_row,random_column,content1,oo.sheets.first)
|
2767
|
+
oo.set_value(random_row,random_column,content2,oo.sheets[1])
|
2768
|
+
assert_equal content1, oo.cell(random_row,random_column,oo.sheets.first)
|
2769
|
+
assert_equal content2, oo.cell(random_row,random_column,oo.sheets[1])
|
2770
|
+
end
|
2771
|
+
end
|
2772
|
+
|
2773
|
+
def test_set_value_for_non_existing_sheet_google
|
2774
|
+
if GOOGLE
|
2775
|
+
oo = Google.new('ptu6bbahNZpY0N0RrxQbWdw')
|
2776
|
+
assert_raise(RangeError) {
|
2777
|
+
#oo.default_sheet = "no_sheet"
|
2778
|
+
oo.set_value(1,1,"dummy","no_sheet")
|
2779
|
+
}
|
2780
|
+
end # GOOGLE
|
2781
|
+
end
|
2554
2782
|
|
2555
2783
|
def test_bug_bbu_openoffice
|
2556
2784
|
oo = Openoffice.new(File.join('test','bbu.ods'))
|
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">0.9.
|
36
|
+
<a href="http://rubyforge.org/projects/roo" class="numbers">0.9.1</a>
|
37
37
|
</div>
|
38
38
|
<h2>What</h2>
|
39
39
|
|
@@ -456,10 +456,7 @@ Only the Openoffice- and Excel-parts of this gem are currently working – t
|
|
456
456
|
<p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people’s code</a> and for section <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups">8b: Submit patch to Google Groups</a>, use the Google Group above.</p>
|
457
457
|
|
458
458
|
|
459
|
-
|
460
|
-
The trunk repository is <code>svn://rubyforge.org/var/svn/gorank/trunk</code> for anonymous access.
|
461
|
-
—></p>
|
462
|
-
|
459
|
+
<strike>The trunk repository is <code>svn://rubyforge.org/var/svn/gorank/trunk</code> for anonymous access.</strike>
|
463
460
|
|
464
461
|
<h2>License</h2>
|
465
462
|
|
@@ -482,7 +479,7 @@ The trunk repository is <code>svn://rubyforge.org/var/svn/gorank/trunk</code> fo
|
|
482
479
|
<li>Dirk Huth fürs Testen unter Windows</li>
|
483
480
|
</ul>
|
484
481
|
<p class="coda">
|
485
|
-
<a href="mailto:
|
482
|
+
<a href="mailto:thopre@gmail.com">Thomas Preymesser</a>, 27th January 2008<br>
|
486
483
|
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
487
484
|
</p>
|
488
485
|
</div>
|
data/website/index.txt
CHANGED
@@ -313,9 +313,7 @@ h2. How to submit patches
|
|
313
313
|
|
314
314
|
Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section "8b: Submit patch to Google Groups":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups, use the Google Group above.
|
315
315
|
|
316
|
-
|
317
|
-
The trunk repository is <code>svn://rubyforge.org/var/svn/gorank/trunk</code> for anonymous access.
|
318
|
-
-->
|
316
|
+
<strike>The trunk repository is <code>svn://rubyforge.org/var/svn/gorank/trunk</code> for anonymous access.</strike>
|
319
317
|
|
320
318
|
h2. License
|
321
319
|
|
data/website/template.rhtml
CHANGED
@@ -37,7 +37,7 @@
|
|
37
37
|
</div>
|
38
38
|
<%= body %>
|
39
39
|
<p class="coda">
|
40
|
-
<a href="mailto:
|
40
|
+
<a href="mailto:thopre@gmail.com">Thomas Preymesser</a>, <%= modified.pretty %><br>
|
41
41
|
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
42
42
|
</p>
|
43
43
|
</div>
|
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: 0.9.
|
4
|
+
version: 0.9.1
|
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: 2008-
|
12
|
+
date: 2008-03-23 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|