YAML - prymitywy składni
W tym rozdziale dowiesz się o następujących aspektach prymitywów składniowych w YAML -
- Parametry produkcyjne
- Wcięcia
- Przestrzenie oddzielające
- Zignorowany przedrostek linii
- Linia składana
Rozumiemy szczegółowo każdy aspekt.
Parametry produkcyjne
Parametry produkcyjne obejmują zestaw parametrów i zakres dozwolonych wartości, które są używane w określonej produkcji. Poniższa lista parametrów produkcyjnych jest używana w YAML -
Wcięcie
Jest oznaczony znakiem n lub mStrumień znaków zależy od poziomu wcięć zawartych w nim bloków. Wiele produkcji sparametryzowało te cechy.
Kontekst
Jest oznaczony c. YAML obsługuje dwie grupy kontekstów:block styles i flow styles.
Styl
Jest oznaczony przez s. Treść skalarna może być prezentowana w jednym z pięciu stylów:plain, double quoted and single quoted flow, literal and folded block.
Chrupanie
Jest oznaczony t. Blokowe skalary oferują wiele mechanizmów pomagających w przycinaniu bloku:strip, clip i keep. Chomping pomaga w formatowaniu nowych ciągów linii. Używana jest reprezentacja w stylu bloku. Proces chrupania odbywa się za pomocą wskaźników. Wskaźniki kontrolują, jaki wynik powinien zostać wygenerowany za pomocą nowej linii łańcucha. Nowe linie są usuwane za pomocą(-) operator i nowe linie są dodawane za pomocą (+) operator.
Przykład procesu chrupania pokazano poniżej -
strip: |-
text↓
clip: |
text↓
keep: |+
text↓
Dane wyjściowe po przeanalizowaniu określonego przykładu YAML są następujące -
Wcięcia
W strumieniu znaków YAML wcięcie jest definiowane jako znak końca wiersza przez zero lub więcej znaków. Najważniejszą kwestią, o której należy pamiętać, jest to, że wcięcie nie może zawierać żadnych znaków tabulacji. Znaki w wcięciach nigdy nie powinny być traktowane jako część informacji o zawartości węzła. Obserwuj następujący kod, aby lepiej zrozumieć -
%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",
]
}
}
Dane wyjściowe, które można zobaczyć po wcięciu, są następujące:
{
"Not indented": {
"By one space": "By four\n spaces\n",
"Flow style": [
"By two",
"Still by two",
"Again by two"
]
}
}
Przestrzenie oddzielające
YAML używa znaków spacji do oddzielania tokenów. Najważniejszą uwagą jest to, że separacja w YAML nie powinna zawierać znaków tabulacji.
Poniższy fragment kodu pokazuje użycie spacji separacyjnych -
{ · first: · Sammy, · last: · Sosa · }
Przedstawiona powyżej składnia daje następujące wyniki:
{
"\u00b7 last": "\u00b7 Sosa \u00b7",
"\u00b7 first": "\u00b7 Sammy"
}
Zignorowany przedrostek linii
Pusty prefiks zawsze zawiera wcięcia w zależności od typu skalarnego, który zawiera również wiodące białe znaki. Zwykłe skalary nie powinny zawierać żadnych znaków tabulacji. Z drugiej strony, cytowane skalary mogą zawierać znaki tabulacji. Blokowe skalary całkowicie zależą od wcięć.
Poniższy przykład pokazuje działanie ignorowanego przedrostka linii w systematyczny sposób -
%YAML 1.1
---
!!map {
? !!str "plain"
: !!str "text lines",
? !!str "quoted"
: !!str "text lines",
? !!str "block"
: !!str "text·®lines\n"
}
Wynik osiągnięty dla strumieni blokowych jest następujący -
{
"plain": "text lines",
"quoted": "text lines",
"block": "text\u00b7\u00aelines\n"
}
Składanie linii
Zwijanie wierszy umożliwia łamanie długich wierszy w celu zwiększenia czytelności. Więcej krótkich linii oznacza lepszą czytelność. Zwijanie linii uzyskuje się poprzez zwrócenie uwagi na oryginalną semantykę długiej linii. Poniższy przykład demonstruje składanie linii -
%YAML 1.1
--- !!str
"specific\L\
trimmed\n\n\n\
as space"
Możesz zobaczyć dane wyjściowe zwijania linii w formacie JSON w następujący sposób -
"specific\u2028trimmed\n\n\nas space"