2010-03-23T17:42:46+09:00

PathInfo 1.0

PathInfo は、ファイル参照の変換、およびファイルパスからの様々な情報の取得をオブジェクト指向でおこなえるようにする AppleScript モジュールです。

AppleScript では、alias、File URL、POSIX パス、HFS パスなど様々なファイル参照形式が使われますが、これらを統一的に扱うことができるようになります。

property PathInfo : module
property loader : boot (module loader) for me

set a_path to "/Library/Scripts/Basics/AppleScript Help.scpt"

(*** Class methods ***)
PathInfo's name_of(a_path)
-- "AppleScript Help.scpt"
PathInfo's basename_of(a_path)
-- "AppleScript Help"
PathInfo's path_extension_of(a_path)
-- "scpt"
PathInfo's split_name("basename.txt")
-- {"bassename", "txt"}
PathInfo's folder_of(a_path)
-- "/Library/Scripts/Basics/"

(*** Obtain path infomation ***)
set a_pathinfo to PathInfo's make_with(a_path)
a_pathinfo's item_name()
-- "AppleScript Help.scpt"
a_pathinfo's basename()
-- "AppleScript Help"
a_pathinfo's path_extension()
-- "scpt"
a_pathinfo's is_folder()
-- false
a_pathinfo's item_exists()
-- true
a_pathinfo's is_posix()
-- true

(*** Converting reference form ***)
a_pathinfo's as_alias()
-- alias "Macintosh HD:Library:Scripts:Basics:AppleScript Help.scpt"
a_pathinfo's as_furl()
-- file "Macintosh HD:Library:Scripts:Basics:AppleScript Help.scpt"
a_pathinfo's posix_path()
-- "/Library/Scripts/Basics/AppleScript Help.scpt"
a_pathinfo's hfs_path()
-- "Macintosh HD:Library:Scripts:Basics:AppleScript Help.scpt"

(*** Making a new instance from the instance ***)
a_pathinfo's parent_folder()'s posix_path()
-- "/Library/Scripts/Basics/"
a_pathinfo's change_name("new_item")'s posix_path()
-- "/Library/Scripts/Basics/new_item"
a_pathinfo's change_path_extension("txt")'s posix_path()
-- "/Library/Scripts/Basics/AppleScript Help.txt"
a_pathinfo's change_folder("/aaa/bbb/")'s posix_path()
-- "/aaa/bbb/AppleScript Help.scpt"
a_pathinfo's child("child_item")'s posix_path()
-- "/Library/Scripts/Basics/AppleScript Help.scpt/child_item"

同じ目的で PathAnalyzer というモジュールを公開していたけど、PathInfo で置き換えていく予定です。PathAnalyzer より、PathInfo の方が次のように、いいところがいっぱいある。

また、XFile の一部の機能とかぶる。これから、XFile は PathInfo を使った実装に置き換えて、PathInfo + (ファイルの移動/リネームなど)+(ファイル情報の取得)という PathInfo の機能強化版のようにする予定。

じゃあ、XFile と PathInfo のどちらかに統一しちゃいないよ、という気がしないでも無い。でも、XFile に全部つっこむと、実装が大きくなりすぎちゃう。PathInfo だけでも用が足りることは少なくないので、別モジュールにすることにしました。