[#23168] File.fnmatch のリファクタリング — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

13 messages 2004/03/08

[#23192] File.fnmatch と Dir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

19 messages 2004/03/13
[#23194] Re: File.fnmatch と Dir.glob の非互換部分 — matz@... (Yukihiro Matsumoto) 2004/03/13

まつもと ゆきひろです

[#23195] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/14

山本です。

[#23196] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/14

山本です。

[#23260] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/30

山本です。

[#23261] Re: File.fnmatch とDir.glob の非互換部分 — matz@... (Yukihiro Matsumoto) 2004/03/30

まつもと ゆきひろです

[#23265] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/30

山本です。

[#23238] Re: [ruby-cvs] ruby, ruby/lib, ruby/lib/rss, ruby/sample/openssl: * lib/logger.rb: trim tail space of each line. no user visible change. — Kouhei Sutou <kou@...>

須藤です.

10 messages 2004/03/27

[ruby-dev:23192] File.fnmatch と Dir.glob の非互換部分

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2004-03-13 14:27:12 UTC
List: ruby-dev #23192
山本です。

今わかっている File.fnmatch と Dir.glob の非互換部分は以下のとおりです。

1. '[' と ']' の間に '/' がある場合
2. '[' が閉じていない場合
3. '\/' という風に、'/' をエスケープしている場合

1. は [ruby-dev:22873] でのまつもとさんの意見から File.fnmatch の 「'/' を無視する」で決定済みだと
思われますが、これを実装するには、2. もはっきりさせる必要があります。

現在の動作は、File.fnmatch が「全ての文字にマッチしない」で、Dir.glob が「'[' を通常文字扱い」です。
rubyの正規表現ではエラーなので前者という考え方と、POSIX.2で後者という考え方があると思います。
どちらがいいでしょうか?

領域指定で正規表現に合わせたので前者が自然だと思いますが、決まったほうで実装したいと思います。
実装していて気づいたことがあれば、その時報告します。

3.は 1. 2. とは関係ないので、後でもいいと思います。File.fnmatch は '[' と ']' の間にある '/' と同様(?)
パスセパレータとしては扱われません。通常文字として扱われます。Dir.glob はパスセパレータとして扱っています。

E:\ruby-cvs>miniruby.exe -ve "puts File.fnmatch('a\/b', 'a/b', File::FNM_PATHNAME)"
ruby 1.9.0 (2004-03-12) [i386-bccwin32]
false

In This Thread

Prev Next