YAML: Porovnání verzí

Smazaný obsah Přidaný obsah
U položek knih chybělo odsazení a kořenový prvek obsahoval jak prvky asociovaného pole, tak prvky pole neasociovaného pole. Takové použítí neasociovaného pole navíc nedává smysl.
Bez shrnutí editace
značka: editor wikitextu 2017
Řádek 7:
* neomezené úrovně vnořování
 
3. edice specifikace formátu, verze 1.2, vyšla 1. října 2009.<ref>https://yaml.org/spec/1.2/spec.html</ref>
== Primitiva ==
=== Literály ===
;Řetězce
* mohou být uvedeny znakem dvojitých i jednoduchých uvozovek (na rozdíl od [[JSON]]u), s tím, že musejí končit stejným znakem
* uvozovka v uvozovce se [[eskapování|eskapuje]] zdvojením
* kontrolní znaky se escapují zpětným lomítkem
* jsou povoleny některé diakritické znaky
* znaky mimo základní ASCII lze zapsat pomocí hexadecimálního kódu znaku, uvedeného za \x (8bitového), \u (16bitového) nebo \U (32bitového)
* uvozovky musejí být nezbytně uvedeny například v těchto případech:
** končí-li mezerou nebo jiným [[whitespace|bílým místem]] (a to má být zahrnuto)
** obsahují-li kontrolní znaky
** obsahují-li čárku v poli v in-line notaci (viz dále)
** začínají-li speciálním znakem (!, #, &, *, ", ', [, {, |, >, \)
** víceřádkový text
<source lang="yaml">
string: 'Wendy''s'
unicode: "Sosa did fine.\u263A"
control: "\b1998\t1999\t2000\n"
hex esc: "\x0d\x0a is \r\n"
</source>
Víceřádkový řetězec:
<source lang="yaml">
quoted: "So does this
quoted scalar.\n"
</source>
 
;Čísla
* v základním (kanonickém) tvaru je možné volitelné unární znaménko (záporné i kladné)
* "0o" na začátku uvádí zadání v okálním tvaru (osmičkové soustavě)
* "0x" uvádí hexadecimální zadání
* je povolený semilogaritmický (vědecký) zápis s [[mantisa|mantisou]] a exponentem
* na rozdíl od [[JSON]]u je možné uvést (kladné i záporné) nekonečno a [[NaN]]
* číslo, za kterým následuje text, který není poznámka, bude (na rozdíl od některých jazyků) převeden na řetězec
 
<source lang="yaml">
canonical: 12345
decimal: +12345
octal: 0o14 
hexadecimal: 0xC
exponential: 12.3015e+02
fixed: 1230.15
negative infinity: -.inf 
not a number: .NaN
fraction: .5
</source>
 
; Časové hodnoty
Tzv. časové otisky (timestamps) se zadávají ve tvaru <tt>RRRR-MM-DD</tt>, následovaný 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ě uveden časový posun buď jako celé číslo nebo ve formátu [+/-]HH:MM.
<source lang="yaml">
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
</source>
 
;Logické hodnoty
YAML podporuje booleovské hodnoty <tt>false</tt> a <tt>true</tt>
<source lang="yaml">
- false
- False
- true
- TRUE
</source>
 
;NULL
YAML podporuje hodnotu [[NULL]], která může být zadána explicitně (<tt>null</tt>) nebo s použitím tildy <tt>~</tt> nebo může (na místech, kde se očekává hodnota, jako např. prvek sekvence, viz dále) být vynechána.
<source lang="yaml">
- Null
- null
-
- NULL
- ~
</source>
 
=== Poznámky ===
<source lang="yaml">
# Totototo 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
# víceřádkové poznámky nejsou podporovány
</source>
 
=== Sekvence ===
Odpovídá neasociativnímu poli (v jiných jazycích se používá termínu ''hash'').
<source lang="yaml">
- Banány
Řádek 20 ⟶ 98:
- Mandarinky
</source>
* převede se jako pole s číselnými indexy číslovanými od nuly
* začne-li definice sekvence, nelze jako další prvek zadat dvojici klíč:hodnota
 
=== Mapa ===
Odpovídá asociativnímu poli (ukládá dvojic ''klíč:hodnota'').
<source lang="yaml">
Božena Němcová: Babička
Ernest Hemingway: Stařec a moře
Douglas Addams: Stopařův průvodce po Galaxii
1984: 1984
</source>
* u posledního prvku bude index uložený jako řetězec a hodnota prvku bude uložena jako číslo.
* chování při uvedení stejného indexu pole podruhé se liší podle konkrétní implementace; např. podle on-line konvertoru do JSONu<ref>https://codebeautify.org/yaml-to-json-xml-csv</ref> nedojde k chybě a zůstane hodnota u prvního výskytu.
 
=== Dokument ===
Řádek 51 ⟶ 135:
So he carefully spat on the ceiling
</source>
* Úvodní mezery (dané odsazením) budou vynechány.
* S uvedením "|-" bude oříznuto poslední odřádkování.
 
;S vynecháním nových řádků
Řádek 60 ⟶ 146:
man behind the curtain.
</source>
:* Nové řádky budou zaměněny za mezery, úvodní mezery budou vynechány.
* S uvedením ">+" bude za řetězec přidáno odřádkování.
 
== Složená data ==
Řádek 69 ⟶ 156:
adresa:
ulice: U mlýna
"č. p.": 15 # ve verzi 1.2 nemusí být v uvozovkách
město: Bílé Bělidlo
 
Řádek 82 ⟶ 169:
 
=== Zadaná in-line ===
YAML podporuje také zadání více dat v jednom řádku (in-line). Jako např. v [[JavaScript]]u, 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
<source lang="yaml">
Řádek 93 ⟶ 182:
 
; Neasociované pole
Neasociativní pole se v jednom řádku zadávají ve složených závorkách. Řetězcové literály .
<source lang="yaml">
[John Smith, Bill Jones]
Řádek 104 ⟶ 194:
=== Odkazování ===
<source lang="yaml">
bill-to: &id001 # definuje identifikátor id001
street: |
123 Tornado Alley
Řádek 128 ⟶ 218:
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 |
Řádek 135 ⟶ 226:
56enmleECcgggoBADs=mZmE
</source>
 
=== Hlavička ===
Níže uvedený řádek (direktiva) dovoluje uvést verzi formátu obsahu, který za ním následuje.
 
%YAML 1.2
 
=== Ostatní ===
;[[Whitespace|Bílé místo]]
* tabulátory nejsou povoleny pro odsazování
* mezery před hodnotami (resp. jejich dvojnásobek nebo čtyřnásobek) určuje úroveň zanoření
* mezery za hodnotami (včetně řetězců) jsou ignorovány
* řádek s bílým místem, na němž není uvedena žádná hodnota, je ignorován (neplatí pro neuvedené prvky pole, které se převedou na NULL)
 
=== Překlady ===
Řádek 149 ⟶ 252:
</source>
 
== ReferenceOdkazy ==
=== Reference ===
<references />
 
=== Související odkazy ===
; konkurenční formáty
* [[JSON]]
* [[XML]]
 
=== Externí odkazy ===
* http://www.yaml.org/
* http://zdrojak.root.cz/clanky/yaml-serializacni-format-pro-ukladani-dat/