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.."