いつものように、AS の問題を解決するには多くの選択肢があります。私のスクリプト可能なテキスト エディター (Ted) では、リッチ テキスト (NSMutableAttributedString のサブクラスである NSTextStorage) に基づくテキスト スイートを実装しました。段落内のタブをスクリプト化できるようにしたかったので、すべての段落スタイル情報を含むスタイル レコードを追加しました。これにより、次のようなスクリプトを記述できます。
tell application "Ted"
set doc1 to make new document at beginning with properties {name:"Document One"}
tell doc1
set p1 to make new paragraph at end with data "Paragraph One" with properties {size:24, color:maraschino}
set p2 to make new paragraph at end with data "Paragraph Two" with properties {style:style of paragraph 1}
set color of paragraph 1 to blue
end tell
set doc2 to make new document at beginning with properties {name:"Document Two"}
copy p1 to beginning of doc2
properties of paragraph 1 of doc2
end tell
p1 はリッチ テキストであるため、2 番目のドキュメントは最初のドキュメントの最初の段落のテキストと書式設定の両方で終了します。
また、テキストの一部のプロパティを要求することもできます。ここでは、通常の Text Suite プロパティと、段落スタイルの「スタイル」プロパティを実装しています (タブ ストップのスクリプトを作成できるようにしたかったため、NSParagraphStyle によってサポートされています)。 ):
properties of paragraph 1 of doc2
結果: {高さ:60.0、イタリック体:false、サイズ:24、スタイル:{段落間隔:0.0、ヘッドインデント:0.0、改行モード:0、配置:4、行間隔:0.0、最小行高:0.0、最初の行頭インデント:0.0、前の段落間隔:0.0、タブ:{"28L"、"56L"、"84L"、"112L"、"140L"、"168L"、"196L"、"224L"、"252L" ", "280L", "308L", "336L"}, 末尾インデント:0.0, 最大行高:0.0, 行高倍数:0.0, デフォルトのタブ間隔:0.0}, 色:青, 幅:164.109375, フォント:" Helvetica", bold:false, class:attribute run}
これは、私のアプリケーション内でリッチ テキストを渡す場合にはうまく機能しますが、スタイル付きテキストを他のアプリケーションに渡す場合にはあまり役に立たない可能性があります。「スタイル」プロパティ (タイプ レコード) を追加することは、おそらく、他のスクリプト可能なアプリで使用するスタイル情報を伝達する最良の方法だと思います。次に、2 番目のアプリで、スクリプターは 2 番目のアプリが理解できるスタイル レコード内の任意のプロパティを利用できます。