diff options
author | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-11-24 14:29:37 +0000 |
---|---|---|
committer | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-11-24 14:29:37 +0000 |
commit | 2bb558f184270515e5fc529b6b077182d8b91d0e (patch) | |
tree | 9271f92f39424b66c628fb95207def59835cbccd | |
parent | f1d6603cb36a388fe373f847f9aed7ff46ab9305 (diff) | |
download | ruby-2bb558f184270515e5fc529b6b077182d8b91d0e.tar.gz ruby-2bb558f184270515e5fc529b6b077182d8b91d0e.tar.xz ruby-2bb558f184270515e5fc529b6b077182d8b91d0e.zip |
* strftime.c (rb_strftime): The # flag should work with %a, %A, %b,
%B, and %h. [ruby-dev:37162]
* test/ruby/test_time.rb (test_strftime): ditto.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@20342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | strftime.c | 16 | ||||
-rw-r--r-- | test/ruby/test_time.rb | 7 |
3 files changed, 30 insertions, 0 deletions
@@ -1,3 +1,10 @@ +Mon Nov 24 23:27:28 2008 Shugo Maeda <shugo@ruby-lang.org> + + * strftime.c (rb_strftime): The # flag should work with %a, %A, %b, + %B, and %h. [ruby-dev:37162] + + * test/ruby/test_time.rb (test_strftime): ditto. + Mon Nov 24 23:16:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org> * signal.c (register_sigaltstack): should not add external diff --git a/strftime.c b/strftime.c index 3a88208b1..d6d1f8bd3 100644 --- a/strftime.c +++ b/strftime.c @@ -318,6 +318,10 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept continue; case 'a': /* abbreviated weekday name */ + if (flags & BIT_OF(CHCASE)) { + flags &= ~(BIT_OF(LOWER)|BIT_OF(CHCASE)); + flags |= BIT_OF(UPPER); + } if (timeptr->tm_wday < 0 || timeptr->tm_wday > 6) i = 1, tp = "?"; else @@ -325,6 +329,10 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept break; case 'A': /* full weekday name */ + if (flags & BIT_OF(CHCASE)) { + flags &= ~(BIT_OF(LOWER)|BIT_OF(CHCASE)); + flags |= BIT_OF(UPPER); + } if (timeptr->tm_wday < 0 || timeptr->tm_wday > 6) i = 1, tp = "?"; else @@ -335,6 +343,10 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept case 'h': /* abbreviated month name */ #endif case 'b': /* abbreviated month name */ + if (flags & BIT_OF(CHCASE)) { + flags &= ~(BIT_OF(LOWER)|BIT_OF(CHCASE)); + flags |= BIT_OF(UPPER); + } if (timeptr->tm_mon < 0 || timeptr->tm_mon > 11) i = 1, tp = "?"; else @@ -342,6 +354,10 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept break; case 'B': /* full month name */ + if (flags & BIT_OF(CHCASE)) { + flags &= ~(BIT_OF(LOWER)|BIT_OF(CHCASE)); + flags |= BIT_OF(UPPER); + } if (timeptr->tm_mon < 0 || timeptr->tm_mon > 11) i = 1, tp = "?"; else diff --git a/test/ruby/test_time.rb b/test/ruby/test_time.rb index 2f37d5787..a1a5bfc7f 100644 --- a/test/ruby/test_time.rb +++ b/test/ruby/test_time.rb @@ -461,5 +461,12 @@ class TestTime < Test::Unit::TestCase assert_equal("\n", T2000.strftime("%1n")) assert_equal(" \n", T2000.strftime("%3n")) assert_equal("00\n", T2000.strftime("%03n")) + + # [ruby-dev:37162] + assert_equal("SAT", T2000.strftime("%#a")) + assert_equal("SATURDAY", T2000.strftime("%#A")) + assert_equal("JAN", T2000.strftime("%#b")) + assert_equal("JANUARY", T2000.strftime("%#B")) + assert_equal("JAN", T2000.strftime("%#h")) end end |