100 % local — seus dados nunca saem do seu navegador

TOML para YAML — config lida igual por todos

Converta uma configuração TOML em YAML. Os escalares ambíguos saem com aspas: um leitor PyYAML antigo e um moderno entregam os mesmos valores.

Instantâneo Privado Zero cookies
Indentação

Entrada TOML

Saída YAML

O que esta ferramenta faz

Uma configuração TOML vira YAML. As tabelas viram mapas aninhados, e os [[arrays de tabelas]] viram sequências.

title = "Demo"

[server]
host = "localhost"
port = 8080
title: Demo
server:
  host: localhost
  port: 8080

A indentação é uma opção; dois espaços por padrão, que é o que a maioria dos linters de YAML espera.

Com aspas onde importa, sem elas no resto

country = "NO"
answer = "yes"
start = "12:30"
country: "NO"
answer: "yes"
start: "12:30"

Sem aspas, qualquer leitor de YAML 1.1 leria esses três como false, true e o número 750 — PyYAML, portanto Ansible, portanto muita esteira de deploy. É o problema norueguês: um código de país que vira booleano, sem nada no arquivo para avisar. O serializador põe aspas exatamente nos escalares ambíguos e deixa o resto em paz: o arquivo continua legível e as duas versões do YAML concordam sobre o que há nele.

Os inteiros grandes ficam com seus algarismos

snowflake = 1096285471735640155
snowflake: 1096285471735640155

O TOML impõe inteiros com sinal de 64 bits, e o analisador recusava o documento inteiro assim que um deles passava do que um número JavaScript guarda exato. Um único identificador tornava inconvertível uma configuração legal. Agora os algarismos atravessam sem mudar — era um defeito real, encontrado ao escrever esta página e corrigido.

O que o pivô JSON custa

Esta conversão passa pelo JSON, como toda conversão composta deste site: as duas metades já estão testadas, e as mensagens de erro delas já são precisas.

  • inf, -inf e nan são recusados, com a chave nomeada. O JSON não tem nenhum dos três e os escreveria como null: uma taxa infinita chegaria como taxa ausente. O YAML poderia carregar .inf; o pivô não, e ele diz isso em vez de largar o valor.
  • As datas viram strings entre aspas. Uma data TOML não tem equivalente em JSON. No caminho direto ela continuaria data, mas uma hora local como 07:32:00 ganharia uma data de calendário inteira inventada em volta.
  • Os comentários não sobrevivem. Eles pertencem ao arquivo, não aos dados.

Um arquivo que começa com a marca de ordem de bytes invisível que os editores do Windows acrescentam agora é lido normalmente, em vez de recusado com uma mensagem sobre os caracteres permitidos numa chave.

Privado por padrão

Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.

Perguntas frequentes

Por que esse valor está entre aspas e os outros não?
Porque para metade do mundo YAML ele significaria outra coisa. O pacote `yaml` escreve YAML 1.2, onde `NO`, `yes` e `12:30` são strings. O PyYAML — o leitor de YAML mais usado que existe — aplica o YAML 1.1, onde eles são falso, verdadeiro e o sexagesimal 750. Colocar aspas exatamente nesses escalares, e em mais nada, dá aos dois leitores os mesmos valores a partir do mesmo arquivo.
O que aconteceu com as minhas datas?
Chegam como strings entre aspas, por exemplo `"1979-05-27"`. A conversão passa pelo JSON, que não tem tipo data: uma data TOML vira texto, e um texto com cara de data precisa de aspas, senão um leitor YAML 1.1 o transformaria de novo num carimbo de tempo à escolha dele.
Por que `inf` é recusado se o YAML sabe escrever `.inf`?
Porque o JSON está no meio. Todas as conversões compostas deste site passam pelo JSON, que não tem infinito: o valor é recusado com a chave nomeada, em vez de anulado em silêncio. Ir direto de TOML para YAML salvaria o infinito, mas transformaria uma hora local como `07:32:00` num carimbo completo, com uma data inventada em volta. O pivô perde menos, e o que ele não consegue carregar, ele nomeia.

Conversores relacionados