YAML - style przepływu
Style przepływu w YAML można traktować jako naturalne rozszerzenie JSON w celu zakrycia składanych linii zawartości, co zapewnia lepszą czytelność funkcji, która wykorzystuje kotwice i aliasy do tworzenia instancji obiektów. W tym rozdziale skupimy się na reprezentacji przepływu następujących pojęć -
- Węzły aliasów
- Puste węzły
- Flow Scalar style
- Style kolekcji Flow
- Węzły przepływu
Przykład węzłów aliasów pokazano poniżej -
%YAML 1.2
---
!!map {
? !!str "First occurrence"
: &A !!str "Foo",
? !!str "Override anchor"
: &B !!str "Bar",
? !!str "Second occurrence"
: *A,
? !!str "Reuse anchor"
: *B,
}
Wynik JSON powyższego kodu podano poniżej -
{
"First occurrence": "Foo",
"Second occurrence": "Foo",
"Override anchor": "Bar",
"Reuse anchor": "Bar"
}
Węzły z pustą treścią są traktowane jako puste węzły. Poniższy przykład pokazuje to -
%YAML 1.2
---
!!map {
? !!str "foo" : !!str "",
? !!str "" : !!str "bar",
}
Dane wyjściowe pustych węzłów w JSON są przedstawione poniżej -
{
"": "bar",
"foo": ""
}
Przepływowe style skalarne obejmują typy w cudzysłowach, apostrofach i zwykłe. Podstawowy przykład tego samego podano poniżej -
%YAML 1.2
---
!!map {
? !!str "implicit block key"
: !!seq [
!!map {
? !!str "implicit flow key"
: !!str "value",
}
]
}
Dane wyjściowe w formacie JSON dla przykładu podanego powyżej pokazano poniżej -
{
"implicit block key": [
{
"implicit flow key": "value"
}
]
}
Kolekcja przepływu w YAML jest zagnieżdżona z kolekcją bloków w innej kolekcji przepływu. Wpisy kolekcji przepływu są zakończonecomma (,) wskaźnik. Poniższy przykład wyjaśnia szczegółowo blok zbierania przepływu -
%YAML 1.2
---
!!seq [
!!seq [
!!str "one",
!!str "two",
],
!!seq [
!!str "three",
!!str "four",
],
]
Dane wyjściowe dla kolekcji przepływu w formacie JSON pokazano poniżej -
[
[
"one",
"two"
],
[
"three",
"four"
]
]
Style przepływu, takie jak JSON, obejmują wskaźniki początku i końca. Jedynym stylem przepływu, który nie ma żadnej właściwości, jest zwykły skalar.
%YAML 1.2
---
!!seq [
!!seq [ !!str "a", !!str "b" ],
!!map { ? !!str "a" : !!str "b" },
!!str "a",
!!str "b",
!!str "c",]
Dane wyjściowe dla powyższego kodu w formacie JSON podano poniżej -
[
[
"a",
"b"
],
{
"a": "b"
},
"a",
"b",
"c"
]