From: Akinori MUSHA Date: 2001-05-28T16:53:28+09:00 Subject: [ruby-dev:13380] Re: glob & fnmatch At Mon, 28 May 2001 12:16:11 +0900, matz wrote: > globの拡張は気になりませんが、Dir#[]が羅列でない引数を取るの > はイヤです。そもそもDir#[]が失敗であったという説もありますが。  Dir[] って今も羅列の引数を取れないですよね。また、これは文法の 問題だと思いますが、 Dir::glob はブロックを取れるのに Dir[] は ブロックを取れません。(Dir["*"] {|f| ...} は SyntaxError)  Dir[] は将来的に廃止とした方がいいのかも。Dir::glob はその点 問題はあまりないと思われるので、下の定数の名前の問題が片づいたら フラグを受け付けるようにしたいです。 > | FNM_* 定数の所属が問題かな? > > FNMはFileNameMatchでDirではないと思います。  そうですね。本当は、そもそも (UNIX の) glob(3) が取るフラグは FNM_* ではないわけですが、 rb_glob 等の実装が fnmatch のフラグを 使っているので、 FNM_* を使い回すのがよさそうに思えたんです。  ただ、以下の点から FNM_* という名前は捨てて新しく名前を付けた 方がいいと思い、先の提案のようになりました。 - rb_glob がデフォルトで FNM_PERIOD を指定しているが、 Dir::glob(path, flags = FNM_PERIOD) というのはあまり 好ましくない気がする。(フラグを追加するときに改めて FNM_PERIOD | FNM_NOESCAPE というのがいまいち) - FNM_NOCASE が、一般的な UNIX での名前と違う。 (FNM_CASEFOLD) - そもそも、 FNM_PERIOD とか FNM_PATHNAME というのは 意味が逆で分かりにくい。(〜にマッチしないようにする、 という意味なので。) どうするのがいいでしょうか。  所属については、仰るとおり File がいいですね。 > | Dir::glob() と File.fnmatch() ができたら、やっぱり Glob > |クラスを外に用意するとおもしろそう。=== を定義して when 節で > |使えると、たぶんそれなりに便利。 > > でも、リテラルを用意したりはしません。組み込みにもしないだろ > うなあ。  リテラルは大げさでしょうね。組み込みも強くは主張しません。まだ 仕様も実装も固めていないし。たぶん require 'glob' で十分でしょう。 -- / /__ __ Akinori.org / MUSHA.org / ) ) ) ) / FreeBSD.org / Ruby-lang.org Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp "Freeze this moment a little bit longer, make each impression a little bit stronger.. Experience slips away -- Time stand still"