Como parto um fio em várias linhas?
Em YAML, tenho um fio que's muito longo. Quero manter isto dentro da visão de 80 colunas (ou assim) do meu editor, por isso eu'gostaria de quebrar a corda. Qual'é a sintaxe para isto?
Por outras palavras, eu tenho isto:
Key: 'this is my very very very very very very long string'
e I'gostaria de ter isto (ou algo para este efeito):
Key: 'this is my very very very ' +
'long string'
I'gostaria de usar citações como acima, por isso eu não'não preciso de escapar a nada dentro da corda.
1373
3
Existem 5 6 NINE (ou 63*, dependendo de como se conta) diferentes formas de escrever cordas multi-linhas em YAML.
TL;DR
Normalmente, quer `>``:
Se quiser que os linebreaks sejam preservados como `\n' na corda (por exemplo, marcação embutida com parágrafos), utilize ````.
Utilize
>-
ou|-
em vez disso, se não quiser'não queira um linebreak anexado no final.Se precisar de dividir linhas no meio das palavras ou digitar literalmente linebreaks como `\n', utilize aspas duplas em vez disso:
A YAML é uma loucura.
Bloquear estilos de escalar (
>
,||
)Estes permitem caracteres como `
e `"
sem escapar, e adicionam uma nova linha (`n
) ao fim da sua corda.>
Folded style remove linhas novas individuais dentro da cadeia (mas adiciona uma no final, e converte linhas novas duplas em singles):→ `this is my very very long string\n``
Key: | this is my very very very long string
Key: this is my very very very long string
Key: "this is my very very \"very\" loooo\ ng string.\n\nLove, YAML."
Key: 'this is my very very "very" long string, isn''t it.'
-------------------------|------|-----|-----|-----|------|------|------|------
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 |
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.'
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." ]
Adenda
Se inserir espaços extra no início das linhas não primeiras em estilo Folded, estes serão mantidos, com uma nova linha de bónus. Isto não'não acontece com os estilos de fluxo:
→ `[" my long string\n", " my long string"]``
Eu posso't nem sequer.
``2 estilos de bloco, cada um com 2 possíveis indicadores de chomping de bloco (ou nenhum), e com 9 possíveis indicadores de indentação (ou nenhum), 1 estilo simples e 2 estilos cotados: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63*
Algumas destas informações foram também resumidas aqui.
Usando o estilo yaml dobrado, cada quebra de linha é substituída por um espaço. A indenção em cada linha será ignorada. Uma quebra de linha será inserida no final.
http://symfony.com/doc/current/components/yaml/yaml_format.html
Pode usar o "indicador " de bloqueio; para eliminar a quebra da linha de fuga, como se segue:
Existem também outros instrumentos de controlo disponíveis (para controlar a indentação, por exemplo).
Ver https://yaml-multiline.info/
Para preservar **newlines* utilizar
|
**, por exemplo:é traduzida para "Esta é uma frase muito longa que se estende por várias linhas no YAML** mas que será traduzida como um fio* com novas linhas preservadas.**n*"