Форматирование TOML

Вставьте TOML — пробелы нормализуются, ключи, строки и значения остаются нетронутыми.

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

  1. Вставьте TOML в поле — он форматируется по мере ввода, нажимать ничего не нужно.
  2. Выберите 2 или 4 пробела для многострочных массивов и включите «Выравнивать =», если знаки равенства должны стоять друг под другом; результат обновляется сразу.
  3. Если что-то не так, сообщение называет строку, столбец и причину. Скопируйте результат или скачайте его файлом .toml.

Пример

Ввод

[package]
name="ykit"
version = "0.1.0"
edition="2021"
authors = ["Иван Петров <ivan@example.ru>",  "Анна Смирнова <anna@example.ru>"]
keywords=["tools",   "toml"]

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

Отформатировано

[package]
name = "ykit"
version = "0.1.0"
edition = "2021"
authors = ["Иван Петров <ivan@example.ru>", "Анна Смирнова <anna@example.ru>"]
keywords = ["tools", "toml"]

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

Только правила по умолчанию: два пробела и без выравнивания. Порядок ключей, содержимое строк и порядок массива не тронуты; в inline-таблице нормализуются только пробелы, а запятая в конце не добавляется.

Правила, ограничения и известные проблемы

  • Проверяются только синтаксис и конфликты ключей и таблиц: повторяющиеся ключи, дважды определённые таблицы, столкновения ключей и таблиц, строки и экранирование, числа, даты, массивы и inline-таблицы. Схем, бизнес-семантики и автоматических исправлений нет.
  • Переписываются только пробелы вне строк и комментариев. Порядок ключей и таблиц, вид ключа (простой или в кавычках), разделители и экранирование строк, написание чисел, дат и логических значений, текст комментариев копируются символ в символ.
  • Однострочные массивы остаются в одной строке; многострочные сохраняют по одному элементу на строке вместе с комментариями и запятой в конце. Inline-таблицы печатаются в одну строку, поэтому массивы внутри них сворачиваются в одну строку; переводы строк внутри многострочной строки — это содержимое, и они остаются как набраны, из-за чего inline-таблица может растянуться на несколько строк.
  • Перевод строки или комментарий внутри inline-таблицы — синтаксическая ошибка (сам TOML запрещает и то и другое). Комментарий в конце строки остаётся через один пробел после кода, а пробелы в конце комментария удаляются.
  • Серии пустых строк схлопываются в одну, пустые строки в начале и конце отбрасываются, а между таблицами пустая строка никогда не добавляется.
  • Незакрытый массив, inline-таблица или многострочная строка в самом конце, обрезанный заголовок таблицы, пустой `key =` или путь ключа, оборванный сразу после точки, — это предупреждение, а не ошибка: результат всё равно будет. Настоящие ошибки (пропущенная запятая, значение без кавычек, неверная дата) дают ошибку со строкой и столбцом. Сообщается только первая ошибка.
  • Номера строк и столбцов считают кодовые точки Unicode, поэтому эмодзи занимает один столбец; CRLF считается одним переводом строки. Пробельными в TOML считаются только пробел и табуляция: U+3000 и U+00A0 вне строки — ошибка, а внутри строки — содержимое.
  • Простые ключи только в ASCII — китайские и арабские ключи нужно заключать в кавычки, так устроен сам TOML, а не этот инструмент. Числа и даты никогда не переписываются и не переводятся в другую систему цифр.
  • Нет минификации, сортировки ключей, нормализации значений, загрузки файлов, параметров URL и истории. Всё выполняется в браузере: ничего не загружается и не сохраняется.
  • Свыше 200 000 символов результат обновляется примерно через 0,6 с после того, как вы закончите ввод; текст никогда не обрезается. Вывод использует LF без завершающего перевода строки, а форматирование идемпотентно при тех же настройках выравнивания и отступа.

Что обычно нужно дальше, когда конфигурация стала читаемой.