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"