A YAML húrok felszakítása több vonalon

1. Áttekintés

Ebben a cikkben megtudhatjuk a YAML karakterláncok több soron történő felszakítását.

A YAML fájljaink elemzéséhez és teszteléséhez felhasználjuk a SnakeYAML könyvtárat.

2. Többsoros húrok

Mielőtt elkezdenénk, hozzunk létre egy módszert, amellyel egyszerűen leolvashatunk egy YAML kulcsot egy fájlból egy Húr:

String parseYamlKey (String fájlnév, String kulcs) {InputStream inputStream = this.getClass () .getClassLoader () .getResourceAsStream (fileName); Térkép elemezve = yaml.load (inputStream); return parsed.get (kulcs); }

A következő alfejezetekben áttekintünk néhány stratégiát a húrok felosztására több vonalon.

Megtudjuk azt is, hogy a YAML hogyan kezeli az üres és a végső sorszakadásokat a blokk elején és végén.

3. Szó szerinti stílus

A szó szerinti operátort a cső („|”) szimbólum képviseli. Megtartja a sortöréseket, de a húr végén lévő üres sorokat egyetlen sortöréssé csökkenti.

Vessünk egy pillantást a YAML fájlra szó szerint.yaml:

kulcs: | 1. sor 2. sor 3. sor

Láthatjuk, hogy a sortöréseink megmaradtak:

Karaktersorozat = parseYamlKey ("literal.yaml", "kulcs"); assertEquals ("Line1 \ nLine2 \ nLine3", kulcs);

Ezután vessünk egy pillantást literal2.yaml, amely néhány vezető és végződő sortörés:

kulcs: | 1. sor, 2. sor, 3. sor ...

Láthatjuk, hogy minden sortörés jelen van, kivéve a végződő sortöréseket, amelyeket eggyel csökkentünk:

Karaktersorozat = parseYamlKey ("literal2.yaml", "kulcs"); assertEquals ("\ n \ nVonal1 \ n \ nVonal2 \ n \ nVonal3 \ n", kulcs);

Ezután a blokk-chompingról fogunk beszélni, és arról, hogy ez hogyan ad nagyobb ellenőrzést a kezdő és befejező sortörések felett.

A használatával megváltoztathatjuk az alapértelmezett viselkedést két chomping módszer: megtartás és csíkolás.

3.1. Tart

A Keepet „+” jelöli, amint láthatjuk literal_keep.yaml:

gomb: | + 1. sor, 2. sor, 3. sor ...

Az alapértelmezett viselkedés felülbírálásával ezt láthatjuk minden befejeződő üres sort megtartunk:

Karaktersorozat = parseYamlKey ("literal_keep.yaml", "kulcs"); assertEquals ("Line1 \ nLine2 \ nLine3 \ n \ n", kulcs);

3.2. Szalag

A szalagot „-” jelöli, amint láthatjuk literal_strip.yaml:

gomb: | - 1. sor 2. sor 3. sor ...

Ahogy számíthattunk rá, ez azt eredményezi minden befejező üres sort eltávolítva:

Karaktersorozat = parseYamlKey ("literal_strip.yaml", "kulcs"); assertEquals ("Line1 \ nLine2 \ nLine3", kulcs);

4. Hajtogatott stílus

Az összehajtott operátort a „>” jelöli, amint láthatjuk hajtogatva.yaml:

gomb:> 1. sor 2. sor 3. sor

Alapértelmezés szerint a sortöréseket szóközökkel helyettesítik az egymást követő, nem üres sorok:

Karaktersorozat = parseYamlKey ("hajtogatott.yaml", "kulcs"); assertEquals ("Line1 Line2 Line3", kulcs);

Nézzünk meg egy hasonló fájlt, hajtogatott2.yaml, amelynek van néhány végződő üres sora:

gomb:> 1. sor, 2. sor, 3. sor ...

Ezt láthatjuk üres sorok megmaradnak, de a végződő sortörések is eggyé csökkennek:

Karaktersorozat = parseYamlKey ("hajtogatott2.yaml", "kulcs"); assertEquals ("1. sor 1. sor2 \ n \ nVonal3 \ n", kulcs);

Ezt szem előtt kell tartanunk a blokk-chomping ugyanúgy hat a hajtogatási stílusra, mint a szó szerinti stílusra.

5. Idézés

Vessünk egy gyors pillantást a húrok felosztására kettős és egyes idézetek segítségével.

5.1. Dupla idézetek

Dupla idézőjelek segítségével könnyen létrehozhatunk többsoros karakterláncokat a\ n“:

kulcs: "Line1 \ nLine2 \ nLine3"
Karaktersorozat = parseYamlKey ("sima_kettős_idézetek.yaml", "kulcs"); assertEquals ("Line1 \ nLine2 \ nLine3", kulcs);

5.2. Egyetlen idézet

Másrészről az egyszeri idézés\ n”A karaktersorozat részeként, így a sortörés csak üres sor használatával illeszthető be:

kulcs: '1. sor \ n2. sor 3. sor'
Karaktersorozat = parseYamlKey ("sima_egyetlen_quotok.yaml", "kulcs"); assertEquals ("Line1 \ nLine2 \ nLine3", kulcs);

6. Következtetés

Ebben a gyors bemutatóban áttekintettük a YAML karakterláncok több vonalon történő felszakításának gyors és gyakorlati példáit.

Mint mindig, a kód elérhető a GitHubon.


$config[zx-auto] not found$config[zx-overlay] not found