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

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

Преобразует TOML-документ в YAML. Таблицы становятся вложенными отображениями, [[array of tables]] — списками отображений, а кавычки добавляются только там, где они нужны YAML (например, "2021" остаётся строкой).

Перенос настроек из TOML-конфигурации (Cargo, pyproject, Hugo) в инструмент на YAML, например CI-workflow или манифест Kubernetes.

TOML

YAML

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

  • Перенос настроек из TOML-конфигурации (Cargo, pyproject, Hugo) в инструмент на YAML, например CI-workflow или манифест Kubernetes.
  • Чтение длинного TOML-файла с точечными и вложенными таблицами в виде дерева с отступами.

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

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

TOML

# Cargo-style manifest
[package]
name = "demo"
version = "0.1.0"
edition = "2021"

[dependencies]
serde = { version = "1.0", features = ["derive"] }

[[bin]]
name = "cli"
path = "src/main.rs"

YAML

package:
  name: demo
  version: 0.1.0
  edition: "2021"
dependencies:
  serde:
    version: "1.0"
    features:
      - derive
bin:
  - name: cli
    path: src/main.rs

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

Комментарии отбрасываются. Дата и время со смещением переводятся в UTC (2024-01-05T10:00:00+09:00 становится 2024-01-05T01:00:00.000Z), и добавляются миллисекунды.

Вывод соответствует YAML 1.2, поэтому строки вроде yes и on записываются без кавычек. Парсеры YAML 1.1 (например, PyYAML) могут прочитать их как булевы значения; при необходимости возьмите их в кавычки вручную.

Локальное время вроде 09:00:00 записывается с миллисекундами (09:00:00.000); локальные даты и дата-время остаются без часового пояса.

Работает в браузере (@iarna/toml, yaml, Prettier); inf и nan становятся .inf и .nan.

FAQ

Сохраняются ли комментарии?

Нет. TOML сначала разбирается в данные, поэтому комментарии и пустые строки теряются. Перенесите важные комментарии вручную.

Как преобразуются [[array of tables]]?

Каждый блок [[bin]] становится одним элементом YAML-списка под bin, как показано в примере.

Почему я получаю "Can't redefine existing key"?

Один и тот же ключ или таблица определены дважды, что TOML запрещает. Ошибка указывает строку и столбец второго определения.

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