[#32434] signature of exit() on C++ — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
きしもとです
なかだです。
> > /usr/local/include/ruby-1.9/i686-linux/ruby/config.h
[#32447] ruby 1.9 trunk NKF and KCONV Encoding:ASCII-8BIT — WATANABE Tetsuya <Tetsuya.WATANABE@...>
渡辺哲也です。
[#32448] SEGV on "abcd\xf0".force_encoding("utf-8").reverse — Tanaka Akira <akr@...>
以下のようにすると SEGV します。
[#32452] `split': negative string size (or size too big) (ArgumentError) — Tanaka Akira <akr@...>
"あいうえお".force_encoding("euc-jp").split(//) と (EUC-JP
[#32462] SEGV by test/ruby/test_fiber.rb — Tanaka Akira <akr@...>
test/ruby/test_fiber.rb ですが、以下のように insnhelper.ci
In article <87fxyhpw0t.fsf@fsij.org>,
[#32468] Iconv.list patch for NetBSD/Citrus — "NARUSE, Yui" <naruse@...>
成瀬です。
[#32473] about to_path and to_open — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#32498] Re: [ruby-cvs:21399] Ruby:r14162 (trunk): * parse.y (expr): redefinable not (!) operator. — SASADA Koichi <ko1@...>
ささだです.
まつもと ゆきひろです
[#32512] Re: [ruby-cvs:21409] Ruby:r14172 (trunk): * transcode.c: new file to provide encoding conversion features. — Nobuyoshi Nakada <nobu@...>
なかだです。
中田さん、こんにちは。
成瀬です。
中田さん、こんにちは。
なかだです。
まつもと ゆきひろです
At 15:33 07/12/11, Yukihiro Matsumoto wrote:
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
成瀬です。
At Wed, 12 Dec 2007 02:49:09 +0900,
At 02:55 07/12/12, SATOH Fumiyasu wrote:
At 21:50 07/12/10, Nobuyoshi Nakada wrote:
松本さん、中田さん、こんにちは。
なかだです。
[#32518] bug in Array#slice! — Satoshi Nakagawa <snakagawa@...>
中川といいます。
At Mon, 10 Dec 2007 19:27:17 +0900,
[#32550] Binary String — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
In article <20080111.171950.78716471.nagai@ai.kyutech.ac.jp>,
永井@知能.九工大です.
In article <20080111.184442.74744388.nagai@ai.kyutech.ac.jp>,
まつもと ゆきひろです
永井@知能.九工大です.
In article <20080112.004750.74741782.nagai@ai.kyutech.ac.jp>,
永井@知能.九工大です.
In article <20080112.100830.112615025.nagai@ai.kyutech.ac.jp>,
永井@知能.九工大です.
成瀬です。
永井@知能.九工大です.
成瀬です。
永井@知能.九工大です.
成瀬です。
永井@知能.九工大です.
成瀬です。
遊楽庵です。
成瀬です。
まつもと ゆきひろです
In article <E1JFVE8-0000Co-QL@x61.netlab.jp>,
成瀬です。
In article <47975933.8010907@airemix.com>,
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
西山和広です。
まつもと ゆきひろです
In article <20080115.024201.41653719.nagai@ai.kyutech.ac.jp>,
永井@知能.九工大です.
In article <20080116.102057.41656941.nagai@ai.kyutech.ac.jp>,
永井@知能.九工大です.
In article <20080117.233832.74721189.nagai@ai.kyutech.ac.jp>,
Gimiteといいます。
成瀬です。
Gimiteです。
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
m17n には近づかないようにしているささだです。
成瀬です。
遊楽庵です。
成瀬です。
まつもと ゆきひろです
成瀬です。
まつもと ゆきひろです
永井@知能.九工大です.
成瀬です。
永井@知能.九工大です.
成瀬です。
永井@知能.九工大です.
長文失礼します。
まつもと ゆきひろです
From: Yukihiro Matsumoto <matz@ruby-lang.org>
まつもと ゆきひろです
成瀬です。
At 04:55 08/01/20, NARUSE, Yui wrote:
成瀬です。
成瀬です。
永井@知能.九工大です.
成瀬です。
遊楽庵と申します。
永井@知能.九工大です.
[#32556] default completion for irb1.9 — Tadashi Saito <shiba@...2.accsnet.ne.jp>
斎藤と申します。
[#32563] transcoder loading — Nobuyoshi Nakada <nobu@...>
なかだです。
[#32567] [nil, [...]] — Tanaka Akira <akr@...>
以下のようにすると作っていないはずの再帰的な配列が出てきます。
[#32588] /(?<foo>...)/ =~ str assigns foo — Tanaka Akira <akr@...>
以下のように named capture の結果を自動的に変数に代入させた
まつもと ゆきひろです
In article <E1J34q8-00027E-EF@localhost>,
[#32610] 1.9.1 issues left (as of 12/15) — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
Yukihiro Matsumoto さんは書きました:
まつもと ゆきひろです
You may consider this:
[#32629] faster Bignum#* — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#32662] encode! は変換しないときに <nil> になってしまう。 — Martin Duerst <duerst@...>
中田さん、こんにちは。
[#32668] syntax errors on ext/tk/sample — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#32695] ISO-2022-JP output for transcode — "NARUSE, Yui" <naruse@...>
成瀬です。
なかだです。
成瀬さん、中田さん、こんにちは。
[#32708] Enumerable can't take multiple parameters — GOTOU Yuuzou <gotoyuzo@...>
eachで複数のパラメータをyieldしたときに、Enumerable#colectで、
[#32715] issues left as of 12/25 2:00am JST — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
まつもとさん、こんにちは。
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
[#32726] Can't build on MacOSX 10.4(Tiger) (was Re: Re: 1.9.1 issues left (as of 12/15)) — "MOROHASHI Kyosuke" <moronatural@...>
もろはしです。お世話になっております。
[#32756] make rdoc cause segv on OpenBSD — SASADA Koichi <ko1@...>
ささだです。
[#32763] Re: [ruby-cvs:21913] Ruby:r14676 (trunk): * trunk/common.mk, goruby.c, golf_prelude.rb: for golfers. — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#32791] Re: [ruby-list:44387] [ANN] Ruby 1.9.0 is released — SASADA Koichi <ko1@...>
ささだです。
まつもとさん、笹田さん、
まつもと ゆきひろです
まつもと ゆきひろです
福島の藤岡です。
木村です。
[#32823] class TimeSpan — "NARUSE, Yui" <naruse@...>
成瀬です。
ActiveSupportにあるNumericの拡張はダメですか??
[#32834] Re: [ ruby-Bugs-16634 ] Tk#bindinfo fails with: NoMethodError: undefined method 'collect' for "":String — Urabe Shyouhei <shyouhei@...>
以下のバグ報告が来ています
[#32843] Windowでのデフォルトエンコーディング — KIMURA Koichi <kimura.koichi@...>
木村です。
こんにちは、なかむら(う)です。
At 13:55 07/12/28, U.Nakamura wrote:
成瀬です。
なかだです。
In article <20071228092137.97233E065F@mail.bc9.jp>,
なかだです。
U.Nakamura wrote:
こんにちは、なかむら(う)です。
木村です。
成瀬です。
[#32848] Fwd: [ruby-cvs:21983] Ruby:r14746 (trunk): * transcode.c (transcode_dispatch): allows transcoding from/to — Martin Duerst <duerst@...>
中田さん、こんにちは。
[#32852] Resolv::DNS#getaddresses doesn't return IPv6 address — "NARUSE, Yui" <naruse@...>
成瀬です。
こんにちは。
成瀬です。
In message <477EF0C9.4060103@airemix.com>
成瀬です
In message <477FAAB4.1060005@airemix.com>
梅本です。
成瀬です。
In article <47809D55.4030208@airemix.com>,
[#32892] *, z = 1 breaks stack consistency — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#32904] Integer overflow on struct timespec — zunda <zunda616e@...>
zundaと申します
[ruby-dev:32863] Re: Window でのデフォルトエンコーディング
なかだです。
At Fri, 28 Dec 2007 15:09:28 +0900,
NARUSE, Yui wrote in [ruby-dev:32855]:
> > 多分 alias でいいと思います。でもそれも日本に限ります。
> > 現在 encoding として iso-8859-X をサポートしていますが、
> > これは windows 上で使われている windows-125x と違います。
> > 単に alias にしてしまうと大文字小文字を始め期待外れの
> > 結果になる可能性が多いです。
>
> 日本でも Shift_JIS と CP932 は別物なので alias じゃまずいですよ。
> 日本の混乱具合については英語ですと XML 日本語プロファイルがまとまってい
> ます。これを参考に変換テーブルを作っても役には立たないあたりがまた混乱し
> ているのですが・・・。
aliasではなくてreplicaにしてはどうかと思います。ただし、これはこ
れで比較などの問題があるので、base encodingをたどって比較可能な
encodingを探して、それのstrcmpメソッドに投げるというのを考えてみ
ました。
Index: include/ruby/encoding.h
===================================================================
--- include/ruby/encoding.h (revision 14758)
+++ include/ruby/encoding.h (working copy)
@@ -115,4 +115,6 @@ int rb_enc_casefold(char *to, const char
int rb_enc_toupper(int c, rb_encoding *enc);
int rb_enc_tolower(int c, rb_encoding *enc);
+VALUE rb_enc_base_encoding(VALUE encoding);
+rb_encoding *rb_enc_originally_compatible(rb_encoding *, rb_encoding *);
ID rb_intern3(const char*, long, rb_encoding*);
ID rb_interned_id_p(const char *, long, rb_encoding *);
Index: include/ruby/intern.h
===================================================================
--- include/ruby/intern.h (revision 14758)
+++ include/ruby/intern.h (working copy)
@@ -523,5 +523,5 @@ VALUE rb_str_concat(VALUE, VALUE);
int rb_memhash(const void *ptr, long len);
int rb_str_hash(VALUE);
-int rb_str_comparable(VALUE, VALUE);
+VALUE rb_str_comparable(VALUE, VALUE);
int rb_str_cmp(VALUE, VALUE);
VALUE rb_str_equal(VALUE str1, VALUE str2);
Index: encoding.c
===================================================================
--- encoding.c (revision 14758)
+++ encoding.c (working copy)
@@ -551,5 +551,7 @@ rb_enc_compatible(VALUE str1, VALUE str2
return enc;
}
- return 0;
+
+ return rb_enc_originally_compatible(rb_enc_from_index(idx1),
+ rb_enc_from_index(idx2));
}
@@ -729,10 +731,39 @@ enc_name(VALUE self)
}
-static VALUE
-enc_base_encoding(VALUE self)
+/*
+ * call-seq:
+ * enc.base_encoding => encoding
+ *
+ * Returns the base encoding of the encoding.
+ *
+ * Encoding::CP932.base_encoding => Encoding::Shift_JIS
+ */
+VALUE
+rb_enc_base_encoding(VALUE self)
{
return rb_attr_get(self, id_base_encoding);
}
+static rb_encoding *
+original_encoding(rb_encoding *enc)
+{
+ VALUE e = rb_enc_from_encoding(enc), t;
+ while (!ENC_DUMMY_P(e) && !NIL_P(t = rb_enc_base_encoding(e))) {
+ e = t;
+ }
+ return rb_to_encoding(e);
+}
+
+rb_encoding *
+rb_enc_originally_compatible(rb_encoding *enc1, rb_encoding *enc2)
+{
+ rb_encoding *oenc1 = original_encoding(enc1);
+ rb_encoding *oenc2 = original_encoding(enc2);
+ if (oenc1 == oenc2) {
+ return (enc1 == oenc1) ? enc2 : enc1;
+ }
+ return 0;
+}
+
/*
* call-seq:
@@ -821,4 +852,21 @@ enc_compatible_p(VALUE klass, VALUE str1
}
+/*
+ * call-seq:
+ * Encoding.strcmp(str1, str2) => -1, 0 or +1
+ *
+ * Compares two strings in the encoding specific way.
+ */
+static VALUE
+enc_strcmp(VALUE klass, VALUE str1, VALUE str2)
+{
+ int result;
+
+ StringValue(str1);
+ StringValue(str2);
+ result = rb_str_cmp(str1, str2);
+ return INT2FIX(result);
+}
+
/* :nodoc: */
static VALUE
@@ -981,6 +1029,7 @@ Init_Encoding(void)
rb_define_method(rb_cEncoding, "inspect", enc_inspect, 0);
rb_define_method(rb_cEncoding, "name", enc_name, 0);
- rb_define_method(rb_cEncoding, "base_encoding", enc_base_encoding, 0);
+ rb_define_method(rb_cEncoding, "base_encoding", rb_enc_base_encoding, 0);
rb_define_method(rb_cEncoding, "dummy?", enc_dummy_p, 0);
+ rb_define_method(rb_cEncoding, "strcmp", enc_strcmp, 2);
rb_define_singleton_method(rb_cEncoding, "list", enc_list, 0);
rb_define_singleton_method(rb_cEncoding, "find", enc_find, 1);
@@ -993,4 +1042,6 @@ Init_Encoding(void)
rb_define_singleton_method(rb_cEncoding, "locale_charmap", rb_locale_charmap, 0);
+ rb_enc_replicate("CP932", rb_enc_from_index(ENCINDEX_SJIS));
+
/* dummy for unsupported, statefull encoding */
rb_define_dummy_encoding("ISO-2022-JP");
Index: string.c
===================================================================
--- string.c (revision 14758)
+++ string.c (working copy)
@@ -418,5 +418,5 @@ rb_str_shared_replace(VALUE str, VALUE s
}
-static ID id_to_s;
+static ID id_to_s, id_strcmp;
VALUE
@@ -1262,5 +1262,5 @@ rb_str_hash_m(VALUE str)
#define lesser(a,b) (((a)>(b))?(b):(a))
-int
+VALUE
rb_str_comparable(VALUE str1, VALUE str2)
{
@@ -1268,4 +1268,5 @@ rb_str_comparable(VALUE str1, VALUE str2
int idx2 = rb_enc_get_index(str2);
int rc1, rc2;
+ rb_encoding *enc1 = 0, *enc2 = 0;
if (idx1 == idx2) return Qtrue;
@@ -1274,11 +1275,17 @@ rb_str_comparable(VALUE str1, VALUE str2
if (rc1 == ENC_CODERANGE_7BIT) {
if (rc2 == ENC_CODERANGE_7BIT) return Qtrue;
- if (rb_enc_asciicompat(rb_enc_from_index(idx1)))
+ enc1 = rb_enc_from_index(idx1);
+ if (rb_enc_asciicompat(enc1))
return Qtrue;
}
if (rc2 == ENC_CODERANGE_7BIT) {
- if (rb_enc_asciicompat(rb_enc_from_index(idx2)))
+ enc2 = rb_enc_from_index(idx2);
+ if (rb_enc_asciicompat(enc2))
return Qtrue;
}
+ if (!enc1) enc1 = rb_enc_from_index(idx1);
+ if (!enc2) enc2 = rb_enc_from_index(idx2);
+ enc1 = rb_enc_originally_compatible(enc1, enc2);
+ if (enc1) return rb_enc_from_encoding(enc1);
return Qfalse;
}
@@ -1323,4 +1330,6 @@ VALUE
rb_str_equal(VALUE str1, VALUE str2)
{
+ VALUE enc;
+
if (str1 == str2) return Qtrue;
if (TYPE(str2) != T_STRING) {
@@ -1330,8 +1339,18 @@ rb_str_equal(VALUE str1, VALUE str2)
return rb_equal(str2, str1);
}
- if (!rb_str_comparable(str1, str2)) return Qfalse;
- if (RSTRING_LEN(str1) == RSTRING_LEN(str2) &&
- rb_str_cmp(str1, str2) == 0) {
- return Qtrue;
+ switch (enc = rb_str_comparable(str1, str2)) {
+ case Qfalse:
+ return Qfalse;
+ case Qtrue:
+ if (RSTRING_LEN(str1) == RSTRING_LEN(str2) &&
+ rb_str_cmp(str1, str2) == 0) {
+ return Qtrue;
+ }
+ break;
+ default:
+ if (rb_funcall(enc, id_strcmp, 2, str1, str2) == INT2FIX(0)) {
+ return Qtrue;
+ }
+ break;
}
return Qfalse;
@@ -5804,4 +5823,5 @@ Init_String(void)
id_to_s = rb_intern("to_s");
+ id_strcmp = rb_intern("strcmp");
rb_fs = Qnil;
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦