YAML - примитивы синтаксиса

В этой главе вы узнаете о следующих аспектах синтаксических примитивов в YAML:

  • Параметры производства
  • Отступы
  • Разделительные пространства
  • Игнорируемый префикс строки
  • Сгибание линий

Давайте разберемся в каждом аспекте подробно.

Параметры производства

Производственные параметры включают в себя набор параметров и диапазон допустимых значений, которые используются на конкретном производстве. Следующий список производственных параметров используется в YAML -

Отступ

Обозначается символом n или же mПоток символов зависит от уровня отступов входящих в него блоков. Многие производства параметризовали эти функции.

Контекст

Обозначается он c. YAML поддерживает две группы контекстов:block styles и flow styles.

Стиль

Обозначается s. Скалярное содержимое может быть представлено в одном из пяти стилей:plain, double quoted and single quoted flow, literal and folded block.

Чавканье

Обозначается он t. Блочные скаляры предлагают множество механизмов, которые помогают обрезать блок:strip, clip и keep. Chomping помогает форматировать новые строки строк. Используется блочное представление стиля. Процесс жевания происходит с помощью индикаторов. Индикаторы контролируют, какой вывод должен производиться с новой строкой строки. Новые строки удаляются с помощью(-) оператор и символы новой строки добавляются с помощью (+) оператор.

Пример процесса пережевывания показан ниже -

strip: |-
   text↓
clip: |
   text↓
keep: |+
   text↓

Результат после анализа указанного примера YAML выглядит следующим образом:

Отступы

В потоке символов YAML отступ определяется как символ разрыва строки на ноль или более символов. Самым важным моментом, о котором следует помнить, является то, что отступ не должен содержать никаких символов табуляции. Символы в отступе никогда не следует рассматривать как часть информации о содержимом узла. Обратите внимание на следующий код для лучшего понимания -

%YAML 1.1
---
!!map {
   ? !!str "Not indented"
   : !!map {
      ? !!str "By one space"
      : !!str "By four\n spaces\n",
      ? !!str "Flow style"
      : !!seq [
         !!str "By two",
         !!str "Still by two",
         !!str "Again by two",
      ]
   }
}

Результат, который вы можете увидеть после отступа, выглядит следующим образом:

{
   "Not indented": {
      "By one space": "By four\n spaces\n", 
      "Flow style": [
         "By two", 
         "Still by two", 
         "Again by two"
      ]
   }
}

Разделительные пространства

YAML использует пробелы для разделения токенов. Самое важное замечание: разделение в YAML не должно содержать символов табуляции.

Следующий фрагмент кода показывает использование разделительных пространств -

{ · first: · Sammy, · last: · Sosa · }
Синтаксис, показанный выше, дает вам следующий результат:
{
   "\u00b7 last": "\u00b7 Sosa \u00b7", 
   "\u00b7 first": "\u00b7 Sammy"
}

Игнорируемый префикс строки

Пустой префикс всегда включает отступ в зависимости от типа скаляра, который также включает начальный пробел. Простые скаляры не должны содержать символов табуляции. С другой стороны, скаляры в кавычках могут содержать символы табуляции. Блочные скаляры полностью зависят от отступа.

Следующий пример показывает систематическую работу игнорируемого префикса строки -

%YAML 1.1
---
!!map {
   ? !!str "plain"
   : !!str "text lines",
   ? !!str "quoted"
   : !!str "text lines",
   ? !!str "block"
   : !!str "text·®lines\n"
}

Результат, достигнутый для блочных потоков, выглядит следующим образом:

{
   "plain": "text lines", 
   "quoted": "text lines", 
   "block": "text\u00b7\u00aelines\n"
}

Линия складывания

Сгибание строк позволяет разбивать длинные строки для удобства чтения. Чем больше короткие строки, тем лучше читаемость. Сворачивание строк достигается за счет учета исходной семантики длинной строки. В следующем примере демонстрируется перенос строк -

%YAML 1.1
--- !!str
"specific\L\
trimmed\n\n\n\
as space"

Вы можете увидеть вывод для переноса строк в формате JSON следующим образом:

"specific\u2028trimmed\n\n\nas space"