Існує 5 6 дев'яти (або 63 *, залежно від того, як ви рахуєте) різних способів запису багаторядкових рядків у YAML.
TL; DR
Зазвичай вам потрібно >
:
key: >
Your long
string here.
Якщо ви хочете, щоб \n
рядкові рядки зберігалися як у рядку (наприклад, вбудована розмітка з абзацами), використовуйте |
.
key: |
### Heading
* Bullet
* Points
Використовуйте >-
або |-
замість цього, якщо ви не хочете, щоб рядковий рядок додався в кінці.
Якщо вам потрібно розділити рядки в середині слів або буквально ввести рядкові рядки як \n
, використовуйте замість цього подвійні лапки:
key: "Antidisestab\
lishmentarianism.\n\nGet on it."
ЯМЛ божевільний.
Блокувати скалярні стилі ( >
, |
)
Вони дозволяють таким символам, як \
і "
без втечі, і додають новий рядок ( \n
) до кінця рядка.
>
Складений стиль видаляє поодинокі рядки в рядку (але додає в кінці і перетворює подвійні нові рядки в сингли):
Key: >
this is my very very very
long string
→ this is my very very very long string\n
|
Літеральний стиль перетворює кожну нову рядок у рядку в буквальний новий рядок, а в кінці додає:
Key: |
this is my very very very
long string
→ this is my very very very\nlong string\n
Ось офіційне визначення з YAML Spec 1.2
Скалярний вміст може бути записаний у блокові позначення, використовуючи буквальний стиль (позначений «|»), де всі розриви рядків значні. Крім того, вони можуть бути записані у складеному стилі (позначається ">"), коли кожен розрив рядка складений на пробіл, якщо він не закінчується порожнім чи більш відрізним рядком.
Блок стилів з індикатором блоку плямкання ( >-
, |-
, >+
, |+
)
Ви можете керувати обробкою остаточного нового рядка в рядку та будь-якими проміжними порожніми рядками ( \n\n
), додавши символ індикатора блоку, що чіпує :
>
, |
: "clip": зберігайте подачу рядків, видаляйте пробіли.
>-
, |-
: "strip": видаліть подачу рядків, видаліть проміжні порожні рядки.
>+
, |+
: "утримувати": зберігати канал рядків, тримати пробіли в рядках.
"Потік" стилі скалярні (
, "
, '
)
Вони мають обмежене пробіг та створюють однорядковий рядок без нових символів рядка. Вони можуть починатися з того самого рядка, що і ключ, або спочатку з додатковими новими рядками.
не звичайний стиль (не дінеться, що не#
або:
комбінація, обмеження на першому символі):
Key: this is my very very very
long string
стиль з подвійним цитуванням (\
і його"
потрібно уникати\
, нові рядки можна вставляти з буквальною\n
послідовністю; рядки можна з'єднувати без пробілів із заднім числом\
):
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
→ "this is my very very \"very\" loooong string.\n\nLove, YAML."
Стиль з одним цитуванням (буквальне'
повинно бути подвоєне, жодних спеціальних символів, можливо, корисних для вираження рядків, починаючи з подвійних лапок):
Key: 'this is my very very "very"
long string, isn''t it.'
→ "this is my very very \"very\" long string, isn't it."
Підсумок
У цій таблиці _
засоби space character
. \n
означає "символ нового рядка" ( \n
у JavaScript), за винятком рядка "рядкові нові рядки", де він означає буквально зворотну косу рису та 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."
]
Стилі блоків з індикаторами відступу
На випадок, якщо вищезазначене вам недостатньо, ви можете додати " індикатор відступу блоку " (після того, як ваш індикатор блокується, якщо у вас є):
- >8
My long string
starts over here
- |+1
This one
starts here
Додаток
Якщо ви вставите додаткові пробіли на початку не перших рядків у складеному стилі, вони зберігатимуться з бонусним новим рядком. Це не відбувається зі стилями потоку:
- >
my long
string
- my long
string
→ ["my long\n string\n", "my long string"]
Я навіть не можу.
*
2 стилі блоків, кожен з 2 можливими індикаторами відбивання блоку (або жодним), та з 9 можливими індикаторами відступу (або жодним), 1 простим стилем та 2 цитованими стилями: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63
Частина цієї інформації також була узагальнена тут .