前回、TOMLの復習(初級編)を書いたので、構文についてまとめます。
以下、公式サイトを参考にしてます。
1. コメント
行の先頭に #
を付けると、その行全体がコメントとして扱われます。
行末にもコメントを記述できます。
# これは全文コメントです
key = "value" # これは行末コメントです
another = "# これはコメントではありません"
2. キーと値のペア (Key/Value Pair)
TOML文書の基本単位は、キー = 値
のペアです。
キーと値の間には =
を使用し、キーと値の周囲の空白は無視されます。
キー、=
、値は同一行に記述する必要があります。
key = "value"
3. データ型
TOMLの値は、以下のデータ型を取ります。
3.1 文字列 (String)
二重引用符 " " または単一引用符 ' ' で囲まれた文字列。
二重引用符で囲まれた文字列では、エスケープシーケンスを使用できます。
simple_string = "This is a string."
escaped_string = "This string contains a \"quote\" and a \n newline."
literal_string = 'This is a literal string. No escaping needed.'
3.2 整数 (Integer)
符号付きまたは符号なしの整数。
positive_integer = 12345
negative_integer = -67890
3.3 浮動小数点数 (Float)
小数点を含む数値。
positive_float = 3.14159
negative_float = -2.71828
exponent_float = 1.23e4
3.4 ブール値 (Boolean)
true または false。
bool_value1 = true
bool_value2 = false
3.5 オフセット日時 (Offset Date-Time)
UTCからのオフセットを含む日時。
YYYY-MM-DDTHH:mm:ss+HH:mm
の形式で記述します。
offset_datetime = 2024-03-08T12:34:56+09:00
3.6 ローカル日時 (Local Date-Time)
ローカルの日時。YYYY-MM-DDTHH:mm:ss
の形式で記述します。
local_datetime = 2024-03-08T12:34:56
3.7 ローカル日付 (Local Date)
ローカルの日付。YYYY-MM-DD
の形式で記述します。
local_date = 2024-03-08
3.8 ローカル時刻 (Local Time)
ローカルの時刻。HH:mm:ss
の形式で記述します。
local_time = 12:34:56
3.9 配列 (Array)
[] で囲まれた値のリスト。
integer_array = [1, 2, 3, 4, 5]
string_array = ["apple", "banana", "orange"]
3.10 インラインテーブル (Inline Table)
{} で囲まれたキーと値のペアの集合です。
inline_table = {name = "Example", value = 10}
4. キー
キーは、プレーンキー、引用符付きキー、ドット付きキーのいずれかです。
-
プレーンキー:
ASCII文字、数字、アンダースコア、ハイフンのみを使用できます。数字のみのキーも許容されますが、文字列として解釈されます。
bare_key = "value"
bare_key_with_numbers = "123"
bare_key_with_hyphen = "my-key"
_underscore_key = "value"
-
引用符付きキー:
基本文字列またはリテラル文字列と同じルールに従います。より幅広いキー名を使用できますが、特別な場合を除きプレーンキーを使用することを推奨します。
"quoted key" = "value"
"key with spaces" = "value"
'single quoted key' = "value"
"key with \"quotes\"" = "value"
-
ドット付きキー:
レーンキーまたは引用符付きキーをドットで連結したキーです。ネストされた構造を表すのに使用します。
database.server = "192.168.1.1"
database.port = 5432
user.name = "Tom"
user.email = "tom@example.com"
server."google.com".port = 80
5. 重複キー (エラー)
同じキーを複数回定義することはできません。
# nameキーが重複しているためエラー
name = "Tom"
name = "Pradyun"
まとめ
今回は、コメント、キー、値、データ型についてまとめました。
他にも構文があるので、別途まとめます。