チャンク表現のローカルとグローバルプロパティ
チャンク表現は、SenseTalkスクリプトでテキストデータを扱う強力な方法を提供します。ここで説明するローカルおよびグローバルプロパティを使用すると、チャンクへのアクセス方法を制御することができます。SenseTalkでチャンクを使用する方法の詳細については、チャンク表現を参照してください。
ローカルとグローバルのプロパティ値の設定または変更:
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") -- namedColorsグローバルプロパティにpinkを追加し、そのRGBカラー値を定義します
set the listFormat's separator to " & " -- listFormatグローバルプロパティのseparatorプロパティを設定します
プロパティは、setoption
またはsetoptions
コマンドを使用して設定または更新することもできます。setoption
コマンドを使用すると、単一のプロパティを更新することができます。setoptions
を使用すると、複数のプロパティを一度に更新することができます。
例:
setoption searchrectangle, [1,2,2,3]
setoptions {searchrectangle: [1,2,2,3], scriptlogging: yes}
setoption
およびsetoptions
はグローバルおよびローカルプロパティの使用に特化しているため、これらのコマンドのコマンド構文でプロパティ名からthe
を省略します。
ローカルおよびグローバルプロパティの操作 に関する詳細情報についてはmd ローカルとグローバルプロパティのSenseTalkを参照してください。
the wordDelimiter
ローカルプロパティ、the defaultWordDelimiter
グローバルプロパティ
,
値: 任意の文字または文字のリストで、コンテナ内の単語間のセパレータとして機能します
デフォルト:
the wordDelimiter
の場合:the defaultWordDelimiter
グローバルプロパティの現在の値the defaultWordDelimiter
の場合:スペース、タブ、リターン
動作: これらのプロパティは、コンテナ内の単語間のセパレータとして認識される文字のセットを指定します。これらの文字の任意の順序または組み合わせのシーケンスは、単語間に現れることができます。
the wordDelimiter
プロパティは各ハンドラーにローカルです。ハンドラーの値を設定すると、そのハンドラーから呼び出される他のハンドラーの値には影響しません。各ハンドラーが実行を開始すると、そのハンドラーのthe wordDelimiter
はthe defaultWordDelimiter
グローバルプロパティの値に初期設定されます。
例:
set the itemDelimiter to "|" // Changes the local item delimiter to pipe
例:
put "A man, a plan, a canal. Panama!" into palindrome
put word 4 of palindrome //Returns 'plan,'
set the wordDelimiter to ".,!?;:" & space & tab
put word 4 of palindrome //Returns 'plan'
set the wordDelimiter to ",."
put word 4 of palindrome //Returns ' Panama!'
例:
md
set the defaultWordDelimiter to " " // Changes the word delimiter to space across all handlers
例:
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 // Displays '631'
単語チャンク式に直接デリミタを指定することもできます。これには、カスタムチャンクで説明されているようにdelimited by
句を含めます。
関連項目:
the lineDelimiter
the itemDelimiter
the wordQuotes
ローカルプロパティ、the defaultWordQuotes
グローバルプロパティ
値: 開始と終了の引用符デリミタの2つの値のリスト、または開始と終了のデリミタとして使用される単一の値。また、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 // Displays '*The
set the wordQuotes to "*"
log the third word of Introduction // Displays '*The Manor*'
例:
set the wordQuotes to empty -- Disable quoting
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 -- Disable quoting
put word 3 of sentence -- "Let's
例:
set the DefaultWordQuotes to none // Disables word quoting
例:
set Introduction to <<Welcome to "The Manor">>
put word 3 of Introduction // Displays '"The Manor"'
set the DefaultWordQuotes to none
set Introduction to <<Welcome to "The Manor">>
put word 3 of Introduction // Displays '"The'
the lineDelimiter
ローカルプロパティ、the defaultLineDelimiter
グローバルプロパティ
値: ラインチャンク式を評価するときにラインアイテムを分離できる文字列のリスト。リスト内のアイテムの順序は重要で、与えられた順序で一致します。たとえば、一般的なラインエンディングCR、LF、CRLFに一致するには、CRの前にCRLFをリストにしてください。そうしないと、テキスト内でCRLFに遭遇した場合、最初にCRに一致し、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
をカスタムリストに設定した場合、後で空に設定すると、自動的に標準リストに復元するショートカットとして利用できます。
いくつかの異なる文字によって分割されたテキストのチャンクにアクセスするために、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 // Displays 'paperclip'
例:
set the lineDelimiter to empty -- Use all standard line endings
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 wordDelimter
the itemDelimiter
the itemDelimiter
ローカルプロパティ、the defaultItemDelimiter
グローバルプロパティ
値: 通常、一つの文字
デフォルト:
the itemDelimiter
に対して:the defaultItemDelimiter
グローバルプロパティの現在の値the defaultItemDelimiter
に対して:, (カンマ)
動作: これらのプロパティは、コンテナ内のテキストアイテム間の区切りとして認識される文字を指定します。最もよく、デリミタとして一つの文字が使用されますが、必要に応じてより長い文字列に設定することもできます。
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 //Displays" Panama!"