[#32185] Date#+に大きな数字を与えるとおかしな日付に — "madoka yamamoto" <yamamotomadoka@...>

こんにちは、山本と申します。

26 messages 2007/11/08
[#32186] Re: Date#+に大きな数字を与えるとおかしな日付に — Tadayoshi Funaba <tadf@...> 2007/11/08

> Dateオブジェクトに+で大きな数字を与えるとおかしくなるようです。

[#32188] Re: Date#+に大きな数字を与えるとおかしな日付に — "madoka yamamoto" <yamamotomadoka@...> 2007/11/09

山本です。

[#32191] Re: Date#+に大きな数字を与えるとおかしな日付に — tadf@... 2007/11/09

> アルゴリズムの意味がわからないで書いた、表層的なパッチなので

[#32194] Re: Date#+に大きな数字を与えるとおかしな日付に — Yukihiro Matsumoto <matz@...> 2007/11/09

Hi,

[#32200] Re: rational (Re: Date#+に大きな数字を与えるとおかしな日付に) — Tadayoshi Funaba <tadf@...> 2007/11/10

> 1.9ではRationalとComplexを組み込みに、という話はありましたが、

[#32225] Re: rational (Re: Date#+に大きな数字を与えるとおかしな日付に) — Shin-ichiro HARA <sinara@...> 2007/11/12

原です。

[#32198] [提案] Array#tail — "Yusuke ENDOH" <mame@...>

遠藤と申します。

21 messages 2007/11/09
[#32199] Re: [提案] Array#tail — Yukihiro Matsumoto <matz@...> 2007/11/10

まつもと ゆきひろです

[#32352] 1.9.1のリリース時期について — KIMURA Koichi <hogemuta@...>

木村です。

16 messages 2007/11/24
[#32353] Re: 1.9.1のリリース時期について — Yukihiro Matsumoto <matz@...> 2007/11/24

まつもと ゆきひろです

[#32403] Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — Takahiro Kambe <taca@...>

こんばんは。

32 messages 2007/11/29
[#32414] Re: Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — Urabe Shyouhei <shyouhei@...> 2007/11/30

卜部です。

[#32444] Re: Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — Yukihiro Matsumoto <matz@...> 2007/12/03

まつもと ゆきひろです

[#32488] Re: Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — Urabe Shyouhei <shyouhei@...> 2007/12/08

卜部です。

[#32525] Re: Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — "Yusuke ENDOH" <mame@...> 2007/12/10

遠藤と申します。

[#32643] Re: Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — "Yusuke ENDOH" <mame@...> 2007/12/19

遠藤です。

[#32409] Re: [ruby-cvs:21293] Ruby:r14056 (trunk): * signal.c (trap_signm): SIGVTALRM no longer used for green — SASADA Koichi <ko1@...>

 ささだです.

10 messages 2007/11/30

[ruby-dev:32301] Re: version string

From: Nobuyoshi Nakada <nobu@...>
Date: 2007-11-16 04:36:48 UTC
List: ruby-dev #32301
なかだです。

At Wed, 14 Nov 2007 16:20:12 +0900,
Yukihiro Matsumoto wrote in [ruby-dev:32288]:
> | [ruby-dev:31743] で中田さんが提案しているものに,なにがしかの名前
> |で突っ込むのが一番いいような気はしています.
> 
> 個人的にはああいう個別オブジェクトの導入はあまり好みでないの
> で、RUBY_LONG_VERSION的な文字列を取り込むことで妥協できませ
> んか?

個別オブジェクトというのはRuby moduleですか? たぶん、ささださん
のいっているのはRuby::VersionNumberのことではないのではないかと
思うのですが。

とりあえずこんなのはどうでしょうか。


Index: include/ruby/defines.h
===================================================================
--- include/ruby/defines.h	(revision 13945)
+++ include/ruby/defines.h	(working copy)
@@ -65,4 +65,9 @@ void *xrealloc2(void*,size_t,size_t);
 void xfree(void*);
 
+#define STRINGIZE(expr) STRINGIZE0(expr)
+#ifndef STRINGIZE0
+#define STRINGIZE0(expr) #expr
+#endif
+
 #if SIZEOF_LONG_LONG > 0
 # define LONG_LONG long long
Index: version.c
===================================================================
--- version.c	(revision 13945)
+++ version.c	(working copy)
@@ -15,4 +15,7 @@
 #include <stdio.h>
 
+#define PRINT(type) puts(RUBY_##type)
+#define MKSTR(type) rb_str_new(RUBY_##type, sizeof(RUBY_##type)-1)
+
 const char ruby_version[] = RUBY_VERSION;
 const char ruby_release_date[] = RUBY_RELEASE_DATE;
@@ -23,12 +26,21 @@ void
 Init_version(void)
 {
+    const char *varname;
+#define RUBY_CONST(name, val) (				\
+	varname = "RUBY_" #name,			\
+	rb_define_const(mRuby, varname + 5, val),	\
+	rb_define_global_const(varname, val))
+
+    VALUE mRuby = rb_define_module("Ruby");
     VALUE v = rb_obj_freeze(rb_str_new2(ruby_version));
     VALUE d = rb_obj_freeze(rb_str_new2(ruby_release_date));
     VALUE p = rb_obj_freeze(rb_str_new2(ruby_platform));
 
-    rb_define_global_const("RUBY_VERSION", v);
-    rb_define_global_const("RUBY_RELEASE_DATE", d);
-    rb_define_global_const("RUBY_PLATFORM", p);
-    rb_define_global_const("RUBY_PATCHLEVEL", INT2FIX(RUBY_PATCHLEVEL));
+    RUBY_CONST(VERSION, v);
+    RUBY_CONST(RELEASE_DATE, d);
+    RUBY_CONST(PLATFORM, p);
+    RUBY_CONST(PATCHLEVEL, INT2FIX(RUBY_PATCHLEVEL));
+    RUBY_CONST(DESCRIPTION, MKSTR(DESCRIPTION));
+    RUBY_CONST(COPYRIGHT, MKSTR(COPYRIGHT));
 }
 
@@ -36,5 +48,5 @@ void
 ruby_show_version(void)
 {
-    printf("ruby %s (%s patchlevel %d) [%s]\n", RUBY_VERSION, RUBY_RELEASE_DATE, RUBY_PATCHLEVEL, RUBY_PLATFORM);
+    PRINT(VERSION);
     fflush(stdout);
 }
@@ -43,5 +55,5 @@ void
 ruby_show_copyright(void)
 {
-    printf("ruby - Copyright (C) 1993-%d Yukihiro Matsumoto\n", RUBY_RELEASE_YEAR);
+    PRINT(COPYRIGHT);
     exit(0);
 }
Index: version.h
===================================================================
--- version.h	(revision 13945)
+++ version.h	(working copy)
@@ -1,2 +1,4 @@
+#ifndef RUBY_VERSION
+
 #define RUBY_VERSION "1.9.0"
 #define RUBY_RELEASE_DATE "2007-11-16"
@@ -18,2 +20,24 @@ RUBY_EXTERN const char ruby_platform[];
 RUBY_EXTERN const int ruby_patchlevel;
 #endif
+
+#define RUBY_AUTHOR "Yukihiro Matsumoto"
+#define RUBY_BIRTH_YEAR 1993
+#define RUBY_BIRTH_MONTH 2
+#define RUBY_BIRTH_DAY 24
+
+#define RUBY_RELEASE_STR "patchlevel"
+#define RUBY_RELEASE_NUM RUBY_PATCHLEVEL
+
+# define RUBY_DESCRIPTION	    \
+    "ruby "RUBY_VERSION		    \
+    " ("RUBY_RELEASE_DATE" "	    \
+    RUBY_RELEASE_STR" "		    \
+    STRINGIZE(RUBY_RELEASE_NUM)") " \
+    "["RUBY_PLATFORM"]"
+# define RUBY_COPYRIGHT 	    \
+    "ruby - Copyright (C) "	    \
+    STRINGIZE(RUBY_BIRTH_YEAR)"-"   \
+    STRINGIZE(RUBY_RELEASE_YEAR)" " \
+    RUBY_AUTHOR
+
+#endif


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread

Prev Next