マニュアル: TOML

投稿日:

v0.4.0の記述をざっと書いています。

基本仕様

  • case sensitive
  • UTF-8
  • 空白はタブ(0x09)またはスペース(0x20)
  • 改行コードはLF or CRLF

コメント

#のあと行が終わるまで。

キー・バリューペア

  • キー名 + = + 形式
  • キーと値の周りの空白は無視される
  • 途中で改行が入ってはダメ(値が複数行にまたがる場合は除く)

キー

  • Bare keys(生のキー)
    • A-Za-z0-9_-のみからなる。
    • キーは数字のみからなる場合もOK1
  • Quoted keys(囲まれたキー)
    • "'で囲む?(記述が見つからない)
    • ほとんど制限なく文字が使える。
  • キーが空白のときはQuotedにする必要があるが非推奨

以下のいずれか。

  • String
  • Integer
  • Float
  • Boolean
  • DateTime
  • Array
  • Inline Table

String

  • Basic strings
    • "で囲む
    • いくつかの文字はエスケープが必要
    • よく使うものはエスケープシーケンスあり
  • Multi-line basic strings
    • """で初めて"""で終わる
    • 改行コードの扱いはプラットフォーム依存
    • バックスラッシュで終わる行だといろいろあるらしいがよく分からん
  • Literal strings
    • 'で囲む
    • Windowsのパスとかを表すのに便利
  • Muti-line literal strings
    • '''で囲む
    • 詳細は未チェック

Integer

数値

  • 先頭に符号が付くことがある(-+)
  • _をつけて区切ることが可能
  • 先頭に0を付けることはできない(0800などか。-0+0はOK)
  • 0xから始まると16進法(0-9, a-f, A-F)
  • 0oから始まると8進法
  • 0bから始まると2進法
  • 範囲は64ビット符号付き

Float

  • IEEE 754 binary64
  • ドット付き(fractional)
  • 指数形式(exponent), eまたはEを使用。
  • またはその両方
  • _による区切りも使える。
  • 特殊な値(小文字のみ)
    • inf, +inf: 正の無限大
    • -inf: 負の無限大
    • nan, -nan: NaN。実装依存

Boolean

true または false (小文字のみ)を使用

DateTime

タイムゾーンあり、なし、日付のみ、時刻のみ。

Array

  • []で囲んで、区切りは,
  • ネストできる
  • 値に複数の型を混ぜてはいけない
  • 複数行に渡って記述可能。
  • 最後の,はOK

Table

いわゆる「ハッシュテーブル」とか「辞書」とか。

  • [ + キー + ]で書く。
  • ネストするときはドットを使用する。
  • ネストするときも親は記述不要

Inline Table

{}で囲む形式。1行で書くこと。

Array of Tables

Arrayの各要素を[[]]で囲む。


  1. XMLとかだと数字から始まるものはNGなので、対比している模様。 ↩︎

公式サイト