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.