値を操作するためのローカルおよびグローバルプロパティ
ここで説明する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") -- Adds pink to the namedColors global property and defines its RGB color value
set the listFormat's separator to " & " -- Sets the separator property of the listFormat global property
プロパティは setoption
または setoptions
コマンドを使って設定または更新することもできます。setoption
コマンドは単一のプロパティを更新するためのもので、setoptions
コマンドは複数のプロパティを更新するためのものです。
例:
setoption searchrectangle, [1,2,2,3]
setoptions {searchrectangle: [1,2,2,3], scriptlogging: yes}
setoption
と setoptions
は、グローバルプロパティとローカルプロパティを扱うための専用コマンドであるため、これらのコマンドの構文でプロパティ名から the
を省略します。
ローカルおよびグローバルプロパティの操作に関する追加情報については、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.######に設定されていますが、必要に応じて変更することができます。
特別なフォーマット
以下の特別な値のいずれかにthe numberFormat
を設定することもできます:
hexadecimal
またはhex
: 数値を16進数形式で表示します。octal
: 数字を8進数形式で表示します。binary
: 数字を2進数形式で表示します。words
、Words
、またはWORDS
: 対応する大文字小文字の形式で数字を単語として表示します。
表示する最小の桁数を設定したい場合は、"binary 16"のように、特殊な値に続けて数値を入れてください。必要に応じて、先頭にゼロが追加されて、最小の長さが確保されます。
例:
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' を表示
例:
set the numberFormat to "hex 4" // 4桁の16進数として数値を表示
put 13 —> 0x000D
set the numberFormat to "octal"
put 13 —> 0o15
set the numberFormat to "binary8"
put 13 —>0b00001101
set the numberFormat to "Words"
put 127 —>One Hundred Twenty-Seven
the defaultQuoteFormat
グローバルプロパティ
値: None
(または空)は引用なしを表します。Standard
は標準的な引用を表します。それ以外の文字列または2つの文字列のリストも使用可能です。
デフォルト: None
動作: the listFormat
およびthe propertyListFormat
グローバルプロパティは、それらのコンテナがテキストに変換されるときに値がどのように引用されるかを指定するオプションのquotes
値を含みます。 the defaultQuoteFormat
グローバルプロパティは、これらのquotes
値が指定されていないとき(これはリストのデフォルトケースであり、プロパティリストの場合はない)の引用動作を提供します。
これらの引用プ ロパティの値は、引用なしのための空またはNone、標準的な引用のためのStandard、または他の任意の文字列または2つの文字列のリストにすることができます。2つの文字列のリストを提供すると、それらは開始引用と終了引用(値の前後)として使用されます。単一の文字列を提供すると、それは開始引用と終了引用の両方として使用されます。
標準的な引用は、値の内容に応じて直接ダブルクォート文字(") またはダブル角括弧("<<",">>") を自動的に選択します。値が引用されるときはいつでも、最終的な引用文字列またはリターン文字を含む任意の値は自動的に適切な値を生成する有効な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
コマンドを参照してください。
どの形式でも調べたり変更したりすることができます(下の例を参照)。変更を行う際には、必要な形式を削除したり、間違って一つの値で全体の形式を置き換えたりしないように注意してください。
SenseTalkで日付/時間の形式がどのように定義されているかについての詳細情報は、SenseTalkの日付と時間の形式を参照してください。
例:
put the timeFormat.ShortDateItems // "[year],[mo],[da],[hr24],[mi],[se]"
例:
set the timeformat's date to "[weekday], [monthName] [d]."
put the date into mydate
add 30 weeks to mydate
log mydate // 'Friday, March 2.'と表示
例:
put the long date // 2005年10月19日(水)
delete the first word of the timeFormat's longDate
put the long date // 2005年10月19日(水)
関連項目:
the timeInputFormat
グローバルプロパティ
値: the timeInputFormat
の値を以下のいずれかに設定することができます:
- 単一の形式値、
Natural
、iso8601
、またはempty
- 形式値のリスト
- 形式値を含むプロパティリスト(ただし、以下の注意を参照)
Default: values from the timeFormat
global property, plus "iso8601"
動作: the timeInputFormat
グローバルプロパティは、テキスト文字列が日付/時間値として有効であるかどうかを判断するために使用される日付と時間の形式をすべて指定するリストです。デフォルトでは、このプロパティは動的にthe timeFormat
グローバルプロパティの値にリンクされているため、日付または時間文字列はそこに含まれる任意の形式で認識できます。
Natural
形式についての情報は、以下のNatural Formatを参照してください。また、SenseTalkはiso8601
Format以下に記述されているように、ISO 8601形式もサポートしています。
SenseTalkが内部的にすでにその形式になっていない値を日付/時間値と して解釈しようとするとき、次の3ステップのプロセスを経ます:
- 値が数値であれば、SenseTalkはそれを2001年1月1日からの秒数として扱います。
- 値が
dateItems
形式のいずれか(5、6、7、または8の数値のリストまたはカンマ区切りのテキストリスト)であれば、それに応じて解釈されます。 - 値がテキストであれば、SenseTalkはリストされた順序で
the timeInputFormat
の各アイテムを通じて、値がその形式に一致するかどうかを確認します。最初に一致した形式が値を翻訳するために使用されます。
この日付と時間の解釈プロセスは、is a date
演算子、date()
関数と関連関数、および文字列を暗黙的に日付/時間値として解釈しようとする加算などの操作によって多くの操作で使用されます。
SenseTalkで日付/時間形式がどのように定義されるかについての完全な情報については、SenseTalk Date and Time Formatsを参照してください。
例:
set the timeInputFormat to Natural // ほとんどの形式を受け入れる
例:
set the timeInputFormat to "" //デフォルトの動作をリセットする
例:
set the timeInputFormat to iso8601 // 形式 をISO 8601に対応する形式に設定する
例:
insert "[da]/[mo]/[yr]" 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 // timeInputFormatをデフォルトの動作にリセット
put "05/25/80" is a date // 'True'を表示
値をプロパティリストに設定する(またはthe timeFormat
にリンクする)場合、SenseTalkはプロパティリストからの値のみを使用します。つまり、グローバルプロパティをプロパティリストに設定することはできますが、the timeInputFormat
はプロパティリストとして値を保存しません。キーを削除し、値のみをリストとして保存します。
SenseTalkは、プロパティリストのソートされたキー順で形式を並べます。ただし、一つの形式が別の形式のプレフィックスの場合を除きます。この場合、形式は常にリストの後ろに配置され、長い形式が先にマッチするようにします。また、任意の形式が2桁の年([yr]を使用)を許可する場合、4桁の年の対応する形式 ([year])が自動的にその形式の2桁版よりも先にリストに追加されます。
値をempty
に設定すると、それは再度the timeFormat
の値に動的にリンクします(初期のデフォルト状態)。
値を形式のリストに設定する場合、長い形式を先に並べてください。SenseTalkは、テキストの一部しか一致しない場合でも、最初に一致した形式を使用して時間値を解釈します。
Natural
Format
特定の形式文字列に加えて、自然
の値を使用することで、SenseTalkは"昨日"、"午後"、"火曜日の昼食時"などの時間的意味合いを持つ自然言語フレーズを日時値として解釈することができます。この形式オプションは、このようなフレーズを受け入れます。
この設定は、値の"最善の推測"に到達するために洗練された技術を使用していますが、一部のケースでは、値を日付/時間として扱うのに過度に積極的になる可能性があります。リストで使用される場合、自然
は他の特定の形式がまず制御された優先順位で一致するのを許すために、リストの最後の項目であるべきです。
iso8601
Format
SenseTalkは、すべての数字の値(すべての数字とおそらく小数点)を日時として扱いません。値をISO 8601の日時としてSenseTalkに認識させたい場合、その値は次のいずれかを含む必要があります:
-
日付形式: 年の4桁を始め、月の2桁、日の2桁の順になります。日付は必ず年から始まり、年は4桁で、1000年前の年は先頭にゼロを使用して表します。月と日は省略可能ですが、月を省略して日を含めることは許されません。日を省略すると、その月の最初の日が仮定されます。月と日の両方を 省略すると、1月1日が仮定されます。時間を指定せずに日付が指定されている場合、SenseTalkは指定された日付の正午を時間として割り当てます。
日付区切り: 年、月、日はスペース、ダッシュ、またはピリオドで区切ることができます。以下の例を参照してください。
例:
2015-11-13 -- 2015年11月13日
例:
1959.05.11 -- 1959年5月11日
例:
2000 01 01 -- 2000年1月1日
-
時間形式: 時間の2桁から始め、分の2桁、秒の2桁の順になります。時間が指定されている場合、時間形式は必ず時間から始まります。分と秒は省略可能です。ただし、分が含まれていない場合、秒を含めることはできません。省略すると、SenseTalkは分と秒をゼロと仮定します。秒の後には小数点(またはコンマ)と秒の一部を続けることができます。
時間区切り: 時間、分、秒はコロンまたはスペースで区切ることができます。日付形式と時間形式の両方が含まれている場合、日付形式が最初に来る必要があり、時間形式からスペースまたは大文字のTで区切ることができます。日付/時間値の後には、UTC(協定世界時)からのゼロオフセットを示すために大文字のZ、または+(プラス)または-(マイEggplant)を続け、その後に2桁または4桁を続けてUTCからの時間、または時間と分のオフセットを示すことができます。
例:
`12:15:20 -- 正午過ぎの15分20秒`
例:
`09 30 15 -- 午前9時過ぎの30分15秒`
例:
`11:00:00 -- 午前11時、分と秒は指 定されていない`
SenseTalkはISO 8601標準の日付と時間の形式をサポートしています。標準についての詳細は、このISO 8601形式についての記事を参照してください。
- 要素間のセパレータ
- 日付の後または時間の前(または両方が指定されている場合は日付と時間の間)にTの文字
- 最後にZの文字またはタイムゾーンのオフセット。
the centuryCutoff
Local Property
値: 0から99までの整数; 負の数、または 空
**デフォルト: the defaultCenturyCutoff
グローバルプロパティ。これは、将来の10年間に初期化されます。**振る舞い: このローカルプロパティは、文字列を日付に変換するときに、2桁の数字を4桁の年に解釈するのを制御します。2桁の年が見つかると、現在の年またはthe centuryCutoff
によって示される年までの未来の年とみなされます。それ以外の場合、the centuryCutoff
の値よりも大きい2桁の年は、過去(現在の世紀の早い時期または前の世紀)とみなされます。この機能を無効にし、2桁の年が共通の時代の最初の世紀の年を表すようにするには、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 (the year 26 in the first century of the common era)
関連:
the defaultCenturyCutoff
GlobalProperty
値: 0から99までの整数; 負の数、または 空
デフォルト: 10年後****振る舞い: the centuryCutoff
ローカルプロパティが設定されていない場合、このグローバルプロパティは文字列を日付に変換する際に2桁の数字を4桁の年に解釈するために使用されます。このプロパティは the centuryCutoff
ローカルプロパティと同様に動作し、同じ機能を持っています。すべてのハンドラが異なるカットオフ日付で日付を解釈するように the defaultCenturyCutoff
の値を調整します。**例:
set the defaultCenturyCutoff to 26
put the abbreviated international date of "3/16/26" // Displays '2026-03'
set the defaultCenturyCutoff to 25
put the abbreviated international date of "3/16/26" // Displays '1926-03'
set the defaultCenturyCutoff to empty
put the abbreviated international date of "3/16/26" // Displays '0026-03' (the year 26 in the first century of the common era)
関連:
the lastDayOfMonthCalculation
Global Property
値: True または False。
デフォルト: True
振る舞い: カレンダー日付算術が月の最終日を優先するかどうかを制御します。SenseTalkでは、開始日からカレンダーの月数、四半期、年数を加算または減算して終了日を計算することができます。例えば、"11月13日" + 6ヶ月
は"5月13日"
となります。月の長さが異なるため、開始日が月末または月末近くの場合、この問題が生じることがあります。the lastDayOfMonthCalculation
がデフォルト(true
)に設定されている場合、SenseTalkはこれらのカレンダー日付計算が常に正しい月を結果とすることを保証します。開始日が月の最終日である場合、または結果となる月の終わりを超える日である場合、計算された終了日は結果となる月の最終日となります:
例:
set startDate to "January 31, 2018"
put startDate + 1 month into newDate
put newDate // "February 28, 2018"
例:
put "September 30" + 1 calendarQtr -- "December 31"
put “August 31” + 1 month -- “September 30"
the lastDayOfMonthCalculation
がfalse
に設定されている場合、結果となる終了日は可能な限り開始日と同じ日になります。結果となる月の日数が少ない場合、その月の最後の日よりも大きな日が次の月の最初の日に持ち越されます:
例:
set the lastDayOfMonthCalculation to false
set startDate to "January 31, 2018"
put startDate + 1 month into nextDate
put nextDate // "March 3, 2018"
例:
put "September 30" + 1 calendarQtr -- "December 30"
put “August 31” + 1 month -- “October 1"
the colorFormat
Global Property
振る舞い: the colorFormat
は、内部的に色として表現される値がテキスト表現に変換されるときに使用するフォーマットを指定するグローバルプロパティです。Basicは、色の赤、緑、青のレベルを0から255の間の3つの整数のリストで表します。Alpha形式は、色の不透明度を表す0から255までの第4の整数を追加します(0は完全に透明です)。
デフォルト: Basic
値: Basic、Alpha、HTML、W、WA、RGB、RGBA、HSB、HSBA、CMYK、または CMYKA
HTML形式は、色を"#"に続く16進数(例:"#FF0000"は赤)として表現します。他の形式は、形式識別子で始まり、その後に0.0から1.0までの1つ以上の成分値が続き、各色成分のレベルを示します。colorFormatは最初にBasicに設定されます。
例:
set the colorFormat to "Basic"
put color("red") -- Displays "255,0,0"