logo YAML

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

Mezi rysy tohoto formátu patří:

3. vydání specifikace formátu, verze 1.2, vyšla 1. října 2009.[1]

Primitiva

Literály

Řetězce
string: 'Wendy''s'
unicode: "Sosa did fine.\u263A"
control: "\b1998\t1999\t2000\n"
hex esc: "\x0d\x0a is \r\n"

Víceřádkový řetězec:

quoted: "So does this
  quoted scalar.\n"
Čísla
canonical: 12345
decimal: +12345
octal: 0o14 
hexadecimal: 0xC
exponential: 12.3015e+02
fixed: 1230.15
negative infinity: -.inf 
not a number: .NaN
fraction: .5
Časové hodnoty

Tzv. časové značky (timestamps) se zadávají ve tvaru RRRR-MM-DD, následovaném volitelným uvedením času, které odděluje buď mezera nebo (velké či malé) písmeno T a čas ve tvaru HH:MM:SS. Za časem může být volitelně uvedeno časové pásmo buď jako celé číslo nebo ve formátu [+/-]HH:MM.

canonical: 2001-12-15T02:59:43.1Z
iso8601: 2001-12-14t21:59:43.10-05:00
spaced: 2001-12-14 21:59:43.10 -5
date: 2002-12-14
Logické hodnoty

YAML podporuje booleovské hodnoty false a true

 - false
 - False
 - true
 - TRUE
NULL

YAML podporuje hodnotu NULL, která může být zadána explicitně (null) nebo s použitím tildy ~ nebo může (na místech, kde se očekává hodnota, jako např. prvek sekvence, viz dále) být vynechána.

 - Null
 - null
 -
 - NULL
 - ~

Poznámky

 # toto je poznámka
 # vše až do konce řádky je ignorováno
 # poznámky mohou začínat na libovolném místě
- 1 # poznámky mohou být vkládány i do řádků s hodnotami,
 # ... pak však musí být před # mezera
- CSharp se označuje jako C#

Víceřádkové poznámky (blokové komentáře) nejsou podporovány.

Sekvence

Odpovídá neasociativnímu poli.

 - Banány
 - Pomeranče
 - Mandarinky

Mapa

Odpovídá asociativnímu poli (ukládá dvojic klíč:hodnota, běžně se označuje termínem hash).

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

Dokument

--- # 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

Se zalomením řá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
Bez zalomení řádků
specialDelivery: >
    Follow the Yellow Brick
    Road to the Emerald City.
    Pay no attention to the
    man behind the curtain.

Složená data

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ě

adresa:
    ulice: U mlýna
    "č. p.": 15         # ve verzi 1.2 nemusí být v uvozovkách
    město: Bílé Bělidlo

knihy:
    - autor: Božena Němcová 
      název: Babička
    - autor: Ernest Hemingway
      název: 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

YAML podporuje také zadání více dat v jednom řádku (in-line). Jako např. v JavaScriptu, jsou asociativní pole uvedena ve složených závorkách. Jako znak, oddělující klíč a hodnotou, je dvojtečka, samotné dvojice se oddělují čárkou.

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

to samé jako:

- name: John Smith
  age: 33
Neasociované pole

Neasociativní pole (seznamy) se v jednom řádku uvádějí v hranatých závorkách.

[John Smith, Bill Jones]

Další možnosti

Odkazování

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í

---
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
j: !!bool No # boolean
--- # binární data (base64)
picture: !!binary |
  R0lGODlhDAAMAIQAAP//9/X
  17unp5WZmZgAAAOfn515eXv
  Pz7Y6OjuDg4J+fn5OTk6enp
  56enmleECcgggoBADs=mZmE

Hlavička

Níže uvedený řádek (direktiva) dovoluje uvést verzi formátu obsahu, který za ním následuje.

%YAML 1.2

Ostatní

Bílé znaky

Překlady

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 %}

Odkazy

Reference

  1. https://yaml.org/spec/1.2/spec.html
  2. https://codebeautify.org/yaml-to-json-xml-csv

Související články

konkurenční formáty

Externí odkazy