У YAML у мене є дуже довгий рядок. Я хочу, щоб він не перевищував 80 стовпців (або близько того) у моєму редакторі, тому я хотів би розбити рядок. Який синтаксис для цього потрібен?
Іншими словами, у мене є це:
Key: 'this is my very very very very very very long string'
і я хотів би мати це (або щось подібне):
Key: 'this is my very very very ' +
'long string'
Я хотів би використати лапки, як наведено вище, щоб мені не потрібно було нічого екранувати у рядку.
Існує 5 6 ДЕВ'ЯТЬ (або 63*, дивлячись як рахувати) різних способів запису багаторядкових рядків в YAML.
Зазвичай, вам потрібно >
:
ключ: >;
Ваш довгий
рядок тут.
Якщо ви хочете, щоб розриви рядків зберігалися у вигляді \n
в рядку (наприклад, вбудована розмітка з абзацами), використовуйте |
.
ключ: |
### Заголовок
* Куля
* Крапка
Використовуйте >-
або |-
, якщо ви не хочете, щоб в кінці рядка додавався перевід рядка.
Якщо вам потрібно розділити рядки в середині слів або буквально ввести розрив рядка як \n
, використовуйте замість цього подвійні лапки:
key: "Антидестаб.
лізітаріанство.\n\nВзятися за справу.\quot;
YAML - це божевілля.
>
, |
)Дозволяють такі символи, як \
і "
без екранування, і додають новий рядок (\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
→ це мій дуже, дуже, дуже довгий рядок\n
Ось офіційне визначення з YAML Spec 1.2
Скалярний вміст може бути записаний у блоковій нотації, використовуючи буквальний стиль (позначається "|"), де всі розриви рядків є значущими. Альтернативно, вони можуть бути записані зі згорнутим стилем (позначається ">"), де кожен розрив рядка згортається до пробілу, якщо він не закінчується порожнім рядком або рядком з більшим відступом.
>-
, |-
, >+
, |+
)Ви можете керувати обробкою останнього нового рядка в рядку, а також будь-яких наступних порожніх рядків (\n\n
), додавши символ індикатор розбиття блоку:
>
, |
: "clip": зберігати перевід рядка, видаляти кінцеві порожні рядки.>-
, |-
: "розрив": прибрати переведення рядка, прибрати останні порожні рядки.>+
, |+
: "зберегти": зберегти переведення рядка, зберегти останні порожні рядки.,
",
",
'`)Ці стилі мають обмежену можливість екранування і створюють однорядковий рядок без символів нового рядка. Вони можуть починатися з того ж рядка, що і ключ, або з додаткових нових рядків.
plain style (без екранування, без комбінацій #
або :
, обмеження на перший символ):
Key: this is my very very very
long string
стиль подвійних лапок (\
та "
повинні бути екрановані \
, переноси можна вставляти з буквеної послідовності \n
, рядки можна об'єднувати без пробілів з кінцевим \
):
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
→ "це мій дуже, дуже, дуже довгий рядок.\n\nLove, YAML."
стиль з одинарними лапками (літерал '
має бути подвоєний, без спеціальних символів, можливо корисний для вираження рядків, що починаються з подвійних лапок):
Key: 'this is my very very "very"
long string, isn''t it.'
→ "це мій дуже, дуже, дуже довгий рядок, чи не так."
У цій таблиці _
означає пробіл
. \n
означає "символ нового рядка" (\n
в JavaScript), за винятком рядка "in-line newlines", де він означає буквально зворотний слеш і 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
Якщо ви вставите додаткові пробіли на початку не перших рядків у стилі Folded, вони будуть збережені з додатковим новим рядком. Цього не відбувається зі стилями обтікання:
- >
my long
string
- my long
string
→ ["мій довгий рядок\n", "мій довгий рядок"]
Я навіть не можу.
2 стилі блоків, кожен з яких має 2 можливих індикатори розбиття блоку (або жодного), та 9 можливих індикаторів відступів (або жодного), 1 звичайний стиль та 2 стилі лапок: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63.
Частину цієї інформації також було узагальнено тут.
При використанні стилю yaml folded кожен перенос рядка замінюється на пробіл. Відступ у кожному рядку буде проігноровано. В кінці буде вставлено переведення рядка.
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
Для усунення переносу останнього рядка можна використовувати індикатор &quo ;переведення рядка&quo ;, який працює наступним чином:
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.
Існують також інші засоби керування (наприклад, для керування відступами).
Для збереження нових рядків використовуйте, наприклад, |
:
|
This is a very long sentence
that spans several lines in the YAML
but which will be rendered as a string
with newlines preserved.
перекладається як "Це дуже довге речення\n, яке охоплює декілька рядків у YAML\n, але яке буде відображено як рядок\n зі збереженими новими рядками.\n"