PathConverter
What ?
PathConverter は、相対パスを絶対パスに変換したり、もしくはその逆、絶対パスから相対パスへの変換を行う AppleScript モジュールです。
絶対パスとは、次のようにディスクの第一階層から完全にその場所が記述されたパスのことです。
Macintosh HD:Users:hello:document1.text
次に、相対パスについてですが、まず、もう一つの絶対パスを考えます。
Macintosh HD:Users:hey:document2.text
このファイルのパスは document1.text を基準に考えると、次のように書くことができます。
::hey:document2.text
これが相対パスです。
上記のパスの記述方法は HFS 形式のパスの記述の仕方ですが、PathConveter は次のような POSIX 形式も扱えます。
/Users/hello/document1.text
../hey/document2.text
Usage
PathConverter の標準的な使い方は、
- make_with の引数に基準パスを与えて、PathConverter のインスタンスを生成します。このとき、基準パスに設定したパスの形式に従って、POSIX形式もしくはHFS形式のどちらのパスを扱うか決定します。
- 次に absolute_path もしくは relative_path を使って、相対パス⇔絶対パスの間のパスの変換を行います。基準パスに設定したパスと種類が違うものは変換できません。
use PathConverter : script "PathConverter"
set pathconv to PathConverter's make_with("Macintosh HD:Users:tkurita:Documents:hey.txt")
log (relative_path of pathconv for "Macintosh HD:Users:tkurita:articles:hello.txt")
log (absolute_path of pathconv for "::hello.txt")
set pathconv to PathConverter's make_with("/Users/tkurita/Documents/hey.txt")
log (relative_path of pathconv for "/Users/tkurita/articles/hello.txt")
log (relative_path of pathconv for "/Users/tkurita/Documents/")
log (absolute_path of pathconv for "../articles/hello.txt")
おまけの機能として、PathConverter は文字列の解析だけをたよりに、POSIX パスを HFS パスに変換することができます。
もっぱら、相対パスの変換を想定しています。絶対パスの場合は、POSIX file、POSIX path of を使って容易に相互の変換ができますが、相対パスを絶対パスを経由せずに変換することは容易ではありません。
もし、POSIX 相対パスを HFS 相対パスに変換する必要があるときは、hfs_from_posix を試してみてください。一応、絶対パスも扱えるはずです。
use PathConverter : script "PathConverter"
tell PathConverter
log (hfs_from_posix("../articles/hello.txt"))
end tell