値の扱いに関するローカルプロパティとグローバルプロパティ
ここに挙げる
グローバルプロパティの値を設定するときは、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 numberFormatローカルプロパティ、the defaultNumberFormatグローバルプロパティ
値:複数の0および/または#の組み合わせから成る文字列、およびオプションで小数点。 小数点の左側にある0は、数値に表示する位の数を示します。フォーマット対象の数値において、その位が値を持たない場合には、そこに0が入ります。 小数位に関しては、値を持つ場合にのみ表示させるときは、小数点の右側に#を使用します。 値の有無にかかわらず表示させるときは、0を使用します。
デフォルト:
- the numberFormat:the defaultNumberFormatグローバルプロパティの現在の値
- the defaultNumberFormat:0.######
挙動:これらのプロパティは、数値(数学演算の結果など)をテキスト表現に変換するときに使用される小数位の数と、表示される先行ゼロおよび後置ゼロの数を指定するときに使用します。
the numberFormatプロパティは、ハンドラごとのローカルなプロパティです。 あるハンドラでこのプロパティ値を設定しても、そのハンドラから呼び出される他のハンドラのプロパティ値には影響しません。その逆もまた同じです。 各ハンドラの実行開始時、そのハンドラ内のthe numberFormatは、the defaultNumberFormatグローバルプロパティの値に初期設定されます。 グローバルプロパティであるthe defaultNumberFormatは最初0.######に設定されていますが、希望に応じて変更可能です。
例:
set the numberFormat to "#.###" -- 最大で小数第3位までを表示
例:
set the numberFormat to "0.00" -- 常に小数第2位までを表示
例:
set the numberFormat to "00.##"
put 3.41 -- 03.41を表示します
例:
set the numberFormat to "00.###"
put 3.41 -- 03.41を表示します
例:
set the defaultNumberFormat to "0.000"
put 3.41 -- 3.410を表示します
例:
set the defaultNumberFormat to "0"
put 3.41 -- 3を表示します
例:
set formatExpression to "0.000"
get the numberFormat
log it // 「0.######」を表示します
set the numberFormat to formatExpression
get the numberFormat
log it // 「0.000」を表示します
the defaultQuoteFormatグローバルプロパティ
値:引用符なしの場合はNone(もしくはempty)、標準的な引用符付けの場合はStandard、またはその他の任意の文字列もしくは2つの文字列のリスト。
デフォルト:None
挙動:the listFormatおよびthe propertyListFormatグローバルプロパティは、どちらもオプションでquotesの値を含み、それによって当該コンテナ内の値がテキストに変換されるときの引用符の付け方を指定します。 the defaultQuoteFormatグローバルプロパティでは、このどちらかのquotesの値が与えられていないとき(リストでは与えられないのがデフォルト、プロパティリストでは与えられるのがデフォルト)の、引用符付けの振る舞いを指定します。
どの引用符プロパティの値についても、引用符なしの場合にはemptyまたはNoneを、標準的な引用符付けの場合にはStandardを設定できるほか、その他の任意の文字列または2つの文字列のリストを設定することもできます。 2つの文字列のリストを与えると、それぞれが開始引用符、終了引用符として(値の前後に)使用されます。 1つの文字列を与えると、開始引用符と終了引用符の両方にその文字列が使用されます。
標準的な引用符付けでは、値の中身に応じて、まっすぐな二重引用符(")か二重山括弧(「<<」、「>>」)のどちらかが自動的に選択されます。 値に引用符が付けられるときは常に、最終的な引用符文字列を含む値やreturn文字が自動で有効なSenseTalk式となり、適当な値を生成します。
例:
set the defaultQuoteFormat to "#"
put (1,2,3,4) -- (#1#,#2#,#3#,#4#)
例:
set the defaultQuoteFormat to "Standard"
put (<<"Hello">>,42,"GO"&return)-- (<<"Hello">>,"42","GO" & return)
例:
set the defaultQuoteFormat to "None"
put (<<"Hello">>,42,"GO"&return) -- ("Hello",42,GO )
the caseSensitiveローカルプロパティ
値:True、False
デフォルト:False(各ハンドラの開始時点で設定)
挙動:このローカルプロパティでは、テキスト比較演算子で大文字と小文字を別のものとして評価するかどうかを決定します。 例えば、「Capital」と「capital」を別のものとして評価したい場合はtrueに設定し、等しいものとして評価したい場合はfalse設定のままにします。
例:
put "Robin" into name
put "robin" into bird
put textdifference(name,bird) // 0を返します
set the caseSensitive to true
put textdifference(name,bird) // 1を返します
例:
set ghost to "BOO"
set babyghost to "boo"
put babyghost is ghost // 「True」を返します
set the casesensitive to true
put babyghost is ghost // 「False」を返します
the clockFormatグローバルプロパティ
値:12(つまり12時間)、24(つまり24時間)
デフォルト:12時間
挙動:時刻値を24時間形式で表示するか、12時間形式で表示するかを決定します。 例えば、同じ時刻でも、12時間形式では03:17 PM、24時間形式では15:17のように表示されます。 12時間形式の方では、値の一部にAMまたはPMが含まれます。
例:
put the time // 「03:16 PM」を表示します
set the clockFormat to 24
put the time // 「15:16」を表示します
the timeFormatグローバルプロパティ
値:convertコマンドやフォーマット形式の各種日付/時刻関数によってサポートされる標準的な日付/時刻フォーマットをすべて保持したプロパティリスト。
デフォルト:上記のとおり。 the timeFormatに含まれる全フォーマットのリストを確認するには、次のコマンドを使用します。
put the keys of the timeFormat
挙動:このグローバルプロパティは、日付/時刻値が名前で呼び出されるときに、適切なフォーマッティングを与えるためのものです。 例えば、コードにおいてinternational dateがリクエストされた場合、SenseTalkはその日付/時刻値のしかるべき表示方法をthe timeFormatプロパティによって調べます。 デフォルトのフォーマッティング例を記載した日付/時刻値のリストは、SenseTalkにおける日付および時刻値のconvertコマンドのところでご覧いただけます。
どのフォーマットも確認したり変更したりすることが可能です(下記の例を参照)。 変更を加える際には、必要なフォーマットを削除したり、誤ってフォーマット一式を1つの値で置き換えたりしないように注意してください。
日付/時刻フォーマットには、あらゆる文字を含めることができます。 フォーマット対象の日付/時刻値の構成要素を表す特殊なプレースホルダーを以下に挙げます。これらは、フォーマット済みのテキスト表現の形で表示されます。
プレースホルダー |
置き換え |
%% |
パーセント記号(%) |
%a |
省略表記の曜日名 |
%A |
完全表記の曜日名 |
%b |
省略表記の月名 |
%B |
完全表記の月名 |
%c |
完全なローカル表記の日付および時刻 |
%d |
その月内の日付を表す2桁の数字(01~31) |
%eまたは%1d |
その月内の日付を表す1桁または2桁の数字(1~31) |
%F |
秒の小数部。第3位まで(000-999) |
%Hまたは%1H |
24時間形式の時数を表す2桁の数字(00~23)またはその先行ゼロを省いた数字(%1Hの場合) |
%Iまたは%1I |
12時間形式の時数を表す2桁の数字(01~12)またはその先行ゼロを省いた数字(%1Iの場合) |
%jまたは%1j |
その年内の通し日数を表す3桁の数字(001~366)またはその先行ゼロを省いた数字(%1jの場合) |
%mまたは%1m |
月を表す2桁の数字(01~12)またはその先行ゼロを省いた数字(%1mの場合) |
%Mまたは%1M |
その時間の分数を表す2桁の数字(00~59)またはその先行ゼロを省いた数字(%1Mの場合) |
%p |
AMまたはPM |
%Sまたは%1S |
その分の秒数を表す2桁の数字(00~59)またはその先行ゼロを省いた数字(%1Sの場合) |
%w |
曜日番号(0~6、日曜日が0) |
%x |
ロケールごとの日付表現を用いた日付 |
%X |
ロケールごとの時刻表現を用いた時刻 |
%yまたは%1y |
西暦の下2桁を表す2桁の数字(00~99)またはその先行ゼロを省いた数字(%1yの場合) |
%Y |
完全表記の西暦(上2桁あり。現在は4桁の数字) |
%z |
時・分表記のGMTからのタイムゾーンオフセット(HHMM) |
%Z |
タイムゾーン名 |
例:
put the timeFormat. ShortDateItems // "%Y,%m,%d,%H,%M,%S"
例:
set the timeformat's date to "%A, %B %e."
put the date into mydate
add 30 weeks to mydate
log mydate // 「Friday, March 2.」を表示します
例:
put the long date // "Wednesday, October 19, 2005"
delete the first word of the timeFormat's longDate
put the long date // October 19, 2005
関連:
the timeInputFormatグローバルプロパティ
値:the timeInputFormatの値は、次のいずれかに設定可能です。
- 単体のフォーマット値、Naturalまたはiso8601
- フォーマット値のリスト
-
フォーマット値を格納したプロパティリスト(ただし、以下の注を参照)
デフォルト:the timeFormatの値
挙動:the timeInputFormatグローバルプロパティは、テキスト文字列が日付/時刻値として有効かどうかの識別に用いるすべての日付および時刻フォーマットを指定するリストです。 このプロパティは、デフォルトではthe timeFormatグローバルプロパティの値と動的にリンクしており、そこに含まれるフォーマットの日付/時刻文字列であれば認識することができます。
Naturalに設定すると、yesterdayやafternoonのような自然言語テキスト文字列が日付/時刻値として解釈されます。 Naturalフォーマットに関する情報は、SenseTalkにおける日付および時刻値をご覧ください。 SenseTalkでは、ISO 8601フォーマットもサポートしています(iso8601の説明を参照)。
内部的にはまだ日付/時刻フォーマットの形ではない値をSenseTalkが日付/時刻値として解釈しようとするときは、次の3つのステップを踏みます。
- 値が数値の場合、SenseTalkはそれを2001年1月1日開始時からの秒数として処理します。
- 値がいずれかのデータアイテム形式(5、 6、7または8個の数字のリストまたはコンマ区切りのテキストリスト)の場合は、それに応じたやり方で解釈します。
- 値がテキストの場合、SenseTalkはthe timeInputFormatの各アイテムをリスト順に1つずつ調べ、値がそのフォーマットと一致しているかどうか確認します。 最初にマッチしたフォーマットが値の変換に使われます。
日付および時刻を解釈するこの工程は、is a date演算子、date()関数およびその関連関数といった数々の演算や、文字列を暗黙のうちに日付/時刻値として解釈しようとする加算などの演算で使用されます。
日付/時刻フォーマット文字列において特殊な意味合いを持つすべての記号の定義は、the timeFormatグローバルプロパティの説明をご覧ください。
例:
set the timeInputFormat to Natural // ほとんどのフォーマットを受け入れます
例:
set the timeInputFormat to "" // デフォルトの振る舞いにリセットします
例:
set the timeInputFormat to iso8601 // フォーマットをISO 8601対応のものに設定します
例:
insert "%d/%m/%y" before the timeInputFormat // 欧州式の日付解釈を優先します
put "12/2/98" into subscription
add 30 days to subscription
log subscription // 「14/03/98」を表示します
例:
put "%A, %B %e."into the timeInputFormat // 他の方法(05/25/80など)でフォーマットされた値が日付として認識されるのを防ぎます
set mydate to "Wednesday, December 3."
subtract 1 week from mydate
log mydate // 「Sunday, November 26.」をログします
put "05/25/80" is a date // 「False」を表示します
set the timeInputFormat to empty // the timeInputFormatをデフォルトの振る舞いにリセットします
put "05/25/80" is a date // 「True」を表示します
注:値をプロパティリストに設定した場合(またはthe timeFormatとリンクさせた場合)、SenseTalkはそのプロパティリストから値だけを使用します。 つまり、本グローバルプロパティをプロパティリストに設定することはできますが、the timeInputFormatが値をプロパティリストとして格納するわけではありません。 キーは削除され、値だけがリストとして格納されます。
SenseTalkは、プロパティリストのキーのソート順にフォーマットを並べます。 ただし、あるフォーマットが別のフォーマットの冒頭部分と等しい場合は例外です。 この場合、より長いフォーマットの方が先にマッチするよう、短い方のフォーマットはリスト内で必ず後ろに置かれます。 また、下2桁の西暦を受け入れる(%yを使用している)フォーマットがある場合、リスト内で、この2桁バージョンのフォーマットの前に西暦4桁(%Y)バージョンの同等フォーマットが自動的に追加されます。
ヒント:値を「empty」に設定すると、the timeFormatの値への動的なリンクが復活します(元々のデフォルト状態)。
ヒント:値をフォーマットのリストに設定する場合、より長い方のフォーマットが順番的に先に来るようにしてください。 SenseTalkは、例えそれがテキストの一部としかマッチしていない場合でも、最初にマッチしたフォーマットを用いて時刻値の解釈を行います。
the centuryCutoffローカルプロパティ
値:0~99の整数、負の数値、またはempty
デフォルト:the defaultCenturyCutoffグローバルプロパティ(初期設定は10年先)
挙動:このローカルプロパティでは、文字列を日付に変換するときに、2桁の数字をどのように4桁の西暦へと解釈するかを管理します。 2桁の年が出てきた場合、the centuryCutoffによって指定された年までは、現在または未来の西暦と見なされます。 そうではなく、the centuryCutoffの値よりも大きい2桁の年は、過去(現在の世紀における過去または1つ前の世紀)と見なされます。
この機能を無効にして、2桁の年で紀元1世紀の西暦を表現できるようにするには、the centuryCutoffを負の数値またはemptyに設定します。
例:
set the centuryCutoff to 26
put international date of "3/16/26" -- 2026-03-16
set the centuryCutoff to 25
put international date of "3/16/26" -- 1926-03-16
set the centuryCutoff to empty
put international date of "3/16/26" -- 26-03-16(紀元1世紀の西暦26年)
関連:
the defaultCenturyCutoffグローバルプロパティ
値:0~99の整数、負の数値、またはempty
デフォルト:10年先
挙動:the centuryCutoffローカルプロパティが設定されていない場合は、文字列が日付に変換される際、このグローバルプロパティを使って2桁の数字が4桁の西暦へと解釈されます。 このプロパティの動作と機能はthe centuryCutoffローカルプロパティと同じです。 すべてのハンドラで別のカットオフ日付を用いて日付の解釈を行いたいときは、the defaultCenturyCutoffの値を調整してください。
例:
set the defaultCenturyCutoff to 26
put the abbreviated international date of "3/16/26" // 「2026-03」を表示します
set the defaultCenturyCutoff to 25
put the abbreviated international date of "3/16/26" // 「1926-03」を表示します
set the defaultCenturyCutoff to empty
put the abbreviated international date of "3/16/26" // 「0026-03」(紀元1世紀の西暦26年)を表示します
関連:
the colorFormatグローバルプロパティ
値:Basic、Alpha、HTML、W、WA、RGB、RGBA、HSB、HSBA、CMYK、またはCMYKA
デフォルト:Basic
挙動:the colorFormatは、内部で色として表現されている値をテキスト表現に変換するときに使われるフォーマットを指定するグローバルプロパティです。 Basicは、色に含まれる赤、緑、青のレベルをそれぞれ0~255で表した3つの整数のリストです。 Alphaフォーマットでは、そこに色の不透明度を0~255(完全な透明は0)で表した4つ目の整数が加わります。
HTMLフォーマットは、先頭に「#」を付けた16進数(赤なら「#FF0000」など)で色を表現します。 その他のフォーマットは、フォーマット識別子で始まり、次にそれぞれの色成分レベルを示す0.0~1.0の成分値が1つまたは複数続く形のテキストリストです。 The colorFormatの初期設定はBasicです。
例:
set the colorFormat to "Basic"
put color("red") -- 「255,0,0」を表示します
例:
set the colorFormat to "HSB"
put color("green")-- 「HSB, 0.333, 1.000, 1.000」を表示します
例:
set the colorFormat to "HTML"
put coloratLocation("IndicatorLight") // 色の戻り値をHTMLフォーマットで表示します(すなわち、 #E99820)
例:
set the colorFormat to "HTML"
put colorAtLocation("IndicatorLight") into myColor // 戻り値を変数「myColor」に格納します
log color(myColor) is "#E99720" // myColorに格納されている色が#E99720と等しいかどうかを判定します
例:
if the keys of the namedcolors does not contain "gold" then Set the namedColors.Gold to (128,128,0) // 名前の付いた色に「Gold」がすでにあるかどうかをチェックし、もしなければプロパティリストに追加します
log the keys of the namedcolors // 名前が付けられた色の名前をすべてログします
set the colorFormat to "Alpha" // カラーフォーマットをbasicからalphaに変更します
log the namedColors. Gold // Goldの値(128,128,0)をログします
log color("Gold") // alphaフォーマットで表現したGoldの色(128,128,0,255)をログします
関連:
the namedColorsグローバルプロパティ
値:色名をキーとして取り、the colorFormatグローバルプロパティの現在の値に基づいて定義された色を値として取るプロパティリスト。
デフォルト:次の色をキーとして取るプロパティリスト:Aqua、Black、Blue、Brown、Clear、Cyan、DarkBlue、DarkGray、DarkGreen、DarkGrey、DarkRed、Fuchsia、 Gray、Green、Grey、LightGray、LightGreen、LightGrey、Lime、Magenta、Maroon、Navy、Olive、Orange、Purple、Red、Silver、Teal、White、Yellow 各キー(色名)の値は、Basic(the colorFormatのデフォルト)に初期設定されています。
挙動:the namedColorsプロパティでは、スクリプト内で名前によって指定できる色を定義します。 デフォルト設定には、使われそうな一般的な色が多数含まれています。 このデフォルト設定に独自のカスタムカラーを追加すると、カスタムカラーをカラー値ではなく名前で参照できるようになります。
例:
put the namedColors // プロパティリストを表示して、利用可能なすべての色とそのBasicカラーフォーマットの値を表示します
例:
put the namedColors's red // 「(255,0,0)」を表示します
例:
例:
set the namedColors.pink to color("RGB,1.0,0.5,0.5") -- pinkを定義します
set the namedColors.dawn to color("pink")
put color of "dawn"-- 「255,128,128」を表示します(the colorFormatがBasicになっている場合)
例:
put coloratlocation("ColorArea") into myColor // ColorArea画像のホットスポット位置にあるピクセルの色を格納します
assert that mycolor is color(121,244,128)
set the namedcolors.kindagreen to color(121,244,128)
assert that mycolor is color("kindagreen")
関連:
the defaultDataFormatグローバルプロパティ
値:text、hex、base64、size、auto
デフォルト:text
挙動:the defaultDataFormatグローバルプロパティでは、その現在の設定によって、値がデータからテキストに変換されるときの表現方法を管理します。
textに設定すると、the defaultStringEncodingグローバルプロパティを用いて、バイナリデータをテキストとして解釈する方法を管理します。 the defaultDataFormatは、text: <エンコーディング名>と設定することで、特定のエンコーディングを使用することもできます(例、text: UTF-16)。 使用するエンコーディングやテキスト内に出てくる特定の文字によっては、結果として得られるデータの1バイトと元のテキストの1文字がきっちり対応していたり、一部または全部の文字が2バイト以上だったりする場合があります。
hex(つまりhexadecimal)フォーマットは、データの各バイトを2桁の16進数で表示し、山括弧で囲みます。 SenseTalkは、このフォーマットをスクリプト内でリテラルデータ値として認識するため、このフォーマットのテキストはvalue()関数を使ってバイナリデータに再変換することが可能です。
base64フォーマットは、よりコンパクトなバイト表現で、64種類のテキスト文字を使ってデータをエンコードします。 このフォーマットのテキストを読み取ってバイナリデータへ再変換するときは、base64Decode()関数を使用します。
sizeフォーマットは、最も省略されたフォーマットで、単にデータサイズだけを表示します(例、<data: 42516 bytes>)。 このフォーマットは、サイズの大きい可能性があるバイナリデータチャンクをユーザーに表示するための便利な表現です。ただし、データ本体が失われてしまうため、保存には使えません。
autoフォーマットは、サイズの大きい(64バイトを超える)バイナリデータにはsizeフォーマットを、比較的サイズの小さいものにはhexフォーマットを自動的に選択します。 64バイト以外の制限値を指定するときはauto: <制限値>の形を使います(例えば、16バイト以下のデータをhexフォーマットで表示する場合にはauto: 16)。
例:
set myData to "The cat in the hat was a mighty fine cat."as data -- 変数にデータを格納するよう設定します
-- the defaultDataFormatの標準設定はtextであり、the defaultStringEncodingを使ってデータがテキストへ変換されます
put "", the defaultDataFormat & " => " & myData
set the defaultDataFormat to "text: Unicode (UTF-7)" -- 別のエンコーディングを使用して、データをテキストとして解釈します
put "", the defaultDataFormat & " => " & myData
set the defaultDataFormat to "hex" -- 16進数フォーマットでデータを表示します
put "", the defaultDataFormat & " =& " & myData
set the defaultDataFormat to "size" -- データではなく、バイト数だけを表示します
put "", the defaultDataFormat & " =& " & myData
set the defaultDataFormat to "auto" -- 16進数で表すか、64バイトより大きい場合はサイズで表します
put "", the defaultDataFormat & " =& " & myData
set the defaultDataFormat to "auto: 30" -- 30バイトより大きい場合にはサイズで表します
put "", the defaultDataFormat & " =& " & myData
set the defaultDataFormat to "base64" -- base64エンコーディングを使ってデータを表します
put "", the defaultDataFormat & " =& " & myData
関連:
the booleanComparisonグローバルプロパティ
値:Normal、Strict、Lenient
デフォルト:Normal
挙動:このグローバルプロパティでは、ブーリアンが一致となる方法を管理します。 Normalに設定すると、値YesおよびOnはTrueと(互いに)同等、OffおよびNoはFalseと同等と見なされます。 空のオブジェクトは、それ自体で評価されると、ブーリアン値Falseと等価になります。 ただし、空のオブジェクトを具体的な値としてのFalseと比較する場合、両者は等価とはなりません。 この場合の違いは、評価と比較の違いです。
the booleanComparisonをStrictに設定すると、値Yes、No、OnおよびOffは文字列と同等になるため、TrueまたはFalseと等価ではなくなります。 the booleanComparisonをLenientに設定すると、文字列Yes、No、OnまたはOffとして評価される値が、他のブーリアンとの等価性テストにおいてブーリアンとして処理されます。
例:
put Yes is true -- True
put off = false -- True
set the booleanComparison to "Strict"
put yes is true -- False
put off = false -- False
the asTextLimitグローバルプロパティ
値:最大文字数を表す数値
デフォルト:10,000,000文字
挙動:このプロパティでは、内部で生成される値のテキスト表現の最大サイズを管理します。 この上限値を超えるテキスト表現がリクエストされた場合、例外が投げられます。 この上限値により、極端に大きな値によって起こりかねないクラッシュからシステムを保護します。 このプロパティは、end定数用の値も設定します。
例:
set the asTextLimit to 20 million
関連:
the endValueグローバルプロパティ
値:文字列
デフォルト: 「 ⓔ ⓝ ⓓ 」(この文字列は、見えている文字の前後、中間に非標準のスペース文字を複数含むことに注意してください。)
挙動:このプロパティは、利用できる値がなくなったときにイテレータが返す値です。 the endValueの目的は、これが返されたとき、データの終わりに達したことが分かるような固有の文字列を提供することにあります。
注:the endValueは、end定数の値も設定します。 このプロパティの値を変更すると、定数の値も変更されることを頭に入れておいてください。
例:
set the endValue to "MyCrazyString*&^%"
put end // MyCrazyString*&^%
the matchesCanOverlapグローバルプロパティ
値:True、False
デフォルト:False
挙動:このプロパティでは、文字列内の複数のパターンマッチが重複可能か、またはネスト可能かを管理します。 Falseに設定すると、パターンマッチが検出されたとき、次のマッチ検索が前回のマッチより後ろの文字から始まります。 Trueに設定すると、次のパターンマッチ検索が前回のパターンマッチの2文字目から始まります。
このプロパティの設定は、everyMatch()、everyRange()、everyOccurrence()およびeveryOffset()関数をパターンとともに使用したときに返される結果に影響してきます。また、the third occurrence of pattern in textのように、特定のマッチ、範囲、出現箇所またはオフセットをリクエストするときにも影響します。
例:
put every match of <3 digits> in "123456" --> ((text:"123", text_range:"1" to "3"),(text:"456", text_range:"4" to "6"))
set the matchesCanOverlap to true
put every match of <3 digits> in "123456" --> ((text:"123", text_range:"1" to "3"),(text:"234", text_range:"2" to "4"),(text:"345", text_range:"3" to "5"),(text:"456", text_range:"4" to "6"))
the patternCharacterMode グローバルプロパティ
値:Text、Line
デフォルト:Text
挙動:このプロパティでは、パターンマッチにおいて用語characters(chars)の中に行区切り文字を含めるかどうかを管理します。 Textに設定すると、charactersは、行区切り文字を含むテキスト全体のあらゆる文字にマッチします。 Lineに設定すると、行内の文字だけがマッチ対象となり、行区切り文字は対象外となります。
例:
set fileName to <beginning of line,
{name:max chars then "."},
{extension:chars}, end of line>
set fileList to {{
geraldine.txt
transcript.10.29.18.txt
sunburst.png
}}
set the patternCharacterMode to "text"
put the first occurrence of fileName in fileList // 行の区切りにかかわらず、パターンがテキスト全体を考慮するため、リストを丸ごと表示します
set the patternCharacterMode to "line"
put the first occurrence of fileName in fileList // パターンが1つの行に限定されるため、最初のアイテムだけを表示します
関連:
the patternTimeoutグローバルプロパティ
値:時間(秒単位)
デフォルト:30
挙動:このプロパティでは、1つのパターン検索にかける最大時間を管理します。 パターン検索に設定時間よりも長い時間がかかった場合、例外が投げられます。
例:
set ssn to<3 digits then "-", 2 digits then "-", 4 digits>
set the patternTimeout to 10
log every occurrence of ssn in sourceText