2012-12-07T15:04:24+09:00
AppleScriptObjC では、スクリプトオブジェクトの parent の element を取得できない。
先日、通常の AppleScript の実行環境(例えば AppleScript エディタ)では動作するけど、AppleScriptObjC ではエラーが起きるスクリプトを紹介した。
AppleScriptObjC では、リストの要素へのリファレンスを他のスクリプトオブジェクトに渡せない。
もうひとつ、AppleScriptObjC では動作しないスクリプトの例を発見した。
次のスクリプトでは、スクリプトオブジェクトの parent として、text class の値を設定している。なかなか、奇特なことをすると思われるかもしれないけど、TextWrapper に文字処理をおこなうハンドラを付け加えることによって、AppleScript の組み込みクラスを自然な形で拡張することができる。
そして、parent に設定した要素である word とか character, paragraph などを取得できる。ただし ノーマルな AppleScript の実行環境では。AppleScriptObjC ではできなくなっちゃっている。
ちなみに、parent に設定するのは text でなくとも list でも同じことができる。そして、やはり AppleScriptObjC では parent に設定した、リストの要素にアクセスできない。
この、AppleScipt の組み込みクラスを継承したスクリプトオブジェクトを作るというテクニックは、拙作 XText で使用している。でも、word 1 of ~ という書き方で parent に設定した text の要素にアクセスできないなら、こんなことすること意味ないじゃんと思えてくる。
AppleScript のテキストは immutable であるので、それを継承したオブジェクトは当然 immutable。継承せずに、ユーザー定義の property に格納しておけば、mutable なテキストオブジェクトが作れるじゃん。
この不具合について、Apple に bug report した。報告してまともに治った試し無し。
XText を全部つくり直したくなった。