From: Kazuhiro Yoshida Date: 2001-08-21T03:26:02+09:00 Subject: [ruby-list:31025] File#join もりきゅうです。subject 変えました。 nobu.nakada@nifty.ne.jp wrote: > うーん、root directoryかどうかじゃなくて、間に余分な'/'が入る > かどうかということだと思っていたのですが。 うーん。 以前の議論を読まないまま勝手に実装したのでなんですが つまり,join する前に各要素に対して gsub!(/^\/+/, '') gsub!(/\/+$/, '') するということでしょうか。 join した後に gsub!(%r'//+', '/') したほうが効率が良いかな。 ついでに gsub!(%r'(\./)+', '') しますか。 ../ とか .../ にも対応すべきかも。でも,どうやって? これは DOSish の範囲ではないなあ。File.join の問題。 rb_file_s_expand_path がそれっぽい感じですね。って 複雑すぎて何やってるのか読めない。^^; この辺 path まわりの一般則ってどこかに C での実装が ありそうなものですけど.. sh とかかな? あと,今は DOSish.join(*DOSish.split('C:/foo')) を DOSish.join(DOSish.split('C:/foo')) と書けません。 C レベルでは rb_ary_join みたいに場合分けして実装 しないといけないのか..。面倒くさいなあ。 ---- YOSHIDA Kazuhiro moriq@moriq.com http://www.moriq.com/