AppleScriptduplicate
コマンドは、コピーされたオブジェクトを返すことになっています。
また、元の AE ベースの関数を使用するアプリはそれを行うように見えますが、Cocoa Scripting フレームワークに基づくアプリは、欠損値以外は何も返さないようです。
のコマンド ハンドラーがNSCloneCommand
、複製されたオブジェクトの指定子を返さないことに責任があるようです。
コマンドをサブクラス化し、複製されたオブジェクト指定子を収集してから返すことで、スクリプト可能なアプリでこれを修正しようとしていました。
これは、アイテムが 1 つだけ複製されている場合にうまく機能します。
to
コマンドでパラメーターを使用して複数のアイテムが複製された場合にも機能します ( のように)。次に、それらの複製されたアイテムの最初と最後を指定するduplicate every widget to end
型の指定子を返すことができます。NSRangeSpecifier
ただし、パラメータを指定せずに複数のアイテムに対して duplicate コマンドを使用すると、アイテムはto
連続しない方法で配列にソートされます。たとえば、最初に ID が 1 と 2 の 2 つの "x" 要素がある場合、duplicate every x
各要素のコピーが元の要素の直後に挿入されるため、1、3、2、4 の順序になります。
では、これの指定子、つまり項目 3 と 4 の指定子をどのように返すのでしょうか?
のサブクラスには「リスト」指定子NSScriptObjectSpecifier
がなく、個人ごとに NSArray を返すこともできないNSScriptObjectSpecifier
ようです。またNSAppleEventDescriptor
、リストの作成はサポートしていますが、オブジェクト指定子を NSAppleEventDescriptors に変換する方法がわかりません。
クローン化されたオブジェクトの連続した順序を強制する以外に、これをどのように解決できますか (これには、NSCloneCommand
の操作を完全に再実装する必要があります)。
ところで、Script Debugger の作成者であるMark Aldrittは、 (また: 、) が想定どおりに値を返さないという問題を確認しています。duplicate
move
open