[#23332] to_str再考 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

15 messages 2004/04/05

[#23380] [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

17 messages 2004/04/15
[#23400] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。落ちる場所がわかりました。

[#23402] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[#23403] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — nobu.nakada@... 2004/04/16

なかだです。

[#23405] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[#23407] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[ruby-dev:23295] [proposal] new function for mathing path name

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2004-04-01 08:15:56 UTC
List: ruby-dev #23295
山本です。

本当は Dir.glob と File.fnmatch の互換がとれてから提案したかったのですが、時間がかかりそうなので
先に提案しておきます。

FNM_PATHNAME の動作をし、Dir.glob のように case sensitivity が環境依存な関数をつくれば便利だと思うの
ですが、いかかでしょうか?何通りか仕様を考えてみました。

* 1. 完全に互換のとれる仕様

  File.fnmatch はそのままで、File.match? という関数を追加する。この関数は FNM_PATHNAME な動作をし、
  case sensitivity は環境依存である。FNM_NOESCAPE, FNM_DOTMATCH のフラグが使用可能で、
  FNM_PATHNAME, FNM_CASEFOLD が渡されると、例外(警告)を出す。

* 2. DOSISH に限り、File.fnmatch に FNM_CASEFOLD を指定しない場合に動作が変わる(大文字・小文字を区別しなくなる)

  新たにフラグ FNM_CASECARE(大文字・小文字を区別する)を追加する。

  File.fnmatch に FNM_CASEFOLD が指定されない場合、case sensitivity は環境依存とする。
  FNM_CASEFOLD が指定された場合は、環境に関係なく「大文字・小文字を区別しない」で、
  FNM_CASECARE が指定された場合は、環境に関係なく「大文字・小文字を区別する」とする。

  File.match? は、File.fnmatch(pattern, string, FNM_PATHNAME | flags) と同等で、FNM_PATHNAME を
  渡すと例外(警告)を出す。

* 3. Dir.glob のフラグ、FNM_DOTMATCH で互換が失われる

  FNM_PERIOD の復活が望ましいとの議論があったので、これを機に復活させる。一方、Dir.glob は
  「'.'にマッチしない」のがデフォルトであるため、Dir.glob と File.fnmatch でフラグを分ける必要がある。
  仮にこれを Dir::GLOB_NOESCAPE, Dir::GLOB_PERIOD (Dir::GLOB_DOTMATCH?) とすると、File.match? も
  Dir::GLOB_* を使うように定義する。

1.が一番導入しやすそうです。あと、私はあまり fnmatch を使わないのでよくわからないのですが、FNM_PERIOD と
FNM_DOTMATCH では、fnmatch を使う上でどちらが望ましいのでしょうか?FNM_PERIOD! という場合は 3. になる
のかもしれません。あまりにも互換に問題があるのでしり込みしてしまいますが・・・

In This Thread

Prev Next