mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* ext/psych/lib/psych/scalar_scanner.rb: fix parsing timezone's whose
whose format is (+/-)hhmm. Thanks Gonçalo Silva! * test/psych/test_scalar_scanner.rb: test for bug. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
ba1de001b1
commit
2695d032e3
3 changed files with 19 additions and 13 deletions
|
@ -1,3 +1,10 @@
|
|||
Sat Feb 26 07:10:05 2011 Aaron Patterson <aaron@tenderlovemaking.com>
|
||||
|
||||
* ext/psych/lib/psych/scalar_scanner.rb: fix parsing timezone's whose
|
||||
whose format is (+/-)hhmm. Thanks Gonçalo Silva!
|
||||
|
||||
* test/psych/test_scalar_scanner.rb: test for bug.
|
||||
|
||||
Thu Feb 24 23:02:55 2011 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* ext/openssl/ossl_hmac.c: parenthesize macro arguments.
|
||||
|
|
|
@ -90,7 +90,7 @@ module Psych
|
|||
return time if 'Z' == md[3]
|
||||
return Time.at(time.to_i, us) unless md[3]
|
||||
|
||||
tz = md[3].split(':').map { |digit| Integer(digit, 10) }
|
||||
tz = md[3].match(/^([+\-]?\d{1,2})\:?(\d{1,2})?$/)[1..-1].compact.map { |digit| Integer(digit, 10) }
|
||||
offset = tz.first * 3600
|
||||
|
||||
if offset < 0
|
||||
|
|
|
@ -2,18 +2,6 @@ require_relative 'helper'
|
|||
|
||||
module Psych
|
||||
class TestScalarScanner < TestCase
|
||||
def test_scan_time
|
||||
[ '2001-12-15T02:59:43.1Z',
|
||||
'2001-12-14t21:59:43.10-05:00',
|
||||
'2001-12-14 21:59:43.10 -5',
|
||||
'2010-01-06 00:00:00 -08:00',
|
||||
'2001-12-15 2:59:43.10',
|
||||
].each do |time|
|
||||
ss = Psych::ScalarScanner.new
|
||||
assert_instance_of Time, ss.tokenize(time)
|
||||
end
|
||||
end
|
||||
|
||||
attr_reader :ss
|
||||
|
||||
def setup
|
||||
|
@ -21,6 +9,17 @@ module Psych
|
|||
@ss = Psych::ScalarScanner.new
|
||||
end
|
||||
|
||||
def test_scan_time
|
||||
{ '2001-12-15T02:59:43.1Z' => Time.utc(2001, 12, 15, 02, 59, 43, 100000),
|
||||
'2001-12-14t21:59:43.10-05:00' => Time.utc(2001, 12, 15, 02, 59, 43, 100000),
|
||||
'2001-12-14 21:59:43.10 -5' => Time.utc(2001, 12, 15, 02, 59, 43, 100000),
|
||||
'2001-12-15 2:59:43.10' => Time.utc(2001, 12, 15, 02, 59, 43, 100000),
|
||||
'2011-02-24 11:17:06 -0800' => Time.utc(2011, 02, 24, 19, 17, 06)
|
||||
}.each do |time_str, time|
|
||||
assert_equal time, @ss.tokenize(time_str)
|
||||
end
|
||||
end
|
||||
|
||||
def test_scan_date
|
||||
date = '1980-12-16'
|
||||
token = @ss.tokenize date
|
||||
|
|
Loading…
Reference in a new issue