Url (クラス)
public abstract sealed Url {inherits Serializable}
パッケージ: CURL.IO.FILE
直接継承しているサブクラス: PrivilegedUrl

Url クラスは、Curl でリソースに名前を付ける方法を提供します。次のようなリソースを参照するための、抽象的かつ一貫性を備えた方法があります。

説明

Url は一般にurlabs-urlparse-url または既に存在する Url に対する様々なメソッドにより作成されます。 Url の作成時に、システムは引数を Directory 部分と stem String に分ける方法を選択できます。通常この目的で「親ディレクトリ」の概念に当てはまらない最初の Directory が選択され、その 2 次的な効果として、stem が普通その leaf の構文をすべて理解していることから leaf を再帰的に解析する必要がなくなります。
Url はエンコーディング スキームを使って、普通は 特別な意味があると解釈される特別な文字をエスケープします。 例えば、'#'は、アンカーの開始と解析されます。同時に、これを使用して、 ASCII の範囲外にある文字をASCII として解析するようにエンコードし、ASCII の範囲外にある文字による混乱を防ぐことも可能です。Url のメソッドやゲッターは、この用法でエンコード済みの文字列を使って返しますが、Url.local-filename は例外で、ホスト 指定の形式で String を返します。エンコーディングの詳細は、url-encode-string および url-decode-string を参照してください。
Url は 4 つの部分で構成されています。
stem
名前を指定すると、その名が参照するオブジェクトを返す DirectoryDirectory の別のクラスには、この解析方法を選択するオプションがあります。これは、Curl による分散型の命名構文の実装メカニズムです。
leaf
stem によって解決される String で、この Url が表すオブジェクトを返します。
query
クエリ文字列。 このフィールドは、Url のスキームがクエリ文字列をサポートし、URL にこれが含まれる場合、このフィールドは空でない値になります。この値には、クエリを URL の他の部分と区別するための区切り文字 (通常は '?') が含まれます。
anchor
アンカー文字列。このフィールドは、この Url が表すリソース内の任意の destination を含みます。Url のスキームがアンカー文字列をサポートし、URL にアンカーが含まれる場合、このフィールドは空でない値になります。この値には、アンカーを URL の他の部分と区別するためのアンカー区切り文字 (通常は '#') が含まれます。
stemleaf により、この Url で表されるリソースへの明確なアクセス方法が構成されます。
たとえば、{url "http://www.curl.com/foo/bar.curl?query#anchor"} には http://www.curl.com という stem があり、"foo/bar.curl" は leaf、"?query" はクエリ文字列、"#anchor" はアンカーになります。

プロパティ
anchor:
self の一部である anchor は、常に空であるか、'#' 文字から始まります。
たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.anchorString "#anchor" になります。
アクセサ public abstract Url.anchor:String
basename:selfbasename 部分。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.basenameString "bar" になります。
アクセサ public Url.basename:String
display-name:
アクセサ public Url.display-name:String
extension:selfextension 部分。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.extensionString ".curl" になります。
アクセサ public Url.extension:String
filename:selffilename 部分。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.filenameString "bar.curl" になります。
アクセサ public Url.filename:String
full-filename:selffull-filename 部分。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.full-filenameString "http://www.curl.com/foo/bar.curl" になります。
アクセサ public Url.full-filename:String
leaf:self の相対パスの部分。self.stem との関連で解釈されます。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.leafString "foo/bar.curl" になります。
アクセサ public abstract Url.leaf:#String
local-filename:self がローカル ファイル システムのオブジェクトを表す場合、このアクセッサはオブジェクトの固有名を返します。それ以外の場合は null を返します。

たとえば、ホスト システムが Windows で selffile:///c:/scratch/foo.curl の場合、self.local-filenamec:\scratch\foo.curl になります。

また、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.local-filenamenull になります。
アクセサ public final Url.local-filename:#String
name:self の印字表現。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.nameString "http://www.curl.com/foo/bar.curl?query#anchor" になります。
アクセサ public abstract Url.name:String
parent:selfUrl 親。
アクセサ public Url.parent:Url
parent-dir:self が示すオブジェクトを含む Directory

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.parent-dirDirectory http://www.curl.com/foo になります。
アクセサ public Url.parent-dir:Directory
parent-dir-name:self が示すオブジェクトを含む Directory の名前。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.parent-dir-nameString "http://www.curl.com/foo" になります。
アクセサ public Url.parent-dir-name:String
pathname:selfpathname 部分。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.pathnameString "http://www.curl.com/foo/bar.curl?query" になります。
アクセサ public Url.pathname:String
pathname-tail:selfpathname-tail 部分。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.pathname-tailString "bar.curl?query" になります。
アクセサ deprecated public Url.pathname-tail:String
query:
self の一部である query は、常に空であるか、'?' 文字から始まります。
たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.queryString "?query" になります。
アクセサ public abstract Url.query:String
separator:self.stemself.leaf を解析する際に使用する separator 文字。

通常 '/' がセパレータ文字になります。
アクセサ public Url.separator:char
stem:selfDirectory 部分。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.stemDirectory http://www.curl.com になります。
アクセサ public abstract Url.stem:Directory

メソッド
canonicalize:Curl システム内で可能な範囲で self を解決します。self で表されるオブジェクトに "最下位のレベル" の名前を与える Url を返します。
public {Url.canonicalize}:Url
concat:相対パスを self に連結して新規の Url を作成します。

たとえば、selfhttp://www.curl.com/foo の場合、{self.concat "bar.curl"}http://www.curl.com/foo/bar.curl になります。
public {Url.concat tail:String}:Url
instantiate-Directory:基になるオブジェクトが実際に存在するかどうかをチェックせずに、self が名前を付けた Directory を返します。
public {Url.instantiate-Directory}:Directory
instantiate-File:基になるオブジェクトが実際に存在するかどうかをチェックせずに、self が名前を付けた File を返します。
public {Url.instantiate-File}:File
merge:相対パスまたは絶対パスを self にマージして新規の Url を作成します。

たとえば、selfhttp://www.curl.com/foo/bar.curl の場合、{self.merge "zip.curl"}http://www.curl.com/foo/zip.curl になります。

さらに、{self.merge "http://www.curl.com/"}http://www.curl.com/ になります。
public {Url.merge tail:String}:Url
name-relative-to-url:directory-url を基準として、URL の名前を算出します。
public {Url.name-relative-to-url directory-url:Url}:String
resolve:self で表されるオブジェクトを返します。
public {Url.resolve error-if-missing?:bool = true}:any
set-anchor:self と同じ新規の Url を返しますが、self.anchoranchor に置き換えられます。
public {Url.set-anchor anchor:String}:Url
set-basename:self と同じ新規の Url を返しますが、self.basenamebasename に置き換えられます。
public {Url.set-basename basename:String}:Url
set-extension:self と同じ新規の Url を返しますが、self.extensionextension に置き換えられます。
public {Url.set-extension extension:String}:Url
set-filename:self と同じ新規の Url を返しますが、self.filenamefilename に置き換えられます。
public {Url.set-filename filename:String}:Url
set-leaf:self と同じ新規の Url を返しますが、self.leafleaf に置き換えられます。
public {Url.set-leaf leaf:#String}:Url
set-query:self と同じ新規の Url を返しますが、self.queryquery に置き換えられます。
public {Url.set-query query:String}:Url
underneath?:この URL が dir の下にあるかを特定します。
public {Url.underneath? dir:Url}:bool
valid-separator?:
cself.leaf を解析するのに使用される場合、true を返します。通常、{self.valid-separator? self.separator}true ですが、self.valid-separator? が true を返しても self.separator ではない文字の場合があります。
ほとんどの場合、'/' だけが有効なセパレータになります。
public {Url.valid-separator? c:char}:bool
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize




プロパティ詳細
anchor (アクセサ)
アクセサ public abstract Url.anchor:String

self の一部である anchor は、常に空であるか、'#' 文字から始まります。
たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.anchorString "#anchor" になります。

注意事項

self.anchor は絶対に null になりません。self にアンカーがない場合、self.anchor は空の文字列 ("") になります。


basename (アクセサ)
アクセサ public Url.basename:String

selfbasename 部分。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.basenameString "bar" になります。



display-name (アクセサ)
アクセサ public Url.display-name:String
""


extension (アクセサ)
アクセサ public Url.extension:String

selfextension 部分。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.extensionString ".curl" になります。



filename (アクセサ)
アクセサ public Url.filename:String

selffilename 部分。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.filenameString "bar.curl" になります。



full-filename (アクセサ)
アクセサ public Url.full-filename:String

selffull-filename 部分。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.full-filenameString "http://www.curl.com/foo/bar.curl" になります。



leaf (アクセサ)
アクセサ public abstract Url.leaf:#String

self の相対パスの部分。self.stem との関連で解釈されます。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.leafString "foo/bar.curl" になります。

注意事項

self.leafnull にすることができます。


local-filename (アクセサ)
アクセサ public final Url.local-filename:#String

self がローカル ファイル システムのオブジェクトを表す場合、このアクセッサはオブジェクトの固有名を返します。それ以外の場合は null を返します。

たとえば、ホスト システムが Windows で selffile:///c:/scratch/foo.curl の場合、self.local-filenamec:\scratch\foo.curl になります。

また、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.local-filenamenull になります。

注意事項

これは Url において、エンコードされていない文字列を返せる唯一のゲッターまたはメソッドです。エンコーディング スキームの詳細は、url-encode-string および url-decode-string を参照してください。local-filename から有効な URL 部分への変換に最小限必要なエンコーディングの詳細は、url-decode-filename および url-encode-filename を参照してください。


name (アクセサ)
アクセサ public abstract Url.name:String

self の印字表現。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.nameString "http://www.curl.com/foo/bar.curl?query#anchor" になります。



parent (アクセサ)
アクセサ public Url.parent:Url

selfUrl 親。

説明

Url の親は通常、".." を使用する Url.concat の呼び出しの結果と同様です。
たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.parenthttp://www.curl.com/fooself.parent.parenthttp://www.curl.comself.parent.parent.parent もまた http://www.curl.com になります。


parent-dir (アクセサ)
アクセサ public Url.parent-dir:Directory

self が示すオブジェクトを含む Directory

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.parent-dirDirectory http://www.curl.com/foo になります。



parent-dir-name (アクセサ)
アクセサ public Url.parent-dir-name:String

self が示すオブジェクトを含む Directory の名前。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.parent-dir-nameString "http://www.curl.com/foo" になります。



pathname (アクセサ)
アクセサ public Url.pathname:String

selfpathname 部分。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.pathnameString "http://www.curl.com/foo/bar.curl?query" になります。



pathname-tail (アクセサ)
アクセサ deprecated public Url.pathname-tail:String

selfpathname-tail 部分。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.pathname-tailString "bar.curl?query" になります。



query (アクセサ)
アクセサ public abstract Url.query:String

self の一部である query は、常に空であるか、'?' 文字から始まります。
たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.queryString "?query" になります。

注意事項

self.query は絶対に null になりません。self にクエリ文字列がない場合、self.query は空の文字列 ("") になります。


separator (アクセサ)
アクセサ public Url.separator:char

self.stemself.leaf を解析する際に使用する separator 文字。

通常 '/' がセパレータ文字になります。



stem (アクセサ)
アクセサ public abstract Url.stem:Directory

selfDirectory 部分。

たとえば、selfhttp://www.curl.com/foo/bar.curl?query#anchor の場合、self.stemDirectory http://www.curl.com になります。






メソッド詳細
canonicalize (メソッド)
public {Url.canonicalize}:Url

Curl システム内で可能な範囲で self を解決します。self で表されるオブジェクトに "最下位のレベル" の名前を与える Url を返します。



concat (メソッド)
public {Url.concat tail:String}:Url

相対パスを self に連結して新規の Url を作成します。

たとえば、selfhttp://www.curl.com/foo の場合、{self.concat "bar.curl"}http://www.curl.com/foo/bar.curl になります。



instantiate-Directory (メソッド)
public {Url.instantiate-Directory}:Directory

基になるオブジェクトが実際に存在するかどうかをチェックせずに、self が名前を付けた Directory を返します。

注意事項

LocalDirectory または HttpDirectory などを返す Directory の特定のサブクラスには、それが表す特定のタイプのリソースに関連する便利なメソッドを持つものがあります。


instantiate-File (メソッド)
public {Url.instantiate-File}:File

基になるオブジェクトが実際に存在するかどうかをチェックせずに、self が名前を付けた File を返します。

注意事項

LocalFile または HttpFile などを返す File の特定のサブクラスには、それが表す特定のタイプのリソースに関連する便利なメソッドを持つものがあります。


merge (メソッド)
public {Url.merge tail:String}:Url

相対パスまたは絶対パスを self にマージして新規の Url を作成します。

たとえば、selfhttp://www.curl.com/foo/bar.curl の場合、{self.merge "zip.curl"}http://www.curl.com/foo/zip.curl になります。

さらに、{self.merge "http://www.curl.com/"}http://www.curl.com/ になります。



name-relative-to-url (メソッド)
public {Url.name-relative-to-url directory-url:Url}:String

directory-url を基準として、URL の名前を算出します。

説明

与えられた directory-url の URL の相対的な名前を算出します。同じディレクトリの parse-url に渡されると同じ URL を返します。すなわち、URL u でディレクトリ d の場合は、次の式は true になります。

u == {parse-url {u.name-relative-to-url d}, relative-url = d }

directory-url と相対的な名前を返すことができない場合 -- たとえば 現在の URL と ディレクトリ URL が同じ stem ディレクトリを共有しない場合 -- self.name が返されます。


resolve (メソッド)
public {Url.resolve error-if-missing?:bool = true}:any

self で表されるオブジェクトを返します。

説明

これは self により表されるオブジェクトが実際に存在するかどうかを調べるメソッドです。オブジェクトがローカル ファイルシステムに存在する場合、このメソッドはオブジェクトがあると予測される場所を調べて存在するかどうかを確認します。

オブジェクトがネットワーク上にある場合 (具体的には http:// または https:// Url の場合)、このメソッドはオブジェクトがファイルであり、存在すると仮定して、そのオブジェクトを表す File を返します。
error-if-missing?: self がローカル ファイルシステムのオブジェクトを表し、そのオブジェクトが存在しない場合のこのメソッドの動作を指定します。この場合、error-if-missing?true (既定) に指定されると、このメソッドは MissingFileException をスローします。それ以外の場合は null が返されます。

戻り値

self により表されるオブジェクトを返します。self がローカル ファイル システムの存在しないオブジェクトを表し、error-if-missing?false に指定された場合、このメソッドは null を返します。


set-anchor (メソッド)
public {Url.set-anchor anchor:String}:Url

self と同じ新規の Url を返しますが、self.anchoranchor に置き換えられます。



set-basename (メソッド)
public {Url.set-basename basename:String}:Url

self と同じ新規の Url を返しますが、self.basenamebasename に置き換えられます。



set-extension (メソッド)
public {Url.set-extension extension:String}:Url

self と同じ新規の Url を返しますが、self.extensionextension に置き換えられます。



set-filename (メソッド)
public {Url.set-filename filename:String}:Url

self と同じ新規の Url を返しますが、self.filenamefilename に置き換えられます。



set-leaf (メソッド)
public {Url.set-leaf leaf:#String}:Url

self と同じ新規の Url を返しますが、self.leafleaf に置き換えられます。



set-query (メソッド)
public {Url.set-query query:String}:Url

self と同じ新規の Url を返しますが、self.queryquery に置き換えられます。



underneath? (メソッド)
public {Url.underneath? dir:Url}:bool

この URL が dir の下にあるかを特定します。

導入: バージョン 6.0


valid-separator? (メソッド)
public {Url.valid-separator? c:char}:bool

cself.leaf を解析するのに使用される場合、true を返します。通常、{self.valid-separator? self.separator}true ですが、self.valid-separator? が true を返しても self.separator ではない文字の場合があります。
ほとんどの場合、'/' だけが有効なセパレータになります。