npt-japanese

% Function PARSE-NAMESTRING

UP


Function PARSE-NAMESTRING

Function PARSE-NAMESTRING

構文

parse-namestring thing &optional host default-pathname &key start end junk-allowed
=> pathname, position

引数と戻り値

thing - 文字列か、パス名か、ファイルストリーム
host - 有効なパス名のホストか、論理ホストか、nil
default-pathname - パス名指定子。 デフォルトは*default-pathname-defaults*の値です。
start, end - thingの境界インデックス指定子。 デフォルトはstartendがそれぞれ0nil
junk-allowed - generalized-boolean。デフォルトはfalse
pathname - パス名か、nil
position - thingの境界インデックス指定子

定義

thingをパス名に変換します。

hostには構文解析の対象となるホスト名を指定します。

もしthingがパス名のときは、hostthingのホストの要素が比較されます。 もしそれらが合っているときは、二値のthingstartがすぐに返却されます。 それ以外のときは(もしそれらが合っていないとき)、エラーが通知されます。

もしthingが文字列のとき、parse-namestringstartendの境界によるthingの部分文字列内を ファイル名として構文解析します。

もしthingが文字列であるとき、 startendの境界によるthingの部分文字列は 次のようにパス名を構文解析します。

これらの最初の場合は、論理パス名の名前文字列にある ホストの位置と続くコロンはオプションです。

もし名前文字列のホストの位置とhostの両方が現れており、 それらがマッチしなかったときはエラーが発生します。

もしjunk-allowedtrueのとき、 主値は構文解析されたパス名か、 あるいはもしパス名が構文として正しくないときは nilになります。 もしjunk-allowedfalseのとき、 部分文字列の全体が調査され、 主値は構文解析されたパス名になります。

どちらの場合でも、第二返却値は、 構文解析が終了したthingの区切りのインデックスか、 あるいはもし部分文字列の終了位置まで構文解析が終わったときの その部分文字列を越えたインデックスになります (もしjunk-allowedfalseのときは常にこのケースです)。

空の文字列の構文解析は常に成功であり、 全ての要素(ホストを除く)がnilと等しい パス名が生成されます。

もしthingに暗にホスト名が含まれており、 そしてデバイス名が含まれてないときは、 parse-namestringが そのホストの結果のパス名のデバイスの要素として 標準のデバイスを供給するかどうかは実装定義です。

例文

(setq q (parse-namestring "test"))  
=>  #S(PATHNAME :HOST NIL :DEVICE NIL :DIRECTORY NIL :NAME "test" 
      :TYPE NIL :VERSION NIL)
(pathnamep q) =>  true
(parse-namestring "test") 
=>  #S(PATHNAME :HOST NIL :DEVICE NIL :DIRECTORY NIL :NAME "test"
      :TYPE NIL :VERSION NIL), 4
(setq s (open xxx)) =>  #<Input File Stream...>
(parse-namestring s) 
=>  #S(PATHNAME :HOST NIL :DEVICE NIL :DIRECTORY NIL :NAME xxx 
      :TYPE NIL :VERSION NIL), 0
(parse-namestring "test" nil nil :start 2 :end 4 )
=>  #S(PATHNAME ...), 15
(parse-namestring "foo.lisp")
=>  #P"foo.lisp"

影響

なし。

例外

もしjunk-allowedfalseであり、 thingがパス名の全体の表現で構成されていないときは、 型parse-errorのエラーが通知されます。 ただし実装の文化的習慣に合っているならば、 両サイドが空白文字によって囲むことができるかもしれません。

もしhostnil以外で指定されており、 thingに明にホスト名が含まれているとき、 その両者のホストがあっていなかったときは 型errorのエラーが通知されます。

もしthingが論理パス名の名前文字列であり、 名前文字列のホストの位置のものとhostの両方が存在し、 両者がマッチしなかったときは、 型errorのエラーが通知されます。

参考

pathname, logical-pathname, 20.1. ファイルシステムの説明, 19.2.2.2.3. :UNSPECIFICという要素の値, 19.1.2. ファイル名としてのパス名

備考

なし。


TOP, Github