[#37959] [Bug:trunk] I can modify literals — Yusuke ENDOH <mame@...>

遠藤です。

13 messages 2009/02/10

[#38005] Is URI.decode() broken? — MOROHASHI Kyosuke <moronatural@...>

もろはしです。いつもお世話になっております。

39 messages 2009/02/14
[#38006] Re: Is URI.decode() broken? — Nobuyoshi Nakada <nobu@...> 2009/02/14

なかだです。

[#38009] Re: Is URI.decode() broken? — "NARUSE, Yui" <naruse@...> 2009/02/14

成瀬です、

[#38016] Re: Is URI.decode() broken? — Fujioka <fuj@...> 2009/02/15

xibbarこと藤岡です。

[#38017] Re: Is URI.decode() broken? — "NARUSE, Yui" <naruse@...> 2009/02/15

成瀬です。

[#38040] Re: Is URI.decode() broken? — akira yamada / やまだあきら <akira@...> 2009/02/17

NARUSE, Yui さんは書きました:

[#38124] Re: Is URI.decode() broken? — "NARUSE, Yui" <naruse@...> 2009/03/03

成瀬です。

[#39214] Re: Is URI.decode() broken? — akira yamada / やまだあきら <akira@...> 2009/09/02

(2009年03月03日 22:45), NARUSE, Yui さんは書きました:

[#39218] Re: Is URI.decode() broken? — "NARUSE, Yui" <naruse@...> 2009/09/02

成瀬です。

[#39236] Re: Is URI.decode() broken? — Tanaka Akira <akr@...> 2009/09/05

In article <4A9E44DD.6050706@airemix.jp>,

[#39242] Re: Is URI.decode() broken? — KOSAKI Motohiro <kosaki.motohiro@...> 2009/09/07

小崎@思いつきを適当に書いてみるテスト

[#39246] Re: Is URI.decode() broken? — Tanaka Akira <akr@...> 2009/09/07

In article <20090907091830.2C7A.A69D9226@jp.fujitsu.com>,

[#38096] 多重代入やメソッド引数の展開でto_aが呼ばれます — nagachika <nagachika00@...>

nagachika と申します。

10 messages 2009/02/26

[#38098] ブロック引数と括弧・引数なしsuper — Shugo Maeda <shugo@...>

前田です。

12 messages 2009/02/27

[ruby-dev:38108] Re: ENCODING_FIXED と ENCODING_NONE の廃止

From: "NARUSE, Yui" <naruse@...>
Date: 2009-02-28 18:31:19 UTC
List: ruby-dev #38108
成瀬です。

Tanaka Akira wrote:
> In article <499B4E60.9000703@airemix.jp>,
>   "NARUSE, Yui" <naruse@airemix.jp> writes:
> 
>> そしてまず、直接的な問題としては、例えば、
>>> Regexp.new(/a/u.source) == /a/u
>> => false
>> と、Regexp#source と Regexp#new で戻らない点があります。
> 
> 戻すためには options も指定してください。
> 
> そして、これで戻ることからわかるように、任意のエンコーディン
> グで fixed_encoding にすることも実は可能です。
> 
> 16 というのを直接書くというのは変ではありますが、
> Regexp::FIXEDENCODING という定数を作ることは簡単です。

ふむ、なるほど。
変かどうかよりもこれが Ruby 1.9 の仕様の一部なのかが気になりますが、
いつでも実装可能なことはわかりました。
必要ならば定数を作った方がいいのでしょうね。

> また、//i についてはどうでしょうか。
> 
> /fi/ui は "\uFB01" とマッチします。
> というのは U+FB01 は fi の合字だからですが、
> /fi/ei と EUC-JP を明示したときにも "\uFB01" にマッチすべき
> なんでしょうか。

うーん、それってレイヤーが違うような気がします。

例えば、
  /ss/ui =~ "\u00df".encode("iso-8859-1")
はマッチしてもいいと思いますが、
# Unicode の U+0000 から U+00FF までは ISO-8859-1 と一致するはずだし
ignorecase の挙動に関してはエンコーディングとは
別のレイヤーで処理するべきかと感じます。
# やるかは別として、Regexp::IGNORECASE_COMBINE を作りつつ、
# エンコーディングごとにデフォルトを変えるとか

ちょっとずれますが、
  /\s/ =~ "\u3000" #=> 0
  /\s/e =~ "\u3000".encode("euc-jp") #=> nil
とか。

>> そして、すでに 1.8 用に書かれた /a/u 等もわざわざ UTF-8 等に限定する意図は
>> なかったのではないかと思います。
> 
> そうは思いません。

例えば以下のようになるわけで、あまり強い意味を持たせるのはどうなんですかねぇ。

% ruby_1_8 -Ku -e'p /a/s =~ "a\xE3\x81\x82"'
0
% ruby_1_9_1 -Ku -e'p /a/s =~ "a\xE3\x81\x82"'
-e:1:in `<main>': incompatible encoding regexp match (Windows-31J regexp with UTF-8 string) (Encoding::CompatibilityError)


>> 現状、できごころで /u を付けてしまった正規表現リテラルから、
>> /u を削るという不毛な作業が行われていますが、本当にそれは必要なんでしょうか。
> 
> この作業ってどこで起きてるんですか?
> 
> //n についてはたしかにあいまいな使いかたが多かったと思います。
> だから、警告に弱めたのですが、それ以外は明確だったように感じ
> ています。

「明確だった」使い方とは、例えば
> /\xB9\xA5/ =~ "\xA5\xB9\xA5\xC8"
=> 1
> /#{"\xB9\xA5"}/e =~ "\xA5\xB9\xA5\xC8"
=> nil
とか
> /#{"\\\\"}/s =~ "\x95\x5C"
=> nil
> /#{"\\\\"}/ =~ "\x95\x5C"
=> 1
でしょうか。
どちらもバイト構造に起因する誤マッチを防ぐためのものに見えます。
この種のバイト構造に起因する誤マッチは、Ruby 1.9 ではわざわざ
fixed_encoding を付けなくても回避できるので、これの防止では不要に思えます。

他に何かマッチ対象のエンコーディングを絞りたいような利用例ってありましたっけ。

-- 
NARUSE, Yui  <naruse@airemix.jp>

In This Thread