STxT: Semantic TexT
Un Lenguaje, Infinitas Posibilidades

Compactación

Análisis de la información de STxT

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:

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

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:

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

Ahora sólo se trata de incluir esta información. De esto trata la siguiente sección.

Una forma de compactación

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:

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

Realmente, la regla para compactar es así de simple:

Substituir los tabuladores de inicio por:
número de tabuladores + ':'

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: