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.