YAML

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. december 24-én felülvizsgált verziótól ; az ellenőrzések 4 szerkesztést igényelnek .
YAML
Kiterjesztés .yamlvagy.yml
MIME típusú application/x-yaml [1] [2] , text/yaml [3] [2] és text/x-yaml [4]
Fejlesztő Clark Evans [d]
közzétett 2001. május 11. [5]
Legutolsó kiadás 1.2.2 (2021. október 1. ) ( 2021-10-01 )
Formátum típusa Adatcsere
Kibontva innen XML , Perl és JSON
nyílt formátum ? Igen
Weboldal yaml.org

YAML ( mozaikszó angol  "Yet Another Markup Language"  - " Another Markup Language ", később - rekurzív mozaikszó angol  "YAML Ain't Markup Language" - " YAML - not a markup language") - "barátságos" adatsorosítási  formátum , fogalmilag közel jelölőnyelvekhez ,  de a legtöbb programozási nyelv tipikus adatszerkezetének I/O- jának kényelmére összpontosított .

A név értelmezése a fejlődés történetét tükrözi: a kezdeti szakaszban a YAML a Yet Another Markup Language (" Another Markup Language ") rövidítése volt, sőt az XML versenytársaként is pozicionálták, de később átnevezték , hogy az adatokra összpontosítson.  nem a dokumentum jelölésen [6 ] .

Az alkotás céljai

Clark Evans által  megfogalmazott célok szerint a YAML 1.0 célja [7] :

  1. hogy érthető legyen az ember számára;
  2. a programozási nyelvekhez hasonló adatstruktúrák támogatása ;
  3. hordozható legyen a programozási nyelvek között;
  4. szilárd adatmodellt használjon a hagyományos szerszámozás támogatására;
  5. támogatja az adatfolyam- feldolgozást;
  6. legyen kifejező és bővíthető;
  7. könnyen megvalósítható és használható;

A YAML (1.2) jelenlegi változata néhány változtatást eszközölt ezeken a célokon [8] :

Szintaxis

A YAML szintaxis minimalista, különösen az XML szintaxishoz képest. A specifikáció azt jelzi, hogy az RFC 822 szabvány nagy hatással volt . Az alábbiakban a különböző jelölőkomponensek mintái láthatók. Meg kell jegyezni, hogy az egysoros formázási beállítás a JSON - t a YAML érvényes részhalmazává teszi.

Sorozatok (listák)

--- # Filmlista: blokk formátumú sorozat - Casablanca - Spellbound - Notorious --- # Bevásárlólista: egysoros sorozat [ tej , kenyér , tojás , gyümölcslé ]

Név-érték leképezések (szótárak)

--- # Blokkformátum neve : John Smith életkor : 33 --- # Egysoros formátum { név : John Smith , életkor : 33 }

Literálok blokkolása

A sortörések megmaradnak --- | Volt egy fiatal Warwick fickó, akinek oka volt az eufórikus érzésre . A sortörések eltűnnek ---> A tördelt szöveg egyetlen bekezdésbe lesz hajtva az üres sorok a bekezdéstöréseket jelölik

Összehasonlítási sorozatok

- { név : John Smith , életkor : 33 } - név : Mary Smith életkor : 27

Egyezés sorozatokból

férfiak : [ John Smith , Bill Jones ] nők : - Mary Smith - Susan Williams

A YAML fő elemei:

  • A YAML adatfolyamok nyomtatható Unicode karaktereket használnak, UTF-8 és UTF-16 egyaránt
  • behúzott szóközök (tabulátorok nem megengedettek) a szerkezet jelzésére szolgálnak
  • a megjegyzések hash jellel ( # ) kezdődnek, a sorban bárhol kezdődhetnek, és a sor végéig folytatódhatnak
  • a listákat bevezető kötőjel ( - ) jelzi, soronként egy listataggal, vagy a listatagok szögletes zárójelben ( [ ] ), vesszővel és szóközzel ( , ) vannak elválasztva.
  • Az asszociatív tömböket kettőspont követi egy szóköz ( : ) kulcs:értékként, soronként egy kulcs-érték pár, vagy kapcsos zárójelek közé zárt, vesszővel és szóközzel elválasztott párok ( , )
    • egy asszociatív tömbben lévő kulcs elé kérdőjel ( ? ) írható, ami lehetővé teszi összetett kulcs, például lista megadását.
  • A karakterláncok idézőjelek nélkül vannak írva, de egyszeres vagy dupla idézőjelek közé tehetők
    • dupla idézőjelek között használhatók a fordított perjellel ( \ ) kezdődő C-stílusú megtisztított karakterek
  • A YAML lehetővé teszi a helyettesítések megadását horgonyok és álnevek (*) használatával. Példa
aliases : #config series - &myAlias1 datakey : dataval 1 moredata : morevals 1 - &myAlias2 datakey : dataval 2 moredata : morevals 2 config : - *myAlias1 # *myAlias1 helyére [{"datakey1", "afterdaval" moredata elemzése": "morevals 1"}]
  • Az explicit típusmeghatározást a '!![típusjelzés]' végzi. Például az !!str 100 a "100" karakterlánc értéket elemzi a 100 egész szám helyett.
  • A dátum/idő értékek ÉÉÉÉ-HH-NN vagy ÉÉÉÉ-HH-NN ÓÓ:PP:SS formátumban vannak megadva. Ha a dátumot karakterláncként kell megadnia, akkor azt idézőjelbe kell tenni ("2012-12-21")

Példa

Egyes projektekben olyan konfigurációt kell tárolnia, amely leírja az IRC-parancsok leképezését ( angol  kötések ) reguláris kifejezéseket használó függvényekhez .

Íme az eredeti konfiguráció táblázatban:

ircEvent módszer regexp
PRIVMSG newUri "^http://.*"
PRIVMSG deleteUri "^törlés.*"
PRIVMSG randomUri "^véletlen.*"

A YAML-ben ez a konfiguráció a következőképpen ábrázolható:

kötések : - ircEvent : PRIVMSG metódus : newUri regexp : '^http://.*' - ircEvent : PRIVMSG metódus : deleteUri regexp : '^delete.*' - ircEvent : PRIVMSG metódus : randomUri regexp : '^random.*'

vagy

kötések : - { ircEvent : PRIVMSG , metódus : newUri , regexp : '^http://.*' } - { ircEvent : PRIVMSG , metódus : deleteUri , regexp : '^delete.*' } - { ircEvent : PRIVMSG , metódus : randomUri , regexp : '^random.*' }

Összehasonlításképpen az XML-reprezentációban ez a konfiguráció a következőképpen ábrázolható:

<bindings> <binding> <ircEvent> PRIVMSG </ircEvent> <method> newUri </method> <regexp> ^http://.* </regexp> </binding> <binding> <ircEvent> PRIVMSG </ircEvent > <method> deleteUri </method> <regexp> ^delete.* </regexp> </binding> <binding> <ircEvent> PRIVMSG </ircEvent> <method> randomUri </method> <regexp> ^random.* </regexp> </binding> </bindings>

vagy

<bindings> <binding ircEvent= "PRIVMSG" method= "newUri" regexp= "^http://.*" /> <binding ircEvent= "PRIVMSG" method= "deleteUri" regexp= "^delete.*" /> <binding ircEvent= "PRIVMSG" method= "randomUri" regexp= "^random.*" /> </bindings>

A beágyazott XML elemek tetszőleges struktúrák megjelenítésére használhatók, a YAML pedig közelebb áll a Ruby , Perl , Python , Java tipikus adatmodellek megjelenítéséhez , lehetővé téve a szekvenciák, leképezések és skalártípusok szabad kombinációinak leírását – vagyis közelebb áll a valódihoz. programozási nyelvek adatstruktúrái, és nem igényel eltérő DOM -konvenciót az adatstruktúrák dokumentumokra és dokumentumokból való leképezéséhez, ahogy azt az XML megköveteli .

Használat

A YAML-t főként a Ruby on Rails , a Docker Compose [9] , a Dancer , a Symfony , a GAE framework , a Google App Engine és a Dart konfigurációs fájlok formátumaként használják . Ez az elsődleges nyelv az OpenStack Murano Project alkalmazáscsomagok osztályainak, erőforrásainak és jegyzékeinek leírására. és Swagger.io . Alapértelmezés szerint az otthoni asszisztens rendszer intelligens otthonának konfigurálásához is használatos .

Lásd még

Jegyzetek

  1. megosztott-mime-információ - GitLab .
  2. 1 2 Rails - GitHub .
  3. megosztott-mime-információ - GitLab .
  4. megosztott-mime-információ - GitLab .
  5. Evans K. YAML Draft 0.1 Yahoo! .
  6. Ha a YAML nem jelölőnyelv, mi az?  (angol) . Stack Overflow (2011. augusztus 6.). Letöltve: 2021. március 15. Az eredetiből archiválva : 2021. április 23.
  7. Oren Ben-Kiki, Clark Evans, Brian Ingerson. A YAML nem jelölőnyelv (YAML™) 1.0  ( 2004. január 29.). Letöltve: 2021. március 15. Az eredetiből archiválva : 2021. május 6..
  8. Oren Ben-Kiki, Clark Evans, Ingy dot Net. A YAML nem jelölőnyelv (YAML™) 1.2 -es verzió (2009. október 1.). Letöltve: 2021. március 15. Az eredetiből archiválva : 2019. január 24.
  9. A Docker  Compose áttekintése . Docker dokumentáció (2022. március 16.). Letöltve: 2022. március 16. Az eredetiből archiválva : 2020. február 18.

Linkek