YAML

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

YAML Ain't Markup Language (zkráceně YAML /jæml/) je formát pro serializaci strukturovaných dat.

Mezi rysy tohoto formátu patří:

  • čitelnost nejen strojem i člověkem
  • struktura a hierarchie dat je řešena indentací (předsazením)
  • předsazení o jednu úroveň sestává ze 4 mezer; tabulátory nejsou podporovány.
  • neomezené úrovně vnořování

Primitiva[editovat | editovat zdroj]

Poznámky[editovat | editovat zdroj]

 # Toto je poznámka
 # vše až do konce řádky je ignorováno

Sekvence[editovat | editovat zdroj]

 - Banány
 - Pomeranče
 - Mandarinky

Mapa[editovat | editovat zdroj]

 Božena Němcová: Babička
 Ernest Hemingway: Stařec a moře
 Douglas Addams: Stopařův průvodce po Galaxii

Dokument[editovat | editovat zdroj]

 --- # Seznam knih
 Autor: Božena Němcová
 Kniha: Babička
 ---
 Autor: Ernest Hemingway
 Kniha: Stařec a moře
 ...

Sekvence "---" značí začátek dokumentu, "..." konec dokumentu nebo datového proudu.

Víceřádkový text[editovat | editovat zdroj]

Se zachováním nových řádků
data: |
   There once was a short man from Ealing
   Who got on a bus to Darjeeling
       It said on the door
       "Please don't spit on the floor"
   So he carefully spat on the ceiling
S vynecháním nových řádků
specialDelivery:  >
    Follow the Yellow Brick
    Road to the Emerald City.
    Pay no attention to the
    man behind the curtain.
Nové řádky budou zaměněny za mezery, úvodní mezery budou vynechány.

Složená data[editovat | editovat zdroj]

Data je možné libovolně vnořovat. Úroveň zanoření je určena a označena odsazením textu od levého okraje:

Zadaná strukturovaně[editovat | editovat zdroj]

adresa:
    ulice: U mlýna
    "č. p.": 15
    město: Bílé Bělidlo

- místo: knihovna
- knihy:
  Božena Němcová: Babička
  Ernest Hemingway: Stařec a moře

Odkazování dovnitř struktur v YAMLu může být (v závislosti na cílovém jazyku) např.: adresa.ulice nebo adresa["č. p."].

Zadaná in-line[editovat | editovat zdroj]

Asociované pole
- {name: John Smith, age: 33}

to samé jako:

- name: John Smith
  age: 33
Neasociované pole
[John Smith, Bill Jones]

to samé jako:

{0: John Smith, 1: Bill Jones}

Další možnosti[editovat | editovat zdroj]

Odkazování[editovat | editovat zdroj]

bill-to:  &id001    # definuje identifikátor id001
    street: |
            123 Tornado Alley
            Suite 16
    city:   East Centerville
    state:  KS

ship-to:  *id001    # reference na id001
    state: Kansas   # pozměňuje položku
    country: USA    # doplňuje novou položku

Přetypování[editovat | editovat zdroj]

---
a: 123                     # celé číslo
b: "123"                   # řetězec, vynuceno uvozovkami
c: 123.0                   # číslo s plovoucí desetinnou čárkou
d: !!float 123             # ditto, přetypování vynuceno klíčovým slovem
e: !!str 123               # přetypování pro řetězec, jako b)
g: Yes                     # boolean
f: No                      # boolean
h: !!str Yes               # řetězec, přetypování vynuceno klíčovým slovem
i: Yes we have No bananas  # řetězec
---                        # binární data (base64)
picture: !!binary |
  R0lGODlhDAAMAIQAAP//9/X
  17unp5WZmZgAAAOfn515eXv
  Pz7Y6OjuDg4J+fn5OTk6enp
  56enmleECcgggoBADs=mZmE

Překlady[editovat | editovat zdroj]

Některé skriptovací jazyky nebo frameworky (např. Symfony) využívají soubory YAML mj. jako tabulku překladů. Do nich pak mohou vkládat „placeholdery“, které slouží jako místa pro doplnění proměnných. Příklad:

messages:
    forFree: Nic neplatíš!
    payPrice: Zaplatíš %price% Kč.

Použití těchto textů, ve Twigu:

{% trans %}messages.pay{% trans %}<br>
{% trans with({'%price%': 99}) %}messages.payPrice{% trans %}

Reference[editovat | editovat zdroj]