STXT - Semantic Text
Built for humans. Reliable for machines.

Herramientas

Playground
Extensión de VS Code
Línea de comandos
Bibliotecas
Código fuente

Todo lo que hay en esta página —playground, extensión, línea de comandos y bibliotecas— implementa las mismas cinco especificaciones y devuelve los mismos códigos de error. Elige la herramienta por comodidad, no por compatibilidad.

STXT no necesita instalación para empezar. Según lo que quieras hacer:

Quiero… Uso…
Probar el lenguaje ahora mismo, sin instalar El playground
Escribir documentos a diario La extensión de VS Code
Validar en un script, un Makefile o en CI La línea de comandos stxt
Leer o generar STXT desde mi programa Una biblioteca: TypeScript, Java o Python

Playground

play.stxt.dev es un editor en el navegador, pensado como un VS Code simplificado: varios documentos a la vez, sus esquemas o plantillas al lado, errores de sintaxis y de validación mientras escribes, autocompletado guiado por la gramática y hover con la definición de cada nodo.

Es el sitio para seguir el tutorial sin salir del navegador.

Extensión de VS Code

La extensión oficial es STXT – Semantic Text (stxt-lang.stxt). Desde la paleta de extensiones, buscando stxt, o desde el terminal:

code --install-extension stxt-lang.stxt

Qué aporta:

Línea de comandos

El comando stxt es la interfaz para scripts, Makefile y pipelines de integración continua. Se publica en npm como @stxt-lang/cli y necesita Node 20 o superior.

npm install -g @stxt-lang/cli
stxt --version

O sin instalar nada de forma permanente:

npx @stxt-lang/cli validate docs/

Los comandos:

Comando Qué hace
stxt validate Parsea y valida uno o varios ficheros o directorios; calla si todo pasa
stxt format Reformatea (--tabs / --spaces); --check para CI, --write para guardar
stxt describe Muestra el árbol lógico de un documento en JSON (STXT-TREE-SPEC)
stxt schemas Dice qué esquemas y plantillas aplican en un directorio, y de qué nivel
stxt install Instala una definición en ./.stxt, ~/.stxt o el nivel del sistema

Un ejemplo de uso en CI, que falla si algún documento no valida o no está bien formateado:

stxt validate --recursive docs/
stxt format --check --recursive docs/

El código de salida distingue tus documentos tienen errores de el comando se ha usado mal, así que se puede usar directamente en un script. Ningún comando reescribe ficheros sin --write.

Bibliotecas

Tres implementaciones, una por ecosistema, con el mismo alcance y la misma versión. Las tres derivan de la especificación a través de un mismo pseudocódigo de referencia, y las tres pasan el mismo corpus de conformidad. Ninguna tiene dependencias en tiempo de ejecución.

TypeScript / JavaScript

@stxt-lang/core en npm. Es el parser sobre el que corren la extensión, la línea de comandos y el playground.

npm install @stxt-lang/core

Un ejemplo mínimo:

import { Parser, InlineNode } from '@stxt-lang/core';

const result = new Parser().parseResult(text);
for (const error of result.getErrors()) {
	console.error(`line ${error.line} [${error.code}]: ${error.message}`);
}
const root = result.getNodes()[0];
if (root instanceof InlineNode) {
	console.log(root.getChild('Title')?.getText());
}

Java

dev.stxt:stxt-core en Maven Central. Java 17 o superior; módulo automático dev.stxt.

<dependency>
    <groupId>dev.stxt</groupId>
    <artifactId>stxt-core</artifactId>
    <version>0.7.0</version>
</dependency>

O con Gradle:

implementation 'dev.stxt:stxt-core:0.7.0'

Python

stxt en PyPI. Python puro, 3.10 o superior.

pip install stxt

Un ejemplo mínimo:

from stxt import Parser, InlineNode

result = Parser().parse_result(text)
for error in result.get_errors():
    print(f"line {error.line} [{error.code}]: {error.message}")
root = result.get_nodes()[0]
if isinstance(root, InlineNode):
    print(root.get_child("Title").get_text())

Código fuente

Todo el ecosistema vive en la organización stxt-lang de GitHub, con licencia MIT:

Repositorio Contenido
stxt-web Este sitio: las especificaciones y el corpus de ejemplos
stxt-js @stxt-lang/core, la biblioteca TypeScript
stxt-java dev.stxt:stxt-core, la biblioteca Java
stxt-python stxt, la biblioteca Python
stxt-cli @stxt-lang/cli, la línea de comandos
stxt-vscode La extensión de VS Code
stxt-play El playground

Las incidencias y propuestas se abren en el repositorio de la herramienta afectada; las que son del lenguaje en sí, en stxt-web.