[#39325] File.fnmatch の改良について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
はじめまして、山本です。
18 messages
2004/03/05
[#39327] Re: File.fnmatch の改良について
— Minero Aoki <aamine@...>
2004/03/05
青木です。
[#39326] Re: File.fnmatch の改良について
— "U.Nakamura" <usa@...>
2004/03/05
こんにちは、なかむら(う)です。
[#39329] Re: File.fnmatch の改良について
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/03/05
山本です。
[#39331] Re: File.fnmatch の改良について
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/03/05
山本です。
[#39335] Re: File.fnmatch の改良について
— "U.Nakamura" <usa@...>
2004/03/05
こんにちは、なかむら(う)です。
[#39347] Windows上でRuby+MySQL — Dan Yamamoto <dango@...>
団と申します。
9 messages
2004/03/09
[#39348] Re: Windows上でRuby+MySQL
— とみたまさひろ <tommy@...>
2004/03/09
とみたです。
[#39349] Re: Windows上でRuby+MySQL
— Yamamoto Dan <dango@...>
2004/03/09
団です。
[#39352] 1.8 の irb/completion.rb の挙動の違い — Wataru Gotoh <gotow@...>
後藤@北の方と申します。
1 message
2004/03/09
[#39367] [ANN] Nora 0.0.20040310 released — MoonWolf <moonwolf@...>
MoonWolfです。
1 message
2004/03/10
[#39383] Re: win32ole でexcel が終了しない — g-1@...5.so-net.ne.jp
中です。
7 messages
2004/03/18
[#39401] rubyの関数定義について — "yokoyama" <yokoyama@...0038.net>
はじめましてyokoyamaと申します。
11 messages
2004/03/21
[#39403] Re: rubyの関数定義について
— rubikitch <rubikitch@...>
2004/03/21
From: "yokoyama" <yokoyama@mf.0038.net>
[#39423] 例えば "26" を "&" に変換したい(sub, hex, pack) — 若宮 修司 <gba02077@...>
皆さん、初めまして。
5 messages
2004/03/23
[#39427] require 'cal'をexe化すると終了時にアプリケーションエラー — katata@...
どうもTa3と申します。
4 messages
2004/03/23
[#39429] trial version of Ruby/Tk — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
18 messages
2004/03/23
[#39454] Re: trial version of Ruby/Tk
— "Shirai,Kaoru" <shirai@...>
2004/03/31
白井です。
[#39460] Re: trial version of Ruby/Tk
— Hidetoshi NAGAI <nagai@...>
2004/04/01
永井@知能.九工大です.
[#39465] Re: trial version of Ruby/Tk
— "Shirai,Kaoru" <shirai@...>
2004/04/01
白井です。
[#39466] Re: trial version of Ruby/Tk
— Hidetoshi NAGAI <nagai@...>
2004/04/01
永井@知能.九工大です.
[#39467] Re: trial version of Ruby/Tk
— Hidetoshi NAGAI <nagai@...>
2004/04/01
永井@知能.九工大です.
[#39469] Re: trial version of Ruby/Tk
— "Shirai,Kaoru" <shirai@...>
2004/04/01
白井です。
[#39474] Re: trial version of Ruby/Tk
— Hidetoshi NAGAI <nagai@...>
2004/04/02
永井@知能.九工大です.
[#39476] Re: trial version of Ruby/Tk
— "Shirai,Kaoru" <shirai@...>
2004/04/02
白井です。
[#39482] Re: trial version of Ruby/Tk
— Hidetoshi NAGAI <nagai@...>
2004/04/02
永井@知能.九工大です.
[#39431] 「RPGツクール」の最新版にRubyが使われているそうですね — cyross@...
お久しぶりです。
6 messages
2004/03/23
[#39440] Amritaで複数行(<tr>)を繰り返したい — ITO Asuka <asuka@...>
伊藤と申します。
5 messages
2004/03/25
[#39444] gethostbynameでホスト名が引けない — 堀川 久 <vzw00011@...>
こんにちは。
11 messages
2004/03/28
[#39446] Re: gethostbynameでホスト名が引けない
— matz@... (Yukihiro Matsumoto)
2004/03/28
まつもと ゆきひろです
[#39450] Re: gethostbynameでホスト名が引けない
— 堀川 久 <vzw00011@...>
2004/03/30
こんにちは。
[#39451] Re: gethostbynameでホスト名が引けない
— matz@... (Yukihiro Matsumoto)
2004/03/30
まつもと ゆきひろです
[#39448] [ANN] Rubyお花見@井の頭公園 — TAKAHASHI Masayoshi <maki@...>
高橋征義です。お花見のご案内です。
1 message
2004/03/29
[#39453] Re: int/int in Ruby2? — Masaaki Sakano <mas@...>
坂野 正明です。
36 messages
2004/03/31
[#39455] Re: int/int in Ruby2?
— NISHIMATSU Takeshi <t-nissie@...>
2004/03/31
西松と申します.
[#39470] Re: int/int in Ruby2?
— Masaaki Sakano <mas@...>
2004/04/01
坂野 正明です。
[#39473] Re: int/int in Ruby2?
— matz@... (Yukihiro Matsumoto)
2004/04/01
まつもと ゆきひろです
[#39484] Re: int/int in Ruby2?
— Masaaki Sakano <mas@...>
2004/04/03
坂野 正明です。
[#39514] Re: int/int in Ruby2?
— OOTANI TAKASHI <otn@...5.so-net.ne.jp>
2004/04/08
大谷と申します。
[#39528] Re: int/int in Ruby2?
— "T Akutsu" <locrian@...>
2004/04/09
あくつです。なんかわくわくしてきだぞ。(^^;)
[#39538] Re: int/int in Ruby2?
— "T Akutsu" <locrian@...>
2004/04/12
あくつです。
[ruby-list:39325] File.fnmatch の改良について
From:
"H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date:
2004-03-05 09:16:40 UTC
List:
ruby-list #39325
はじめまして、山本です。
このたび、File.fnmatch を改良してみたのですが、ruby-talk でも ruby-dev でもあまりレスがありませんでした。
(ruby-talk ではGavinからレスをいただきました。SUSv3準拠に好意的でした)
(ruby-dev ではまつもとさんからレスをいただきました。
SUSv3準拠はまだ理解できるが、FNM_SEPMATCH(後述)の導入には抵抗があるそうです)
二人の意見しか聞けないのでは、あきらめることも採用を主張することも難しいので、ruby-listに投稿することに
しました。よろしくお願いします。
CVS-HEAD の dir.c(Rev1.109) に置き換えて試せるものを
http://www.ccsnet.ne.jp/~ocean/23115/dir.c
に、CVS-HEAD がなくても挙動を試せるものを
http://www.ccsnet.ne.jp/~ocean/23030/fnmatch.c
に用意しています。
仕様は次のとおりです。
・パターンマッチは SUSv3 (Single Unix Specification ver3) に準拠している
・パスセパレータは '/' だけ受け入れる。これは DOSISH のとき、パターンで、エスケープ文字とパス区切りの
競合が起きていたための措置で、次のようにすることはできます。
=> File.fnmatch(pattern, string) で pattern では '/' だけしか使えないが、string ではプラットホーム依存の
パス区切りを使えるようにする
・FNM_PATHNAME を廃止して、逆の意味の FNM_SEPMATCH を導入する。理由は、シェルやDir.globとデフォルトの動作を
あわせるため。FNM_DOTMATCH との対比もよい。
> [ruby-dev:16555]
>
>* 利用者は、シェルのパターンマッチの挙動をまず意図しそう。
>
> p File.fnmatch("a*/c", "a/b/c")
> => true
>
> あれ?っとなりそう。
・FNM_SEPMATCH が指定されていないとき、'**/' が File.fnmatch でも使えるようになった
この変更について、ご意見をお寄せください。
//-----------------------------------------------------------------------------------
// FNM_SEPMATCH がないときのパターンマッチルール
//-----------------------------------------------------------------------------------
・ワイルドカードが '/' にマッチしない
File.fnmatch('*', 'a/b') #=> false
File.fnmatch('a?b', 'a/b') #=> false
・'/' を領域指定に含むことはできない。'[a/c]' は '[a' ディレクトリの下の 'c]' と解釈される。
File.fnmatch('[a/c]', 'a') #=> false
File.fnmatch('[a/c]', '/') #=> false
File.fnmatch('[a/c]', 'c') #=> false
File.fnmatch('[a/c]', '[a/c]') #=> true
・'**/'が使えるようになった
File.fnmatch('**/c', 'a/b/c') #=> true
・File::FNM_DOTMATCH がないと、ワイルドカードが「文字列の先頭の '.'」と「'/' の直後の '.'」にマッチしない
File.fnmatch('*', '.b') #=> false
File.fnmatch('*', '.b', File::FNM_DOTMATCH) #=> true
File.fnmatch('a/*', 'a/.b') #=> false
File.fnmatch('a/*', 'a/.b', File::FNM_DOTMATCH) #=> true
//-----------------------------------------------------------------------------------
// FNM_SEPMATCH があるときのパターンマッチルール
//-----------------------------------------------------------------------------------
・ワイルドカードは '/' にもマッチする
File.fnmatch('*', 'a/b', File::FNM_SEPMATCH) #=> true
File.fnmatch('a?b', 'a/b', File::FNM_SEPMATCH) #=> true
・'/' も領域指定に含むことができる。'[a/c]' は 'a' or '/' or 'c' と解釈される。
File.fnmatch('[a/c]', 'a', File::FNM_SEPMATCH) #=> true
File.fnmatch('[a/c]', '/', File::FNM_SEPMATCH) #=> true
File.fnmatch('[a/c]', 'c', File::FNM_SEPMATCH) #=> true
File.fnmatch('[a/c]', '[a/c]', File::FNM_SEPMATCH) #=> false
・File::FNM_DOTMATCH がないと、ワイルドカードが「文字列の先頭の '.'」にマッチしない
File.fnmatch('*', '.b', File::FNM_SEPMATCH) #=> false
File.fnmatch('*', '.b', File::FNM_SEPMATCH | File::FNM_DOTMATCH) #=> true
File.fnmatch('a/*', 'a/.b', File::FNM_SEPMATCH) #=> true
//-----------------------------------------------------------------------------------
// 領域指定について ('[' と ']')
//-----------------------------------------------------------------------------------
・'[' と ']' の間では、FNM_NOESCAPE の有無にかかわらず、エスケープは効かない。
'[\*]' は、常に '\' or '*' となる
・領域指定に ']' を含めたい場合は、先頭に置く
'[]ab]' は ']' or 'a' or 'b' となる
・領域指定に '-' を含めたい場合は、先頭か最後に置く
'[-ab]' と '[ab-]' は 'a' or 'b' or '-' となる
・'[a-b-c]' のように '-' でつなぐパターンは SUSv3 では未定義
この実装では '[a-bb-c]' と解釈している
・FNM_DOTMATCH がないときに、明示的に '.' を含む領域指定が '.' にマッチすべきかは SUSv3 では未定義
この実装ではマッチしない