型取得/変換†
24 個の関数。
GETTYPE†
書式†
GETTYPE( var )
引数†
| Parameter | Description |
|---|---|
| var | 型を調べる値・変数・式 |
戻り値†
- 0: 内部エラー(失敗)
- 1: 整数
- 2: 浮動小数点数
- 3: 文字列
- 4: 汎用配列
- 5: ハッシュ(Tc600-3以降)
解説†
指定した値のデータ型を取得する。
「要素数1の汎用配列は、その最初の(唯一の)要素の型を返します」という後方互換性のための動作がある。要素数1の汎用配列の型を正確に調べたい場合は GETTYPEEX を使用することが推奨される。
この動作は、唯一の要素が配列やハッシュ(入れ子)のときも同じで、それぞれ 4 と 5 を返す。
GETTYPE(PARSEJSON('[[1,2]]')) // 4
GETTYPE(PARSEJSON('[{"a":1}]')) // 5
互換性†
- YAYA: 初期から利用可能
- AYA: 5.8以降
- Tc600-3: ハッシュのとき 5 を返すようになった
- Tc602-10: 要素数1の汎用配列で、唯一の要素が配列やハッシュのとき 0 を返していたのを直した(4 や 5 を返す)
関連項目†
GETTYPEEX†
書式†
GETTYPEEX( var )
引数†
| Parameter | Description |
|---|---|
| var | 型を調べる変数の名前(文字列として渡す) |
戻り値†
- 0: 内部エラー(失敗)
- 1: 整数
- 2: 実数
- 3: 文字列
- 4: 汎用配列
- 5: ハッシュ(Tc600-3以降)
解説†
指定した変数のデータ型を取得する。GETTYPE との主な違いは、引数に変数そのものではなく変数名を文字列として渡す点にある。
要素数1の汎用配列についても正確に型を返すため、GETTYPE では後方互換動作により正しく判定できないケースでこちらを使用する。
互換性†
- YAYA: Tc537-3以降
- Tc600-3: ハッシュのとき 5 を返すようになった
関連項目†
TOINT†
書式†
TOINT( string )
引数†
| Parameter | Description |
|---|---|
| string | 変換したい文字列または実数 |
戻り値†
- 成功: 変換後の整数値
- 失敗: 0
解説†
文字列・実数を整数に変換する。小数点以下は単純に切り捨てられる。
Tc542-4以前のバージョンではFLOOR()相当の動作(バグ)があったが、Tc542-4以降では他言語と同様に小数点以下を単純に切り捨てる動作となった。
使用例†
_i = '100' // 文字列を代入
_j = _i + 1
// "1001" (文字列の連結になってしまう)
_i = '100'
_j = TOINT( _i ) + 1
// 101 (整数に変換してから加算)
_i = 1.1
_j = TOINT( _i )
// 1
_i = -1.1
_j = TOINT( _i )
// -1 (Tc542-4以降の動作)
互換性†
- YAYA: 初期バージョンより
- AYA: 5.8以降
- Tc542-4以降: 負の小数の切り捨て動作変更
- Tc574-4 / Tc602-6: 数字の後に
a(A)が続く文字列で、aを 10 という桁として読んでしまいTOINT('1a')が 20 になっていたのを修正(1 になる)
関連項目†
TOREAL†
書式†
TOREAL( string )
引数†
| Parameter | Description |
|---|---|
| string | 変換したい文字列または整数 |
戻り値†
- 成功: 変換後の実数値
- 失敗: 0.0
解説†
文字列または整数を実数(浮動小数点数)に変換する。
使用例†
_s = '1.00005'
_d = TOREAL( _s )
_d // 1.000050 (実数)
_i = 1
_d = TOREAL( _i )
_d // 1.000000 (実数)
互換性†
- YAYA: 初期バージョンより
- AYA: 5.8以降
関連項目†
TOSTR†
書式†
TOSTR( var )
引数†
| Parameter | Description |
|---|---|
| var | 変換する整数、実数、または汎用配列 |
戻り値†
- 成功: 変換後の文字列
- 失敗: VOID
解説†
整数・実数・汎用配列を文字列に変換する。汎用配列を渡した場合は、要素をカンマで結合した文字列を返す。
使用例†
_i = 100
_result = TOSTR( _i )
// "100"
_array = ('さくら','ねここ','まゆら')
_result = TOSTR( _array )
// "さくら,ねここ,まゆら"
互換性†
- YAYA: 初期バージョンより
- AYA: 5.8以降
- Tc574-4 / Tc602-5: 整数の最小値(-9223372036854775808)が
-だけになっていたのを修正 - Tc574-4 / Tc601-1: 1e57 以上の実数を文字列にすると、末尾にゴミが混ざることがあったのを修正
関連項目†
TOAUTO†
書式†
TOAUTO( string )
引数†
| Parameter | Description |
|---|---|
| string | 変換したい文字列 |
戻り値†
- 整数に解釈できる場合: 整数値
- 実数に解釈できる場合(整数変換が失敗した場合): 実数値
- どちらにも解釈できない場合: 元の文字列をそのまま返す
解説†
文字列に対して自動的な型変換を試みる関数。整数への変換を優先的に試み、失敗した場合に実数への変換を試みる。どちらの変換も成功しない場合は、元の文字列をそのまま返す。
汎用配列を引数として渡した場合の動作は未定義。
互換性†
- YAYA: TC516-901 以降
関連項目†
TOAUTOEX†
書式†
TOAUTOEX( string )
引数†
| Parameter | Description |
|---|---|
| string | 変換したい文字列 |
戻り値†
- 整数に解釈できる場合: 整数値
- 実数に解釈できる場合(整数変換が失敗した場合): 実数値
- どちらにも解釈できない場合: 元の文字列をそのまま返す
解説†
文字列に対して自動的な型変換を試みる関数。TOAUTOとの違いは、「さらに文字列変換した結果が元の文字列と一致する場合のみ」変換を行う点。
整数への変換を優先的に試み、失敗した場合に実数への変換を試みる。どちらの変換も成功しない場合は、元の文字列をそのまま返す。
汎用配列を引数として渡した場合の動作は未定義。
互換性†
- YAYA: TC571-3 以降
関連項目†
ISFUNC†
書式†
ISFUNC( string )
引数†
| Parameter | Description |
|---|---|
| string | 存在を確認する関数名(文字列) |
戻り値†
- 0: 関数が存在しない
- 1: ユーザー定義関数が存在する
- 2: システム関数が存在する
解説†
指定した名前の関数がシステム内に存在するかどうかを確認する。ユーザー定義関数かシステム関数かも区別して返す。
使用例†
// "DebugMenu" 関数が存在する場合のみデバッグメニューを追加
if ( ISFUNC("DebugMenu") )
{
AYATEMPLATE.MenuItem( "【デバッグメニュー】","DebugMenu")
}
デバッグ用のメニューなどを配布ファイルに含めたくない場合に有用。
On_enable_debug イベントと組み合わせて、開発用パレットの「SHIORIデバッグモード有効」時のみ項目を追加する場合は、次のようにする。
if ( ISFUNC("DebugMenu") && debug_mode )
{
AYATEMPLATE.MenuItem( "【デバッグメニュー】","DebugMenu")
}
On_enable_debug
{
debug_mode = reference[0]
}
互換性†
- YAYA: 初期から利用可能
- AYA: 5.8以降
関連項目†
ISVAR†
書式†
ISVAR(string)
引数†
| Parameter | Description |
|---|---|
| string | 存在を確認する変数名の文字列 |
戻り値†
- 0: 変数が存在しない
- 1: グローバル変数が存在する
- 2: ローカル変数が存在する
解説†
指定した名前の変数が存在するかどうかを確認します。
互換性†
- YAYA: 初期バージョンより使用可能
- AYA: バージョン5.8以降で使用可能
関連項目†
CVINT†
書式†
CVINT(var)
引数†
| Parameter | Description |
|---|---|
| var | 整数型に変換する変数 |
戻り値†
戻り値なし(変数をその場で変換する)
整数形式の文字列を保持する変数を実際の整数型に変換する。小数部分は切り捨てられる。
使用例†
_val = '583'
CVINT(_val)
GETTYPE(_val) // 1 を返す(整数型)
_val = '583.12'
CVINT(_val)
GETTYPE(_val) // 1 を返す(整数型)
_val // 583 を返す(小数部分は除去される)
互換性†
- YAYA: 初版から利用可能
- AYA: バージョン5.8以降
- Tc574-4 / Tc602-6: 数字の後に
a(A)が続く文字列で、aを 10 という桁として読んでしまい'1a'が 20 になっていたのを修正(1 になる)
関連項目†
CVSTR†
書式†
CVSTR(var)
引数†
| Parameter | Description |
|---|---|
| var | 変換対象の変数。文字列型に変換して同じ変数に格納しなおす。 |
戻り値†
返り値はありません(VOID)。
解説†
引数に変数を指定すると、その値を文字列に変換して格納しなおす。
使用例†
_val = 3.1415 // 実数として格納
CVSTR(_val)
GETTYPE(_val) // "3" を出力(文字列型になった)
_val // "3.141500" を出力(文字列表現に変換された)
互換性†
- YAYA: 初版より対応
- AYA: 5.8以降
関連項目†
CVREAL†
書式†
CVREAL(var)
引数†
| Parameter | Description |
|---|---|
| var | 変換対象の変数。文字列型の実数形式を実数型に変換して格納しなおす。非数値文字列の場合は実数型に変換し "0.000000" を格納する。 |
戻り値†
返り値はありません(VOID)。
解説†
実数値の形式を持つ文字列が格納された変数を指定すると、実数に変換して格納しなおす。それ以外の文字列が格納された変数を指定したときは、変数の型を実数にしたうえで 0.000000 を格納する。
使用例†
_val = '3.1415' // 文字列として代入
CVREAL(_val)
GETTYPE(_val) // "2" を出力(実数型になった)
_val // "3.141500" を出力(実数型になった)
互換性†
- YAYA: 初版より対応
- AYA: 5.8以降
関連項目†
CVAUTO†
書式†
CVAUTO(var [, strict_convert])
引数†
| Parameter | Description |
|---|---|
| var | 変換対象の変数 |
| strict_convert | (省略可、デフォルト: 0)0以外を渡すと、変換結果をさらに文字列変換した結果が、元の文字列と一致する場合のみ変換する(CVAUTOEX と同じ動作。Tc571-2以降) |
戻り値†
戻り値なし(変数をその場で変換する)
引数に文字列の形式を持つ文字列が格納された変数を指定すると、整数として解釈できるなら整数に、実数として解釈できるなら実数に変換して格納しなおす。どちらにも解釈できない場合は、文字列のまま変換しない。汎用配列変数を渡した場合の動作は未定義。
使用例†
_val = '3.14159'
CVAUTO(_val)
GETTYPE(_val) // 2 を返す(実数型であることを示す)
互換性†
- YAYA: TC516-901以降
- Tc571-2:
strict_convertを追加
関連項目†
CVAUTOEX†
書式†
CVAUTOEX(var)
引数†
| Parameter | Description |
|---|---|
| var | 変換対象の変数 |
戻り値†
戻り値なし(変数をその場で変換する)
文字列形式のテキストを、整数または実数として解釈できる場合に変換し、それ以外は文字列のまま残す。CVAUTOとの違いは、「文字列に変換した結果が元の文字列と一致する場合のみ変換する」点。整数変換を先に試み、次に実数変換を試みる。汎用配列変数を渡した場合の動作は未定義。
使用例†
// 文字列のまま残る例
_val = '3.14'
CVAUTOEX(_val)
GETTYPE(_val) // "3" を出力(文字列型)
// 実数に変換される例
_val = '3.140000'
CVAUTOEX(_val)
GETTYPE(_val) // "2" を出力(実数型)
互換性†
- YAYA: TC571-3以降
関連項目†
PARSEJSON†
書式†
PARSEJSON( str )
引数†
| Parameter | Description |
|---|---|
| str | JSON の文字列 |
戻り値†
- 成功時: JSON を変換した値
- 失敗時: 空(VOID)
解説†
JSON の文字列を解析し、ハッシュ・配列などの値にして返す。値の対応やコメントの扱いは FREADJSON と同じ。
SAORI や外部から受け取った JSON の文字列を扱うときに使う。ファイルから読むときは FREADJSON を使う。
エラー†
| 状況 | 警告 | GETLASTERROR |
|---|---|---|
| 引数がない | W0008 | 8 |
| str が文字列でない | W0009 | 9 |
| JSON として解析できない | W0026 | 26 |
使用例†
_j = PARSEJSON('{"result": [{"id": 1, "text": "こんにちは"}]}')
_j["result"][0]["text"] // こんにちは
_j["result"][0]["id"] // 1
PARSEJSON('[1, 2.5, "a"]') // 整数 1、実数 2.5、文字列 a の汎用配列
PARSEJSON('{') // 空(警告 W0026)
互換性†
- YAYA: Tc601-1以降
- Tc602-1: 小数点が
,のロケール(ドイツ語など)の環境で、小数を含む JSON の解析に失敗していたのを修正
関連項目†
PARSEXML†
書式†
PARSEXML( str )
引数†
| Parameter | Description |
|---|---|
| str | XML の文字列 |
戻り値†
- 成功時: ルート要素を表すハッシュ
- 失敗時: 空(VOID)
解説†
XML の文字列を解析し、ルート要素をハッシュにして返す。要素の形は FREADXML と同じ。
文字列はすでに YAYA の文字列になっているので、XML 宣言の encoding は無視する。ファイルから読むときは FREADXML を使う。
エラー†
| 状況 | 警告 | GETLASTERROR |
|---|---|---|
| 引数がない | W0008 | 8 |
| str が文字列でない | W0009 | 9 |
| XML として解析できない | W0026(エラーの内容と行番号も出力する) | 26 |
使用例†
_x = PARSEXML('<res code="0"><msg>OK</msg></res>')
_x["attr"]["code"] // 0(文字列)
_x["children"][0]["text"] // OK
PARSEXML('<a><b></a>') // 空(警告 W0026)
互換性†
- YAYA: Tc601-1以降
関連項目†
PARSEHTML†
書式†
PARSEHTML( str )
引数†
| Parameter | Description |
|---|---|
| str | HTML の文字列 |
戻り値†
- 成功時:
<html>要素を表すハッシュ - 失敗時: 空(VOID)
解説†
HTML の文字列を解析し、<html> 要素をハッシュにして返す。要素の形と解析の規則は FREADHTML と同じ。
文字列はすでに YAYA の文字列になっているので、<meta charset> は無視する。ファイルから読むときは FREADHTML を使う。
HTML 全体ではなく一部分(<p>a</p> など)を渡しても、<html> <head> <body> が補われた木になる。部分は <body> の children から取り出す。
エラー†
| 状況 | 警告 | GETLASTERROR |
|---|---|---|
| 引数がない | W0008 | 8 |
| str が文字列でない | W0009 | 9 |
| 入れ子が深すぎる(128段を超える) | W0026(原因も出力する) | 26 |
使用例†
_h = PARSEHTML('<p class=a>x<b>y</b>z<br><img src="a.png" alt="&"></p>')
_h["name"] // html
_body = _h["children"][1]
_p = _body["children"][0]
_p["attr"]["class"] // a
_p["text"] // xz
_p["children"][0]["text"] // y
_p["children"][2]["attr"]["alt"] // &
互換性†
- YAYA: Tc605-1以降
関連項目†
PARSEHEADER†
書式†
PARSEHEADER( str [, conv ] )
引数†
| Parameter | Description |
|---|---|
| str | HTTP や SHIORI のようなヘッダ形式の文字列 |
| conv | 省略可。0 以外なら値を TOAUTOEX と同じ規則で整数・実数に変換する。省略時は 0(変換しない) |
戻り値†
- 成功時: 次のキーを持つハッシュ
- 失敗時: 空(VOID)
| キー | 内容 |
|---|---|
start |
開始行(GET SHIORI/3.0 や HTTP/1.1 200 OK など)。開始行がなければ空文字列 |
header |
ヘッダのキー→値のハッシュ。同じキーが複数あるときは後に出たものが残る |
key |
ヘッダのキーの配列(出現順、重複も含む) |
value |
ヘッダの値の配列(出現順)。conv が 0 以外なら変換後の値 |
rawvalue |
変換前の値(文字列)の配列(出現順) |
body |
空行より後ろの文字列。空行がなければ空文字列 |
解説†
HTTP や SHIORI・SAORI・SSTP のリクエスト/レスポンスのような「開始行 + キー: 値 の行 + 空行 + 本文」の形の文字列を解析し、ハッシュと配列にまとめて返す。1 行ずつ STRSTR や SUBSTR で切り出すよりも速い。
- 改行は CRLF と LF のどちらでもよい
- 最初の空行でヘッダが終わり、その後ろはすべて
bodyになる - 各行は最初の
:でキーと値に分ける。値は:の直後の空白(スペースかタブ)を 1 つだけ飛ばしたもので、残りの空白はそのまま残す(Key: aの値はa) - 最初の
:より前が空、または空白を含む行はヘッダの行とみなさない。1 行目がそうなら開始行としてstartに入れ、2 行目以降なら無視する。このため開始行のない、ヘッダだけの文字列も解析できる - キーの大文字・小文字は区別する
convを 0 以外にしたときの変換は TOAUTOEX と同じで、文字列に戻したときに元と一致する場合だけ変換する。12は整数になるが、007や1.5は文字列のまま
header のハッシュはキー順に並ぶので、出現順が必要なときは key / value / rawvalue を使う。
エラー†
| 状況 | 警告 | GETLASTERROR |
|---|---|---|
| 引数がない | W0008 | 8 |
| str が文字列でない | W0009 | 9 |
使用例†
request
{
_r = PARSEHEADER(_argv[0], 1)
// _argv[0] が
// GET SHIORI/3.0
// Charset: UTF-8
// ID: OnBoot
// Reference0: 12
// Reference1: 007
// のとき
_r["start"] // GET SHIORI/3.0
_r["header"]["ID"] // OnBoot
_r["header"]["Reference0"] // 12(整数)
_r["header"]["Reference1"] // 007(文字列)
_r["key"] // Charset,ID,Reference0,Reference1
_r["rawvalue"][2] // 12(文字列)
}
_nl = CHR(13) + CHR(10)
_r = PARSEHEADER('HTTP/1.1 200 OK' + _nl + 'Content-Type: text/plain' + _nl + _nl + 'hello')
_r["start"] // HTTP/1.1 200 OK
_r["header"]["Content-Type"] // text/plain
_r["body"] // hello
500 系と共用する辞書では、#ifdef __AYA_SYSTEM_SYSFUNC_PARSEHEADER__ で使えるかどうかを判定して書き分けられる(プリプロセス)。
互換性†
- YAYA: Tc602-3以降
関連項目†
DUMPJSON†
書式†
DUMPJSON( value [, pretty] )
引数†
| Parameter | Description |
|---|---|
| value | JSON にする値。ハッシュや配列(入れ子を含む)も1つの引数として渡せる |
| pretty | 1 なら改行とインデントを入れて整形する。省略時は 0(1行にする) |
戻り値†
- 成功時: JSON の文字列
- 引数がないとき: 空文字列
解説†
値を JSON の文字列にして返す。PARSEJSON の逆の変換になる。
値の対応†
| YAYA | JSON |
|---|---|
| ハッシュ | オブジェクト。キーは文字列にする(1 は "1")。並びはハッシュのキーの順 |
| 汎用配列 | 配列 |
| 整数 | 数値。64bit の整数も誤差なく書く |
| 実数 | 数値。小数点か指数を必ず付ける(1.0、0.1、1e+300) |
| 文字列 | 文字列 |
| 空(VOID) | null |
- 整数の 1 / 0 は数値の
1/0になる。true/falseにはならない - 実数は、読み戻して同じ値になる短い表記にする。NaN と無限大は JSON で表せないので
nullになる - 文字列では
"\と制御文字(改行・タブなど)だけをエスケープする。日本語などの非 ASCII の文字や/はそのまま書く - 小数点はロケールによらず常に
.になる
整形するときは、4つの空白でインデントし、改行は LF にする。空の配列・ハッシュは [] / {} と1つにまとめる。
PARSEJSON で読み戻すと元の値に戻る。ただし、値が整数の実数(1.0)は整数になる。
エラー†
| 状況 | 警告 | GETLASTERROR |
|---|---|---|
| 引数がない | W0008 | 8 |
使用例†
_h = IHASH()
_h["name"] = "さくら"
_h["tags"] = ("ghost", "shell")
_h["height"] = 158.5
DUMPJSON(_h)
// {"height":158.5,"name":"さくら","tags":["ghost","shell"]}
DUMPJSON(_h, 1)
// {
// "height": 158.5,
// "name": "さくら",
// "tags": [
// "ghost",
// "shell"
// ]
// }
DUMPJSON(("a", 1)) // ["a",1]
DUMPJSON(未定義の変数) // null
互換性†
- YAYA: Tc602-1以降
- Tc602-5: 整数の最小値(-9223372036854775808)が
-だけになり、正しい JSON にならなかったのを修正
関連項目†
DUMPXML†
書式†
DUMPXML( element [, pretty] )
引数†
| Parameter | Description |
|---|---|
| element | ルート要素を表すハッシュ(FREADXML が返すのと同じ形) |
| pretty | 1 なら改行とインデントを入れて整形する。省略時は 0(1行にする) |
戻り値†
- 成功時: XML 宣言(
<?xml version="1.0" encoding="UTF-8"?>)付きの XML の文字列 - 失敗時: 空文字列
解説†
要素のハッシュを XML の文字列にして返す。PARSEXML の逆の変換になる。
要素のハッシュのキーは次のとおり。name 以外は無くてもよい(空でもよい)。
| キー | 値 |
|---|---|
name |
タグ名(必須)。文字列 |
attr |
属性名 → 属性値 のハッシュ。値は整数・実数・文字列(文字列にして書く) |
children |
子要素のハッシュの汎用配列 |
text |
要素のテキスト。整数・実数・文字列 |
- テキストは子要素より前に書く。FREADXML で読んだ要素がテキストと子要素の混在したもの(
<p>a<b>x</b>c</p>)だと、元の並びには戻らない(<p>ac<b>x</b></p>になる) &<>と、属性値の"はエスケープする- タグ名と属性名は、ASCII の範囲だけ XML の名前の規則(先頭は英字・
_・:、2文字目以降は数字・-・.も可)で調べる。日本語などの非 ASCII の文字は使える
整形するときは、4つの空白でインデントし、改行は LF にする。テキストを持つ要素の中でも、2つ目以降の子要素の前には改行とインデントが入る。FREADXML / PARSEXML は要素の間の空白だけのテキストを無視するので、読み戻したときの text には影響しない。
エラー†
| 状況 | 警告 | GETLASTERROR |
|---|---|---|
| 引数がない | W0008 | 8 |
要素がハッシュでない、name が無い・不正、attr がハッシュでない、属性名が不正、属性値や text が配列・ハッシュ、children が配列でない、子要素がハッシュでない |
W0027(どこが不正かも出力する) | 27 |
使用例†
_item = IHASH("name", "item", "text", "りんご")
_item["attr"] = IHASH("id", 1)
_shop = IHASH("name", "shop")
_shop["children"] = IARRAY()
_shop["children"] ,= _item
DUMPXML(_shop)
// <?xml version="1.0" encoding="UTF-8"?><shop><item id="1">りんご</item></shop>
DUMPXML(_shop, 1)
// <?xml version="1.0" encoding="UTF-8"?>
// <shop>
// <item id="1">りんご</item>
// </shop>
DUMPXML(PARSEXML('<a x="1"><b/></a>'))
// <?xml version="1.0" encoding="UTF-8"?><a x="1"><b/></a>
互換性†
- YAYA: Tc602-1以降
関連項目†
PARSEYAML†
書式†
PARSEYAML( str )
引数†
| Parameter | Description |
|---|---|
| str | YAML の文字列 |
戻り値†
- 成功時: YAML を変換した値
- 失敗時: 空(VOID)
解説†
YAML の文字列を解析し、ハッシュ・配列などの値にして返す。対応している書き方と値の対応は FREADYAML と同じ。
ファイルから読むときは FREADYAML を使う。
エラー†
| 状況 | 警告 | GETLASTERROR |
|---|---|---|
| 引数がない | W0008 | 8 |
| str が文字列でない | W0009 | 9 |
| YAML として解析できない、対応していない書き方 | W0026(行番号と原因も出力する) | 26 |
使用例†
_y = PARSEYAML("{name: さくら, tags: [ghost, shell]}")
_y["name"] // さくら
_y["tags"][1] // shell
PARSEYAML("- 1" + CHR(10) + "- 0x10" + CHR(10) + "- yes" + CHR(10) + "- '007'")
// 整数 1、整数 16、文字列 yes、文字列 007 の汎用配列
PARSEYAML("a: [1") // 空(警告 W0026)
互換性†
- YAYA: Tc602-5以降
関連項目†
PARSETOML†
書式†
PARSETOML( str )
引数†
| Parameter | Description |
|---|---|
| str | TOML の文字列 |
戻り値†
- 成功時: TOML を変換したハッシュ
- 失敗時: 空(VOID)
解説†
TOML の文字列を解析し、ハッシュにして返す。値の対応は FREADTOML と同じ。
ファイルから読むときは FREADTOML を使う。
エラー†
| 状況 | 警告 | GETLASTERROR |
|---|---|---|
| 引数がない | W0008 | 8 |
| str が文字列でない | W0009 | 9 |
| TOML として解析できない | W0026(行番号と原因も出力する) | 26 |
使用例†
_t = PARSETOML("a = 1" + CHR(10) + "b.c = 'x'")
_t["a"] // 1
_t["b"]["c"] // x
PARSETOML("a = 1" + CHR(10) + "a = 2")
// 空(警告 W0026 : line 2 : duplicate key : a)
互換性†
- YAYA: Tc602-5以降
関連項目†
DUMPYAML†
書式†
DUMPYAML( value [, pretty] )
引数†
| Parameter | Description |
|---|---|
| value | YAML にする値。ハッシュや配列(入れ子を含む)も1つの引数として渡せる |
| pretty | 1 ならブロック形式(字下げで構造を表す、人が読み書きしやすい形)、0 ならフロー形式の1行にする。省略時は 1 |
戻り値†
- 成功時: YAML の文字列
- 引数がないとき: 空文字列
解説†
値を YAML の文字列にして返す。PARSEYAML の逆の変換になる。
DUMPJSON / DUMPXML と違い、pretty の省略時は整形する(1)。
値の対応†
| YAYA | YAML |
|---|---|
| ハッシュ | マッピング。キーは文字列にする(1 は "1")。並びはハッシュのキーの順 |
| 汎用配列 | シーケンス |
| 整数 | 整数。64bit の整数も誤差なく書く |
| 実数 | 実数。小数点を必ず付ける(1.0、0.1、1.0e+300)。NaN は .nan、無限大は .inf / -.inf |
| 文字列 | 文字列(下記) |
| 空(VOID) | null |
- 整数の 1 / 0 は
1/0になる。true/falseにはならない - 小数点はロケールによらず常に
.になる
文字列は、そのまま書いても読み戻したときに同じ文字列になるものはクォートせずに書き、そうでないものは "..." で囲む。次のようなものは "..." になる。
- 数値・真偽値・null として読まれるもの(
"123""1.5""true""null""~") - 他の処理系(YAML 1.1)で数値や真偽値として読まれうるもの(
"yes""no""on""off""0x1F""2001-12-14""12:30") - 空文字列、先頭か末尾が空白のもの、記号(
- ? : , [ ] { } # & * ! | > ' " % @と`)で始まるもの :や#を含むもの、制御文字(タブなど)を含むもの
"..." の中では " \ と制御文字だけをエスケープする(改行は \n)。日本語などの非 ASCII の文字はそのまま書く。
整形の形(pretty が 1)†
- 2つの空白でインデントし、改行は LF にする。最後の行の後にも改行を付ける
- シーケンスはキーの下に字下げして
-で並べる。シーケンスの要素のハッシュ・配列は-の後に続けて書く - 空の配列・ハッシュは
[]/{}と書く - 改行を含む文字列はブロックスカラー(
|)にする。末尾に改行が無いものは|-、2つ以上あるものは|+になる。ただし、最初の行が空白で始まるもの、空白だけの行があるもの、CR などの制御文字を含むものは"..."にする
pretty が 0 のときはフロー形式の1行({a: 1, b: [x, y]})にし、最後に改行を付けない。
PARSEYAML で読み戻すと元の値に戻る(どちらの形でも)。
エラー†
| 状況 | 警告 | GETLASTERROR |
|---|---|---|
| 引数がない | W0008 | 8 |
使用例†
_h = IHASH()
_h["name"] = "さくら"
_h["tags"] = ("ghost", "shell")
_h["height"] = 158.5
DUMPYAML(_h)
// height: 158.5
// name: さくら
// tags:
// - ghost
// - shell
DUMPYAML(_h, 0)
// {height: 158.5, name: さくら, tags: [ghost, shell]}
DUMPYAML(("a", 1)) // "- a" + 改行 + "- 1" + 改行
DUMPYAML("123", 0) // "123"(数値と区別するためクォートされる)
DUMPYAML(未定義の変数, 0) // null
互換性†
- YAYA: Tc602-5以降
関連項目†
DUMPTOML†
書式†
DUMPTOML( value [, pretty] )
引数†
| Parameter | Description |
|---|---|
| value | TOML にするハッシュ(入れ子を含む)。TOML の最上位は表なので、ハッシュ以外は渡せない |
| pretty | 1 なら [表] の見出しを使って整形する、0 なら最上位のキー1つにつき1行にする。省略時は 1 |
戻り値†
- 成功時: TOML の文字列
- 失敗時・引数がないとき: 空文字列
解説†
ハッシュを TOML の文字列にして返す。PARSETOML の逆の変換になる。
DUMPJSON / DUMPXML と違い、pretty の省略時は整形する(1)。
値の対応†
| YAYA | TOML |
|---|---|
| ハッシュ | 表。キーは英数字・_・- だけならそのまま、それ以外は "..." で書く。並びはハッシュのキーの順 |
| ハッシュだけの汎用配列 | 表の配列(pretty が 1 のとき [[名前]]) |
| 汎用配列 | 配列 |
| 整数 | 整数。64bit の整数も誤差なく書く |
| 実数 | 実数。小数点か指数を必ず付ける(1.0、0.1、1e+300)。NaN は nan、無限大は inf / -inf |
| 文字列 | 文字列(下記) |
| 空(VOID) | 書かない(TOML には null が無いため、そのキーごと省く) |
- 整数の 1 / 0 は
1/0になる。true/falseにはならない - 日時の文字列(FREADTOML で読んだもの)も文字列として
"..."で書く - 配列の要素が空(VOID)のときは表せないのでエラー W0027 になる
- 小数点はロケールによらず常に
.になる
文字列は、ふつうは "..." で書き、" \ と制御文字をエスケープする。\ を含み ' と改行を含まないもの(Windows のパスなど)は、読みやすいようエスケープなしの '...' で書く。
整形の形(pretty が 1)†
- その表のキーと値 → 下の階層の表(
[a.b])→ 表の配列([[a.c]])の順に書き、表と表の間には空行を入れる - キーと値を持たず、下の階層の表だけを持つ表は見出しを省く(
[a.b]だけでaも定義される) - 改行を含む文字列は複数行の
"""..."""にする - 80 文字を超える配列や、配列・ハッシュを要素に持つ配列は、1要素1行(4つの空白で字下げし、各要素の後にカンマ)にする
- 改行は LF で、最後の行の後にも改行を付ける
pretty が 0 のときは、最上位のキー1つにつき1行とし、下の階層のハッシュはインライン表({ k = v })、表の配列はインライン表の配列にする。
PARSETOML で読み戻すと元の値に戻る(空の値を省いた分を除く)。
エラー†
| 状況 | 警告 | GETLASTERROR |
|---|---|---|
| 引数がない | W0008 | 8 |
| value がハッシュでない、配列の要素に空(VOID)がある | W0027(原因も出力する) | 27 |
使用例†
_n = IHASH()
_n["title"] = "設定"
_n["ghost"] = IHASH("name", "さくら", "age", 17)
_n["ghost"]["shell"] = IHASH("name", "master")
DUMPTOML(_n)
// title = "設定"
//
// [ghost]
// age = 17
// name = "さくら"
//
// [ghost.shell]
// name = "master"
DUMPTOML(_n, 0)
// ghost = { age = 17, name = "さくら", shell = { name = "master" } }
// title = "設定"
DUMPTOML(("a", 1)) // 空文字列(警告 W0027)
互換性†
- YAYA: Tc602-5以降