[#32910] NKF,Kconv — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#32913] openの"b"とencoding — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#32922] SEGV by regexp match in while loop — Tanaka Akira <akr@...>
Debian GNU/Linux (sarge) の gcc-3.4 を使ってビルドした ruby
[#32935] queue and timeout — Tanaka Akira <akr@...>
timeout で Queue#pop に時間制限をつけた時、タイムアウト時に
まつもと ゆきひろです
[#32940] ripper cannot build on win32 — yukimi_sake <yukimi_sake@...>
雪見酒です。
[#32945] Shift_JIS variants and UTF-16 support — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
中村さん、こんにちは。
まつもと ゆきひろです
成瀬です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
成瀬です。
こんにちは、なかむら(う)です。
成瀬です。
こんにちは、なかむら(う)です。
まつもと ゆきひろです
[#32946] replica と alias の違い(encoding) — KIMURA Koichi <kimura.koichi@...>
木村です。
[#32987] error with open-uri (instance_eval?) — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#32988] Re: [ruby-cvs:22194] Ruby:r14957 (trunk): * encoding.c (rb_enc_init): UTF-{16,32}{BE,LE} are not builtin. — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#32992] ASCII is alias of US-ASCII; replica of dummy encoding is not a dummy — "NARUSE, Yui" <naruse@...>
成瀬です。
まつもと ゆきひろです
At 18:13 08/01/09, Yukihiro Matsumoto wrote:
成瀬です。
まつもと ゆきひろです
成瀬です。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#32996] binmode and ASCII-8BIT — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#33069] Re: [ruby-cvs:22244] Ruby:r15007 (trunk): * enc/make_encdb.rb: added. search enc/*.c and make encoding database. — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
まつもと ゆきひろです
[#33076] Encoding.compatible? and dummy encodings — sheepman <sheepman@...>
こんにちは sheepman です。
成瀬です。
まつもと ゆきひろです
[#33078] NEW REPLICA ENCODINGS AND ENCODING ALIASES — "NARUSE, Yui" <naruse@...>
成瀬です。
[#33101] String#valid_encoding? shoud be strict? — Masayoshi Takahashi <maki@...>
高橋征義です。1.9のエンコーディングとString#valid_encoding?について。
[#33139] Bignum#* might invoke GC parallelly? — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#33156] default script encoding and -K option — sheepman <sheepman@...>
こんばんは sheepman です。
こんにちは、なかむら(う)です。
まつもと ゆきひろです
[#33164] default encoding for Marshal.load — "Shugo Maeda" <shugo@...>
前田です。
まつもと ゆきひろです
[#33185] コンパイルの問題 (r15218) — Martin Duerst <duerst@...>
r15128 当たりで (実はもう少し前から) コンパイルできなくなりました。
[#33218] Re: Ruby1.9String バイト列へのインデックス アクセス — "Hisanori Kiryu" <hkiryu@...>
> ちなみに、byte のではなく bytes の方が妥当だと思います。
[#33224] printf "%0x" — Tanaka Akira <akr@...>
printf の %0x に負の整数を与えると、値によって .. がついたり
[#33226] [PATCH] warnings of enc/trans/utf_16_32.c — Nobuyoshi Nakada <nobu@...>
なかだです。
[#33239] Re: [ruby-cvs:22386] Ruby:r15149 (trunk): * string.c (rb_str_each_char): move forward. — Tanaka Akira <akr@...>
In article <[email protected]>,
なかだです。
In article <[email protected]>,
なかだです。
まつもと ゆきひろです
[#33247] requests to transcode — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#33303] Time#strftimeのエンコーディング — rubikitch@...
るびきちです。
まつもと ゆきひろです
なかだです。
[#33368] summary of script encoding — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
[#33387] HashからStructを作る — rubikitch@...
るびきちです。
まつもと ゆきひろです
From: Yukihiro Matsumoto <[email protected]>
まつもと ゆきひろです
From: Yukihiro Matsumoto <[email protected]>
まつもと ゆきひろです
From: Yukihiro Matsumoto <[email protected]>
まつもと ゆきひろです
[#33399] regexp match /.../n against to UTF-8 string — Tanaka Akira <akr@...>
以下のように、つけてもいない正規表現の n オプションに関して
[#33400] /#{}/e.encoding — Tanaka Akira <akr@...>
以下のように /#{}/e の encoding が US-ASCII になります。
[#33403] wrapped String#gsub — "Park Ji-In" <tisphie@...>
こんにちは、朴 芝印です。
[#33417] コンパイルの問題 — Martin Duerst <duerst@...>
現在 (r15264 で) コンパイル使用とすると、エラーになります:
At 16:28 08/01/27, you wrote:
[#33433] Win32OLE: set encoding to OLE string — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
成瀬です。
助田です。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
[#33452] enc/euc_kr.c (euckr_mbc_enc_len) euc_kr.c is also used by CP942 — "NARUSE, Yui" <naruse@...>
成瀬です。
まつもと ゆきひろです
成瀬です。
[#33461] Failed to make ruby-1.8.6-p111 on MacOSX 10.5(Leopard) — MORITA Hideyuki <h-morita@...>
=1B$B?9ED$H?=3D$7$^$9!#=1B(B
なかだです。
森田です。
なかだです。
森田です。
天野竜太郎と申します。
森田です。
天野です。
森田です。
天野です。
森田です。
天野です。
森田です。
天野です。
[#33488] 現在の script encoding の値を得る方法は? — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
成瀬です。
永井@知能.九工大です.
成瀬です。
永井@知能.九工大です.
成瀬です。
In article <[email protected]>,
成瀬です。
In article <[email protected]>,
In article <[email protected]>,
[#33521] nkf の CP932 — Martin Duerst <duerst@...>
成瀬さん、皆さん、こんにちは。
[#33548] block parameter of String#gsub — "NARUSE, Yui" <naruse@...>
成瀬です。
まつもと ゆきひろです
[ruby-dev:33550] String#inspect may raise Exception
成瀬です。
> ["\x82\xa0".force_encoding("sjis"),
"\xa4\xa2".force_encoding("euc-jp"),
"\xe3\x81\x82".force_encoding("utf-8")].inspect
ArgumentError: append incompatible encoding strings: Shift_JIS and EUC-JP
となります。
思うに、現在 String#inspect は自分自身の encoding と中身のバイト列を比較
して valid ならばエスケープしないという処理を行っていますが、自分自身の
encoding でなく、結果となる文字列の encoding を基準とする必要があると思
われます。
つまるところ、inspect が引数に encoding を取る必要があるのですが、
inspect は再帰的に呼ばれるため、ユーザーオブジェクトでも inspect(enc) が
定義されている必要があり、結果的にこのアプローチは事実上不可能です。
新仕様対応の inspect がスレッドローカル変数に期待する encoding をセット
するという技もなきにしもあらずですが、現在のマルチバイト文字列をエスケー
プなしに出力するという仕様をあきらめざるをえないように感じます。
なお、String#inspect に限って、引数として encoding を取る、というのなら
ば、それはいまだ可能ではあります。
--- string.c (revision 15383)
+++ string.c (local)
@@ -3259,23 +3259,6 @@
return str;
}
-static void
-str_cat_char(VALUE str, int c, rb_encoding *enc)
-{
- char s[16];
- int n = rb_enc_codelen(c, enc);
-
- rb_enc_mbcput(c, s, enc);
- rb_enc_str_buf_cat(str, s, n, enc);
-}
-
-static void
-prefix_escape(VALUE str, int c, rb_encoding *enc)
-{
- str_cat_char(str, '\\', enc);
- str_cat_char(str, c, enc);
-}
-
/*
* call-seq:
* str.inspect => string
@@ -3291,81 +3274,65 @@
VALUE
rb_str_inspect(VALUE str)
{
- rb_encoding *enc = STR_ENC_GET(str);
char *p, *pend;
- VALUE result = rb_str_buf_new2("");
+ VALUE result = rb_str_buf_new2("\"");
- rb_enc_associate(result, enc);
- str_cat_char(result, '"', enc);
+ ENCODING_CODERANGE_SET(result, rb_usascii_encindex(),
ENC_CODERANGE_7BIT);
p = RSTRING_PTR(str); pend = RSTRING_END(str);
while (p < pend) {
- int c;
- int n;
+ int c = *p++;
int cc;
- n = rb_enc_precise_mbclen(p, pend, enc);
- if (!MBCLEN_CHARFOUND_P(n)) {
- p++;
- n = 1;
- goto escape_codepoint;
- }
- n = MBCLEN_CHARFOUND_LEN(n);
-
- c = rb_enc_codepoint(p, pend, enc);
- n = rb_enc_codelen(c, enc);
-
- p += n;
- if (c == '"'|| c == '\\' ||
- (c == '#' &&
+ if (c == '#' &&
p < pend &&
- MBCLEN_CHARFOUND_P(rb_enc_precise_mbclen(p,pend,enc)) &&
- (cc = rb_enc_codepoint(p,pend,enc),
- (cc == '$' || cc == '@' || cc == '{')))) {
- prefix_escape(result, c, enc);
+ (cc = *(p),
+ (cc == '$' || cc == '@' || cc == '{'))) {
+ rb_str_buf_cat2(result, "\\#");
}
+ else if (c == '"') {
+ rb_str_buf_cat2(result, "\\\"");
+ }
+ else if (c == '\\') {
+ rb_str_buf_cat2(result, "\\\\");
+ }
else if (c == '\n') {
- prefix_escape(result, 'n', enc);
+ rb_str_buf_cat2(result, "\\n");
}
else if (c == '\r') {
- prefix_escape(result, 'r', enc);
+ rb_str_buf_cat2(result, "\\r");
}
else if (c == '\t') {
- prefix_escape(result, 't', enc);
+ rb_str_buf_cat2(result, "\\t");
}
else if (c == '\f') {
- prefix_escape(result, 'f', enc);
+ rb_str_buf_cat2(result, "\\f");
}
else if (c == '\013') {
- prefix_escape(result, 'v', enc);
+ rb_str_buf_cat2(result, "\\v");
}
else if (c == '\010') {
- prefix_escape(result, 'b', enc);
+ rb_str_buf_cat2(result, "\\b");
}
else if (c == '\007') {
- prefix_escape(result, 'a', enc);
+ rb_str_buf_cat2(result, "\\a");
}
else if (c == 033) {
- prefix_escape(result, 'e', enc);
+ rb_str_buf_cat2(result, "\\e");
}
- else if (rb_enc_isprint(c, enc)) {
- rb_enc_str_buf_cat(result, p-n, n, enc);
- }
else {
char buf[5];
char *s;
char *q;
escape_codepoint:
- for (q = p-n; q < p; q++) {
+ for (q = p-1; q < p; q++) {
s = buf;
sprintf(buf, "\\x%02X", *q & 0377);
- while (*s) {
- str_cat_char(result, *s++, enc);
- }
+ rb_str_buf_cat2(result, s);
}
}
}
- str_cat_char(result, '"', enc);
+ rb_str_buf_cat2(result, "\"");
OBJ_INFECT(result, str);
return result;
--
NARUSE, Yui <[email protected]>
DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA