Razbijanje YAML žica kroz više linija

1. Pregled

U ovom ćemo članku naučiti razbijanje YAML nizova kroz više redaka.

Da bismo raščlanili i testirali naše YAML datoteke, poslužit ćemo se SnakeYAML knjižnicom.

2. Višeredne žice

Prije nego što započnemo, stvorimo metodu za jednostavno čitanje YAML ključa iz datoteke u Niz:

Niz parseYamlKey (Ime datoteke niza, ključ niza) {InputStream inputStream = this.getClass () .getClassLoader () .getResourceAsStream (fileName); Karta je raščlanjena = yaml.load (inputStream); povratak raščlanjen.get (ključ); }

U sljedećim pododjeljcima razmotrit ćemo nekoliko strategija za razdvajanje nizova na više redaka.

Također ćemo naučiti kako YAML obrađuje vodeće i završne prijelome redaka predstavljene praznim linijama na početku i na kraju bloka.

3. Doslovni stil

Doslovni operater predstavljen je znakom cijevi ("|"). Zadržava naše prijelome redaka, ali smanjuje prazne retke na kraju niza na jedan prelom retka.

Pogledajmo YAML datoteku doslovno.yaml:

ključ: | Linija1 Linija2 Linija3

Vidimo da su naši prelomi redaka sačuvani:

Ključ niza = parseYamlKey ("literal.yaml", "key"); assertEquals ("Line1 \ nLine2 \ nLine3", ključ);

Dalje, pogledajmo doslovno2.yaml, koji ima neke vodeće i završne prijelome retka:

ključ: | Linija1 Linija2 Linija3 ...

Vidimo da je prisutan svaki prijelom retka, osim završnih prijeloma retka, koji se svode na jedan:

Ključ niza = parseYamlKey ("literal2.yaml", "key"); assertEquals ("\ n \ nLine1 \ n \ nLine2 \ n \ nLine3 \ n", ključ);

Dalje, razgovarat ćemo o chompingu blokova i o tome kako nam on daje veću kontrolu nad početnim i završnim prelomima redaka.

Zadano ponašanje možemo promijeniti pomoću dvije metode chomping: zadržati i skinuti.

3.1. Zadržati

Keep je predstavljen s "+" kao što vidimo u literal_keep.yaml:

tipka: | + Line1 Line2 Line3 ...

Nadjačavanjem zadanog ponašanja to možemo vidjeti čuva se svaki završni prazan redak:

Ključ niza = parseYamlKey ("literal_keep.yaml", "key"); assertEquals ("Line1 \ nLine2 \ nLine3 \ n \ n", ključ);

3.2. Traka

Traka je predstavljena s "-" kao što možemo vidjeti na doslovna_strip.yaml:

tipka: | - Line1 Line2 Line3 ...

Kao što smo i mogli očekivati, ovo rezultira u uklanjanje svakog završnog praznog retka:

Ključ niza = parseYamlKey ("literal_strip.yaml", "key"); assertEquals ("Line1 \ nLine2 \ nLine3", ključ);

4. Preklopljeni stil

Preklopljeni operater predstavljen je s>> kao što vidimo u presavijen.yaml:

tipka:> Line1 Line2 Line3

Prema zadanim postavkama, prijelomi redaka zamjenjuju se razmacima za uzastopne neprazne retke:

Ključ niza = parseYamlKey ("folded.yaml", "key"); assertEquals ("Line1 Line2 Line3", ključ);

Pogledajmo sličnu datoteku, presavijen2.yaml, koji ima nekoliko završavajućih praznih redaka:

tipka:> Line1 Line2 Line3 ...

To možemo vidjeti prazne se crte čuvaju, ali se i završni prijelomi redaka smanjuju na jedan:

Ključ niza = parseYamlKey ("folded2.yaml", "key"); assertEquals ("Line1 Line2 \ n \ nLine3 \ n", ključ);

To bismo trebali imati na umu blok chomping utječe na stil presavijanja na isti način na koji utječe na doslovni stil.

5. Citiranje

Kratko ćemo pogledati razdvajanje nizova uz pomoć dvostrukih i pojedinačnih navodnika.

5.1. Dvostruki citati

Pomoću dvostrukih navodnika lako možemo stvoriti nizove s više linija pomoću "\ n“:

tipka: "Linija1 \ nLinija2 \ nLinija3"
Ključ niza = parseYamlKey ("plain_double_quotes.yaml", "key"); assertEquals ("Line1 \ nLine2 \ nLine3", ključ);

5.2. Pojedinačni citati

S druge strane, pojedinačno citiranje tretira „\ n”Kao dio niza, pa je jedini način umetanja prijeloma retka prazan redak:

tipka: 'Linija1 \ nLinija2 Linija3'
Ključ niza = parseYamlKey ("plain_single_quotes.yaml", "key"); assertEquals ("Line1 \ nLine2 \ nLine3", ključ);

6. Zaključak

U ovom smo brzom vodiču pregledali više načina razbijanja YAML nizova kroz više redaka kroz brze i praktične primjere.

Kao i uvijek, kôd je dostupan na GitHub-u.


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