I YAML har jeg en streng som er veldig lang. Jeg ønsker å holde dette innenfor 80-kolonne (eller så) visning av min editor, så jeg' ønsker å bryte strengen. Hva er syntaksen for dette?
Med andre ord, jeg har dette:
Key: 'this is my very very very very very very long string'
og jeg vil gjerne ha dette (eller noe lignende):
Key: 'this is my very very very ' +
'long string'
Jeg vil gjerne bruke anførselstegn som ovenfor, slik at jeg ikke trenger å unnslippe noe i strengen.
Det er 5 6 NINE (eller 63*, avhengig av hvordan du teller) forskjellige måter å skrive flerlinjestrenger på i YAML.
Vanligvis vil du ha >
:
nøkkel: >
Din lange
strengen din her.
Hvis du vil at linjeskiftene skal bevares som \n
i strengen (for eksempel innebygd markdown med avsnitt), bruker du |
.
nøkkel: |
### Overskrift
* Kulepunkt
* Poeng
Bruk >-
eller |-
i stedet hvis du ikke vil ha linjeskift på slutten.
Hvis du trenger å dele linjer midt i ord eller bokstavelig talt skrive linjeskift som \n
, bruker du doble anførselstegn i stedet:
nøkkel: "Antidisestab\quot;.
lishmentarianism.\n\nGet on it."
YAML er gal.
>
, |
)Disse tillater tegn som \
og "
uten escape, og legger til en ny linje (\n
) på slutten av strengen.
>
Folded style fjerner enkle nye linjer i strengen (men legger til en på slutten, og konverterer doble nye linjer til enkle):
Key: >
this is my very very very
long string
→ Dette er min veldig veldig veldig lange streng
n`
|
Literal style gjør hver ny linje i strengen til en bokstavelig ny linje, og legger til en på slutten:
Key: |
this is my very very very
long string
→ dette er min veldig veldig veldig lange streng\n
Her'er den offisielle definisjonen fra YAML Spec 1.2
Skalært innhold kan skrives i blokknotasjon, ved hjelp av en bokstavelig stil (angitt med "|") der alle linjeskift er signifikante. Alternativt kan de skrives med brettet stil (angitt med ">") der hvert linjeskift brettes til et mellomrom med mindre det avslutter en tom eller en mer innrykket linje.
>-
, |-
, >+
, |+
)Du kan kontrollere håndteringen av den siste nye linjen i strengen og eventuelle etterfølgende blanke linjer (\n\n
) ved å legge til et block chomping indicator-tegn:
>
, |
: "clip": behold linjeskiftet, fjern de etterfølgende blanke linjene.>-
, |-
: "strip": fjern linjeskiftet, fjern de etterfølgende blanke linjene.>+
, |+
: "keep": behold linjeskiftet, behold etterfølgende blanke linjer.`,
",
'`)Disse har begrenset rømning, og konstruerer en enkeltlinjestreng uten nye linjetegn. De kan begynne på samme linje som nøkkelen, eller med flere nye linjer først.
plain style (ingen escaping, ingen kombinasjoner av #
eller :
, begrensninger på første tegn):
Key: this is my very very very
long string
double-quoted style (\
og "
må escapes med \
, nye linjer kan settes inn med en bokstavelig \n
-sekvens, linjer kan slås sammen uten mellomrom med etterfølgende \
):
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
→ `"dette er min veldig veldig \"veldig\" lange streng.\n\nKjærlig hilsen YAML."
single-quoted style (bokstavelig '
må dobles, ingen spesialtegn, muligens nyttig for å uttrykke strenger som begynner med doble anførselstegn):
Key: 'this is my very very "very"
long string, isn''t it.'
→ "dette er min veldig veldig \"veldig\" lange streng, ikke sant."
I denne tabellen betyr _
mellomromstegn. \n
betyr "newline character" (\n
i JavaScript), bortsett fra raden "in-line newlines", der det bokstavelig talt betyr en backslash og en 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 |
*Legg merke til de etterfølgende mellomrommene på linjen før "mellomrom".
- >
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."
]
I tilfelle ovennevnte ikke er nok for deg, kan du legge til en "indikator for blokkinnrykk" (etter indikatoren for blokkinnrykk, hvis du har en):
- >8
My long string
starts over here
- |+1
This one
starts here
Hvis du setter inn ekstra mellomrom i begynnelsen av linjer som ikke er de første i foldet stil, vil de beholdes, med en ekstra ny linje. Dette skjer ikke med flytstiler:
- >
my long
string
- my long
string
→ ["min lange streng\n", "min lange streng"]
Jeg kan ikke engang.
``2 blokkstiler, hver med 2 mulige blokkeringsindikatorer (eller ingen), og med 9 mulige innrykkindikatorer (eller ingen), 1 vanlig stil og 2 anførselstegnstiler: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63 *.
Noe av denne informasjonen er også oppsummert her.
Ved bruk av yaml folded style erstattes hvert linjeskift med et mellomrom. Innrykket i hver linje vil bli ignorert. Et linjeskift vil bli satt inn på slutten.
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
Du kan bruke "block chomping indicator" for å eliminere det etterfølgende linjeskiftet, som følger:
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.
Det finnes også andre kontrollverktøy (for eksempel for å kontrollere innrykk).
For å bevare newlines, bruk for eksempel |
:
|
This is a very long sentence
that spans several lines in the YAML
but which will be rendered as a string
with newlines preserved.
er oversatt til "Dette er en veldig lang setning\n som strekker seg over flere linjer i YAML\n, men som vil bli gjengitt som en streng\n med newlines bevart.\n"