チャンク式向けのローカルプロパティとグローバルプロパティ
チャンク式は、
グローバルプロパティの値を設定するときは、SenseTalkコマンドのSetやPutが使用できます。これらのプロパティを参照する場合は、単語theをプロパティ名の前に使用し、通常の変数と区別する必要があることに注意してください。
例:
set the searchrectangle to (1,2,2,3)
put 2 into the remoteworkinterval
以下の構文を使用して、グローバルプロパティ内で特定の名前付きプロパティの追加や変更を行うことができます。
set the namedColors.pink to color("RGB,1.0,0.5,0.5") -- pinkをthe namedColorsグローバルプロパティに追加し、そのRGBカラー値を定義します
set the listFormat's separator to " & " -- the listFormatグローバルプロパティのseparatorプロパティを設定します
setoptionまたはsetoptionsコマンドを使用して、プロパティの設定や更新を行うこともできます。setoptionコマンドを利用すると単一のプロパティを更新でき、setoptionsコマンドを利用すると複数のプロパティを更新できます。
例:
setoption searchrectangle, (1,2,2,3)
setoptions (searchrectangle: (1,2,2,3), scriptlogging: yes)
ローカルプロパティとグローバルプロパティの扱い方に関する追加情報は、SenseTalkにおけるローカルプロパティとグローバルプロパティをご覧ください。
the wordDelimiterローカルプロパティ、the defaultWordDelimiterグローバルプロパティ
値:コンテナ内で単語間の区切り文字として機能する任意の文字または文字のリスト
デフォルト:
- the wordDelimiter:the defaultWordDelimiterグローバルプロパティの現在の値
- the defaultWordDelimiter:スペース、タブ、およびリターン
挙動:これらのプロパティでは、コンテナ内で単語間の区切り文字として認識される文字一式を指定します。これら一連の文字は、どの順番または組み合わせで単語間に現れても構いません。
the wordDelimiterプロパティは、ハンドラごとのローカルなプロパティです。あるハンドラでこのプロパティ値を設定しても、そのハンドラから呼び出される他のハンドラのプロパティ値には影響しません。その逆もまた同じです。各ハンドラの実行開始時、そのハンドラ内のthe wordDelimiterは、the defaultWordDelimiterグローバルプロパティの値に初期設定されます。
例:
set the wordDelimiter to "." // ローカルの語句の区切り文字をピリオドに変更します
例:
put "A man, a plan, a canal. Panama!" into palindrome
put word 4 of palindrome // 「plan,」を返します
set the wordDelimiter to ".,!?;:" & space & tab
put word 4 of palindrome // 「plan」を返します
set the wordDelimiter to ",."
put word 4 of palindrome // 「 Panama!」を返します
例:
set the defaultWordDelimiter to " " // 全ハンドラにわたって単語区切り文字をスペースに変更します
例:
set LookupNumber to "102,311,421.000.631.521"
set the DefaultWordDelimiter to comma&period
set Row to the fifth word of LookupNumber
log Row // 「631」を表示します
注:区切り文字は、delimited by節を使って単語チャンク式の中で直接指定することもできます(カスタムチャンクの説明を参照)。
関連:
the wordQuotesローカルプロパティ、the defaultWordQuotesグローバルプロパティ
値:開始と終了の引用区切り文字を表す2つの値のリスト、または開始と終了の両方の区切り文字として使われる1つの値。emptyまたはNoneに設定して語句の引用符付けを無効にしたり、Standardに設定してデフォルトの引用符に戻したりすることもできます。
デフォルト:
- the wordQuotes:the defaultWordQuotesグローバルプロパティの現在の値
- the defaultWordQuotes:まっすぐな二重引用符
挙動:これらのプロパティでは、単語チャンク内で引用される「語句」を識別するための引用文字を指定します。デフォルトでは、二重引用符で始まる語には、次の二重引用符までのすべての文字(囲まれているthe wordDelimiterローカルプロパティからの文字を含む)とその二重引用符が含まれます。
the wordQuotesプロパティは、ハンドラごとのローカルなプロパティです。あるハンドラでこのプロパティ値を設定しても、そのハンドラから呼び出される他のハンドラのプロパティ値には影響しません。その逆もまた同じです。各ハンドラの実行開始時、そのハンドラ内のthe wordQuotesは、the defaultWordQuotesグローバルプロパティの値に初期設定されます。
例:
set the wordQuotes to "*"
例:
set Introduction to "Welcome to *The Manor*"
log the third word of Introduction // 「*The」を表示します
set the wordQuotes to "*"
log the third word of Introduction // 「*The Manor*」を表示します
例:
set the wordQuotes to empty -- 引用を無効にします
put "Hi, I'm [[my long name]]" into format
set the wordQuotes to ("[[","]]")
put word 3 of format -- [[my long name]]
set sentence to <<Jack said "Let's go see a movie.">>
put word 3 of sentence -- "Let's go see a movie."
set the wordQuotes to empty -- 引用を無効にします
put word 3 of sentence -- "Let's
例:
set the DefaultWordQuotes to none // 語句の引用を無効にします
例:
set Introduction to <<Welcome to "The Manor">>
put word 3 of Introduction // 「"The Manor"」を表示します
set the DefaultWordQuotes to none
set Introduction to <<Welcome to "The Manor">>
put word 3 of Introduction // 「"The」を表示します
the lineDelimiterローカルプロパティ、the defaultLineDelimiterグローバルプロパティ
値:行チャンク式の評価時に、行アイテムの区切りとなり得る文字列のリスト。リスト内のアイテムは、リスト内で指定された順番でマッチングされるため、その順番は重要です。例えば、一般的な改行文字CR、LFおよびCRLFのマッチングでは、リスト内で必ずCRLFをCRより前に記載するようにします。そうでないと、テキスト内でCRLFが出てきた際、CRが先にマッチングされ、1行に2つの改行文字があるように扱われてしまいます。the lineDelimiterをemptyに設定すると、標準改行文字のリスト(CRLF, Return, CarriageReturn, LineSeparator, ParagraphSeparator)に戻ります。
デフォルト:
- the lineDelimiter:the defaultLineDelimiterグローバルプロパティの現在の値。
- the defaultLineDelimiter:標準改行文字のリスト(CRLF, Return, CarriageReturn, LineSeparator, ParagraphSeparator)
挙動:これらのプロパティでは、テキストの行同士を区切るものとして認識される区切り文字列のリストを指定します。行区切り文字は、Return文字(技術的にはラインフィード(LF))など、特定の種類の改行文字に変更可能です。上記の設定は、スクリプトでやり取りされるほとんどのテキストでうまく機能します。異なるプラットフォーム(Mac、Windows、Linux)で生成されたテキストファイルには、別の改行文字が使われているかもしれません。
the lineDelimiterの初期設定は、さまざまなファイルを扱いやすいように標準改行文字のリスト(CRLF, Return, CarriageReturn, LineSeparator, ParagraphSeparator)になっています。the lineDelimiterをカスタムリストに設定した場合、これを標準のリストに自動復帰させるショートカットとして、後でemptyに設定することができます。
他にもthe lineDelimiterを変更したいケースとして考えられるのは、区切り文字のリストが提供されることを利用して、さまざまな文字で区切られたテキストのチャンクにアクセスする場合です。
the lineDelimiterプロパティは、ハンドラごとのローカルなプロパティです。あるハンドラでこのプロパティ値を設定しても、そのハンドラから呼び出される他のハンドラのプロパティ値には影響しません。その逆もまた同じです。各ハンドラの実行開始時、そのハンドラ内のthe lineDelimiterは、the defaultLineDelimiterグローバルプロパティの値に初期設定されます。
例:
set the LineDelimiter to ","
例:
set stuff to "button" & tab & "paperclip" & tab & "pencil"
set the lineDelimiter to tab
log the second line of stuff // 「paperclip」を表示します
例:
set the lineDelimiter to empty -- すべての標準改行文字を使用します
put "C:\songs/Solas/BlackAnnis" into songPath
set the lineDelimiter to ("/","\")
put line 2 of songPath -- "songs"
例:
set the DefaultLineDelimiter to tab
例:
set stuff to "button" & tab & "paperclip" & tab & "pencil"
set the DefaultLineDelimiter to tab
repeat with each line of stuff
put it
end repeat
上記のコマンドの出力は、次のようなものとして現れます。
button
paperclip
pencil
注:区切り文字のリストは、delimited by節を使って行チャンク式の中で直接指定することもできます(カスタムチャンクの説明を参照)。
関連:
the itemDelimiterローカルプロパティ、the defaultItemDelimiterグローバルプロパティ
値:通常は1文字
デフォルト:
- the itemDelimiter:the defaultItemDelimiterグローバルプロパティの現在の値。
- the defaultItemDelimiter:,(コンマ)
挙動:これらのプロパティでは、コンテナ内でテキストアイテム間の区切り文字として認識される文字を指定します。区切り文字は1文字の場合がほとんどですが、必要であれば、より長い文字の連続を設定することもできます。
the itemDelimiterプロパティは、ハンドラごとのローカルなプロパティです。あるハンドラでこのプロパティ値を設定しても、そのハンドラから呼び出される他のハンドラのプロパティ値には影響しません。その逆もまた同じです。各ハンドラの実行開始時、そのハンドラ内のthe itemDelimiterは、the defaultItemDelimiterグローバルプロパティの値に初期設定されます。
例:
set the itemDelimiter to "*"
例:
put "A man, a plan, a canal. Panama!" into palindrome
set the itemDelimiter to "."
put item 2 of palindrome // 「 Panama!」を表示します
例:
// 次の関数は、入力としてファイルのフルパスを取り、そのファイルのディレクトリだけを返します。これは、「/」をアイテム区切り文字として使用し、パスをアイテムに分解することによって行います。
function pathOfFile filename
set the itemDelimiter to "/"
delete the last item of filename
return filename
end pathOfFile
例:
set the DefaultItemDelimiter to "/"
例:
set the DefaultItemDelimiter to period
log item 2 of "apple.pie" // 「pie」を表示します
注:区切り文字は、delimited by節を使ってアイテムチャンク式の中で直接指定することもできます(カスタムチャンクの説明を参照)。
関連:
the characterFillerグローバルプロパティ
値:1文字または文字列
デフォルト: . (ピリオド)
挙動:このプロパティでは、コンテナの中身の最後部より後ろの文字チャンクに格納が行われ、コンテナが拡張されたときの振る舞いを指定します。
the characterFillerは、目的の長さまでコンテナを埋めるために、必要なだけ繰り返されるテキストです。必要に応じて、1文字か、さらに長い文字列を設定します。
例:
set the characterFiller to "|"
例:
put "zig" into test
set the characterFiller to "/\"
put "zag" into character 9 of test
put test -- "zig/\/\/zag"
the lineFillerグローバルプロパティ
値:一般的には標準の行区切り文字(ただし、厳密に言えば、任意の1文字または文字列も可)
デフォルト:Return
挙動:このプロパティでは、コンテナの中身の最後部より後ろの行チャンクに格納が行われ、コンテナが拡張されたときの振る舞いを指定します。
the lineFillerプロパティで与えるのは、求められる行数までコンテナを埋める際に使用する行区切り文字です。一般的には、the defaultLineDelimiterプロパティのリストにある値のどれかに設定します。行区切り文字でない文字または文字列を使用すると、適正な行を与えているかのように、その値は必要な回数だけ挿入されます。しかし、この動作は実際にはthe characterFillerプロパティのように振る舞い、新しい行は作成されません。
例:
set the lineFiller to CRLF
例:
set the lineFiller to "blank line" & return
put "bob" into line 3 of lineVar
put lineVar
例:
the wordFillerグローバルプロパティ
値:1文字もしくは文字列、または2つの値のリスト(2番目の値は単語区切り文字として機能)
デフォルト: ? (クエスチョンマーク文字)
挙動:このプロパティでは、コンテナの中身の最後部より後ろの単語チャンクに格納が行われ、コンテナが拡張されたときの振る舞いを指定します。
the wordFillerには、1つの値を設定することも、2つの値のリストを設定することもできます。1つの値を設定した場合、その値は、格納済みの単語番号に到達するまで必要なだけ繰り返されるフィラー単語となります。この場合、挿入される単語同士の区切りには、the wordDelimiterプロパティの最初の文字(デフォルトではスペース文字)が使われます。the wordFillerに2つの値のリストを設定した場合、最初の値がフィラー単語、2番目の値が挿入単語間の区切り文字として使われます。
例:
set the wordFiller to period
例:
set the wordFiller to period
put "10" into countdown
set word 8 of countdown to "9"
log countdown // 「10 . . . . . . 9」を表示します
例:
set the wordFiller to "umm..."
put "Hello and" into greeting
set word 5 of greeting to "welcome!"
put greeting -- "Hello and umm... umm... welcome!"