TOML
[トムのわかりやすい最小言語]
人間の構成ファイル形式
TOMLは、わかりやすい意味論によって読みやすい最小構成ファイル形式を目指しています。TOMLはハッシュテーブルに明確にマッピングするように設計されています。TOMLは、さまざまな言語のデータ構造に簡単に解析できる必要があります。
TOMLは人間を優先します
# This is a TOML document
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00
[database]
enabled = true
ports = [ 8000, 8001, 8002 ]
data = [ ["delta", "phi"], [3.14] ]
temp_targets = { cpu = 79.5, case = 72.0 }
[servers]
[servers.alpha]
ip = "10.0.0.1"
role = "frontend"
[servers.beta]
ip = "10.0.0.2"
role = "backend"
-
-
読みやすいを目的とした最小構成ファイル形式を
- わかりやすい意味論に
- ハッシュテーブルに明確にマッピング
- さまざまな言語で解析しやすいデータ構造
-
-
- キー/値ペア
- 配列
- テーブル
- インラインテーブル
- テーブルの配列
- 整数と浮動小数点
- ブール値
- 日付と時刻。オフセットの使用はオプション
-
-
TOMLには現在、最も人気のあるプログラミング言語の大半で実装があります。C、C#、C++、Clojure、Dart、Elixir、Erlang、Go、Haskell、Java、JavaScript、Lua、Objective-C、Perl、PHP、Python、Ruby、Rust、Scala、Swift、… さらに多数。
TOMLの簡単な概要
コメント
TOMLは、すべての構成ファイルでコメントをサポートする必要があると考えています。
# This is a TOML comment
# This is a multiline
# TOML comment
強力な文字列
文字列は4つの方法で表すことができます。基本、複数行基本、リテラル、複数行リテラル。 基本文字列は引用符で囲まれています
str1 = "I'm a string."
str2 = "You can \"quote\" me."
str3 = "Name\tJos\u00E9\nLoc\tSF."
複数行基本文字列は両側に3つの引用符で囲まれ、改行が許可されます。非空白文字に先行する空白を自動的にトリミングするには、行末のバックスラッシュを使用します
str1 = """
Roses are red
Violets are blue"""
str2 = """\
The quick brown \
fox jumps over \
the lazy dog.\
"""
str2
は"The quick brown fox jumps over the lazy dog."
になります(改行のない単一の文章)。
リテラル文字列は一重引用符で囲まれています。エスケープは実行されませんので、表示される内容がそのまま使用されます
path = 'C:\Users\nodejs\templates'
path2 = '\\User\admin$\system32'
quoted = 'Tom "Dubs" Preston-Werner'
regex = '<\i\c*\s*>'
エスケープはないので、一重引用符で囲まれたリテラル文字列内に一重引用符を記述する方法はありません。そこで登場するのが複数行リテラル文字列です
re = '''I [dw]on't need \d{2} apples'''
lines = '''
The first newline is
trimmed in raw strings.
All other whitespace
is preserved.
'''
数値
整数、浮動小数点、無限大、さらにはNaNもすべてサポートされています。科学的表記や数千の区切り記号を使用できます。
# integers
int1 = +99
int2 = 42
int3 = 0
int4 = -17
# hexadecimal with prefix `0x`
hex1 = 0xDEADBEEF
hex2 = 0xdeadbeef
hex3 = 0xdead_beef
# octal with prefix `0o`
oct1 = 0o01234567
oct2 = 0o755
# binary with prefix `0b`
bin1 = 0b11010110
# fractional
float1 = +1.0
float2 = 3.1415
float3 = -0.01
# exponent
float4 = 5e+22
float5 = 1e06
float6 = -2E-2
# both
float7 = 6.626e-34
# separators
float8 = 224_617.445_991_228
# infinity
infinite1 = inf # positive infinity
infinite2 = +inf # positive infinity
infinite3 = -inf # negative infinity
# not a number
not1 = nan
not2 = +nan
not3 = -nan
日付と時刻
TOMLは、オフセットなしとありの日付、時刻、日時をサポートします。
# offset datetime
odt1 = 1979-05-27T07:32:00Z
odt2 = 1979-05-27T00:32:00-07:00
odt3 = 1979-05-27T00:32:00.999999-07:00
# local datetime
ldt1 = 1979-05-27T07:32:00
ldt2 = 1979-05-27T00:32:00.999999
# local date
ld1 = 1979-05-27
# local time
lt1 = 07:32:00
lt2 = 00:32:00.999999