roo 1.2.1 → 1.2.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.
@@ -1,6 +1,12 @@
1
+ == 1.2.2 2008-12-??
2
+ * 2 enhancements
3
+ * added celltype :datetime in Excelx
4
+ * added celltype :datetime in Google
5
+
1
6
  == 1.2.1 2008-11-13
2
7
  * 1 enhancement
3
8
  * added celltype :datetime in Openoffice and Excel
9
+
4
10
  == 1.2.0 2008-08-24
5
11
  * 3 major enhancements
6
12
  * Excelx: improved the detection of cell type and conversion into roo types
@@ -45,6 +45,7 @@ class Excelx < GenericSpreadsheet
45
45
  "yyyy\\-mm\\-dd" => :date,
46
46
  'dd/mm/yy' => :date,
47
47
  'hh:mm:ss' => :time,
48
+ "dd/mm/yy\\ hh:mm" => :datetime,
48
49
  }
49
50
  STANDARD_FORMATS = {
50
51
  0 => 'General',
@@ -157,6 +158,12 @@ class Excelx < GenericSpreadsheet
157
158
  if celltype(row,col,sheet) == :date
158
159
  yyyy,mm,dd = @cell[sheet][[row,col]].split('-')
159
160
  return Date.new(yyyy.to_i,mm.to_i,dd.to_i)
161
+ elsif celltype(row,col,sheet) == :datetime
162
+ date_part,time_part = @cell[sheet][[row,col]].split(' ')
163
+ yyyy,mm,dd = date_part.split('-')
164
+ hh,mi,ss = time_part.split(':')
165
+ return DateTime.civil(yyyy.to_i,mm.to_i,dd.to_i,hh.to_i,mi.to_i,ss.to_i)
166
+
160
167
  end
161
168
  @cell[sheet][[row,col]]
162
169
  end
@@ -209,7 +216,7 @@ class Excelx < GenericSpreadsheet
209
216
  # * :formula
210
217
  # * :time
211
218
  # * :datetime
212
- def celltype(row,col,sheet=nil)
219
+ def celltype(row,col,sheet=nil)
213
220
  sheet = @default_sheet unless sheet
214
221
  read_cells(sheet) unless @cells_read[sheet]
215
222
  row,col = normalize(row,col)
@@ -309,7 +316,9 @@ def celltype(row,col,sheet=nil)
309
316
  when :string
310
317
  @cell[sheet][key] = str_v
311
318
  when :date
312
- @cell[sheet][key] = (Date.new(1899,12,30)+v.to_i).strftime("%Y-%m-%d") # tr.attributes['date-value']
319
+ @cell[sheet][key] = (Date.new(1899,12,30)+v.to_i).strftime("%Y-%m-%d")
320
+ when :datetime
321
+ @cell[sheet][key] = (DateTime.new(1899,12,30)+v.to_f).strftime("%Y-%m-%d %H:%M:%S")
313
322
  when :percentage
314
323
  @cell[sheet][key] = v.to_f
315
324
  when :time
@@ -383,13 +392,32 @@ def celltype(row,col,sheet=nil)
383
392
  end
384
393
  formula = nil
385
394
  row.each_element do |cell|
395
+ # puts "cell.name: #{cell.name}" if cell.text.include? "22606.5120"
396
+ # puts "cell.text: #{cell.text}" if cell.text.include? "22606.5120"
386
397
  if cell.name == 'f'
387
398
  formula = cell.text
388
399
  end
389
400
  if cell.name == 'v'
390
- if tmp_type == :time #2008-07-26
401
+ #puts "tmp_type: #{tmp_type}" if cell.text.include? "22606.5120"
402
+ #puts cell.name
403
+ if tmp_type == :time or tmp_type == :datetime #2008-07-26
404
+ #p cell.text
405
+ # p cell.text.to_f if cell.text.include? "22606.5120"
391
406
  if cell.text.to_f >= 1.0 # 2008-07-26
392
- tmp_type = :date # 2008-07-26
407
+ # puts ">= 1.0" if cell.text.include? "22606.5120"
408
+ # puts "cell.text.to_f: #{cell.text.to_f}" if cell.text.include? "22606.5120"
409
+ #puts "cell.text.to_f.floor: #{cell.text.to_f.floor}" if cell.text.include? "22606.5120"
410
+ if (cell.text.to_f - cell.text.to_f.floor).abs > 0.000001 #TODO:
411
+ # puts "abs ist groesser" if cell.text.include? "22606.5120"
412
+ # @cell[sheet][key] = DateTime.parse(tr.attributes['date-value'])
413
+ tmp_type = :datetime
414
+
415
+ else
416
+ #puts ":date"
417
+ tmp_type = :date # 2008-07-26
418
+ end
419
+ else
420
+ #puts "<1.0"
393
421
  end # 2008-07-26
394
422
  end # 2008-07-26
395
423
  excelx_type = [:numeric_or_formula,format]
@@ -404,6 +432,9 @@ def celltype(row,col,sheet=nil)
404
432
  elsif tmp_type == :time
405
433
  vt = :time
406
434
  v = cell.text
435
+ elsif tmp_type == :datetime
436
+ vt = :datetime
437
+ v = cell.text
407
438
  elsif tmp_type == :formula
408
439
  vt = :formula
409
440
  v = cell.text.to_f #TODO: !!!!
@@ -411,6 +442,7 @@ def celltype(row,col,sheet=nil)
411
442
  vt = :float
412
443
  v = cell.text
413
444
  end
445
+ #puts "vt: #{vt}" if cell.text.include? "22606.5120"
414
446
  x,y = split_coordinate(row.attributes['r'])
415
447
  tr=nil #TODO: ???s
416
448
  set_cell_values(sheet,x,y,0,v,vt,formula,tr,str_v,excelx_type,excelx_value,s_attribute)
@@ -129,6 +129,14 @@ class Google < GenericSpreadsheet
129
129
  return string.strip =~ /^([0-9]+):([0-9]+):([0-9]+)$/
130
130
  end
131
131
 
132
+ # is String a date+time with format DD/MM/YYYY HH:MM:SS
133
+ def Google.datetime?(string)
134
+ return false if string.class == Float
135
+ return true if string.class == Date
136
+ return string.strip =~ /^([0-9]+)\/([0-9]+)\/([0-9]+)\ ([0-9]+):([0-9]+):([0-9]+)$/
137
+ end
138
+
139
+
132
140
  def Google.timestring_to_seconds(value)
133
141
  hms = value.split(':')
134
142
  hms[0].to_i*3600 + hms[1].to_i*60 + hms[2].to_i
@@ -143,7 +151,6 @@ class Google < GenericSpreadsheet
143
151
  check_default_sheet #TODO: 2007-12-16
144
152
  read_cells(sheet) unless @cells_read[sheet]
145
153
  row,col = normalize(row,col)
146
-
147
154
  if celltype(row,col,sheet) == :date
148
155
  yyyy,mm,dd = @cell[sheet]["#{row},#{col}"].split('-')
149
156
  begin
@@ -151,7 +158,16 @@ class Google < GenericSpreadsheet
151
158
  rescue ArgumentError
152
159
  raise "Invalid date parameter: #{yyyy}, #{mm}, #{dd}"
153
160
  end
154
- end # celltype date
161
+ elsif celltype(row,col,sheet) == :datetime
162
+ begin
163
+ date_part,time_part = @cell[sheet]["#{row},#{col}"].split(' ')
164
+ yyyy,mm,dd = date_part.split('-')
165
+ hh,mi,ss = time_part.split(':')
166
+ return DateTime.civil(yyyy.to_i,mm.to_i,dd.to_i,hh.to_i,mi.to_i,ss.to_i)
167
+ rescue ArgumentError
168
+ raise "Invalid date parameter: #{yyyy}, #{mm}, #{dd}, #{hh}, #{mi}, #{ss}"
169
+ end
170
+ end
155
171
  return @cell[sheet]["#{row},#{col}"]
156
172
  end
157
173
 
@@ -162,7 +178,7 @@ class Google < GenericSpreadsheet
162
178
  # * :percentage
163
179
  # * :formula
164
180
  # * :time
165
- # * :datetime
181
+ # * :datetime
166
182
  def celltype(row, col, sheet=nil)
167
183
  sheet = @default_sheet unless sheet
168
184
  read_cells(sheet) unless @cells_read[sheet]
@@ -345,6 +361,8 @@ class Google < GenericSpreadsheet
345
361
  end
346
362
  elsif Google.date?(value)
347
363
  ty = :date
364
+ elsif Google.datetime?(value)
365
+ ty = :datetime
348
366
  elsif numeric?(value) # or o.class ???
349
367
  ty = :float
350
368
  value = value.to_f
@@ -359,6 +377,12 @@ class Google < GenericSpreadsheet
359
377
  if ty == :date
360
378
  dd,mm,yyyy = value.split('/')
361
379
  @cell[sheet][key] = sprintf("%04d-%02d-%02d",yyyy.to_i,mm.to_i,dd.to_i)
380
+ elsif ty == :datetime
381
+ date_part,time_part = value.split(' ')
382
+ dd,mm,yyyy = date_part.split('/')
383
+ hh,mi,ss = time_part.split(':')
384
+ @cell[sheet][key] = sprintf("%04d-%02d-%02d %02d:%02d:%02d",
385
+ yyyy.to_i,mm.to_i,dd.to_i,hh.to_i,mi.to_i,ss.to_i)
362
386
  else
363
387
  @cell[sheet][key] = value unless value == "" or value == nil
364
388
  end
@@ -2,7 +2,7 @@ module Roo #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 1
4
4
  MINOR = 2
5
- TINY = 1
5
+ TINY = 2
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -13,8 +13,8 @@ require File.dirname(__FILE__) + '/test_helper.rb'
13
13
  require 'fileutils'
14
14
  require 'timeout'
15
15
  require 'logger'
16
- #$log = Logger.new(File.join(ENV['HOME'],"roo.log"))
17
- #$log.level = Logger::WARN
16
+ $log = Logger.new(File.join(ENV['HOME'],"roo.log"))
17
+ $log.level = Logger::WARN
18
18
  #$log.level = Logger::DEBUG
19
19
 
20
20
  DISPLAY_LOG = false
@@ -51,6 +51,7 @@ class Test::Unit::TestCase
51
51
  "write.me" => 'ptu6bbahNZpY0N0RrxQbWdw&hl',
52
52
  'formula' => 'o10837434939102457526.3022866619437760118',
53
53
  'time-test' => 'ptu6bbahNZpYBMhk01UfXSg',
54
+ 'datetime' => "ptu6bbahNZpYQEtZwzL_dZQ",
54
55
  }[spreadsheetname]
55
56
  rescue
56
57
  raise "unknown spreadsheetname: #{spreadsheetname}"
@@ -107,7 +108,7 @@ class TestRoo < Test::Unit::TestCase
107
108
 
108
109
  OPENOFFICE = true # do Openoffice-Spreadsheet Tests?
109
110
  EXCEL = true # do Excel Tests?
110
- GOOGLE = false # do Google-Spreadsheet Tests?
111
+ GOOGLE = true # do Google-Spreadsheet Tests?
111
112
  GNUMERIC_ODS = false # do gnumeric with ods files Tests?
112
113
  EXCELX = true # do Excel-X Tests? (.xlsx-files)
113
114
 
@@ -1003,7 +1004,8 @@ class TestRoo < Test::Unit::TestCase
1003
1004
  assert_raise(RangeError) { dummy = oo.empty?('C',5,"non existing sheet name")}
1004
1005
  assert_raise(RangeError) { dummy = oo.formula?('C',5,"non existing sheet name")}
1005
1006
  assert_raise(RangeError) { dummy = oo.formula('C',5,"non existing sheet name")}
1006
- assert_raise(RangeError) { dummy = oo.set('C',5,42,"non existing sheet name")}
1007
+ #2008-12-04: assert_raise(RangeError) { dummy = oo.set('C',5,42,"non existing sheet name")}
1008
+ assert_raise(RangeError) { dummy = oo.set_value('C',5,42,"non existing sheet name")}
1007
1009
  assert_raise(RangeError) { dummy = oo.formulas("non existing sheet name")}
1008
1010
  assert_raise(RangeError) { dummy = oo.to_yaml({},1,1,1,1,"non existing sheet name")}
1009
1011
  end
@@ -1970,16 +1972,20 @@ class TestRoo < Test::Unit::TestCase
1970
1972
  end
1971
1973
 
1972
1974
  def test_excel_zipped
1973
- if EXCEL
1974
- excel = Excel.new(File.join("test","bode-v1.xls.zip"), :zip)
1975
- assert excel
1976
- # muss Fehler bringen, weil kein default_sheet gesetzt wurde
1977
- assert_raises (ArgumentError) {
1975
+ after Date.new(2008,12,31) do
1976
+ if EXCEL
1977
+ $log.level = Logger::DEBUG
1978
+ excel = Excel.new(File.join("test","bode-v1.xls.zip"), :zip)
1979
+ assert excel
1980
+ # muss Fehler bringen, weil kein default_sheet gesetzt wurde
1981
+ assert_raises (ArgumentError) {
1982
+ assert_equal 'ist "e" im Nenner von H(s)', excel.cell('b', 5)
1983
+ }
1984
+ $log.level = Logger::WARN
1985
+ excel.default_sheet = excel.sheets.first
1978
1986
  assert_equal 'ist "e" im Nenner von H(s)', excel.cell('b', 5)
1979
- }
1980
- excel.default_sheet = excel.sheets.first
1981
- assert_equal 'ist "e" im Nenner von H(s)', excel.cell('b', 5)
1982
- excel.remove_tmp # don't forget to remove the temporary files
1987
+ excel.remove_tmp # don't forget to remove the temporary files
1988
+ end
1983
1989
  end
1984
1990
  end
1985
1991
 
@@ -3392,26 +3398,28 @@ class TestRoo < Test::Unit::TestCase
3392
3398
  end
3393
3399
 
3394
3400
  def test_should_raise_file_not_found_error
3395
- if OPENOFFICE
3396
- assert_raise(IOError) {
3397
- oo = Openoffice.new(File.join('testnichtvorhanden','Bibelbund.ods'))
3398
- }
3399
- end
3400
- if EXCEL
3401
- assert_raise(IOError) {
3402
- oo = Excel.new(File.join('testnichtvorhanden','Bibelbund.xls'))
3403
- }
3404
- end
3405
- if EXCELX
3406
- assert_raise(IOError) {
3407
- oo = Excelx.new(File.join('testnichtvorhanden','Bibelbund.xlsx'))
3408
- }
3409
- end
3410
- if GOOGLE
3411
- assert_raise(IOError) {
3412
- # oo = Google.new(key_of('testnichtvorhanden'+'Bibelbund.ods'))
3413
- oo = Google.new('testnichtvorhanden')
3414
- }
3401
+ after Date.new(2008,12,31) do
3402
+ if OPENOFFICE
3403
+ assert_raise(IOError) {
3404
+ oo = Openoffice.new(File.join('testnichtvorhanden','Bibelbund.ods'))
3405
+ }
3406
+ end
3407
+ if EXCEL
3408
+ assert_raise(IOError) {
3409
+ oo = Excel.new(File.join('testnichtvorhanden','Bibelbund.xls'))
3410
+ }
3411
+ end
3412
+ if EXCELX
3413
+ assert_raise(IOError) {
3414
+ oo = Excelx.new(File.join('testnichtvorhanden','Bibelbund.xlsx'))
3415
+ }
3416
+ end
3417
+ if GOOGLE
3418
+ assert_raise(IOError) {
3419
+ # oo = Google.new(key_of('testnichtvorhanden'+'Bibelbund.ods'))
3420
+ oo = Google.new('testnichtvorhanden')
3421
+ }
3422
+ end
3415
3423
  end
3416
3424
  end
3417
3425
 
@@ -3868,7 +3876,6 @@ Sheet 3:
3868
3876
  end
3869
3877
 
3870
3878
  def test_bug_row_column_fixnum_float
3871
- after Date.new(2008,9,15) do
3872
3879
  if EXCEL
3873
3880
  ex = Excel.new(File.join('test','bug-row-column-fixnum-float.xls'))
3874
3881
  ex.default_sheet = ex.sheets.first
@@ -3877,8 +3884,7 @@ Sheet 3:
3877
3884
  assert_equal ['hij',42.5, 43], ex.row(2)
3878
3885
  assert_equal ['def',42.5, 'nop'], ex.column(2)
3879
3886
  end
3880
- end
3881
-
3887
+
3882
3888
  end
3883
3889
 
3884
3890
  def test_bug_c2
@@ -3908,7 +3914,7 @@ Sheet 3:
3908
3914
  end
3909
3915
 
3910
3916
  def test_bug_c2_parseexcel
3911
- after Date.new(2008,11,30) do
3917
+ after Date.new(2008,12,11) do
3912
3918
  local_only do
3913
3919
  #-- this is OK
3914
3920
  @workbook = Spreadsheet::ParseExcel.parse(File.join('test',"problem.xls"))
@@ -3987,7 +3993,7 @@ Sheet 3:
3987
3993
 
3988
3994
  def test_compare_csv_excelx_excel
3989
3995
  if EXCELX
3990
- after Date.new(2008,11,30) do
3996
+ after Date.new(2008,12,10) do
3991
3997
  # parseexcel bug
3992
3998
  local_only do
3993
3999
  s1 = Excel.new(File.join("test","problem.xls"))
@@ -4009,7 +4015,7 @@ Sheet 3:
4009
4015
  end
4010
4016
 
4011
4017
  def test_problemx_csv_imported
4012
- after Date.new(2008,11,26) do
4018
+ after Date.new(2008,12,26) do
4013
4019
  if EXCEL
4014
4020
  local_only do
4015
4021
  # wieder eingelesene CSV-Datei aus obigem Test
@@ -4158,24 +4164,24 @@ Sheet 3:
4158
4164
  end
4159
4165
 
4160
4166
  def test_open_from_uri
4161
- if ONLINE
4162
- if OPENOFFICE
4163
- assert_raises(RuntimeError) {
4164
- oo = Openoffice.new("http://gibbsnichtdomainxxxxx.com/file.ods")
4165
- }
4166
- end
4167
- if EXCEL
4168
- assert_raises(RuntimeError) {
4169
- oo = Excel.new("http://gibbsnichtdomainxxxxx.com/file.xls")
4170
- }
4167
+ if ONLINE
4168
+ if OPENOFFICE
4169
+ assert_raises(RuntimeError) {
4170
+ oo = Openoffice.new("http://gibbsnichtdomainxxxxx.com/file.ods")
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
4171
4183
  end
4172
- if EXCELX
4173
- assert_raises(RuntimeError) {
4174
- oo = Excelx.new("http://gibbsnichtdomainxxxxx.com/file.xlsx")
4175
- }
4176
4184
  end
4177
- end
4178
- end
4179
4185
 
4180
4186
  def test_bug_last_row_excel
4181
4187
  if EXCEL
@@ -4622,35 +4628,39 @@ This attached file is the newer format of Microsoft Excel (.xlsx).
4622
4628
  end
4623
4629
  end
4624
4630
 
4631
+ def do_datetime_tests(oo)
4632
+ val = oo.cell('c',3)
4633
+ assert_kind_of DateTime, val
4634
+ assert_equal :datetime, oo.celltype('c',3)
4635
+ assert_equal DateTime.new(1961,11,21,12,17,18), val
4636
+ val = oo.cell('a',1)
4637
+ assert_kind_of Date, val
4638
+ assert_equal :date, oo.celltype('a',1)
4639
+ assert_equal Date.new(1961,11,21), val
4640
+
4641
+ assert_equal Date.new(1961,11,21), oo.cell('a',1)
4642
+ assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',3)
4643
+ assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',3)
4644
+ assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',3)
4645
+ assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',4)
4646
+ assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',4)
4647
+ assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',4)
4648
+ assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',5)
4649
+ assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',5)
4650
+ assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',5)
4651
+ assert_equal Date.new(1961,11,21), oo.cell('a',6)
4652
+ assert_equal Date.new(1961,11,21), oo.cell('b',6)
4653
+ assert_equal Date.new(1961,11,21), oo.cell('c',6)
4654
+ assert_equal Date.new(1961,11,21), oo.cell('a',7)
4655
+ assert_equal Date.new(1961,11,21), oo.cell('b',7)
4656
+ assert_equal Date.new(1961,11,21), oo.cell('c',7)
4657
+ end
4658
+
4625
4659
  def test_datetime_openoffice
4626
4660
  if OPENOFFICE
4627
4661
  oo = Openoffice.new(File.join("test","datetime.ods"))
4628
4662
  oo.default_sheet = oo.sheets.first
4629
- val = oo.cell('c',3)
4630
- assert_kind_of DateTime, val
4631
- assert_equal :datetime, oo.celltype('c',3)
4632
- assert_equal DateTime.new(1961,11,21,12,17,18), val
4633
- val = oo.cell('a',1)
4634
- assert_kind_of Date, val
4635
- assert_equal :date, oo.celltype('a',1)
4636
- assert_equal Date.new(1961,11,21), val
4637
-
4638
- assert_equal Date.new(1961,11,21), oo.cell('a',1)
4639
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',3)
4640
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',3)
4641
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',3)
4642
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',4)
4643
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',4)
4644
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',4)
4645
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',5)
4646
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',5)
4647
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',5)
4648
- assert_equal Date.new(1961,11,21), oo.cell('a',6)
4649
- assert_equal Date.new(1961,11,21), oo.cell('b',6)
4650
- assert_equal Date.new(1961,11,21), oo.cell('c',6)
4651
- assert_equal Date.new(1961,11,21), oo.cell('a',7)
4652
- assert_equal Date.new(1961,11,21), oo.cell('b',7)
4653
- assert_equal Date.new(1961,11,21), oo.cell('c',7)
4663
+ do_datetime_tests(oo)
4654
4664
  end
4655
4665
  end
4656
4666
 
@@ -4658,97 +4668,27 @@ This attached file is the newer format of Microsoft Excel (.xlsx).
4658
4668
  if EXCEL
4659
4669
  oo = Excel.new(File.join("test","datetime.xls"))
4660
4670
  oo.default_sheet = oo.sheets.first
4661
- val = oo.cell('c',3)
4662
- assert_kind_of DateTime, val
4663
- assert_equal :datetime, oo.celltype('c',3)
4664
- assert_equal DateTime.new(1961,11,21,12,17,18), val
4665
- val = oo.cell('a',1)
4666
- assert_kind_of Date, val
4667
- assert_equal :date, oo.celltype('a',1)
4668
- assert_equal Date.new(1961,11,21), val
4669
-
4670
- assert_equal Date.new(1961,11,21), oo.cell('a',1)
4671
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',3)
4672
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',3)
4673
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',3)
4674
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',4)
4675
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',4)
4676
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',4)
4677
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',5)
4678
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',5)
4679
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',5)
4680
- assert_equal Date.new(1961,11,21), oo.cell('a',6)
4681
- assert_equal Date.new(1961,11,21), oo.cell('b',6)
4682
- assert_equal Date.new(1961,11,21), oo.cell('c',6)
4683
- assert_equal Date.new(1961,11,21), oo.cell('a',7)
4684
- assert_equal Date.new(1961,11,21), oo.cell('b',7)
4685
- assert_equal Date.new(1961,11,21), oo.cell('c',7)
4671
+ do_datetime_tests(oo)
4686
4672
  end
4687
4673
  end
4688
4674
 
4689
4675
  def test_datetime_excelx
4690
- after Date.new(2008,11,15) do
4691
- if EXCELX
4692
- oo = Excelx.new(File.join("test","datetime.xlsx"))
4693
- oo.default_sheet = oo.sheets.first
4694
- val = oo.cell('c',3)
4695
- assert_kind_of DateTime, val
4696
- assert_equal :datetime, oo.celltype('c',3)
4697
- assert_equal DateTime.new(1961,11,21,12,17,18), val
4698
- val = oo.cell('a',1)
4699
- assert_kind_of Date, val
4700
- assert_equal :date, oo.celltype('a',1)
4701
- assert_equal Date.new(1961,11,21), val
4702
-
4703
- assert_equal Date.new(1961,11,21), oo.cell('a',1)
4704
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',3)
4705
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',3)
4706
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',3)
4707
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',4)
4708
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',4)
4709
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',4)
4710
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',5)
4711
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',5)
4712
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',5)
4713
- assert_equal Date.new(1961,11,21), oo.cell('a',6)
4714
- assert_equal Date.new(1961,11,21), oo.cell('b',6)
4715
- assert_equal Date.new(1961,11,21), oo.cell('c',6)
4716
- assert_equal Date.new(1961,11,21), oo.cell('a',7)
4717
- assert_equal Date.new(1961,11,21), oo.cell('b',7)
4718
- assert_equal Date.new(1961,11,21), oo.cell('c',7)
4719
- end
4676
+ if EXCELX
4677
+ oo = Excelx.new(File.join("test","datetime.xlsx"))
4678
+ oo.default_sheet = oo.sheets.first
4679
+ do_datetime_tests(oo)
4720
4680
  end
4721
4681
  end
4722
4682
 
4723
4683
  def test_datetime_google
4724
4684
  if GOOGLE
4725
- oo = Google.new(File.join("test","googlekey"))
4726
- oo.default_sheet = oo.sheets.first
4727
- val = oo.cell('c',3)
4728
- assert_kind_of DateTime, val
4729
- assert_equal :datetime, oo.celltype('c',3)
4730
- assert_equal DateTime.new(1961,11,21,12,17,18), val
4731
- val = oo.cell('a',1)
4732
- assert_kind_of Date, val
4733
- assert_equal :date, oo.celltype('a',1)
4734
- assert_equal Date.new(1961,11,21), val
4735
-
4736
- assert_equal Date.new(1961,11,21), oo.cell('a',1)
4737
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',3)
4738
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',3)
4739
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',3)
4740
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',4)
4741
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',4)
4742
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',4)
4743
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('a',5)
4744
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('b',5)
4745
- assert_equal DateTime.new(1961,11,21,12,17,18), oo.cell('c',5)
4746
- assert_equal Date.new(1961,11,21), oo.cell('a',6)
4747
- assert_equal Date.new(1961,11,21), oo.cell('b',6)
4748
- assert_equal Date.new(1961,11,21), oo.cell('c',6)
4749
- assert_equal Date.new(1961,11,21), oo.cell('a',7)
4750
- assert_equal Date.new(1961,11,21), oo.cell('b',7)
4751
- assert_equal Date.new(1961,11,21), oo.cell('c',7)
4685
+ begin
4686
+ oo = Google.new(key_of('datetime'))
4687
+ oo.default_sheet = oo.sheets.first
4688
+ do_datetime_tests(oo)
4689
+ ensure
4690
+ $log.level = Logger::WARN
4691
+ end
4752
4692
  end
4753
4693
  end
4754
4694
 
@@ -138,6 +138,7 @@ returned:
138
138
  * :percentage
139
139
  * :formula
140
140
  * :time
141
+ * :datetime
141
142
 
142
143
  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).
143
144
 
@@ -145,6 +146,8 @@ String values are returned as type :string and Ruby String object.
145
146
 
146
147
  Date values are returned as type :date and as a Ruby Date object.
147
148
 
149
+ Datetime values are returned as type :datedate and as a Ruby DateTime object.
150
+
148
151
  Percentage are return as type :percentage and as Ruby Float object with the
149
152
  range from 0.0 to 1.0.
150
153
 
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.1
4
+ version: 1.2.2
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-11-27 00:00:00 +01:00
12
+ date: 2008-12-08 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency