STXT: Introducción

STXT es un lenguaje Human-First, pensado para documentos y datos estructurados.

Documentos

STXT es un formato con las siguientes características:

  • La indentación es la estructura: sin llaves ni etiquetas de cierre
  • El texto libre es literal: sin caracteres de escape
  • Esquemas con @stxt.template o @stxt.schema: validación y estructura escritos en STXT
  • Seguridad: la seguridad no es un añadido, forma parte del diseño del lenguaje

Un documento STXT combina legibilidad y semántica, lo que lo hace adecuado en muchos ámbitos, por ejemplo:

Documentos sin namespace

# Un documento sencillo, sin validación ni namespace
Email:
	From: John Smith
	To: Mery Adams
	Cc: Keyla Brown
	Title: Project report
	# El cuerpo es un bloque de texto literal
	Body Content >>
		Hello Mery!
		The book is finished!

Documentos con namespace y esquemas

STXT permite el uso de namespaces para agrupar documentos. Además, se pueden definir esquemas o plantillas para validar el contenido de un documento.

# Un documento `Email` del namespace `com.example.docs`:
Email (com.example.docs):
	From: John Smith <[email protected]>
	To: Mery Adams <[email protected]>
	Cc: Keyla Brown <[email protected]>
	Title: Project report
	Body Content >>
		Hello Mery!!
		The book is finished!!

Y la plantilla que valida ese namespace:

Template (@stxt.template): com.example.docs
	Structure >>
		Email (com.example.docs):
			From: EMAIL
			To: EMAIL
			Cc: EMAIL
			Bcc: EMAIL
			Title: (?)
			Body Content: (1) TEXT
			Metadata (org.example.meta): (?)

Comparación con otros formatos

STXT puede parecer YAML a primera vista, pero realmente se acerca más a XML en su diseño: conjuntos de nodos de texto anidados, ordenados, con namespaces y esquemas. Se eliminan etiquetas de cierre, atributos, referencias y entidades.

Como YAML, la indentación es la estructura, pero limita el número de construcciones de texto a dos: nodos inline : y nodos bloque de texto >>; ambos sin caracteres de escape.

Como NestedText, todo es texto. Pero al tener namespaces, se pueden definir esquemas, lo que permite validación y semántica sin tener que recurrir a otros lenguajes.

Al preservar el orden de los nodos, no se necesita una nomenclatura adicional para listas, ya que todo son listas.

Por dónde empezar

  • Probar STXT en el playground
  • Leer el tutorial
  • Leer las FAQ
  • Instalar las herramientas que se necesiten: stxt en línea de comandos, la extensión de VS Code o alguna biblioteca (Java, TypeScript, Python).