Інструменти розробника · Конвертер Syntax
Вітання JSON Налаштування TOML: що перетворює і що потребує людини
· Чому це питання
Опубліковано ToolAcre · Редакція журналу
свінгери домл розробник-workflow

TOML стала форматом конфігурації для проектів Python та Rust, і багато JSON Налаштування файлів переміщуються до неї. Цей пост пояснює, які частини перетворюються механічно і які (нуль, змішані масиви, глибоке гніздування) вимагають судді.
Про нас setup.cfg і settings.json епоха - це процес консолідації проекту в pyproject.toml і JSON блоки, які потрібно переміщати
Проекти іноді консолідують налаштування в одну TOML файл, але репозиторій не може підтримувати претензію контуру, що «закінчення». Практичне завдання вузьке: перемістити JSON-образний об'єкт в TOML таблиця, огляд втрат, потім перевірте, що цільова програма фактично визнає отримані ключі.
ToolAcre вимагає кореневого об'єкта для TOML вихід. Кореневий масив, рядок, номер, Boolean або null відмовлено тому, що TOML документ – таблиця. Що ранній контроль форми запобігає винайденню обгортку з вигляду, наприклад, налаштування додатків.
Консолідація конфігурації - це вибір проекту, не універсальний кінець старих форматів
Конвертер доводить бетонну механіку: TOML має таблиці, масиви та скалярні значення; її письменник перетворює об’єкти на дійсні TOML конструкції. Він також не має ні null і використовує синтаксис, відрізняється від JSON брекети. Задоволення про переваги екосистеми або підвищення продуктивності дизайну вимагає джерел за межами цих файлів реалізації.
Коментарі є одними з причин підтримки може віддати перевагу автору TOMLй JSON введення не містить нічого спільного. Згенерований документ – початкова послідовність значень. Пояснення та організація проекту необхідно додавати після.
Що таке конвертер доводить про TOML акредитація загального формату
Strings, скінченні номери, booleans, nested об'єкти і масиви, що підтримуються smol-toml конвертер механічно. Аромати об'єктів можуть стати масивами таблиць; об'єкти можуть стати настільними заголовками. Унікод і втекти нові лінії вижити протестовані круглі поїздки для звичайних значень.
TOML масивні правила можуть відхилити форму свого письменника не висловити, а імена помилок, які не збігаються, а не занурення мовчки. Викликаючи всі масиви, однорідні заздалегідь, переоцінять поведінку залежностей, яка навіть читає гетерогенні масиви. Використовуйте власне перетворення як ворота.
Що перетворює механічно, включаючи масиви TOML автор приймає
Нул не має TOML представлення. Об'єктні властивості, що містять нуль, ом'язані і вказані в попередження. Нагота всередині масиву стає порожнім рядком, тому пізніше індекси не зрушуються; що заміна також називається. Не більше результатів зберігає початкове значення.
Визначте, що null призначено перед прийняттям або зміною. Це може означати спадок за замовчуванням, явно очистити поле або немає значення, що поставляється. Видалення ключа або виписки порожній текст може змінити семантику програми, щоб вирішити його проти моделі налаштування призначення.
Де стиль потребує людини — вибираючи між заголовками [таблетки], пунктирними ключами та вбудованими таблицями, а також групуючи пов'язані ключі, тому файл добре читається
Дерево не скажеш, чи вигідно `[tool.linter]`, пунктируючі ключі або вбудовані таблиці. Серіфікатор вибирає дійсний синтаксис, в той час як людина вибирає групування, що робить право власності та пов'язані варіанти чіткими. Сортування ключів може зробити вихідний детерміналістичний, але може відокремити поняття, які належать спільно.
Збережіть невеликий дифу і додайте коментарі після перевірки значень. Перетворення TOML назад JSON пізніше не може відновити коментарі або обраний письмовий стіл. Стиль є авторською інформацією за одною моделлю значення.
Приклад роботи: linter's JSON налаштування TOML — перетворення, розв’язання двох значень null та перегрупування результату під [tool.linter] головки
Конвертер `{"tool":{"linter":{"lineLength":100,"preview":null,"exclude":["dist",null]}}}`. Прийнято кореневий об'єкт. `preview` omitted; учасник масиву null стає порожнім рядком; ім'я повідомлень обох шляхів. Решта об'єкта, що знаходиться під TOML таблиці, обрані письменником.
Перед збереженням, вирішіть, чи повинен бути помилковий, відсутній або інший документований значення, і чи є порожній виїзд дійсний. Потім перегрупувати і прокоментувати таблицю для читачів. Приклад показує, чому перетворення є механічною при міграції семантична.
Що це не криється - чи насправді читає ціль TOML, і його специфічні імена ключів, які тільки його документація може розповісти вам
Важкий TOML файл не доводить, що інструмент читає TOML, розпізнає розділ або інтерпретує ключі, як старий JSON споживач. Перевірити поточну цільову документацію і запустити власну перевірку або сухий команду. ToolAcre ніколи не імпортує схему застосування.
Дати також заслуговують у зворотному напрямку. TOML-нативні значення часових значень стають рядками при прочитанні JSON, так що пізніша поїздка котирування їх. Не можна назвати без втрат.
Перетворення першого, потім редагування для читабельності — і як панель перетворювачів Синтаксиса робить механічну частину у вашому браузері
Конвертувати спочатку до вибуху механічних домішок, потім редагувати для семантики і прочитаності. Зберігайте оригінальні, перевірте всі попередження та тести з фактичною метою. Нулл обробка і коренева форма є твердими кордонами; організація таблиці є прийняттям людського дизайну.
Синтаксис видаляє повторювану роботу синтаксису без засвоєння знань про застосування. Цей розділ робить вихід корисним: машинно-продукована структура для огляду, після чого навмисні вибірки, де формати або інструменти незгодні.
Зберігайте на будь-яке попередження, яке ви приймаєте. Якщо null стає відсутністю, стан за замовчуванням призначення, що робить відсутність правильної. Якщо учасник нульського масиву стає порожнім текстом, поясніть, чому індексні питання і чому порожній текст діє. Якщо автор відхиляє змішаний масив, редизайн, який значення замість того, щоб він був приватним. Ці рішення є міцним реєстром міграції TOML самостійно не може пояснювати їх на наступний носій.