Formato de los textos
Las marcas que usan los textos (rúbricas, antífonas, versículos, saltos de línea) y cómo convertirlas en HTML.
Los textos se devuelven como cadenas planas con unas pocas marcas ligeras. Así puedes mostrarlos como texto, HTML, componentes nativos o lo que necesite tu interfaz.
Marcas
| Marca | Significado | Ejemplo |
|---|---|---|
\n | Salto de línea (versos de himnos y salmos) | "Cantad al Señor un cántico nuevo,\ncantad al Señor, toda la tierra;" |
\n\n | Separación de estrofas o párrafos | |
_texto_ | Cursiva: antífonas, respuestas y títulos | "_Venid, subamos al monte del Señor._" |
$texto$ | Rúbrica: lo que en los libros litúrgicos se imprime en rojo | "$℣. $Bendito el Señor, ahora y por siempre." |
℣. / ℟. | Versículo y respuesta | Siempre dentro de una rúbrica en los responsorios |
<i>…</i>, <p>, <br/> | HTML puntual | Algunos textos patrísticos y los salmos del Invitatorio |
Estructuras habituales
Responsorios
Los campos responsorios, responsorio* y responsorio son arrays con una línea por elemento, alternando versículo y respuesta:
[
"$℣. $Bendito el Señor, ahora y por siempre.",
"$℟. $Bendito el Señor, ahora y por siempre.",
"$℣. $El único que hace maravillas."
]Preces
preces_contenido es un array de peticiones. Cada una empieza por - y termina con su respuesta en cursiva:
"- Te bendecimos, Señor, creador del universo, _porque has conservado nuestra vida hasta el día de hoy._"Lo habitual es mostrar la parte en cursiva en una línea aparte y con sangría.
Citas del Oficio de lectura
En las citas de las lecturas del Oficio, $ separa la fuente de la referencia:
const cita = 'Del libro de los Jueces $Jc 4, 1-24 $';
const [fuente, referencia] = cita.split('$').map((s) => s.trim());
// fuente: "Del libro de los Jueces", referencia: "Jc 4, 1-24"Referencias de las lecturas de la Misa
El campo ref de cada lectura combina la cita bíblica y un título breve en cursiva, separados por : :
const ref = 'Mt 5, 38-42: _Yo os digo: No hagáis frente al que os agravia._';
const separador = ref.indexOf(': ');
const cita = ref.slice(0, separador); // "Mt 5, 38-42"
const titulo = ref.slice(separador + 2).replaceAll('_', ''); // "Yo os digo: No hagáis…"En los comentarios (type: "COMMENT"), ref contiene el autor y la obra.
Convertir a HTML
Esta función cubre todas las marcas anteriores. Los textos vienen incluidos en el paquete (no los escriben usuarios), así que insertarlos como HTML es seguro.
export function toHtml(text: string | undefined): string {
if (!text) return '';
return text
.replace(/\$(.*?)\$/g, '<span class="rubrica">$1</span>')
.replace(/_(.*?)_/g, '<em>$1</em>')
.replace(/\n/g, '<br />');
}.rubrica {
color: #a8392a; /* rojo litúrgico */
}Con React, por ejemplo:
<p dangerouslySetInnerHTML={{ __html: toHtml(laudes.himno) }} />Accesibilidad
Usa <em> en lugar de <i> para las antífonas y no confíes solo en el color para las rúbricas: el texto ya incluye los símbolos ℣. y ℟., que los lectores de pantalla anuncian.