In YAML heb ik een string die'erg lang is. Ik wil dit binnen de 80-koloms (of zo) weergave van mijn editor houden, dus ik'zou de string willen afbreken. Wat's de syntaxis hiervoor?
Met andere woorden, ik heb dit:
Key: 'this is my very very very very very very long string'
en ik zou dit willen hebben (of iets van die strekking):
Key: 'this is my very very very ' +
'long string'
Ik'zou graag aanhalingstekens gebruiken zoals hierboven, zodat ik'niets hoef te escapen binnen de string.
Er zijn 5 6 NEGEN (of 63*, afhankelijk van hoe je telt) verschillende manieren om multi-line strings in YAML te schrijven.
Meestal wil je >
:
key: >
Uw lange
string hier.
Als u wilt dat de regeleindes bewaard blijven als `in de string (bijvoorbeeld bij ingebedde markdown met paragrafen), gebruik dan
|`.
toets: |
### Koptekst
* Kogel
* Punten
Gebruik >-
of |-
als u geen regelafbreking aan het eind wilt.
Als u regels in het midden van woorden moet splitsen of letterlijk regeleindes als `` moet typen, gebruik dan dubbele aanhalingstekens:
toets: "Antidisestab
lishmentarianism.\nGet on it."
YAML is gek.
>
, |
)Deze laten tekens als >
en "
toe zonder escaping, en voegen een nieuwe regel (>
) toe aan het eind van je string.
>
Gevouwen stijl verwijdert enkele nieuwe regels binnen de tekenreeks (maar voegt er een toe aan het eind, en converteert dubbele nieuwe regels naar enkele):
Key: >
this is my very very very
long string
→ `dit is mijn zeer zeer zeer lange string
|
Letterlijke stijl maakt van elke newline in de string een letterlijke newline, en voegt er een toe aan het eind:
Key: |
this is my very very very
long string
→ `dit is mijn zeer zeer lange string
Hier is de officiële definitie uit de YAML Spec 1.2
Scalaire inhoud kan worden geschreven in bloknotatie, gebruikmakend van een letterlijke stijl (aangegeven met "|") waar alle regeleinden significant zijn. Als alternatief kunnen ze worden geschreven met de gevouwen stijl (aangeduid met ">") waar elke regeleinde wordt gevouwen tot een spatie tenzij het eindigt een lege of een meer inspringende regel.
>-
, |-
, >+
, |+
)U kunt de behandeling van de laatste nieuwe regel in de tekenreeks, en eventuele lege regels achteraan (|
) regelen door een block chomping indicator teken toe te voegen:
>
, |
: "clip": behoud de regelinvoer, verwijder de lege regels achteraan.>-
, |-
: "strip": verwijder de regelinvoer, verwijder de lege regels achteraan.>+
, |+
: "keep": behoud de regelinvoer, behoud de lege regels.`,
",
'`)Deze hebben beperkte escaping, en construeren een tekenreeks van één regel zonder nieuwe regeltekens. Ze kunnen beginnen op dezelfde regel als de sleutel, of met extra nieuwe regels eerst.
plain style (geen escaping, geen #
of :
combinaties, beperkingen op het eerste teken):
Key: this is my very very very
long string
stijl met dubbele aanhalingstekens (en `"` moeten worden geëscaped door
, nieuwe regels kunnen worden ingevoegd met een letterlijke `n
reeks, regels kunnen worden aaneengeschakeld zonder spaties met achteraan ```):
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
→ "dit is mijn zeer zeer zeer lange string.\nLove, YAML."
single-quoted style (letterlijke '
moet worden verdubbeld, geen speciale tekens, mogelijk handig voor het uitdrukken van strings die beginnen met dubbele aanhalingstekens):
Key: 'this is my very very "very"
long string, isn''t it.'
→ "dit is mijn zeer zeer zeer zeer lange string, is het niet."
In deze tabel, betekent _
spatie teken
. betekent "newline teken" (
n` in JavaScript), behalve voor de "in-line newlines" rij, waar het letterlijk een backslash en een n betekent).
> | " ' >- >+ |- |+
-------------------------|------|-----|-----|-----|------|------|------|------
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 |
Let op de spaties op de regel voor "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."
]
Voor het geval het bovenstaande niet'genoeg voor je is, kun je een "block indentation indicator" toevoegen (na je blokindentatie-indicator, als je die hebt):
- >8
My long string
starts over here
- |+1
This one
starts here
Als u extra spaties invoegt aan het begin van niet-de-eerste regels in gevouwen stijl, worden ze behouden, met een bonus newline. Dit gebeurt niet met flow stijlen:
- >
my long
string
- my long
string
→ ["mijn lange string", "mijn lange string"]
Ik kan het niet eens.
``2 blokstijlen, elk met 2 mogelijke blokherkenningsindicatoren (of geen), en met 9 mogelijke inspringingsindicatoren (of geen), 1 gewone stijl en 2 geciteerde stijlen: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63*
Een deel van deze informatie is ook samengevat hier.
Met yaml gevouwen stijl, wordt elke regelafbreking vervangen door een spatie. De inspringing in elke regel wordt genegeerd. Een regeleinde wordt aan het eind ingevoegd.
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
U kunt de "block chomping indicator" gebruiken om de regelafbreking achteraan te elimineren, als volgt:
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.
Er zijn ook andere controle-instrumenten beschikbaar (om de inspringing te regelen bijvoorbeeld).
Om newlines te behouden gebruikt u |
, bijvoorbeeld:
|
This is a very long sentence
that spans several lines in the YAML
but which will be rendered as a string
with newlines preserved.
wordt vertaald naar "Dit is een zeer lange zin** die meerdere regels in de YAML beslaat maar die zal worden weergegeven als een string met behoud van nieuwe regels."