Pular para o conteúdo

Converter YAML em TOML — Numio

Converte um documento YAML em TOML. Mappings aninhados viram seções [table.sub], listas de mappings viram [[array of tables]] e chaves com valor null (~) são descartadas.

Reescrever uma configuração YAML como TOML quando um projeto passa a usar pyproject.toml ou configurações TOML do Cargo, Hugo ou Netlify.

YAML

TOML

Quando usar

  • Reescrever uma configuração YAML como TOML quando um projeto passa a usar pyproject.toml ou configurações TOML do Cargo, Hugo ou Netlify.
  • Verificar como uma estrutura YAML aninhada ficaria como tabelas TOML antes de escolher um formato de configuração.

Como usar

  1. Cole um único documento YAML com um mapping no nível superior no editor da esquerda ou use o botão de carregar arquivo para abrir um arquivo UTF-8.
  2. Corrija qualquer erro de YAML informado (indentação, vários documentos ou uma lista no nível superior).
  3. Confira datas, nulls e listas no TOML e depois copie-o.

YAML

# docker-compose style
version: "3.9"
services:
  web:
    image: nginx:1.27
    ports:
      - "8080:80"
    environment:
      DEBUG: false
      WORKERS: 4
  db:
    image: postgres:16

TOML

version = "3.9"

[services.web]
image = "nginx:1.27"
ports = [ "8080:80" ]

  [services.web.environment]
  DEBUG = false
  WORKERS = 4

[services.db]
image = "postgres:16"

Detalhes e limitações

O YAML é lido como YAML 1.2: yes continua sendo a string "yes", 0o17 vira 15 e datas sem aspas como 2024-01-05 viram strings TOML, não datas TOML.

Comentários e anchors não são mantidos como tais: aliases (*name) e chaves de merge <<: *anchor são expandidos para os valores a que se referem.

Só um documento é aceito; uma entrada com separadores --- falha com um erro de vários documentos. Uma lista no nível superior, ou uma lista que mistura mappings com valores simples, é rejeitada com uma explicação.

Roda no seu navegador (yaml + @iarna/toml). Subtabelas como [services.web.environment] são indentadas com dois espaços; o TOML ignora essa indentação.

FAQ

Posso converter um docker-compose.yml em TOML?

A estrutura é convertida, como no exemplo, mas o Docker Compose só lê YAML. Use isto para inspecionar ou reaproveitar os dados, não como arquivo do Compose.

O que acontece com valores null?

Chaves cujo valor é ~ ou null são omitidas, porque TOML não tem tipo null.

Anchors e chaves de merge do YAML são suportados?

Sim. Aliases (*name) são expandidos, e <<: *base copia as chaves de base para o mapping, com prioridade para as chaves escritas ao lado dele. O TOML mostra os valores mesclados.

Especificações e referências