I YAML har jeg en streng, der er meget lang. Jeg vil gerne holde dette inden for 80-kolonnevisningen (eller deromkring) i min editor, så jeg vil gerne bryde strengen. Hvad'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 gerne have dette (eller noget i den retning):
Key: 'this is my very very very ' +
'long string'
Jeg vil gerne bruge anførselstegn som ovenfor, så jeg ikke behøver at undslippe noget i strengen.
Der er 5 6 NINE (eller 63*, afhængigt af hvordan du tæller) forskellige måder at skrive flerlinjestrenge i YAML.
Normalt vil du have >
:
key: >
Din lange
streng her.
Hvis du ønsker at linjeskifterne skal bevares som \n
i strengen (f.eks. indlejret markdown med afsnit), skal du bruge |
.
key: |
### Overskrift
* Kugle
* Punkter
Brug >-
eller |-
i stedet for, hvis du ikke vil have et linjeskift i slutningen.
Hvis du har brug for at dele linjer midt i ord eller bogstaveligt talt skrive linjeskift som \n
, skal du bruge dobbelte anførselstegn i stedet:
key: "Antidisestab\\
lishmentarianism.\n\n\nGet on it."
YAML er vanvittigt.
>
, |
)Disse tillader tegn som \
og "
uden escaping, og tilføjer en ny linje (\n
) til slutningen af din streng.
>
Folded style fjerner enkelte newlines inden for strengen (men tilføjer en i slutningen og konverterer dobbelte newlines til enkeltlinjer):
Key: >
this is my very very very
long string
→ Dette er min meget meget meget meget lange streng\n
`|`` Literal style gør hver newline i strengen til en bogstavelig newline og tilføjer en i slutningen:
Key: |
this is my very very very
long string
→ Dette er min meget meget meget meget lange streng\n
Her er den officielle definition fra YAML Spec 1.2
Skalarindhold kan skrives i bloknotation ved hjælp af en bogstavelig stil (angivet med "|"), hvor alle linjeskift er signifikante. Alternativt kan de skrives med den foldede stil (angivet med ">"), hvor hvert linjeskift foldes til et mellemrum, medmindre det afslutter en tom linje eller en linje med større indrykning.
>-
, |-
, >+
, |+
)Du kan styre håndteringen af den sidste nye linje i strengen og eventuelle afsluttende tomme linjer (\n\n
) ved at tilføje et block chomping indicator tegn:
>
, |
: "clip": beholder linjeskiftet, fjerner de afsluttende tomme linjer.>-
, |-
: "strip": fjern liniefremføring, fjern de afsluttende tomme linjer.>+
, |+
: "keep": beholder linjefod, beholder de afsluttende tomme linjer.`
, "
, '
)Disse har begrænset escaping og konstruerer en enkeltlinjestreng uden nye linjestegn. De kan begynde på samme linje som nøglen, eller med yderligere nye linjer først.
plain style (ingen escaping, ingen kombinationer af #
eller :
, begrænsning på første tegn):
Key: this is my very very very
long string
stil med dobbelte citater (\`` og
"skal escapes med
`, newlines kan indsættes med en bogstavelig \n
sekvens, linjer kan sammenkædes uden mellemrum med efterfølgende \
):
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
→ "dette er min meget meget \"meget\"meget\" laaaange streng.\n\nLove, YAML."
single-quoted style (bogstavelig '
skal fordobles, ingen specialtegn, muligvis nyttig til at udtrykke strenge, der starter med dobbelte anførselstegn):
Key: 'this is my very very "very"
long string, isn''t it.'
→ "dette er min meget meget \"meget\"meget\" lange streng, er'det ikke."
I denne tabel betyder _
"mellemrumstegn". \n
betyder "newline-tegn" (\n
i JavaScript), undtagen for rækken "in-line newlines" hvor det betyder bogstaveligt talt en skråstreg og et 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 |
- >
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."
]
Hvis ovenstående ikke er nok for dig, kan du tilføje en "blokindrykningsindikator" (efter din blokindrykningsindikator, hvis du har en):
- >8
My long string
starts over here
- |+1
This one
starts here
Hvis du indsætter ekstra mellemrum i starten af ikke-de-første linjer i Folded-stilen, vil de blive bevaret med en ekstra ny linje. Dette sker ikke med flow-stilarter:
- >
my long
string
- my long
string
→ ["my long\n string\n", "my long string"]
Jeg kan ikke engang.
``2 blokstilarter, hver med 2 mulige blokindrykningsindikatorer (eller ingen), og med 9 mulige indrykningsindikatorer (eller ingen), 1 almindelig stil og 2 anførselsstile: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63*
Nogle af disse oplysninger er også blevet opsummeret her.
Ved brug af yaml foldet stil erstattes hvert linjeskift af et mellemrum. Indrykningen i hver linje ignoreres. Der indsættes et linjeskift i slutningen.
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 bruge "block chomping-indikatoren" til at fjerne det efterfølgende linjeskift 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.
Der er også andre kontrolværktøjer til rådighed (til at kontrollere indrykning for eksempel).
For at bevare nydelinjer skal du f.eks. bruge `|``, for at bevare nydelinjer:
|
This is a very long sentence
that spans several lines in the YAML
but which will be rendered as a string
with newlines preserved.
oversættes til "Dette er en meget lang sætning\n, der strækker sig over flere linjer i YAML\n, men som vil blive gengivet som en streng\n med bevarede newlines.\n"