Document (dev.stxt.namespace):Compactación Navigation: Previous: Anterior (ns-docs) Next: Siguiente (examples) Metadata: Description: Se muestra como se compactan documentos Author: Joan Costa Mombiela Last modif: 2025-06-22 Header: Compactación Subheader: Análisis de la información de STxT Content: Un documento es sólo un conjunto de nodos con una cierta identación, con lo que realmente la información es de **orden** y de **nivel**. Vamos a verlo en un ejemplo: Code: Nodo_0 (com.example.docs): Node_1: Node_2: Texto Node2 Node_3: Texto Node3 Node_4: Node_5: Texto Node5 Node_6: Texto Node6 Continuación texto Otra linea de texto Node_7: Node_8: Node_9: Última linea Content: Vemos que hay 10 Nodos en este documento. El primer nodo es Node_0, y es el que contiene a los demás. Podríamos decir que es el primero en aparecer (orden) y tiene nivel 0 (no está identado y contiene a los demás). El segundo nodo es Node_1. Es el segundo en aparecer y tiene nivel 1. De esta forma podríamos cualificar todas las líneas, y extraer la información. No es difícil de hacer una tabla con esta información: Content: | Orden | Nodo | Nivel | |--------|--------|---------| | 1 |Node_0 |0 | | 2 |Node_1 |1 | | 3 |Node_2 |2 | | 4 |Node_3 |2 | | 5 |Node_4 |1 | | 6 |Node_5 |2 | | 7 |Node_6 |2 | | 8 |Texto |3 | | 9 |Texto |3 | | 10 |Node_7 |2 | | 11 |Node_8 |3 | | 12 |Node_9 |4 | Content: Ahora sólo se trata de incluir esta información. De esto trata la siguiente sección. Subheader: Una forma de compactación Content: A partir de la tabla anterior, vamos a proponer una forma de compactar la información. Será algo tan fácil como insertar el número de nivel en vez de utilizar tabuladores, y separarlo con el carácter habitual ':'. Así, el ejemplo anterior quedaría como: code: 0:Node_0 (com.example.docs): 1:Node_1: 2:Node_2: Texto Nodo2 3:Node_3: Texto Nodo3 1:Node_4: 2:Node_5: Texto Nodo5 2:Node_6: Texto Nodo6 3:Continuación texto 3:Otra linea de texto 2:Node_7: 3:Node_8: 4:Node_9: Última linea Content: Realmente, la regla para compactar es así de simple: assert: Substituir los tabuladores de inicio por: \\ número de tabuladores + ':' Content: La utilidad de la compactación es crear un formato un poco más eficiente, que igualmente sea fácil de leer y escribir por humanos. Con los números de nivel también es muy sencillo de leer, y para las máquinas tiene algunas ventajas: * El tamaño del fichero acostumbra a ser inferior. * El parseo del fichero es más rápido, ya que no hay que calcular el nivel a través de tabuladores (o espacios).