In article <8765ith66g.wl / tempest.nemui.org>,
  Tatsuki Sugiura <sugi / nemui.org> writes:

> ディレクトリのサポートがありました。これは勿論、同じクラスにメソッドを
> 混在させても良かったのでしょうが、やっぱり分けたかったのです。
> # でも、URI::HTTP::{File,Dir} と分けるとツリーが変ですし

ディレクトリはインスタンスメソッドではないもので扱うんですか?
つまり、「操作する為には基本的にインスタンスメソッドを呼ぶ」という基本
からは外れている?

> それから、URI クラスがサポートしていない、しかも、RFC で定義されないような
> 変なURI を扱う予定がありました(zip:, pop:, mbox:, gzip: とか)。
> あと、ネストしたスキームを扱う予定もありました。
> # tar:zip:http://serv/file.zip/dir_in_zip/file.tar/file_in_tar_in_zip
> # みたいな。
> この辺で使うメソッドを、全部 URI::Generic に突っ込むのはいやですし、かと
> いってこの辺りの非標準スキームの為に URI のサブクラスを勝手に定義するのは
> やりたくなかったです。
>
> この辺があって URI を拡張するというのは最初から頭から抜けていました。

Pathname は URI とは関係ないクラスである事からも分かるように、べつに
URI を拡張する必要はありません。

実際、

def m(x)
  x.open('r') {|f| f.each_line {|line| puts line } }
end

というメソッドで x に渡せる条件は open というメソッドを提供していて、
その仕様が File.open (の第1引数を抜かしたもの)に似ているという事だけで
す。

したがって、URI 以外のクラスを扱うことは問題ありません。

ネストしたようなものは、具体的に考えたのは gzip くらいですが、Pathname
や URI などのラッパーとすることを考えています。
# decorator pattern というか。
-- 
[田中 哲][たなか あきら][Tanaka Akira]