TOONフォーマットチートシート
JSON は冗長すぎる (すべて中かっこ!) が、YAML は少し「魔法的」すぎて予測不能だと感じたことがあるなら、TOON の虜になるかもしれません。 この形式は、人間の読みやすさと機械の解析速度との間で独自のバランスをとっています。 高密度かつ明示的で、驚くほど高速に解析できるように設計されています。
データを移行する場合でも、単に構成ファイルをデバッグしようとしている場合でも、このチート シートでは、知っておく必要がある重要な構文について説明します。
哲学: ノイズを減らし、データを増やす
最初に気づくのは、TOON は YAML によく似ていますが、厳密には JSON のように動作するということです。 これにより、左中括弧と右中括弧が廃止され、インデントと改行が使用されるため、データがすぐにきれいに見えます。
オブジェクトとネスト
JSON では、すべてを中括弧で囲むことに慣れています。 TOON では、構造はインデントによって暗示されます。
JSON:
``md { 「プロジェクト」: { 「メタデータ」: { "名前": "アルファケンタウリ", 「ステータス」: 「アクティブ」 }、 「マイルストーン」: [ { "フェーズ": "デザイン"、 「優先度」:1 }、 { "フェーズ": "テスト", 「優先度」:2 } ] } } 「」
トゥーン:
``md プロジェクト: メタデータ: 名前: アルファケンタウリ ステータス: アクティブ マイルストーン[2]{フェーズ、優先度}: デザイン、1 テスト、2 「」
キーに特殊文字が含まれていない限り、キーに引用符は必要なく、階層が視覚的に明らかであることに注意してください。
配列の力
ここが TOON が他のフォーマットと大きく異なる点です。 TOON では、配列の 長さ をキー自体で宣言する必要があります。 最初は奇妙に思えるかもしれませんが、パーサーがメモリを事前に割り当てることができるため、非常に高速になります。
プリミティブ配列
文字列または数値の単純なリストの場合、TOON はコンパクトなカンマ区切り構文を使用します。
構文:
``md キー[長さ]:アイテム1、アイテム2、アイテム3 「」
ルート配列 (ファイル全体が単なるリスト) がある場合は、次のようになります。
表形式の配列 (キラー機能)
これは通常、開発者を魅了する機能です。 すべて同じキーを共有するオブジェクトの配列 (データベース内の行など) がある場合、TOON を使用すると、ヘッダーでスキーマを 1 回だけ定義し、値をリストするだけで済みます。 これにより、JSON に見られる大量の冗長性が削除されます。
構文:
``md キー[行]{col1,col2}: 「」
JSON:
``md { 「在庫」: [ { "sku": "KB-99", 「数量」: 50、 「通路」: 4、 「並べ替え」: false }、 { "sku": "MS-12", 「数量」: 12、 「通路」: 7、 「並べ替え」: true }、 { "sku": "MN-44", 「数量」: 8、 「通路」: 2、 「並べ替え」: true } ] } 「」
トゥーン:
``md 在庫[3]{SKU、数量、通路、再注文}: KB-99,50,4,偽 MS-12、12、7、真 MN-44,8,2,真 「」
この「CSV-inside-YAML」アプローチにより、大規模なデータセットが信じられないほど読みやすく、コンパクトになります。
混合配列と入れ子配列
データが均一でない場合もあります。 配列にさまざまなタイプのデータ (オブジェクトと混合した数値) が含まれている場合、または複雑なネストされたオブジェクトが含まれている場合、TOON はハイフンを使用した箇条書き形式の構文に戻ります。
配列の中に配列を含めることもできます。 内部配列でもその長さを宣言する方法に注目してください。
引用: いつ使用するか
TOON の最も優れた点の 1 つは、引用符がほとんど必要ないことです。 「Hello World 👋」は「"」で囲まずに書くこともできます。 ただし、TOON は型 (数値、ブール値) を推論しようとするため、引用符を使用する必要がある場合には特別なルールがあります。
「必須引用」リスト
次の場合は、文字列を二重引用符 "" で囲む必要があります。
- 数値またはブール値のように見えます: 文字列
"123"または"true"が必要な場合は、それを引用符で囲みます。 それ以外の場合、それらは数値「123」とブール値「true」になります。
- 区切り文字が含まれています: 文字列にカンマ
,(またはアクティブな区切り文字) が含まれている場合は、それを引用符で囲みます。
- エッジに空白があります: 先頭または末尾のスペースには引用符が必要です。
- 特殊文字が含まれています:
:、"、\、[、]、{、}などの文字。
- 空です: 空の文字列は
""として表されます。
例:
エスケープシーケンス
シンプルにしてください。 TOON は文字列内の 5 つのエスケープ シーケンスのみを認識します。 それ以外のものは無効です。
\\(バックスラッシュ)
\"(二重引用符)
\n(改行)
\r(キャリッジリターン)
\t(タブ)
高度なヘッダーと区切り文字
データがカンマだらけの場合はどうなるでしょうか? すべてのフィールドを引用する必要はありません。 TOON を使用すると、配列ヘッダーの区切り文字を変更できます。
タブ または パイプ (|) を大括弧または中括弧内に配置して使用できます。
パイプ区切り文字の例:
ヘッダーに「|」を追加すると、パーサーはカンマの代わりにパイプを検索することを認識し、構文をきれいに保ちます。
キーの折りたたみ
ネストが深くてもデータのパスが 1 つだけの場合は、5 回インデントする必要はありません。 ドット表記 (キーの折りたたみ) を使用して構造を平坦化することができます。
標準のネスト:
``md ユーザー: プロフィール: 設定: 通知: メールアドレス: true SMS: 偽 「」
折りたたんだ状態 (クリーナー):
``md ユーザープロファイル設定通知: メールアドレス: true SMS: 偽 「」
クイックタイプリファレンス
TOON は JSON 型に直接マッピングしますが、JavaScript 固有のエッジ ケースを適切に処理して有効な出力を保証します。
- 数値: 正準 10 進数として保存されます。 「1.0」が「1」になります。
- Infinity / NaN: これらは「null」になります (JSON がサポートしていないため)。
- 日付: 引用符で囲まれた ISO 文字列に変換されます。
- 未定義/関数:
nullに変換されます。
- 空のオブジェクト: 何も表示されません (空の出力)。
- 空の配列:
key[0]:として表されます。
TOON は正確さが重視される形式です。 配列項目を数えるのに慣れるまでに少し時間がかかるかもしれませんが、読みやすさとファイル サイズの向上には、努力する価値があります。 コーディングを楽しんでください!