names=build
visibility=public
kind=defined

--- build(ary)     -> URI::FTP
--- build(hash)    -> URI::FTP

引数で与えられた URI 構成要素から URI::FTP オブジェクトを生成します。
引数の正当性を検査します。

例:
  p URI::FTP.build([nil, "www.example.com", 10020, "/path",  'a'])
  #=> #<URI::FTP:0x201c4f9c URL:ftp://www.example.com:10020/path;type=a>
  
  p URI::FTP.build({:host => "www.example.com", :path => "/path",  :typecode => 'a'})
  #=> #<URI::FTP:0x201bd9cc URL:ftp://www.example.com/path;type=a>
  
  p URI::FTP.build([nil, 'example.com', nil, '/foo', 'i').to_s
  #=> 'ftp://example.com/%2Ffoo;type=i'

@param ary 構成要素を表す文字列の配列を与えます。要素は
//emlist{
      [userinfo, host, port, path, typecode]
//}
           の順です。typecode は、"a"、"i" あるいは "d" です。"a" はテキスト、"i" はバイナリ、
           "d" はディレクトリを表します。"a" がテキストで、"i" がバイナリなのは、それぞれの
           データタイプがFTPのプロトコルで ASCII と IMAGE と呼ばれていたためです。

@param hash 構成要素を表すハッシュを与えます。ハッシュのキーは
//emlist{
 :scheme, :userinfo, :host, :port, :path, :typecode
//}
            のいずれかです。ハッシュの値は文字列です。typecode は、
            "a"、"i" あるいは "d" です。"a" はテキスト、"i" はバイナリ、
            "d" はディレクトリを表します。"a" がテキストで、"i" がバイナリなのは、
            それぞれのデータタイプがFTPのプロトコルで ASCII と IMAGE と呼ばれていたためです。

@raise URI::InvalidComponentError 各要素が適合しない場合に発生します。

@raise ArgumentError typecode に定められた以外の文字を与えると発生します。

