YAML - стили потока
Стили потока в YAML можно рассматривать как естественное расширение JSON, охватывающее складывающиеся строки содержимого для более удобочитаемой функции, которая использует якоря и псевдонимы для создания экземпляров объектов. В этой главе мы сосредоточимся на потоковом представлении следующих понятий:
- Узлы псевдонима
- Пустые узлы
- Скалярные стили потока
- Стили коллекции Flow
- Узлы потока
Пример узлов псевдонима показан ниже -
%YAML 1.2
---
!!map {
? !!str "First occurrence"
: &A !!str "Foo",
? !!str "Override anchor"
: &B !!str "Bar",
? !!str "Second occurrence"
: *A,
? !!str "Reuse anchor"
: *B,
}
Вывод JSON приведенного выше кода приведен ниже -
{
"First occurrence": "Foo",
"Second occurrence": "Foo",
"Override anchor": "Bar",
"Reuse anchor": "Bar"
}
Узлы с пустым содержимым считаются пустыми узлами. Следующий пример показывает это -
%YAML 1.2
---
!!map {
? !!str "foo" : !!str "",
? !!str "" : !!str "bar",
}
Вывод пустых узлов в JSON представлен ниже -
{
"": "bar",
"foo": ""
}
Стили скалярного потока включают двойные кавычки, одиночные кавычки и простые типы. Базовый пример того же приведен ниже -
%YAML 1.2
---
!!map {
? !!str "implicit block key"
: !!seq [
!!map {
? !!str "implicit flow key"
: !!str "value",
}
]
}
Вывод в формате JSON для приведенного выше примера показан ниже -
{
"implicit block key": [
{
"implicit flow key": "value"
}
]
}
Коллекция потоков в YAML вложена в коллекцию блоков в другую коллекцию потоков. Записи коллекции потока завершаютсяcomma (,) индикатор. В следующем примере подробно объясняется блок сбора потока -
%YAML 1.2
---
!!seq [
!!seq [
!!str "one",
!!str "two",
],
!!seq [
!!str "three",
!!str "four",
],
]
Вывод для сбора потока в JSON показан ниже -
[
[
"one",
"two"
],
[
"three",
"four"
]
]
Стили потока, такие как JSON, включают индикаторы начала и конца. Единственный стиль потока, который не имеет никаких свойств, - это простой скаляр.
%YAML 1.2
---
!!seq [
!!seq [ !!str "a", !!str "b" ],
!!map { ? !!str "a" : !!str "b" },
!!str "a",
!!str "b",
!!str "c",]
Вывод для показанного выше кода в формате JSON приведен ниже -
[
[
"a",
"b"
],
{
"a": "b"
},
"a",
"b",
"c"
]