V jazyku YAML mám reťazec, ktorý je veľmi dlhý. Chcem ho udržať v rámci 80-stĺpcového (alebo tak nejako) zobrazenia môjho editora, takže by som chcel reťazec rozdeliť. Aká je na to syntax?
Inými slovami, mám toto:
Key: 'this is my very very very very very very long string'
a chcel by som mať toto (alebo niečo podobné):
Key: 'this is my very very very ' +
'long string'
Rád by som použil úvodzovky, ako je uvedené vyššie, aby som nemusel v reťazci nič escapovať.
Existuje 5 6 NINE (alebo 63*, podľa toho, ako počítate) rôznych spôsobov zápisu viacriadkových reťazcov v jazyku YAML.
Zvyčajne chcete >
:
kľúč: >
Váš dlhý
reťazec tu.
Ak chcete, aby sa v reťazci zachovali riadkové zlomy ako \n
(napríklad vložený markdown s odsekmi), použite |
.
kľúč: |
### Nadpis
* Bullet
* Body
Ak nechcete, aby sa na konci riadkoval zlom, použite namiesto neho >-
alebo |-
.
Ak potrebujete rozdeliť riadky uprostred slov alebo doslova napísať zalomenie riadkov ako \n
, použite namiesto toho dvojité úvodzovky:
kľúč: "Antidisestab\\
lishmentarianism.\n\nGet on it."
YAML je šialený.
>
, |
)Tieto štýly umožňujú používať znaky ako \
a "
bez escapovania a pridávajú nový riadok (\n
) na koniec reťazca.
>
Skladaný štýl odstraňuje jednoduché nové riadky v rámci reťazca (ale pridáva jeden na koniec a konvertuje dvojité nové riadky na jednoduché):
Key: >
this is my very very very
long string
→ to je môj veľmi, veľmi, veľmi dlhý reťazec\n
|
Literal style zmení každý nový riadok v reťazci na doslovný nový riadok a pridá jeden na koniec:
Key: |
this is my very very very
long string
→ toto je môj veľmi, veľmi dlhý reťazec\n
Tu'je oficiálna definícia z YAML Spec 1.2
Skalárny obsah môže byť zapísaný v blokovej notácii, pričom sa použije doslovný štýl (označený "|"), kde sú všetky zalomenia riadkov významné. Prípadne sa môžu zapísať zloženým štýlom (označeným ">"), kde je každý zlom riadku zložený na medzeru, pokiaľ nekončí prázdny riadok alebo riadok s väčším odstupom.
>-
, |-
, >+
, |+
)Spracovanie posledného nového riadku v reťazci a všetkých končiacich prázdnych riadkov (\n\n
) môžete ovládať pridaním znaku block chomping indicator:
>
, |
: "clip": zachová podávanie riadkov, odstráni koncové prázdne riadky.>-
, |-
: "strip": odstráni riadkový posuv, odstráni koncové prázdne riadky.>+
, |+
: "zachovať": zachovať riadkový posuv, zachovať koncové prázdne riadky.,
",
'`)Tieto majú obmedzené escapovanie a konštruujú jednoriadkový reťazec bez znakov nového riadku. Môžu začínať na tom istom riadku ako kľúč alebo s ďalšími novými riadkami na začiatku.
plain style (bez escapovania, bez kombinácií #
alebo :
, obmedzenia na prvý znak):
Key: this is my very very very
long string
štýl s dvojitými úvodzovkami (\
a "
musia byť escapované pomocou \
, nové riadky možno vkladať pomocou doslovnej sekvencie \n
, riadky možno spájať bez medzier s koncovým \
):
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
→ "toto je môj veľmi veľmi \"veľmi\" dlhý reťazec.\n\nLove, YAML."
štýl s jednoduchými úvodzovkami (doslovné '
musí byť zdvojené, žiadne špeciálne znaky, prípadne užitočné na vyjadrenie reťazcov začínajúcich dvojitými úvodzovkami):
Key: 'this is my very very "very"
long string, isn''t it.'
→ "toto je môj veľmi veľmi \"veľmi\" dlhý reťazec, všakže."
V tejto tabuľke _
znamená medzerový znak
. \n
znamená "znak nového riadku" (\n
v jazyku JavaScript), okrem riadku "in-line newlines", kde znamená doslova spätné lomítko a n).
> | " ' >- >+ |- |+
-------------------------|------|-----|-----|-----|------|------|------|------
Trailing spaces | Kept | Kept | | | | Kept | Kept | Kept | Kept
Single newline => | _ | \n | _ | _ | _ | _ | _ | \n | \n
Double newline => | \n | \n\n | \n | \n | \n | \n | \n | \n\n | \n\n
Final newline => | \n | \n | | | | | \n | | \n
Final dbl nl's => | | | | | | | Kept | | Kept
In-line newlines | No | No | No | \n | No | No | No | No | No
Spaceless newlines| No | No | No | \ | No | No | No | No | No
Single quote | ' | ' | ' | ' | '' | ' | ' | ' | '
Double quote | " | " | " | \" | " | " | " | " | "
Backslash | \ | \ | \ | \\ | \ | \ | \ | \ | \
" #", ": " | Ok | Ok | No | Ok | Ok | Ok | Ok | Ok | Ok
Can start on same | No | No | Yes | Yes | Yes | No | No | No | No
line as key |
Všimnite si koncové medzery na riadku pred "spaces."
- >
very "long"
'string' with
paragraph gap, \n and
spaces.
- |
very "long"
'string' with
paragraph gap, \n and
spaces.
- very "long"
'string' with
paragraph gap, \n and
spaces.
- "very \"long\"
'string' with
paragraph gap, \n and
s\
p\
a\
c\
e\
s."
- 'very "long"
''string'' with
paragraph gap, \n and
spaces.'
- >-
very "long"
'string' with
paragraph gap, \n and
spaces.
[
"very \"long\" 'string' with\nparagraph gap, \\n and spaces.\n",
"very \"long\"\n'string' with\n\nparagraph gap, \\n and \nspaces.\n",
"very \"long\" 'string' with\nparagraph gap, \\n and spaces.",
"very \"long\" 'string' with\nparagraph gap, \n and spaces.",
"very \"long\" 'string' with\nparagraph gap, \\n and spaces.",
"very \"long\" 'string' with\nparagraph gap, \\n and spaces."
]
V prípade, že vám vyššie uvedené nestačí, môžete pridať "indikátor odsadenia bloku" (za indikátor odsadenia bloku, ak ho máte):
- >8
My long string
starts over here
- |+1
This one
starts here
Ak na začiatok nie prvých riadkov v štýle Folded vložíte ďalšie medzery, budú zachované s bonusovým novým riadkom. Pri štýloch flow sa to nestane:
- >
my long
string
- my long
string
→ ["môj dlhý reťazec\n", "môj dlhý reťazec"]
Nemôžem'ani.
``2 blokové štýly, každý s 2 možnými indikátormi členenia bloku (alebo žiadnymi) a s 9 možnými indikátormi odsadenia (alebo žiadnymi), 1 jednoduchý štýl a 2 štýly s úvodzovkami: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63*
Niektoré z týchto informácií boli tiež zhrnuté tu.
Pri použití zalomeného štýlu yaml je každý zlom riadku nahradený medzerou. Odsadenie v každom riadku sa ignoruje. Na konci sa vloží zalomenie riadku.
Key: >
This is a very long sentence
that spans several lines in the YAML
but which will be rendered as a string
with only a single carriage return appended to the end.
http://symfony.com/doc/current/components/yaml/yaml_format.html
Na odstránenie koncového zalomenia riadku môžete použiť indikátor "block chomping" takto:
Key: >-
This is a very long sentence
that spans several lines in the YAML
but which will be rendered as a string
with NO carriage returns.
K dispozícii sú aj ďalšie kontrolné nástroje (napríklad na kontrolu odsadenia).
Pozri https://yaml-multiline.info/.
Ak chcete zachovať nové riadky, použite napríklad |
:
|
This is a very long sentence
that spans several lines in the YAML
but which will be rendered as a string
with newlines preserved.
sa prekladá ako "Toto je veľmi dlhá veta\n, ktorá sa rozprestiera na niekoľkých riadkoch v YAML\n, ale ktorá sa vykreslí ako reťazec\n so zachovanými novými riadkami.\n"