[#15846] Ruby M17N request — "K.Kosako" <kosako@...>

今書いているライブラリを、あらかじめRuby M17Nに対応させておこうとして、

62 messages 2002/02/04
[#15847] Re: Ruby M17N request — matz@... (Yukihiro Matsumoto) 2002/02/04

まつもと ゆきひろです

[#15854] Re: Ruby M17N request — "K.Kosako" <kosako@...> 2002/02/05

Yukihiro Matsumotoさんの<1012831868.125952.28017.nullmailer@ev.netlab.jp>から

[#16070] Re: Ruby M17N request — "K.Kosako" <kosako@...> 2002/02/25

<20020205045749.0AAA015B@helium.ruby-lang.org>から

[#16072] Re: Ruby M17N request — "Akinori MUSHA" <knu@...> 2002/02/25

At Mon, 25 Feb 2002 19:57:05 +0900,

[#16073] Re: Ruby M17N request — "Akinori MUSHA" <knu@...> 2002/02/25

At Mon, 25 Feb 2002 21:00:46 +0900,

[#16173] Re: Ruby M17N request — "Akinori MUSHA" <knu@...> 2002/03/02

At Mon, 25 Feb 2002 19:57:05 +0900,

[#16196] Oni Guruma imported into our repository — "Akinori MUSHA" <knu@...> 2002/03/04

At Sun, 3 Mar 2002 07:15:40 +0900,

[#16275] Re: Oni Guruma imported into our repository — matz@... (Yukihiro Matsumoto) 2002/03/08

まつもと ゆきひろです

[#16222] Re: Oni Guruma(Re: Ruby M17N request) — nobu.nakada@... 2002/03/05

なかだです。

[#16228] Re: Oni Guruma(Re: Ruby M17N request) — "K.Kosako" <kosako@...> 2002/03/06

nobu.nakada@nifty.ne.jpさんの

[#16237] Re: Oni Guruma(Re: Ruby M17N request) — nobu.nakada@... 2002/03/06

なかだです。

[#16241] Re: Oni Guruma(Re: Ruby M17N request) — "K.Kosako" <kosako@...> 2002/03/07

nobu.nakada@nifty.ne.jpさんの

[#16242] Re: Oni Guruma(Re: Ruby M17N request) — nobu.nakada@... 2002/03/07

なかだです。

[#16442] Re: Oni Guruma(Re: Ruby M17N request) — nobu.nakada@... 2002/03/17

なかだです。

[#15867] [BUG?] include after module definition and extend module — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

15 messages 2002/02/08
[#15869] Re: [BUG?] include after module definition and extend module — matz@... (Yukihiro Matsumoto) 2002/02/08

まつもと ゆきひろです

[#15932] Re: [BUG?] include after module definition and extend module — keiju@... (石塚圭樹) 2002/02/18

けいじゅ@日本ラショナルソフトウェアです.

[#15938] Re: [BUG?] include after module definition and extend module — matz@... (Yukihiro Matsumoto) 2002/02/18

まつもと ゆきひろです

[#15914] making net/*.rb grok URI — "Akinori MUSHA" <knu@...>

 net/*.rb モジュール群をぜひとも標準添付となった URI クラスに

30 messages 2002/02/17
[#15915] Re: making net/*.rb grok URI — "Akinori MUSHA" <knu@...> 2002/02/17

At Mon, 18 Feb 2002 04:33:42 +0900,

[#15931] Re: making net/*.rb grok URI — Minero Aoki <aamine@...> 2002/02/18

あおきです。

[#15934] Re: making net/*.rb grok URI — "Akinori MUSHA" <knu@...> 2002/02/18

At Mon, 18 Feb 2002 15:24:22 +0900,

[#15937] Re: making net/*.rb grok URI — Minero Aoki <aamine@...> 2002/02/18

あおきです。

[#15958] Re: making net/*.rb grok URI — TAKAHASHI Masayoshi <maki@...> 2002/02/19

高橋征義です。

[#15978] Re: making net/*.rb grok URI — Tanaka Akira <akr@...17n.org> 2002/02/19

In article <200202190432.NAA18796@mx.inac.co.jp>,

[#16002] Re: making net/*.rb grok URI — TAKAHASHI Masayoshi <maki@...> 2002/02/20

高橋征義です。

[#16013] Re: making net/*.rb grok URI — Tanaka Akira <akr@...17n.org> 2002/02/20

In article <20020221020159R.maki@rubycolor.org>,

[#15988] Re: [rubyist:1097] Re: % 記法 — nobu.nakada@...

なかだです。

21 messages 2002/02/20
[#17594] Re: [rubyist:1097] Re: % 記法 — nobu.nakada@... 2002/06/26

なかだです。

[#16049] defined? autoload constant — Kazuhiro NISHIYAMA <zn@...>

西山和広です。

35 messages 2002/02/24
[#16058] Re: defined? autoload constant — matz@... (Yukihiro Matsumoto) 2002/02/25

まつもと ゆきひろです

[#16298] Re: defined? autoload constant — nobu.nakada@... 2002/03/09

なかだです。

[#16304] Re: defined? autoload constant — matz@... (Yukihiro Matsumoto) 2002/03/09

まつもと ゆきひろです

[#16375] Re: defined? autoload constant — keiju@... (石塚圭樹) 2002/03/14

けいじゅ@日本ラショナルソフトウェアです.

[#16380] Re: defined? autoload constant — nobu.nakada@... 2002/03/14

なかだです。

[#16398] Re: defined? autoload constant — keiju@... (石塚圭樹) 2002/03/14

けいじゅ@日本ラショナルソフトウェアです.

[#16399] Re: defined? autoload constant — nobu.nakada@... 2002/03/14

なかだです。

[#16400] Re: defined? autoload constant — keiju@... (石塚圭樹) 2002/03/14

けいじゅ@日本ラショナルソフトウェアです.

[#16403] Re: defined? autoload constant — matz@... (Yukihiro Matsumoto) 2002/03/14

まつもと ゆきひろです

[#16407] Re: defined? autoload constant — nobu.nakada@... 2002/03/15

なかだです。

[#16409] Re: defined? autoload constant — matz@... (Yukihiro Matsumoto) 2002/03/15

まつもと ゆきひろです

[#16481] Re: defined? autoload constant — keiju@... (石塚圭樹) 2002/03/19

けいじゅ@日本ラショナルソフトウェアです.

[#16482] Re: defined? autoload constant — matz@... (Yukihiro Matsumoto) 2002/03/19

まつもと ゆきひろです

[#16082] Array#select without block — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

14 messages 2002/02/25

[#16102] No trace_func event at if-elsif-else line — "NAKAMURA, Hiroshi" <nakahiro@...>

なひです。

21 messages 2002/02/26
[#16103] Re: No trace_func event at if-elsif-else line — matz@... (Yukihiro Matsumoto) 2002/02/26

まつもと ゆきひろです

[#16109] Re: No trace_func event at if-elsif-else line — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/02/26

なひです。

[#16110] Re: No trace_func event at if-elsif-else line — matz@... (Yukihiro Matsumoto) 2002/02/26

まつもと ゆきひろです

[#16117] Re: No trace_func event at if-elsif-else line — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/02/26

なひです。

[#16127] Re: No trace_func event at if-elsif-else line — matz@... (Yukihiro Matsumoto) 2002/02/26

まつもと ゆきひろです

[#16133] Re: No trace_func event at if-elsif-else line — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/02/27

なひです。

[#16135] Re: No trace_func event at if-elsif-else line — matz@... (Yukihiro Matsumoto) 2002/02/27

まつもと ゆきひろです

[#16256] Rite debug API (was Re: No trace_func event at if-elsif-else line) — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/03/07

なひです。どうせ一年も先の話なのでのんびりと。

[#16258] Re: Rite debug API (was Re: No trace_func event at if-elsif-else line) — matz@... (Yukihiro Matsumoto) 2002/03/07

まつもと ゆきひろです

[#16134] Defining (Python) Source Code Encoding — TAKAHASHI Masayoshi <maki@...>

高橋征義です。ruby-list の「localized document」ともやや関係あり?

13 messages 2002/02/27

[ruby-dev:15834] Re: 文字列→整数変換

From: nobu.nakada@...
Date: 2002-02-01 08:40:36 UTC
List: ruby-dev #15834
なかだです。

At Fri, 25 Jan 2002 17:35:02 +0900,
Nobuyoshi-Nakada wrote:
> * eval/parser, Integer(), Float()
>   各数字間に高々一個の'_'が許される。符号の後、'.','e'の前後(浮
>   動少数点数の場合)には許されない。
> 
> * String#to_f
>   Float()と同じだが、例外を発生させるかわりに0.0を返す。

これのパッチです。


Index: intern.h
===================================================================
RCS file: /cvs/ruby/src/ruby/intern.h,v
retrieving revision 1.77
diff -u -2 -p -u -r1.77 intern.h
--- intern.h	2002/01/11 09:18:50	1.77
+++ intern.h	2002/02/01 05:36:44
@@ -264,4 +264,6 @@ VALUE rb_Float _((VALUE));
 VALUE rb_String _((VALUE));
 VALUE rb_Array _((VALUE));
+double rb_cstr_to_dbl _((const char *, int));
+double rb_str_to_dbl _((VALUE, int));
 /* parse.y */
 EXTERN int   ruby_sourceline;
Index: object.c
===================================================================
RCS file: /cvs/ruby/src/ruby/object.c,v
retrieving revision 1.71
diff -u -2 -p -u -r1.71 object.c
--- object.c	2002/02/01 06:02:59	1.71
+++ object.c	2002/02/01 08:01:58
@@ -964,4 +964,88 @@ rb_f_integer(obj, arg)
 }
 
+double
+rb_cstr_to_dbl(p, badcheck)
+    const char *p;
+    int badcheck;
+{
+    const char *q;
+    char *end;
+    double d;
+
+    q = p;
+    if (badcheck) {
+	while (ISSPACE(*p)) p++;
+    }
+    else {
+	while (ISSPACE(*p) || *p == '_') p++;
+    }
+    d = strtod(p, &end);
+    if (p == end) {
+	if (badcheck) {
+      bad:
+	    rb_invalid_str(q, "Float()");
+	}
+	return d;
+    }
+    if (*end) {
+	char *buf = ALLOCA_N(char, strlen(p));
+	char *n = buf;
+
+	while (p < end) *n++ = *p++;
+	while (*p) {
+	    if (*p == '_') {
+		/* remove underscores between digits */
+		if (badcheck) {
+		    if (n == buf || !ISDIGIT(n[-1])) goto bad;
+		    ++p;
+		    if (!ISDIGIT(*p)) goto bad;
+		}
+		else {
+		    while (*++p == '_');
+		    continue;
+		}
+	    }
+	    *n++ = *p++;
+	}
+	*n = '\0';
+	p = buf;
+	d = strtod(p, &end);
+	if (badcheck) {
+	    if (p == end) goto bad;
+	    while (*end && ISSPACE(*end)) end++;
+	    if (*end) goto bad;
+	}
+    }
+    if (errno == ERANGE) {
+	errno = 0;
+	rb_raise(rb_eArgError, "Float %s out of range", q);
+    }
+    return d;
+}
+
+double
+rb_str_to_dbl(str, badcheck)
+    VALUE str;
+    int badcheck;
+{
+    char *s;
+    int len;
+
+    StringValue(str);
+    s = RSTRING(str)->ptr;
+    len = RSTRING(str)->len;
+    if (s[len]) {		/* no sentinel somehow */
+	char *p = ALLOCA_N(char, len+1);
+
+	MEMCPY(p, s, char, len);
+	p[len] = '\0';
+	s = p;
+    }
+    if (badcheck && len != strlen(s)) {
+	rb_raise(rb_eArgError, "string for Float contains null byte");
+    }
+    return rb_cstr_to_dbl(s, badcheck);
+}
+
 VALUE
 rb_Float(val)
@@ -979,51 +1063,5 @@ rb_Float(val)
 
       case T_STRING:
-        {
-	    char *q, *p, *end;
-	    double d;
-
-	    q = p = StringValuePtr(val);
-	    while (*p && ISSPACE(*p)) p++;
-	    d = strtod(p, &end);
-	    if (p == end) {
-	      bad:
-		rb_invalid_str(q, "Float()");
-	    }
-	    if (*end) {
-		if (*end == '_') {
-		    char *buf = ALLOCA_N(char, strlen(p));
-		    char *n = buf, *last = p;
-
-		    while (p < end) *n++ = *p++;
-		    while (*p) {
-			if (*p == '_' && (n > buf && ISDIGIT(n[-1]))) {
-			    /* remove underscores between digits */
-			    last = ++p;
-			    while (*p == '_') ++p;
-			    if (!ISDIGIT(*p)) {
-				while (last < p) *n++ = *last++;
-				continue;
-			    }
-			    last = p;
-			}
-			*n++ = *p++;
-		    }
-		    while (*last && (*last == '_' || ISSPACE(*last)))
-			last++;
-		    if (!*last) goto bad;
-		    *n = '\0';
-		    p = buf;
-		    d = strtod(p, &end);
-		    if (p == end) goto bad;
-		}
-		while (*end && ISSPACE(*end)) end++;
-		if (*end) goto bad;
-	    }
-	    if (errno == ERANGE) {
-		errno = 0;
-		rb_raise(rb_eArgError, "Float %s out of range", p);
-	    }
-	    return rb_float_new(d);
-	}
+	return rb_float_new(rb_str_to_dbl(val, Qtrue));
 
       case T_NIL:
Index: string.c
===================================================================
RCS file: /cvs/ruby/src/ruby/string.c,v
retrieving revision 1.96
diff -u -2 -p -u -r1.96 string.c
--- string.c	2002/01/28 08:44:37	1.96
+++ string.c	2002/02/01 07:48:11
@@ -1774,7 +1774,5 @@ rb_str_to_f(str)
     VALUE str;
 {
-    double f = strtod(RSTRING(str)->ptr, 0);
-
-    return rb_float_new(f);
+    return rb_float_new(rb_str_to_dbl(str, Qfalse));
 }
 


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

In This Thread