[前][次][番号順一覧][スレッド一覧]

ruby-changes:69763

From: Jean <ko1@a...>
Date: Tue, 16 Nov 2021 23:02:49 +0900 (JST)
Subject: [ruby-changes:69763] a87c56f820 (master): [ruby/date] check_limit: also handle symbols

https://git.ruby-lang.org/ruby.git/commit/?id=a87c56f820

From a87c56f820dac90d50544ad33cc546daa9f29a9a Mon Sep 17 00:00:00 2001
From: Jean Boussier <jean.boussier@g...>
Date: Tue, 16 Nov 2021 14:03:42 +0100
Subject: [ruby/date] check_limit: also handle symbols

https://github.com/ruby/date/commit/376c65942b
---
 ext/date/date_core.c         |  1 +
 test/date/test_date_parse.rb | 24 ++++++++++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/ext/date/date_core.c b/ext/date/date_core.c
index d1d03fe407e..f6579b81e44 100644
--- a/ext/date/date_core.c
+++ b/ext/date/date_core.c
@@ -4343,6 +4343,7 @@ static void https://github.com/ruby/ruby/blob/trunk/ext/date/date_core.c#L4343
 check_limit(VALUE str, VALUE opt)
 {
     if (NIL_P(str)) return;
+    if (SYMBOL_P(str)) str = rb_sym2str(str);
 
     StringValue(str);
     size_t slen = RSTRING_LEN(str);
diff --git a/test/date/test_date_parse.rb b/test/date/test_date_parse.rb
index 1217ee8be68..34a672b069c 100644
--- a/test/date/test_date_parse.rb
+++ b/test/date/test_date_parse.rb
@@ -851,6 +851,10 @@ class TestDateParse < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/date/test_date_parse.rb#L851
 
     h = Date._iso8601(nil)
     assert_equal({}, h)
+
+    h = Date._iso8601('01-02-03T04:05:06Z'.to_sym)
+    assert_equal([2001, 2, 3, 4, 5, 6, 0],
+      h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
   end
 
   def test__rfc3339
@@ -869,6 +873,10 @@ class TestDateParse < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/date/test_date_parse.rb#L873
 
     h = Date._rfc3339(nil)
     assert_equal({}, h)
+
+    h = Date._rfc3339('2001-02-03T04:05:06Z'.to_sym)
+    assert_equal([2001, 2, 3, 4, 5, 6, 0],
+      h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
   end
 
   def test__xmlschema
@@ -954,6 +962,10 @@ class TestDateParse < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/date/test_date_parse.rb#L962
 
     h = Date._xmlschema(nil)
     assert_equal({}, h)
+
+    h = Date._xmlschema('2001-02-03'.to_sym)
+    assert_equal([2001, 2, 3, nil, nil, nil, nil],
+      h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
   end
 
   def test__rfc2822
@@ -989,6 +1001,10 @@ class TestDateParse < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/date/test_date_parse.rb#L1001
 
     h = Date._rfc2822(nil)
     assert_equal({}, h)
+
+    h = Date._rfc2822('Sat, 3 Feb 2001 04:05:06 UT'.to_sym)
+    assert_equal([2001, 2, 3, 4, 5, 6, 0],
+      h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
   end
 
   def test__httpdate
@@ -1012,6 +1028,10 @@ class TestDateParse < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/date/test_date_parse.rb#L1028
 
     h = Date._httpdate(nil)
     assert_equal({}, h)
+
+    h = Date._httpdate('Sat, 03 Feb 2001 04:05:06 GMT'.to_sym)
+    assert_equal([2001, 2, 3, 4, 5, 6, 0],
+      h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
   end
 
   def test__jisx0301
@@ -1091,6 +1111,10 @@ class TestDateParse < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/date/test_date_parse.rb#L1111
 
     h = Date._jisx0301(nil)
     assert_equal({}, h)
+
+    h = Date._jisx0301('H13.02.03T04:05:06.07+0100'.to_sym)
+    assert_equal([2001, 2, 3, 4, 5, 6, 3600],
+      h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
   end
 
   def test_iso8601
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]