Set Text
Sending string
文字列データを「ASTER」のメモリ管理領域へ送信します。送信方法はアプリケーション起動時・起動後で二種類方法があります。
ASTER::Properties::TEXT
ASTER::Action::Set TEXT
プロパティ
フレームエディタに配置された「 ASTER 」のエクステンション・プロパティにアクセスすると [Properties::Settings] に「TEXT」という項目があり、初期値はここから入力可能になっています。
アプリケーション実行中に文字列を ASTER へ送信する場合、 Set TEXT
アクションを御利用ください。
アクション
Set TEXT はアプリケーション実行動作中に「ASTER」へ文字列を送信する機能です。送信された文字列データは拡張機能が管理しているメモリ領域で保存されます。
保存された文字列データは REGEX::Replace
の置換対象となるソース文字列として利用される他、広範な用途があります。
以下利用上の注意点もお読みください。
暗黙的エスケープ
CF25 はエクスプレッションエディタなどを経由してエクステンションに文字列データを渡す際、一部文字列を暗黙的にエスケープ処理します。これはアプリケーションに「制御文字」を送信させないセキュリティ仕様に基づいています。
文字列データには通常「制御文字 ( Control Characters ) 」が含まれる場合があり、例えば改行は Windows OS の場合
\r\n
( CRLF ) が利用されます。しかし CF25 は改行を変換してしまうため「制御文字」として改行を送信しません。
NewLine$ の利用
改行は「制御文字」なのでエスケープ処理によって「通常の文字列」として送信されます。
改行を CF25 から制御文字としてエクステンションへ送信したい場合、CF25 の独自仕様である NewLine$
を利用します。
NewLine$
を利用することで制御文字として拡張機能側に渡され、これで改行を受け取ることが出来ます。
Details
制御文字 \r\n
は CF25 から ASTER へ送信するとエスケープ処理が施され \\r\\n
となり、ASTER は \r\n
という文字列として受け取ります。16 進数で表現した方が分かりやすいので以下にまとめます。
String | type | Hex |
---|---|---|
\r\n |
改行コード | 0x0D 0x0A |
\\r\\n |
エスケープ文字列 :: \\ は \ ( バックスラッシュで 0x5C ) |
0x5C 0x72 0x5C 0x6E |
\r\n |
文字列 :: \ はバックスラッシュ ( 0x5C ) |
0x5C 0x72 0x5C 0x6E |
CF25 の NewLine$
は Windows の改行コードである 0x0D 0x0A
に相当。
その他、仕様
正規表現で Regex.Replace ( 置換処理 ) を利用するとき、制御文字が CF25 に文字列化されるので制御文字を含めて置換できないという問題が ASTER Beta には存在しました。
CF25 の独自仕様には水平タブなど用意されていないため、エクスプレッションエディタ経由で全制御文字をエクステンションへ送信することはできません。
他にもディレクトリパスなど “c:\test” は "c:\\test"
となって ASTER へ送信されます。CF25 の暗黙的エスケープ処理は JSON 形式の文字列仕様的にはありがたい仕様と言えます。( JSON では文字列に直接 \
を含めることができずエスケープ処理が必要 )
制御文字を含める場合、エクスプレッションエディタからの送信データが受信データと内容一致しないケースがあり、暗黙的エスケープ処理が機能する場合の差異を考慮したデータ処理を行う必要があります。