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

ruby-changes:8866

From: yugui <ko1@a...>
Date: Sun, 30 Nov 2008 18:23:28 +0900 (JST)
Subject: [ruby-changes:8866] Ruby:r20403 (ruby_1_9_1): merges r20340 from trunk into ruby_1_9_1.

yugui	2008-11-30 18:21:57 +0900 (Sun, 30 Nov 2008)

  New Revision: 20403

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=20403

  Log:
    merges r20340 from trunk into ruby_1_9_1.
    * strftime.c (rb_strftime): A width specifier for %t and %n should
      work.  [ruby-dev:37160]
    * test/ruby/test_time.rb (test_strftime): ditto.

  Modified files:
    branches/ruby_1_9_1/ChangeLog
    branches/ruby_1_9_1/strftime.c
    branches/ruby_1_9_1/test/ruby/test_time.rb

Index: ruby_1_9_1/ChangeLog
===================================================================
--- ruby_1_9_1/ChangeLog	(revision 20402)
+++ ruby_1_9_1/ChangeLog	(revision 20403)
@@ -1,3 +1,8 @@
+Mon Nov 24 22:57:25 2008  Shugo Maeda  <shugo@r...>
+
+	* strftime.c (rb_strftime): A width specifier for %t and %n should
+	  work.  [ruby-dev:37160]
+
 Mon Nov 24 22:07:07 2008  Shugo Maeda  <shugo@r...>
 
 	* strftime.c (rb_strftime): The precision of %0N should be 9.
Index: ruby_1_9_1/strftime.c
===================================================================
--- ruby_1_9_1/strftime.c	(revision 20402)
+++ ruby_1_9_1/strftime.c	(revision 20403)
@@ -270,6 +270,16 @@
 				goto unknown; \
 		} while (0)
 #define NEEDS(n) do if (s + (n) >= endp - 1) goto err; while (0)
+#define FILL_PADDING(i) do { \
+	if (!(flags & BIT_OF(LEFT)) && precision > i) { \
+		NEEDS(precision); \
+		memset(s, padding ? padding : ' ', precision - i); \
+		s += precision - i; \
+	} \
+	else { \
+		NEEDS(i); \
+	} \
+} while (0);
 #define FMT(def_pad, def_prec, fmt, val) \
 		do { \
 			int l; \
@@ -540,12 +550,12 @@
 
 #ifdef SYSV_EXT
 		case 'n':	/* same as \n */
-			NEEDS(1);
+			FILL_PADDING(1);
 			*s++ = '\n';
 			continue;
 
 		case 't':	/* same as \t */
-			NEEDS(1);
+			FILL_PADDING(1);
 			*s++ = '\t';
 			continue;
 
@@ -741,14 +751,7 @@
 			break;
 		}
 		if (i) {
-			if (!(flags & BIT_OF(LEFT)) && precision > i) {
-				NEEDS(precision);
-				memset(s, padding ? padding : ' ', precision - i);
-				s += precision - i;
-			}
-			else {
-				NEEDS(i);
-			}
+			FILL_PADDING(i);
 			memcpy(s, tp, i);
 			switch (flags & (BIT_OF(UPPER)|BIT_OF(LOWER))) {
 			case BIT_OF(UPPER):
Index: ruby_1_9_1/test/ruby/test_time.rb
===================================================================
--- ruby_1_9_1/test/ruby/test_time.rb	(revision 20402)
+++ ruby_1_9_1/test/ruby/test_time.rb	(revision 20403)
@@ -449,5 +449,17 @@
     t = Time.mktime(1970, 1, 18)
     assert_equal("0", t.strftime("%w"))
     assert_equal("7", t.strftime("%u"))
+
+    # [ruby-dev:37160]
+    assert_equal("\t", T2000.strftime("%t"))
+    assert_equal("\t", T2000.strftime("%0t"))
+    assert_equal("\t", T2000.strftime("%1t"))
+    assert_equal("  \t", T2000.strftime("%3t"))
+    assert_equal("00\t", T2000.strftime("%03t"))
+    assert_equal("\n", T2000.strftime("%n"))
+    assert_equal("\n", T2000.strftime("%0n"))
+    assert_equal("\n", T2000.strftime("%1n"))
+    assert_equal("  \n", T2000.strftime("%3n"))
+    assert_equal("00\n", T2000.strftime("%03n"))
   end
 end

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

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