Tener una cadena larga en YAML es un problema frustrante. La mayoría de las veces quieres mantener tu cadena dentro de la vista de tu editor. Sin embargo, ¡no es un problema que no se pueda resolver! YAML te permite dividir una cadena en varias líneas, lo que puede ser útil cuando la cadena es demasiado ancha para tu pantalla.
¿Qué es una cadena YAML?
YAML es un formato de serialización de datos legible por humanos. Se puede utilizar para almacenar datos para los programas. A menudo puedes usar archivos YAML para almacenar archivos de configuración también. YAML le permite dividir una cadena en varias líneas. Esto puede ser útil cuando la cadena es demasiado ancha para su pantalla. Como alternativa, en Python, puedes encerrar una cadena entre comillas triples para dividirla en varias líneas.
YAML ganó popularidad como una alternativa para aquellos que buscan más control sobre sus formatos, como JSON o XML. Sus capacidades de serialización de objetos también lo hacen más fácil que otros cuando necesitas ciertos tipos de información empaquetados en un archivo sin perder ninguna parte del original.
Ahora, explicaré los métodos que puedes utilizar para escribir cadenas de varias líneas en YAML.
Métodos para escribir cadenas multilínea en YAML
Puedes escribir cadenas multi-línea en YAML de 2 formas comunes:
- Formato escalar de bloque
- Flow formato escalar
Aunque ambas formas tienen sus ventajas e inconvenientes, una de ellas puede ser más adecuada para tus propósitos. Eso depende del tipo de datos con los que estés tratando. A continuación, descubre cuál es la mejor para tus necesidades particulares. Primero, explicaré el formato escalar de bloque y sus 3 partes.
1. Formato escalar de bloque
El formato escalar de bloque controla cómo se interpretan las nuevas líneas. Esto facilita que se obtenga un resultado diferente al esperado. Una cabecera de bloque escalar tiene 3 partes:
1. Indicador de estilo de bloque
El indicador de estilo de bloque muestra cómo se comportan las nuevas líneas dentro del bloque. Tiene 2 estilos:
- Estilo literal [indicado por el tubo (|)]
- Estilo doblado [indicado por corchete de ángulo recto (>)]
Debe sangrar el contenido de un bloque escalar hasta el nivel especificado en sus metadatos. Estas medidas no incluyen los espacios iniciales.
Cada bloque escalar tiene contenido sangrado. Los espacios iniciales también se incluyen hasta el nivel de sangría del escalar. Puede ajustar este nivel en cada línea añadiendo o quitando ceros a la izquierda, dependiendo de su preferencia por la claridad frente al uso del espacio.
Ejemplo
Literal
| # Cabecera vacía↓
Folder
1 # Indicador de sangría↓
{«literal\n»,
«doblado\n»}
- Indicador de fragmentación de bloques (>-, |-, >+, |+)
El indicador de chomping es responsable de lo que ocurre con las nuevas líneas al final de la cadena. Tiene 3 métodos de chomping:
1 Clip: Añade una nueva línea al final de la cadena.
c-chomping-indicator(CLIP) ::= «»
2 Strip: [indicado por (-)] Elimina todas las líneas nuevas.
c-chomping-indicator(STRIP) ::= ‘-‘
3 Mantener: [indicado por (+)] Mantiene un registro de todas las líneas nuevas añadidas.
c-chomping-indicator(KEEP) ::= ‘+’
Ejemplos
- strip: |-
text↓
- clip: |
text↓
- keep: |+
text↓
{ “strip”: “text”,
“clip”: “text\n“,
“keep”: “text\n” }
3. Indicador de sangría
La sangría es crucial para escribir un código limpio y con buen formato. Por ejemplo, suponga que quiere que sus bloques queden bien alineados. En ese caso, deben tener un número adecuado de espacios. También debes aplicar a tus bloques la sangría que indica su cabecera, ya sea del 1 al 9 en el caso de los sangradores normales o un icono único si utilizas un nuevo sangrador.
Cada bloque escalar tiene un nivel de sangría de contenido. La cantidad especificada en su sentencia de entrada indenta el espacio de cada línea hasta este punto. Dicho esto, cualquier cosa después de la sangría comienza nuevas líneas sin espacios iniciales adicionales en ellas hasta que alcancemos nuestra distancia envolvente a 1.000 caracteres por párrafo o menos.
El nivel de sangría del bloque escalar es el número de espacios de sangría. Un elemento de contenido con un carácter indicador establece su nivel a este valor más un espacio, a menos que las reglas del marco CSS o HTML especifiquen lo contrario.
c-indentation-indicator ::=
[x31-x39] # 1-9
Example
- |°
detected
- >°
·
·# detected
- |1
·explicit
- >°
→
- detected
[ “detected\n“,
“\n\n# detected\n“,
” explicit\n“,
“\t\ndetected\n” ]
He explicado el primer método compatible con las cadenas multilíneas, por lo que puedes utilizarlo para tus cadenas YAML. Ahora, hablaré con más detalle del segundo método.
2. Formato Flow Scalar
El formato escalar de flujo es una nueva forma de escribir CSS. Te permite declarar variables, anidamiento y otras características de forma mucho más concisa. También puede beneficiarse de los procesadores modernos que utilizan este formato. Esto hace que tu código sea más rápido y eficiente.
El formato escalar de flujo tiene 3 tipos:
1. Comillas simples
En YAML, puede utilizar cadenas con comillas simples para evitar que el analizador de YAML interprete caracteres especiales. Esto puede ser útil cuando quiera incluir un carácter como un apóstrofe en su cadena.
Ejemplo:
‘Varias líneas de texto,\n
-que contienen «comillas simples». Los escapes (como \n) no hacen nada.\n
-\n
-Deja una línea en blanco para añadir nuevas líneas.\n
—Se ignoran los espacios en blanco en las líneas.’\n
Resultado
Varias líneas de texto contienen comillas simples. Los escapes (como \n) no hacen nada.\n
Deja una línea en blanco para añadir nuevas líneas. Se ignoran los espacios en blanco en las líneas.
2. Comillas dobles
Puede utilizar cadenas con comillas dobles para incluir caracteres especiales en su cadena. YAML interpretará los caracteres especiales en la cadena, independientemente de si la encierra entre comillas simples o dobles.
Ejemplo:
«Varias líneas de texto,\n
- -que contienen «comillas dobles». Los escapes (como \N) funcionan.\NAdemás,\Nlas líneas nuevas pueden ser esc\Nsolapadas.
- -nuevas líneas pueden ser esc\n
- -para evitar que se conviertan en un espacio.
- -\n
- -dejar una línea en blanco para añadir nuevas líneas.\n
- —Se ignoran los espacios en blanco en las líneas.»\n
- Resultado
Varias líneas de texto que contienen «comillas dobles». Los escapes (como \n) funcionan.\n
También puede escapar nuevas líneas para evitar que se conviertan en un espacio.\n
Deje una línea en blanco para añadir nuevas líneas. El espacio en blanco que encabeza las líneas se ignora.\n
3. Plano
Las cadenas simples son cadenas normales que no incluyen ningún carácter especial. También tienen un escape limitado y pueden construir una cadena de una sola línea sin caracteres de nueva línea.
Ejemplo:
Varias líneas de texto,\n
- -con algunas «comillas» de varios «tipos».
- -Los escapes (como \n) no hacen nada.\n
- -\n
- -Deja una línea en blanco para añadir nuevas líneas.\n
- —Los espacios en blanco iniciales se ignoran.\n
- Resultado
Varias líneas de texto, con algunas «comillas» de varios ‘tipos’. Los escapes (como \n) no hacen nada.\n
Deja una línea en blanco para añadir nuevas líneas. Los espacios en blanco adicionales se ignoran.
Ahora, voy a enumerar lo que necesitas para el proceso de romper una cadena.
- Editor de texto
- Validador de YAML en línea
- Conocimiento de conceptos básicos de programación informática
Después de comprobar lo que necesitas, te explicaré el proceso de 4 pasos:
- Añadir una barra invertida () después del signo de exclamación (!) para romper la cadena
- Guarda los cambios
- Abra el archivo en un validador de YAML en línea
- Haga clic en el botón Validar
- Comprueba si tu código es válido (verde Mensaje YAML válido =valid/ rojo YAML inválido= invalid)
El resultado final
Para romper una cadena a lo largo de varias líneas en YAML, debe utilizar saltos de línea Unicode (u+2026). Esto le permite escribir cadenas largas sin que se corten en la pantalla. He mostrado cómo hacer esto en mis ejemplos en este artículo. También he discutido los 2 métodos para escribir cadenas de varias líneas y los diferentes tipos para cada método. Este es un truco útil para saber cuando necesitas formatear grandes bloques de texto.
¿Tienes más preguntas sobre las cadenas YAML? Consulta las secciones de Preguntas Frecuentes y Recursos más abajo.