[#16154] : and :: — Shin-ichiro HARA <sinara@...>
原です。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
[#16178] Marshal::dump calls Proc#yield? (1.6.7) — akira yamada / やまだあきら <akira@...>
まつもと ゆきひろです
[#16191] getopts() broken — "Akinori MUSHA" <knu@...>
getopts が最新の 1.6/1.7 で動かなくなっているようなので、
[#16211] pstore.rb and sync.rb — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#16214] net/http.rb version_1_2 not work — Tietew <tietew-ml-ruby-dev@...>
Tietew です。
[#16223] importing racc-runtime — "Akinori MUSHA" <knu@...>
rough にある racc runtime モジュールを眺めていたんですが、
[#16231] LoadLibraryEx vs. LoadLibrary — WATANABE Hirofumi <eban@...>
わたなべです。
[#16240] [Oni Guruma] look behind — nobu.nakada@...
なかだです。
nobu.nakada@nifty.ne.jpさんの
In article <20020307054004.BFADD57D@helium.ruby-lang.org>,
Tanaka Akiraさんの<hvog03clxib.fsf@coulee.a02.aist.go.jp>から
[#16277] Dir::glob(pattern, flags = 0) — "Akinori MUSHA" <knu@...>
しばらく放置していた、
[#16283] ライブラリ拡大計画 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
高橋征義です。
まつもと ゆきひろです
In article <1015827556.101112.6552.nullmailer@ev.netlab.jp>,
まつもと ゆきひろです
なかだです。
あおきです。
まつもと ゆきひろです
In article <hvowuwjbo4j.fsf@coulee.a02.aist.go.jp>,
わたなべです。
At Mon, 11 Mar 2002 12:17:12 +0900,
まつもと ゆきひろです
At Wed, 27 Mar 2002 18:56:03 +0900,
まつもと ゆきひろです
At Thu, 28 Mar 2002 00:12:49 +0900,
At Thu, 28 Mar 2002 23:45:49 +0900,
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
At Fri, 29 Mar 2002 20:32:17 +0900,
At Sun, 31 Mar 2002 02:20:04 +0900,
At Sun, 31 Mar 2002 02:20:04 +0900,
なかだです。
わたなべです。
At Fri, 8 Mar 2002 18:05:01 +0900,
まつもと ゆきひろです
なかだです。
In article <20020314133401.3918E10F3@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <20020315050614.C975F10F0@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <20020315160435.7A84B114C@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200204161515.g3GFFjM17207@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200204170729.g3H7TeM15268@sharui.nakada.kanuma.tochigi.jp>,
[#16290] IO#gets improvement — nobu.nakada@...
なかだです。
In article <20020308131426.8C36123B9@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <20020309025151.5405C24F2@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
なかだです。
わたなべです。
なかだです。
わたなべです。
なかだです。
わたなべです。
なかだです。
わたなべです。
なかだです。
わたなべです。
[#16351] map in printf format — nobu.nakada@...
なかだです。
[#16411] block local var — "K.Kosako" <kosako@...>
Version: 1.7 latest
> コンパイル時点で、ブロック変数かどうかの判定が
[#16422] abort with message — nobu.nakada@...
なかだです。
西山和広です。
[#16423] Re: [ruby-list:34301] Re: Enumerable#inject (Re: しぶらぐっ議事録。) — Koji Arai <JCA02266@...>
新井です。
[#16433] class variable & inheritance & singlton method / 1.6.7 — sinara@...
原です。
[#16454] Re: ext/iconv does not work with iconv 2.0 (FreeBSD) (PR#273) — nobu.nakada@...
なかだです。
[#16486] mswin32 configuration — nobu.nakada@...
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
[#16508] Re: [ruby-cvs] ruby: * mkconfig.rb: don't touch rbconfig.rb if there is a trouble. — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
In article <20020320203914.55E9.USA@osb.att.ne.jp>,
[#16514] MAKEFLAGS for ext — nobu.nakada@...
なかだです。
[#16518] ruby-zlib cvs operation — "Akinori MUSHA" <knu@...>
At Thu, 21 Mar 2002 16:53:03 +0000,
In article <86d6xxerjd.wl@daemon.musha.org>,
新井です。
うえのです。
[#16522] sprintf("%u") — Koji Arai <JCA02266@...>
新井です。
[#16532] 定数の再定義 — Wakou Aoyama <wakou@...>
青山です。
[#16545] BigFloat — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
At Sat, 23 Mar 2002 22:55:45 +0900,
At Sun, 24 Mar 2002 02:20:26 +0900,
In article <867ko3yyik.wl@archon.local.idaemons.org>,
At Sun, 24 Mar 2002 04:21:59 +0900,
In article <864rj7yljs.wl@archon.local.idaemons.org>,
At Sun, 24 Mar 2002 07:44:15 +0900,
In article <861yeazvtg.wl@archon.local.idaemons.org>,
At Sun, 24 Mar 2002 15:41:18 +0900,
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
At Tue, 2 Apr 2002 16:16:04 +0900,
原です。
[#16555] File.fnmatch (Re: [rubyist:1286] Re: ARGV の機能) — Koji Arai <JCA02266@...>
新井です。
In article <20020324.135631.115921076.JCA02266@nifty.ne.jp>,
新井です。
In article <20020324.143726.89024092.JCA02266@nifty.ne.jp>,
新井です。
[#16593] Oniguruma and multibyte character literal — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
まつもと ゆきひろです
なかだです。
[#16609] control uid/gid — nagai@...
永井@知能.九工大です.
[#16633] socket.c/sock_addrinfo() — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
[#16636] -L for iconv — Tanaka Akira <akr@...17n.org>
FreeBSD で --prefix つきで Ruby を install するときに、ext/iconv を使
[#16652] [OniGuruma] nested repeat operator — "K.Kosako" <kosako@...>
[ruby-talk:36959]で指摘された
なかだです。
なひです。
なかだです。
なひです。
なかだです。
In article <20020329022810.68F9E17@helium.ruby-lang.org>,
Tanaka Akiraさんの<hvohemzoku6.fsf@coulee.a02.aist.go.jp>から
In article <20020329090116.832F4807@helium.ruby-lang.org>,
Tanaka Akiraさんの<hvod6xnohi8.fsf@coulee.a02.aist.go.jp>から
In article <20020402043641.5E1F6783@helium.ruby-lang.org>,
まつもと ゆきひろです
[#16697] assignment nil to $~ — Tanaka Akira <akr@...17n.org>
% ruby -e '$~ = nil'
まつもと ゆきひろです
[ruby-dev:16351] map in printf format
なかだです。
Pythonの"%(x)s"形式のフォーマット(正式にはなんて言うんだか?)を
見て、実装してみました。
それと"%2$s%s"としたときに、現状では二番目と三番目の引数を使っ
てますが、glibcなどでは二番目と最初のが使われるようです。この議
論はなんか昔あったような気がしますが、"*"の後の"$"ではカウンタ
が進まないことと一貫してないように思えるので、揃えてみました。
Index: sprintf.c
===================================================================
RCS file: /cvs/ruby/src/ruby/sprintf.c,v
retrieving revision 1.19
diff -u -2 -p -r1.19 sprintf.c
--- sprintf.c 2002/02/01 10:23:22 1.19
+++ sprintf.c 2002/03/12 14:34:05
@@ -20,4 +20,5 @@
static void fmt_setup _((char*,int,int,int,int));
+static ID keyid _((const char *p, int n));
static char*
@@ -128,29 +129,62 @@ remove_sign_bits(str, base)
}
-#define GETARG() \
- ((nextarg >= argc) ? (rb_raise(rb_eArgError, "too few argument."), 0) : argv[nextarg++])
+#define GETARG() (nextvalue == Qundef ? GETNTHARG(nextarg) : nextvalue)
+#define GETNTHARG(nth) \
+ ((nth >= argc) ? (rb_raise(rb_eArgError, "too few argument."), 0) : argv[nth++])
+
#define GETASTER(val) { \
t = p++; \
n = 0; \
- for (; p < end && ISDIGIT(*p); p++) { \
- n = 10 * n + (*p - '0'); \
- } \
- if (p >= end) { \
- rb_raise(rb_eArgError, "malformed format string - %%*[0-9]"); \
+ if (*p == '(') { \
+ GETKEY(tmp); \
} \
- if (*p == '$') { \
- int curarg = nextarg; \
- nextarg = n; \
- tmp = GETARG(); \
- nextarg = curarg; \
- } \
else { \
- tmp = GETARG(); \
- p = t; \
+ for (; p < end && ISDIGIT(*p); p++) { \
+ n = 10 * n + (*p - '0'); \
+ } \
+ if (p >= end) { \
+ rb_raise(rb_eArgError, "malformed format string - %%*[0-9]"); \
+ } \
+ if (*p == '$') { \
+ tmp = GETNTHARG(n); \
+ } \
+ else { \
+ tmp = GETARG(); \
+ p = t; \
+ } \
} \
val = NUM2INT(tmp); \
}
+#define GETKEY(val) { \
+ VALUE id; \
+ t = ++p; \
+ while ((p < end) ? (*p != ')') : \
+ (rb_raise(rb_eArgError, "incomplete format key: %.*s", \
+ end - t, t), 1)) { \
+ p++; \
+ } \
+ id = keyid(t, p - t); \
+ if (!keyargs) { \
+ if (nextarg >= argc) rb_raise(rb_eArgError, "format require mapping."); \
+ keyargs = argv[--argc]; \
+ Check_Type(keyargs, T_HASH); \
+ } \
+ if (!fetch) fetch = rb_intern("fetch"); \
+ val = rb_funcall3(keyargs, fetch, 1, &id); \
+}
+
+static VALUE
+keyid(p, n)
+ const char *p;
+ int n;
+{
+ char *str = ALLOCA_N(char, n + 1);
+ MEMCPY(str, p, char, n);
+ str[n] = '\0';
+ return ID2SYM(rb_intern(str));
+}
+
VALUE
rb_f_sprintf(argc, argv)
@@ -158,4 +192,5 @@ rb_f_sprintf(argc, argv)
VALUE *argv;
{
+ static ID fetch;
VALUE fmt;
char *buf, *p, *end;
@@ -166,8 +201,10 @@ rb_f_sprintf(argc, argv)
int nextarg = 0;
int tainted = 0;
+ VALUE nextvalue;
VALUE tmp;
VALUE str;
+ VALUE keyargs = 0;
- fmt = GETARG();
+ fmt = GETNTHARG(nextarg);
if (OBJ_TAINTED(fmt)) tainted = 1;
StringValue(fmt);
@@ -191,4 +228,5 @@ rb_f_sprintf(argc, argv)
width = prec = -1;
+ nextvalue = Qundef;
retry:
switch (*p) {
@@ -235,5 +273,8 @@ rb_f_sprintf(argc, argv)
}
if (*p == '$') {
- nextarg = n;
+ if (nextvalue != Qundef) {
+ rb_raise(rb_eArgError, "value given twice");
+ }
+ nextvalue = GETNTHARG(n);
p++;
goto retry;
@@ -241,4 +282,12 @@ rb_f_sprintf(argc, argv)
width = n;
flags |= FWIDTH;
+ goto retry;
+
+ case '(':
+ if (nextvalue != Qundef) {
+ rb_raise(rb_eArgError, "value given twice");
+ }
+ GETKEY(nextvalue);
+ ++p;
goto retry;
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦