Шпаргалка по формату TOON

ТОН
Инструменты разработки

Если вы когда-нибудь чувствовали, что JSON слишком многословен (все эти фигурные скобки!), а YAML слишком «волшебный» и непредсказуемый, возможно, вы просто влюбитесь в TOON. Этот формат обеспечивает уникальный баланс между удобочитаемостью для человека и скоростью машинного анализа. Он спроектирован так, чтобы быть плотным, явным и невероятно быстрым для анализа.

Независимо от того, переносите ли вы данные или просто пытаетесь отладить файл конфигурации, в этой шпаргалке описаны основные синтаксисы, которые вам необходимо знать.

Философия: меньше шума, больше данных

Первое, что вы заметите, это то, что TOON очень похож на YAML, но ведет себя строго как JSON. Он отказывается от открывающих и закрывающих скобок в пользу отступов и новой строки, благодаря чему ваши данные сразу выглядят чище.

Объекты и вложение

В JSON вы привыкли заключать все в фигурные скобки. В TOON структура подразумевается отступами.

JSON:

{ 
"проект": { 
"метаданные": { 
"name": "Альфа-Центавра", 
"статус": "активен" 
}, 
"вехи": [ 
{ 
«фаза»: «проектирование», 
«приоритет»: 1 
}, 
{ 
«фаза»: «тестирование», 
«приоритет»: 2 
} 
] 
} 
} 

МУЛЬБУШКА:

проект: 
метаданные: 
имя: Альфа-Центавра 
статус: активный 
вехи[2]{фаза,приоритет}: 
дизайн, 1 
тестирование, 2 

Обратите внимание, что ключи не требуют кавычек, если они не содержат специальных символов, а иерархия визуально очевидна.

Сила массивов

Именно здесь TOON действительно отличается от других форматов. TOON требует, чтобы вы указали длину массива в самом ключе. На первый взгляд это может показаться странным, но это позволяет парсеру предварительно выделить память, что делает его невероятно быстрым.

Примитивные массивы

Для простых списков строк или чисел TOON использует компактный синтаксис, разделенный запятыми.

Синтаксис:

ключ [длина]: элемент1, элемент 2, элемент 3 

Если у вас есть корневой массив (весь файл представляет собой просто список), он выглядит так:

Табличные массивы (убийственная функция)

Это особенность, которая обычно привлекает разработчиков. Если у вас есть массив объектов, которые имеют одни и те же ключи (например, строки в базе данных), TOON позволяет вам определить схему once в заголовке, а затем просто перечислить значения. Это устраняет огромное количество избыточности, обнаруженной в JSON.

Синтаксис:

ключ[строки]{столбец1,столбец2}: 

JSON:

{ 
"инвентарь": [ 
{ 
"артикул": "КБ-99", 
«кол-во»: 50, 
«проход»: 4, 
«переупорядочить»: ложь 
}, 
{ 
"артикул": "МС-12", 
«кол-во»: 12, 
«проход»: 7, 
"переупорядочить": правда 
}, 
{ 
"артикул": "МН-44", 
«кол-во»: 8, 
«проход»: 2, 
"переупорядочить": правда 
} 
] 
} 

МУЛЬБУШКА:

инвентарь[3]{артикул,количество,проход,изменение заказа}: 
КБ-99,50,4,ложь 
МС-12,12,7,правда 
МН-44,8,2,правда 

Такой подход «CSV внутри YAML» делает большие наборы данных невероятно читабельными и компактными.

Смешанные и вложенные массивы

Иногда данные неоднородны. Если ваш массив содержит разные типы данных (числа, смешанные с объектами) или если он содержит сложные вложенные объекты, TOON возвращается к синтаксису в виде маркированного списка с использованием дефисов.

Вы даже можете иметь массивы внутри массивов. Обратите внимание, как внутренний массив также объявляет свою длину:

Цитирование: когда его использовать

Одна из самых приятных особенностей TOON — то, что вам редко нужны кавычки. Вы можете написать Hello 世界 👋, не заключая его в "". Однако, поскольку TOON пытается выводить типы (числа, логические значения), существуют определенные правила, когда вы должны использовать кавычки.

Список «обязательных цитат»

Вы должны заключить строку в двойные кавычки "", если:

  1. Она выглядит как число или логическое значение: Если вам нужна строка "123" или "true", заключите ее в кавычки. В противном случае они становятся числом «123» и логическим значением «истина».
  1. Содержит разделители. Если в строке есть запятая , (или какой-либо другой активный разделитель), заключите ее в кавычки.
  1. По краям есть пробелы: Начальные или конечные пробелы заключаются в кавычки.
  1. Содержит специальные символы: Такие символы, как :, ", \, [, ], {, }.
  1. Она пуста: Пустая строка обозначается как "".

Примеры:

Escape-последовательности

Будьте проще. TOON распознает только пять escape-последовательностей внутри строк. Все остальное недействительно.

  • \\ (обратная косая черта)
  • \" (двойная кавычка)
  • \n (новая строка)
  • \r (возврат каретки)
  • \t (вкладка)

Расширенные заголовки и разделители

Что делать, если ваши данные полны запятых? Вы не хотите цитировать каждое поле. TOON позволяет изменить разделитель в заголовке массива.

Вы можете использовать Tab или Pipe (|), поместив их внутри скобок или фигурных скобок.

Пример разделителя труб:

Добавляя | в заголовок, синтаксический анализатор будет искать каналы вместо запятых, сохраняя синтаксис чистым.

Складной ключ

Если у вас глубокая вложенность, но только один путь к данным, вам не нужно делать отступ пять раз. Вы можете использовать точечную запись (складывание ключей), чтобы сгладить структуру.

Стандартное размещение:

пользователь: 
профиль: 
настройки: 
уведомления: 
электронная почта: правда 
смс: ложь 

Сложенный (очиститель):

user.profile.settings.notifications: 
электронная почта: правда 
смс: ложь 

Краткий справочник типов

TOON напрямую сопоставляется с типами JSON, но корректно обрабатывает крайние случаи, специфичные для JavaScript, чтобы обеспечить корректный вывод.

Числа: хранятся в каноническом десятичном формате. 1.0 становится 1.

  • Infinity/NaN: Они становятся нулевыми (поскольку JSON их не поддерживает).
  • Даты: преобразованы в строки ISO в кавычках.
  • Неопределено/Функции: преобразовано в null.
  • Пустые объекты: представляются как пустые (пустой вывод).
  • Пустые массивы: Представлены как key[0]:.

TOON — это формат, который вознаграждает за точность. Возможно, потребуется некоторое время, чтобы привыкнуть к подсчету элементов массива, но выгода от читаемости и размера файла стоит затраченных усилий. Приятного кодирования!