[#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:23261] Re: File.fnmatch とDir.glob の非互換部分

From: matz@... (Yukihiro Matsumoto)
Date: 2004-03-30 04:13:44 UTC
List: ruby-dev #23261
まつもと ゆきひろです

In message "[ruby-dev:23260] Re: File.fnmatch  とDir.glob の非互換部分"
    on 04/03/30, H.Yamamoto <ocean@m2.ccsnet.ne.jp> writes:

|touch a とした後
|
|puts File.fnmatch("a\\", "a")
|puts File.fnmatch("a\\", "a\\")
|puts Dir.glob("a\\")
|
|を実行すると、
|
|false
|true
|a
|
|となって、不完全なエスケープの解釈が一貫していません。

ふむ。

|File.fnmatch は、不完全なエスケープを通常文字の'\'とみなし、
|Dir.glob は、PLAIN な場合の不完全なエスケープを remove_backslashes で削除しています。
|
|どうするのがいいでしょうか?実装しやすいのは、不完全なエスケープを削除するのが一番です。
|通常文字として扱うと、'a\/b' を '/' で単に分けたときに 'a\' と 'b' になってしまうので、
|'\/' で分けるようにしないといけません。なので、remove_backslashes、glob_make_pattern で
|それぞれ余分な条件文を追加しなくてはいけません。

不完全なバックスラッシュを削除してもかまわないとは思うのです
けれども、

|不完全なエスケープを削除するだけなら、下のパッチだけですむと思います。'a\/b' を '/' で
|分けても、'a\' は 'a' といっしょですから。

というのはよくわかりません。'\/'は「不完全なバックスラッシュ」
ではないような気がしますから。

In This Thread