[#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 <200801210259.m0L2x3CW017171@ci.ruby-lang.org>,
なかだです。
In article <20080121065650.55F60E0662@mail.bc9.jp>,
なかだです。
まつもと ゆきひろです
[#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 <matz@ruby-lang.org>
まつもと ゆきひろです
From: Yukihiro Matsumoto <matz@ruby-lang.org>
まつもと ゆきひろです
From: Yukihiro Matsumoto <matz@ruby-lang.org>
まつもと ゆきひろです
[#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 <47A00E86.4010701@airemix.com>,
成瀬です。
In article <47A03C9D.2090008@airemix.com>,
In article <87hcgvu1ng.fsf@fsij.org>,
[#33521] nkf の CP932 — Martin Duerst <duerst@...>
成瀬さん、皆さん、こんにちは。
[#33548] block parameter of String#gsub — "NARUSE, Yui" <naruse@...>
成瀬です。
まつもと ゆきひろです
[ruby-dev:32952] Re: replica と alias の違い(encoding)
成瀬です。
KIMURA Koichi wrote:
> Windows版のRuby1.9でのデフォルトエンコーディングのときにちょっと名前が
> でていて気になっていたのですが、レプリカ(replica) と エイリアス (alias)
> の違いってなんでしょうか?
>
> レプリカ → 実体をコピーするしてそのコピーに名前をつける
> エイリアス → 実体を共有した上で名前をつける
>
> かなあと思ったのですが、実際のコードを見ても自信がないので解説を
> していただけるとありがたいです。ここを見ろというポインタ指示でも
> かまいません(英語でかかれていても可です)。
わたしの発言ですと、[ruby-dev:32542] [ruby-dev:32885] あたりがまとまって
います。この用途で replica を用いようというのは [ruby-dev:32460] が初め
でしょうか。
端的にいえば、
replica : 「encoding」を定義する
alias : 「encoding *名*」を定義する
ということになります。
図にするとたぶん以下のような感じです。
鬼車(CES)
OnigEncodingSJIS
│←────────────────┐
───┼─────────────────┼──────────────
│ │ Encoding (文字集合+CES)
│ │
#<Encoding:Shift_JIS> ─(replica)→ #<Encoding:Windows-31J>
│ │ │ │
───┼─────┼───────────┼─────┼────────
│ (alias) │ │ Encoding名
│ ↓ │ │ (charset名)
"Shift_JIS" "SJIS" "Windows-31J" "CP932"
# 鬼車層とEncoding層の区別は正確ではないのですが便宜上こうしておきます。
# Encoding 層 での #<Encoding:Shift_JIS> の実体 rb_encoding* は同じもの
鬼車層では文字単位の操作を行っています。具体的には str[n] が何を返すか、
str.length はどのくらいか。また String#valid_encoding? の true/false 判
定もこのレベルです。鬼車層の実体は、文字の最小バイト数と最大バイト数の指
定や、文字列の長さを算出する関数、大文字を小文字に変換する関数等をひとま
とめにした構造体 OnigEncodingType で、具体的には ONIG_ENCODING_ASCII や
ONIG_ENCODING_SJIS 等があります。
Encoding 層では文字列操作全般を司ります。具体的には文字列の結合可能・比
較可能、正規表現のマッチ可能判定がこの層で行われています。この層での実体
は rb_encoding です。Encoding 層における実体は 鬼車が native に対応して
いる encoding から直結している original encoding、original encoding から
replicate された replica encoding、鬼車が対応していない encoding に便宜
的に与えられる dummy encoding の3種類に分けることができます。これらを見
分けるには Encoding#base_encoding や Encoding#dummy? を見るわけですが、
見たからどうということでもありません。
これらの区別を超越する存在が 7bit のみで構成された文字列で、
String#ascii_only? で判定可能です。これが真になる文字列はいかなる
encoding の文字列とも結合・比較可能となります。
なお、rb_encoding は OnigEncodingType の同じもののため、Encoding 層での
replica でも、鬼車レベルの諸関数、例えば文字群に Unicode Property Name
を与えたり、valid なバイト列の範囲を定義し直すことが可能です。([ruby-
dev:32947] での「レプリカはコピーをした後で関数のいくつかを上書きするこ
とも可能」とはたぶんこのこと)
Encoding名層は、Encoding.find() するためのテーブルです。
ENC_TABLE = {
'Shift_JIS' => Encoding::Shift_JIS,
'Windows-31J' => Encoding::Windows_31J,
'EUC-JP' => Encoding::EUC_JP
}
ENC_TABLE_ALIAS = {
'SJIS' => Encoding::Shift_JIS,
'CP932' => Encoding::Windows_31J,
'EUCJP' => Encoding::EUC_JP
}
def rb_enc_alias(alias, orig)
ENC_TABLE_ALIAS[alias] = orig
end
def Encoding.find(name)
return ENC_TABLE[name] if ENC_TABLE[encname]
return ENC_TABLE_ALIAS[name] if ENC_TABLE_ALIAS[encname]
return -1
end
という構造になっているとお考えください。alias で追加された名前は、文字列
から rb_encoding を検索する際にのみに用いられます。
# そのため、[ruby-dev:32949] における「alias に対して関数を上書き」とい
う仮定は存在しません
# これはわたしの理解なので間違っているところはツッコミください
# こぴぺしやすいようにこのメールの著作権は放棄しておきます。
--
NARUSE, Yui <naruse@airemix.com>
DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA