(クラス)
Url クラスは、Curl でリソースに名前を付ける方法を提供します。次のようなリソースを参照するための、抽象的かつ一貫性を備えた方法があります。
- ローカル ファイル システムのファイルとディレクトリ (読み取りと書き込み用)。
- Web ページ (読み取り用)。
- 文字列ファイル。
説明
Url はエンコーディング スキームを使って、普通は 特別な意味があると解釈される特別な文字をエスケープします。
例えば、
'#'は、アンカーの開始と解析されます。同時に、これを使用して、
ASCII の範囲外にある文字をASCII として解析するようにエンコードし、ASCII の範囲外にある文字による混乱を防ぐことも可能です。
Url のメソッドやゲッターは、この用法でエンコード済みの文字列を使って返しますが、
Url.local-filename は例外で、ホスト 指定の形式で
String を返します。エンコーディングの詳細は、
url-encode-string および
url-decode-string を参照してください。
Url は 4 つの部分で構成されています。
- stem
- 名前を指定すると、その名が参照するオブジェクトを返す Directory。Directory の別のクラスには、この解析方法を選択するオプションがあります。これは、Curl による分散型の命名構文の実装メカニズムです。
- leaf
- stem によって解決される String で、この Url が表すオブジェクトを返します。
- query
- クエリ文字列。
このフィールドは、Url のスキームがクエリ文字列をサポートし、URL にこれが含まれる場合、このフィールドは空でない値になります。この値には、クエリを URL の他の部分と区別するための区切り文字 (通常は '?') が含まれます。
- anchor
- アンカー文字列。このフィールドは、この Url が表すリソース内の任意の destination を含みます。Url のスキームがアンカー文字列をサポートし、URL にアンカーが含まれる場合、このフィールドは空でない値になります。この値には、アンカーを URL の他の部分と区別するためのアンカー区切り文字 (通常は '#') が含まれます。
stem と leaf により、この 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 は、常に空であるか、'#' 文字から始まります。 たとえば、 self が http://www.curl.com/foo/bar.curl?query#anchor の場合、 self.anchor は String "#anchor" になります。 |
アクセサ public abstract Url.anchor:
String
basename: | self の basename 部分。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.basename は String "bar" になります。 |
アクセサ public Url.basename:
String
アクセサ public Url.display-name:
String
extension: | self の extension 部分。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.extension は String ".curl" になります。 |
アクセサ public Url.extension:
String
filename: | self の filename 部分。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.filename は String "bar.curl" になります。 |
アクセサ public Url.filename:
String
full-filename: | self の full-filename 部分。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.full-filename は String "http://www.curl.com/foo/bar.curl" になります。 |
アクセサ public Url.full-filename:
String
leaf: | self の相対パスの部分。self.stem との関連で解釈されます。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.leaf は String "foo/bar.curl" になります。 |
アクセサ public abstract Url.leaf:#
String
local-filename: | self がローカル ファイル システムのオブジェクトを表す場合、このアクセッサはオブジェクトの固有名を返します。それ以外の場合は null を返します。
たとえば、ホスト システムが Windows で self が file:///c:/scratch/foo.curl の場合、self.local-filename は c:\scratch\foo.curl になります。
また、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.local-filename は null になります。 |
アクセサ public final Url.local-filename:#
String
name: | self の印字表現。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.name は String "http://www.curl.com/foo/bar.curl?query#anchor" になります。 |
アクセサ public abstract Url.name:
String
アクセサ public Url.parent:
Url
parent-dir: | self が示すオブジェクトを含む Directory。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.parent-dir は Directory http://www.curl.com/foo になります。 |
parent-dir-name: | self が示すオブジェクトを含む Directory の名前。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.parent-dir-name は String "http://www.curl.com/foo" になります。 |
アクセサ public Url.parent-dir-name:
String
pathname: | self の pathname 部分。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.pathname は String "http://www.curl.com/foo/bar.curl?query" になります。 |
アクセサ public Url.pathname:
String
pathname-tail: | self の pathname-tail 部分。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.pathname-tail は String "bar.curl?query" になります。 |
アクセサ deprecated public Url.pathname-tail:
String
query: | self の一部である query は、常に空であるか、'?' 文字から始まります。 たとえば、 self が http://www.curl.com/foo/bar.curl?query#anchor の場合、 self.query は String "?query" になります。 |
アクセサ public abstract Url.query:
String
separator: | self.stem が self.leaf を解析する際に使用する separator 文字。
通常 '/' がセパレータ文字になります。 |
アクセサ public Url.separator:
char
stem: | self の Directory 部分。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.stem は Directory http://www.curl.com になります。 |
canonicalize: | Curl システム内で可能な範囲で self を解決します。self で表されるオブジェクトに "最下位のレベル" の名前を与える Url を返します。 |
public | {Url.canonicalize}:Url |
concat: | 相対パスを self に連結して新規の Url を作成します。
たとえば、self が http://www.curl.com/foo の場合、{self.concat "bar.curl"} は http://www.curl.com/foo/bar.curl になります。 |
public | {Url.instantiate-File}:File |
merge: | 相対パスまたは絶対パスを self にマージして新規の Url を作成します。
たとえば、self が http://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.name-relative-to-url directory-url:Url}:String |
public | {Url.resolve error-if-missing?:bool = true}:any |
set-anchor: | self と同じ新規の Url を返しますが、self.anchor が anchor に置き換えられます。 |
public | {Url.set-basename basename:String}:Url |
public | {Url.set-extension extension:String}:Url |
public | {Url.set-filename filename:String}:Url |
set-leaf: | self と同じ新規の Url を返しますが、self.leaf が leaf に置き換えられます。 |
set-query: | self と同じ新規の Url を返しますが、self.query が query に置き換えられます。 |
public | {Url.underneath? dir:Url}:bool |
valid-separator?: | c が self.leaf を解析するのに使用される場合、true を返します。通常、{self.valid-separator? self.separator} は true ですが、self.valid-separator? が true を返しても self.separator ではない文字の場合があります。 ほとんどの場合、'/' だけが有効なセパレータになります。 |
public | {Url.valid-separator? c:char}:bool |
(アクセサ)
アクセサ public abstract Url.anchor:
String self の一部である anchor は、常に空であるか、'#' 文字から始まります。
たとえば、
self が
http://www.curl.com/foo/bar.curl?query#anchor の場合、
self.anchor は
String "#anchor" になります。
注意事項
self.anchor は絶対に null になりません。self にアンカーがない場合、self.anchor は空の文字列 ("") になります。
(アクセサ)
アクセサ public Url.basename:
String self の basename 部分。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.basename は String "bar" になります。
(アクセサ)
アクセサ public Url.display-name:
String ""
(アクセサ)
アクセサ public Url.extension:
String self の extension 部分。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.extension は String ".curl" になります。
(アクセサ)
アクセサ public Url.filename:
String self の filename 部分。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.filename は String "bar.curl" になります。
(アクセサ)
アクセサ public Url.full-filename:
String self の full-filename 部分。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.full-filename は String "http://www.curl.com/foo/bar.curl" になります。
(アクセサ)
アクセサ public abstract Url.leaf:#
String self の相対パスの部分。self.stem との関連で解釈されます。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.leaf は String "foo/bar.curl" になります。
注意事項
self.leaf を null にすることができます。
(アクセサ)
アクセサ public final Url.local-filename:#
String self がローカル ファイル システムのオブジェクトを表す場合、このアクセッサはオブジェクトの固有名を返します。それ以外の場合は null を返します。
たとえば、ホスト システムが Windows で self が file:///c:/scratch/foo.curl の場合、self.local-filename は c:\scratch\foo.curl になります。
また、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.local-filename は null になります。
注意事項
(アクセサ)
アクセサ public abstract Url.name:
String self の印字表現。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.name は String "http://www.curl.com/foo/bar.curl?query#anchor" になります。
(アクセサ)
アクセサ public Url.parent:
Url self の Url 親。
説明
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.parent は http://www.curl.com/foo、self.parent.parent は http://www.curl.com、self.parent.parent.parent もまた http://www.curl.com になります。
(アクセサ)
self が示すオブジェクトを含む Directory。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.parent-dir は Directory http://www.curl.com/foo になります。
(アクセサ)
アクセサ public Url.parent-dir-name:
String self が示すオブジェクトを含む Directory の名前。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.parent-dir-name は String "http://www.curl.com/foo" になります。
(アクセサ)
アクセサ public Url.pathname:
String self の pathname 部分。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.pathname は String "http://www.curl.com/foo/bar.curl?query" になります。
(アクセサ)
アクセサ deprecated public Url.pathname-tail:
String self の pathname-tail 部分。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.pathname-tail は String "bar.curl?query" になります。
(アクセサ)
アクセサ public abstract Url.query:
String self の一部である query は、常に空であるか、'?' 文字から始まります。
たとえば、
self が
http://www.curl.com/foo/bar.curl?query#anchor の場合、
self.query は
String "?query" になります。
注意事項
self.query は絶対に null になりません。self にクエリ文字列がない場合、self.query は空の文字列 ("") になります。
(アクセサ)
アクセサ public Url.separator:
char self.stem が self.leaf を解析する際に使用する separator 文字。
通常 '/' がセパレータ文字になります。
(アクセサ)
self の Directory 部分。
たとえば、self が http://www.curl.com/foo/bar.curl?query#anchor の場合、self.stem は Directory http://www.curl.com になります。
(メソッド)
public | {Url.canonicalize}:Url |
Curl システム内で可能な範囲で self を解決します。self で表されるオブジェクトに "最下位のレベル" の名前を与える Url を返します。
(メソッド)
相対パスを self に連結して新規の Url を作成します。
たとえば、self が http://www.curl.com/foo の場合、{self.concat "bar.curl"} は http://www.curl.com/foo/bar.curl になります。
(メソッド)
基になるオブジェクトが実際に存在するかどうかをチェックせずに、self が名前を付けた Directory を返します。
注意事項
(メソッド)
public | {Url.instantiate-File}:File |
基になるオブジェクトが実際に存在するかどうかをチェックせずに、self が名前を付けた File を返します。
注意事項
(メソッド)
相対パスまたは絶対パスを self にマージして新規の Url を作成します。
たとえば、self が http://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.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 が返されます。
(メソッド)
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 を返します。
(メソッド)
self と同じ新規の Url を返しますが、self.anchor が anchor に置き換えられます。
(メソッド)
public | {Url.set-basename basename:String}:Url |
self と同じ新規の Url を返しますが、self.basename が basename に置き換えられます。
(メソッド)
public | {Url.set-extension extension:String}:Url |
self と同じ新規の Url を返しますが、self.extension が extension に置き換えられます。
(メソッド)
public | {Url.set-filename filename:String}:Url |
self と同じ新規の Url を返しますが、self.filename が filename に置き換えられます。
(メソッド)
self と同じ新規の Url を返しますが、self.leaf が leaf に置き換えられます。
(メソッド)
self と同じ新規の Url を返しますが、self.query が query に置き換えられます。
(メソッド)
public | {Url.underneath? dir:Url}:bool |
この URL が dir の下にあるかを特定します。
導入:
バージョン 6.0
(メソッド)
public | {Url.valid-separator? c:char}:bool |
c が self.leaf を解析するのに使用される場合、true を返します。通常、{self.valid-separator? self.separator} は true ですが、self.valid-separator? が true を返しても self.separator ではない文字の場合があります。
ほとんどの場合、'/' だけが有効なセパレータになります。