[#42564] [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Makoto Kishimoto <redmine@...>

Feature #4043: グローバル関数current_classの提案

15 messages 2010/11/11
[#42774] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/16

まつもと ゆきひろです

[#42834] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp> 2010/12/21

きしもとです

[#42835] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/21

まつもと ゆきひろです

[#42838] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp> 2010/12/21

きしもとです

[#42845] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/21

まつもと ゆきひろです

[#42577] Rubyのバグレポートのガイドライン — "Shota Fukumori (sora_h)" <sorah@...>

sora_hです。

11 messages 2010/11/15
[#42588] Re: Rubyのバグレポートのガイドライン — Yugui <yugui@...> 2010/11/18

2010/11/15 Shota Fukumori (sora_h) <sorah@tubusu.net>:

[#42638] Enumerable#categorize — Tanaka Akira <akr@...>

enumerable から hash を生成するメソッドとして

25 messages 2010/11/27
[#42643] Re: Enumerable#categorize — Yukihiro Matsumoto <matz@...> 2010/11/27

まつもと ゆきひろです

[ruby-dev:42611] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss reports many errors and failures without iconv

From: "NARUSE, Yui" <naruse@...>
Date: 2010-11-20 08:56:12 UTC
List: ruby-dev #42611
成瀬です。

> In<4CE77185.5080603@airemix.jp>
>    "[ruby-dev:42608] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss reports many errors and failures without iconv" on Sat, 20 Nov 2010 15:58:16 +0900,
>    "NARUSE, Yui"<naruse@airemix.jp>  wrote:
> 
>>> 内部ではそれでもよいと思いますが、利用者がXML宣言のエンコー
>>> ディングを使いたいときに不便だと思っています。例えば、日本語っ
>>> ぽいものだけ扱い時にエンコーディングがShift_JISかEUC-JPか
>>> UTF-8以外のものは使わないとか、というケースを考えていました。
>>> このとき、利用者がいちいちREXMLから返されるエンコーディング
>>> を正規化して比較しなければいけないのは面倒だと考えています。
>>
>> そういう要求が出てくることまでは想像できますが、「日本語っぽいものだけ扱い時」
>> には、現状 UTF-8, Shift_JIS, Windows-31J, EUC-JP, CP51932, eucJP-ms を
>> 見ないといけないんですよね。
>>
>> 現実的にはエンコーディングで判定するよりも、そのニーズの場合、
>> XML 全体が CP932 に変換できるかで判定した方がベターだと思います。
> 
> 私はそのあたりはよくわからないのですが、CP932は日本語の全部
> の文字を含んでいるんでしたっけ?(EUC-JPとCP932を相互に変換
> しても欠落する情報がないかどうか)
> 
> 含んでいないのであれば、上記のエンコーディングかどうかを判断
> した方がよさそうな気がします。

EUC-JP から CP932 に変換すると、補助漢字が落ちますね。

しかし、わたしの知る限り「日本語っぽいものだけを扱いたい時」というのは、
(1) 日本語の文字だけを扱いたい
(2) 日本語しか想定していない処理がある
(3) 右から左に書くような文字やゼロ幅文字等を蹴りたい
くらいなので、その場合エンコーディングで判定するよりも、
内容で判定した方が妥当だと思っています。

一方で、特に理由無く日本語に限定したいというのならば、それはわざわざ
気遣うべき処理でも無いので、upcase なり Encoding.find なりを
使って頂いた方がよいでしょう。

>>> また、XML宣言で用いるエンコーディングと変換で用いるエンコーディ
>>> ングは同じものにするべきだと思っています。そうしないと、
>>> REXMLが出力したXMLをパースする他のXMLパーサが困ると思っていま
>>> す。XML宣言のエンコーディングがShift_JISなのにXMLの中に
>>> Shift_JISにはない文字が入ってしまうかもしれないということです
>>> よね?
>>
>> 「他のXMLパーサ」のためにまさにこれが必要なのです。
>>
>> Windows の API、kernel32 の MultiByteToWideChar や、Mlang.dll の
>> ConvertINetString、.NET Framework の Encoding は"Shift_JIS" を
>> 与えると Windows-31J として、"EUC-JP" を与えると CP51932 として解釈します。
>>
>> なので、これらの API を使う XML パーサを送信する時は、Ruby 側では
>> XML 宣言で用いるエンコーディングと、変換で用いるエンコーディングを
>> 変える必要があります。
> 
> .NET FrameworkのXMLパーサ以外は困らないのでしょうか?
> REXMLは.NET Frameworkの実装に合わせるよりはXMLの仕様に合わせ
> るべきだと思っています。
> (XMLパーサじゃなくてSGMLパーサとかならどっちでもいいや、と
> 思いますが。)

.NET Framework だけでなく、Win32API や IE の MLang を使っている XML パーサです。
Web 系は MS 実装にあわせているので、Gecko や WebKit もそうですかね。

また、常に変えるわけではなく「変えられるようにする」なので、
MS の実装にあわせるわけでもありません。

>> この辺と先の XML 宣言で用いるエンコーディング名を複合的に踏んじゃったのが、
>> 例えばJava などから Windows 向けの XML をどうやって書き出すか、というお話です。
>> http://www.artonx.org/diary/20050614.html
>> http://d.hatena.ne.jp/Kazzz/20050614/p1
> 
> 「Javaと.NETのXMLパーサの挙動の違いではまらないようにするに
> はUTF-8を使おうね」ということのように読めました。

UTF-8 でいいじゃんという割り切り路線だと、当初のわたしの
「他のエンコーディングのために互換性を壊すべきではないので revert すべき」
と主張に帰着するかと思います。

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

In This Thread