Перейти к содержимому

Конвертировать YAML в формат TOML — Numio

Преобразует один YAML-документ в TOML. Вложенные отображения становятся секциями [table.sub], списки отображений — [[array of tables]], а ключи со значением null (~) отбрасываются.

Переписывание YAML-конфигурации в TOML, когда проект переходит на pyproject.toml, Cargo, Hugo или TOML-настройки Netlify.

YAML

TOML

Когда пригодится

  • Переписывание YAML-конфигурации в TOML, когда проект переходит на pyproject.toml, Cargo, Hugo или TOML-настройки Netlify.
  • Проверка того, как вложенная YAML-структура выглядела бы в виде таблиц TOML, перед выбором формата конфигурации.

Как пользоваться

  1. Вставьте один YAML-документ с отображением на верхнем уровне в левый редактор или откройте файл в кодировке UTF-8 кнопкой загрузки файла.
  2. Исправьте указанные ошибки YAML (отступы, несколько документов или список на верхнем уровне).
  3. Проверьте даты, значения null и списки в TOML, затем скопируйте его.

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"

Подробности и ограничения

YAML читается как YAML 1.2: yes остаётся строкой "yes", 0o17 становится 15, а даты без кавычек вроде 2024-01-05 становятся строками TOML, а не датами TOML.

Комментарии и якоря как таковые не сохраняются: алиасы (*name) и ключи слияния <<: *anchor раскрываются в значения, на которые ссылаются.

Принимается только один документ; ввод с разделителями --- завершается ошибкой о нескольких документах. Список на верхнем уровне или список, где отображения смешаны с простыми значениями, отклоняется с пояснением.

Работает в браузере (yaml + @iarna/toml). Подтаблицы вроде [services.web.environment] выводятся с отступом в два пробела; TOML этот отступ игнорирует.

FAQ

Можно ли преобразовать docker-compose.yml в TOML?

Структура преобразуется, как в примере, но Docker Compose читает только YAML. Используйте это для изучения или повторного использования данных, а не как файл Compose.

Что происходит со значениями null?

Ключи со значением ~ или null опускаются, так как в TOML нет типа null.

Поддерживаются ли якоря YAML и ключи слияния?

Да. Алиасы (*name) раскрываются, а <<: *base копирует ключи base в отображение, причём ключи, записанные рядом, имеют приоритет. TOML показывает объединённые значения.

Спецификации и справка