Валидатор TOML
Проверяйте файлы TOML, например Cargo.toml, pyproject.toml или настройки Hugo и Netlify, до того, как из-за них сорвётся сборка. Валидатор разбирает входные данные согласно спецификации TOML и сообщает о первой ошибке, указывая строку, столбец и пояснение парсера, в том числе для дублирующихся ключей, повторно объявленных таблиц и невозможных дат. Для корректных файлов отображаются число таблиц и ключей, а также ключи верхнего уровня — так вы сможете быстро оценить структуру.
Часто задаваемые вопросы
Что проверяет валидатор TOML?
Он разбирает ключи, строки, числа, логические значения, даты и время, массивы, встроенные таблицы, таблицы и массивы таблиц в точном соответствии со спецификацией TOML. Любое отклонение, например отсутствие значения, строка без кавычек или неверная escape-последовательность, сообщается как ошибка. Для корректных файлов выводится краткая сводка их структуры.
Какая информация приводится в сообщении об ошибке?
Для каждой ошибки указываются строка и столбец, на которых разбор остановился, а также пояснение парсера, например «некорректная дата» или попытка повторно определить уже объявленную таблицу или значение. Нумерация строк и столбцов начинается с 1. Отображается только первая ошибка, поскольку последующие часто вызваны ею.
Почему ключ или таблица отмечены как повторно определённые?
TOML не допускает повторения одного ключа в таблице, а заголовок таблицы, например [server], может встречаться только один раз. Определение ключа с точкой, например server.port, после таблицы [server], в которой уже задан port, тоже считается повторным определением. Чтобы исправить это, объедините записи в одном месте.
Как подсчитываются таблицы и ключи?
В число таблиц входят все таблицы ниже корневого уровня, в том числе встроенные таблицы и каждый элемент массива таблиц. В число ключей входит каждый ключ со значением, которое не является таблицей или массивом таблиц; список строк считается одним ключом. В списке ключей верхнего уровня приводятся имена ключей в корне, максимум 50.
Проверяются ли даты и время?
Да. Проверяются дата и время со смещением, локальные дата и время, локальная дата и локальное время, включая невозможные значения, например месяц 13 или час 25. Дата в другом формате, например 05/27/1979, не является датой TOML, поэтому её нужно заключить в кавычки как строку.
Какие строки и escape-последовательности допускаются?
В базовых строках в двойных кавычках поддерживаются escape-последовательности, например \n, \t, \" и \uXXXX, а в буквальных строках в одинарных кавычках каждый символ воспринимается буквально. Для обоих видов предусмотрена многострочная форма с тремя кавычками. Неизвестная escape-последовательность или незакрытая строка указываются вместе с их позицией.
Допускаются ли очень большие целые числа?
Да. Допускаются целые числа в пределах 64-битного ограничения спецификации TOML, например 9223372036854775807. Числа за пределами этого диапазона, ведущие нули и подчёркивания, не стоящие между цифрами, считаются ошибками.
Могут ли возникнуть проблемы из-за метки порядка байтов или окончания строки Windows?
Нет. Метка порядка байтов UTF-8 в начале игнорируется, а окончания строк LF и CRLF принимаются. Неэкранированные управляющие символы внутри строк считаются ошибками.
Проверяется ли смысл ключей, как это делают Cargo или Poetry?
Нет, валидатор проверяет только синтаксис и структуру TOML. Файл может быть корректным TOML и при этом содержать ключ, непонятный Cargo или серверной части сборки Python. Используйте этот инструмент, чтобы исключить синтаксические ошибки, прежде чем проверять настройки конкретного инструмента.
Каков максимальный размер входных данных и можно ли их преобразовать?
Размер входных данных может достигать 5 MiB, а глубина вложенности массивов и встроенных таблиц — 64 уровней. Чтобы преобразовать корректный TOML в JSON, YAML или другой формат, воспользуйтесь конвертером форматов данных.