From: Akinori MUSHA Date: 2002-03-24T18:27:43+09:00 Subject: [ruby-dev:16568] Re: File.fnmatch (Re: [rubyist:1286] Re: ARGV の機能) At Sun, 24 Mar 2002 13:56:33 +0900, Koji Arai wrote: > * その上で、**/ もサポートしてくれた方が良さそう。 > > * 名前は、FNM_NOPATHNAME か?  **/ をサポートするなら、このフラグはなくていいような気もします。 Ruby API と C API を切り離すかどうか。  作るなら、 FNM_DOTMATCH に合わせて FNM_SLASHMATCH とか。 > そうすると、後、Dir.glob と、File.fnmatch の挙動の違いで残さ > れるのは、{..} だけになるかな。 > > fnmatch() がライブラリ関数と同じ(FNM_PERIOD 復活)であれば、 > この気持ちは多少は治まります。でも、使いやすさで言えばやっぱ > りライブラリは無視した方が良いように思えます。いかがでしょう > か?  さらにその方向に進むなら、 FNM_* とか fnmatch() という名前の 捨て時かも知れません。 > > あと、File.fnmatchやDir.globはSJIS対応してないですね。どうした > > ものかな、めんどくさそう。 > > あらま。  正規表現エンジン側でシェルグロブパターンからのコンパイルを サポートするという方法がある程度現実的かも。  余談ですが、以前、シェルグロブパターンを正規表現に変換すると いうのを書いてみたんですが、 FNM_PERIOD の実装が面倒でした。  FNM_PERIOD が指定されているときは glob regexp [.a-z] [a-z] [!a-z] [^a-z.] [%-z] [%-\-/-z] /* /(?:[^./].*)? /a* /a.* という感じ。見ての通り「*」は、行頭または「/」の直後の場合のみ 「.」で始まるものにマッチしないという。  FNM_PATHNAME が付いていればまた変わりますし、 { , } や ** を 考えると頭が痛いです。 -- / /__ __ Akinori.org / MUSHA.org / ) ) ) ) / FreeBSD.org / Ruby-lang.org Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp "Somewhere out of a memory.. of lighted streets on quiet nights.."