TOML
[Tom's Obvious Minimal Language]
Um formato de arquivo de configuração
para humanos.
TOML visa ser um formato de arquivo de configuração mínimo que seja fácil de ler devido à semântica óbvia. O TOML foi projetado para mapear inequivocamente para uma tabela hash. O TOML deve ser fácil de analisar em estruturas de dados em uma ampla variedade de idiomas.
# Este é um documento TOML
título = "Exemplo de TOML"
[dono]
nome = "Tom Preston-Werner"
dtnasc = 1979-05-27T07:32:00-08:00
[banco-de-dados]
habilitado = true
portas = [ 8000, 8001, 8002 ]
dados = [ ["delta", "phi"], [3.14] ]
temp_alvo = { cpu = 79.5, case = 72.0 }
[servidores]
[servidores.alfa]
ip = "10.0.0.1"
role = "frontend"
[servidores.beta]
ip = "10.0.0.2"
role = "backend"
-
-
TOML visa ser um formato de arquivo de configuração mínimo que:
- seja fácil de ler devido à semântica óbvia
- mapeia inequivocamente para uma tabela hash
- é fácil de analisar em estruturas de dados em uma ampla variedade de idiomas
-
-
- Pares chave/valor
- Arrays
- Tabelas
- Tabelas inline
- Arrays de tabelas
- Inteiros e pontos flutuantes
- Booleanos
- Datas e horas, com deslocamentos opcionais
-
-
O TOML já possui implementações na maioria das linguagens de programação mais populares em uso atualmente: C, C#, C++, Clojure, Dart, Elixir, Erlang, Go, Haskell, Java, JavaScript, Lua, Objective-C, Perl, PHP, Python, Ruby, Rust, Scala, Swift, … e muito mais.
Um tour rápido pelo TOML
Comentários
TOML acredita que todos os arquivos de configuração devem suportar comentários.
# Este é um comentário TOML
# Este é um comentário
# multilinha do TOML
Strings poderosas
Há quatro maneiras de expressar strings: básica, básica multilinha, literal e literal multilinha. Strings básicas são delimitada por aspas:
str1 = "Sou uma string."
str2 = "Você pode me colocar entre \"aspas\"."
str3 = "Nome\tJos\u00E9\nLoc\tSF."
Strings multilinha são delimitadas por três aspas em cada lado e permitem novas linhas. Inclua uma barra invertida no final da linha para cortar automaticamente os espaços em branco que precedem quaisquer caracteres que não sejam espaços em branco:
str1 = """
Rosas são vermelhas
Violetas são azuis"""
str2 = """\
A rápida raposa \
marrom pula sobre o \
cachorro preguiçoso.\
"""
str2
se torna
"A rápida raposa marrom pula sobre o cachorro preguiçoso."
(uma única frase com nenhuma quebra de linha).
Strings literais são delimitadas por aspas simples. Nenhum escape é executado, então o que você vê é o que você obtém:
path = 'C:\Users\nodejs\templates'
path2 = '\\User\admin$\system32'
com_aspas = 'Tom "Dubs" Preston-Werner'
regex = '<\i\c*\s*>'
Como não há escape, não há como escrever uma aspa simples dentro de uma string literal entre aspas simples. É aí que entram as strings literais multilinha:
re = '''Eu( não)? preciso de \d{2} maçãs'''
linhas = '''
A primeira nova linha
é cortada em strings brutas.
Todos os outros espaços
em branco são preservados.
'''
Números
Inteiros, pontos flutuantes, infinito e até NaN são todos suportados. Você pode usar notação científica e até mesmo separadores de milhares.
# inteiros
int1 = +99
int2 = 42
int3 = 0
int4 = -17
# hexadecimal com prefixo `0x`
hex1 = 0xDEADBEEF
hex2 = 0xdeadbeef
hex3 = 0xdead_beef
# octal com prefixo `0o`
oct1 = 0o01234567
oct2 = 0o755
# binário com prefixo `0b`
bin1 = 0b11010110
# fracionário
float1 = +1.0
float2 = 3.1415
float3 = -0.01
# expoente
float4 = 5e+22
float5 = 1e06
float6 = -2E-2
# ambos
float7 = 6.626e-34
# separadores
float8 = 224_617.445_991_228
# infinito
infinite1 = inf # infinito positivo
infinite2 = +inf # infinito positivo
infinite3 = -inf # infinito negativo
# não um número (Not a Number)
not1 = nan
not2 = +nan
not3 = -nan
Datas e horas
O TOML oferece suporte para datas, horas e datas com e sem deslocamentos.
# data e hora com deslocamento
odt1 = 1979-05-27T07:32:00Z
odt2 = 1979-05-27T00:32:00-07:00
odt3 = 1979-05-27T00:32:00.999999-07:00
# data e hora local
ldt1 = 1979-05-27T07:32:00
ldt2 = 1979-05-27T00:32:00.999999
# data local
ld1 = 1979-05-27
# hora local
lt1 = 07:32:00
lt2 = 00:32:00.999999
Mais sobre a especificação
TOML oferece suporte a ainda mais tipos e sintaxe nativos, leia tudo sobre isso:
Comece a programar
TOML já está implementado em mais de 40 linguagens de programação: