[#16732] sharing sub-regexp — Tanaka Akira <akr@...17n.org>

Oniguruma についてひとつ要望があります。

51 messages 2002/04/03
[#16744] Re: sharing sub-regexp — "K.Kosako" <kosako@...> 2002/04/04

Tanaka Akiraさんの<hvopu1hxfyd.fsf@coulee.a02.aist.go.jp>から

[#16746] Re: sharing sub-regexp — matz@... (Yukihiro Matsumoto) 2002/04/04

まつもと ゆきひろです

[#16753] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/04

In article <1017890618.302241.17865.nullmailer@ev.netlab.jp>,

[#16755] Re: sharing sub-regexp — "K.Kosako" <kosako@...> 2002/04/05

Tanaka Akiraさんの<hvo7knn93ug.fsf@coulee.a02.aist.go.jp>から

[#16756] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/05

In article <20020405044506.D4784349@helium.ruby-lang.org>,

[#16822] Re: sharing sub-regexp — "K.Kosako" <kosako@...> 2002/04/10

Tanaka Akiraさんの<hvopu1e4omy.fsf@coulee.a02.aist.go.jp>から

[#16831] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/10

In article <20020410025054.C8DF0915@helium.ruby-lang.org>,

[#16863] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/11

In article <hvor8lnchak.fsf@coulee.a02.aist.go.jp>,

[#16877] Re: sharing sub-regexp — Shugo Maeda <shugo@...> 2002/04/12

前田です。

[#16887] Re: sharing sub-regexp — Tanaka Akira <akr@...17n.org> 2002/04/12

In article <87pu15z80q.wl@studly.priv.netlab.jp>,

[#16909] Regexp#to_s — Shugo Maeda <shugo@...> 2002/04/15

前田です。

[#16912] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/15

In article <87g01x1e6m.wl@studly.priv.netlab.jp>,

[#16931] Re: Regexp#to_s — Kazuhiro NISHIYAMA <zn@...> 2002/04/16

西山和広です。

[#16934] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/16

In article <20020416180631.988E.ZN@mbf.nifty.com>,

[#16938] Re: Regexp#to_s — Shugo Maeda <shugo@...> 2002/04/17

前田です。

[#16939] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/17

In article <87u1qaj0xe.wl@studly.priv.netlab.jp>,

[#16947] Re: Regexp#to_s — Shugo Maeda <shugo@...> 2002/04/18

前田です。

[#16950] Re: Regexp#to_s — matz@... (Yukihiro Matsumoto) 2002/04/18

まつもと ゆきひろです

[#16951] Re: Regexp#to_s — Tanaka Akira <akr@...17n.org> 2002/04/18

In article <1019116103.420173.12691.nullmailer@picachu.netlab.jp>,

[#16960] Re: Regexp#to_s — nobu.nakada@... 2002/04/18

なかだです。

[#16761] StringIO — tadf@...

ふなばです。

43 messages 2002/04/05
[#16786] Re: StringIO — nobu.nakada@... 2002/04/08

なかだです。

[#16802] Re: StringIO — tadf@... 2002/04/09

ふなばです。

[#16803] Re: StringIO — nobu.nakada@... 2002/04/09

なかだです。

[#16804] Re: StringIO — tadf@... 2002/04/09

ふなばです。

[#17221] Re: StringIO — Wakou Aoyama <wakou@...> 2002/05/30

青山です。

[#17230] Re: StringIO — matz@... (Yukihiro Matsumoto) 2002/05/30

まつもと ゆきひろです

[#17231] Re: StringIO — Tanaka Akira <akr@...17n.org> 2002/05/30

In article <1022740594.117106.6073.nullmailer@picachu.netlab.jp>,

[#17233] IO#size — Shugo Maeda <shugo@...> 2002/05/30

前田です。

[#17239] Re: IO#size — Tanaka Akira <akr@...17n.org> 2002/05/31

In article <874rgqdt3x.wl@studly.priv.netlab.jp>,

[#17253] Re: IO#size — Wakou Aoyama <wakou@...> 2002/05/31

青山です。

[#16790] Ruby Shim — "Akinori MUSHA" <knu@...>

 1.7 early access kit という仮称で提案した構想ですが、先ほど

27 messages 2002/04/08
[#16796] Re: Ruby Shim — Koji Arai <JCA02266@...> 2002/04/08

新井です。

[#16833] math.c 1.10 — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

23 messages 2002/04/11
[#16834] Re: math.c 1.10 — matz@... (Yukihiro Matsumoto) 2002/04/11

まつもと ゆきひろです

[#16869] Makefiles dependency — nobu.nakada@...

なかだです。

17 messages 2002/04/12

[ruby-dev:16943] Iconv

From: Tanaka Akira <akr@...17n.org>
Date: 2002-04-17 10:25:18 UTC
List: ruby-dev #16943
In article <200204170839.g3H8dvM16391@sharui.nakada.kanuma.tochigi.jp>,
  nobu.nakada@nifty.ne.jp writes:

> Iconv.iconvで複数のStringを渡されたときに、エラーになったString
> 以降がそのまま収められるようになってます。で、最初failedはやめ
> ちゃおうかと思ったんですが…。

理解しました。「以降」というところがわかっていませんでした。ふむ。

えぇと、理解した第一印象は必要以上に複雑なのではないかというものです。
Iconv.iconv という一番複雑なところの都合で通常の用途が面倒になってしま
うのは気に入りません。CGI#[] が Array を返すのに似た匂いがするといいま
すか。そもそも Iconv.iconv はいちいちインスタンスを生成せずに済む簡易
的な使用法として位置付けられている(と思う)のに、それが面倒臭さの原因に
なっているところが引っかかります。

しかも、(ちゃんとソースを読んでいるわけではないので推測になりますが)
E2BIG な時には自動的に iconv(3) が繰り返し呼ぶことによって出力バッファ
を抽象化していることを考えると、渡した文字列のそれぞれと iconv(3) の呼
び出しが一対一で対応するわけでもなく、何が起きたのかを完全に把握できる
わけでもなさそうです。まぁ、これは Iconv.iconv だけではなくて
Iconv#iconv でもそうなのでしょうが。

思うに、むしろ Iconv.iconv を単純化するか、捨てるかした方がいいのでは
ないかという気がします。たとえば、Iconv.iconv は廃止して、

def Iconv.conv(to, from, str, dont_shift_to_init_at_last=false)
  Iconv.open(to, from) {|cd|
    result = ''
    result = cd.iconv(str)
    result << cd.iconv(nil) unless dont_shift_to_init_at_last
    result 
  }
end

というようなのを新設するとか。

どうせ、文字列ひとつをともかく難しいことは考えずに変換したいという場合
が一番多いでしょうから、その文字列を単純に渡せば変換して terminate も
してくれた文字列が返ってくる、というインターフェースのがお気軽でいいの
ではないかと思います。

互換性を考えないならいきなりこれを Iconv.iconv にするというのもありか
も知れません。

で、Iconv::Failure#source は Iconv#iconv の第一引数をそのまま保持する
とします。そうすれば、Iconv.conv で例外が発生しても、Iconv#iconv の 2
回の呼び出しのうちどちらで発生したのかはわかります。

複数の文字列に分けて呼び出したいっていうのはどんな場合がありますかね?
文字が別れていた時に Iconv::InvalidCharacter が発生して欲しい場合?
実行効率? 他にはなにがあるでしょう?

いずれにせよ、ちゃんとインスタンスを生成して変換すればだいたい問題ない
と思うので、簡易インターフェースに多くは求めないのがいいのではないかと
思います。

> 初期ステートに戻すシークェンスを返す機能があるんだから、初期ス
> テートから現在のステートに移行するシークェンスを返すというのも
> あってよさそうな気がしてきました。

そうかもしれません。まぁ、これは標準の話なので Ruby 側でどうこうできる
ことじゃありませんが。

> でもiconv_tは複製されないから結局同じですよ。たぶん、どこかで
> closed iconv (ArgumentError)といわれるのがオチじゃないかと。

ちっ。

> エラーのときにyieldするというのはどうかなとか、今ふと思ったんで
> すが。

今回の私の用途でいえば、failed がブロックに渡されて、ブロックの返り値
で処理が続行すると都合がいいですね。ただ、これで扱える話って一般的なの
かなぁ。
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)

In This Thread