Herramientas
Todas las herramientas de esta página —playground, extensión, línea de comandos y bibliotecas— implementan las mismas cinco especificaciones y devuelven los mismos códigos de error. La elección entre ellas no afecta a la compatibilidad.
STXT no necesita instalación para empezar. Según el uso previsto:
| Uso | Herramienta |
|---|---|
| Probar el lenguaje sin instalar nada | El playground |
| Escribir documentos habitualmente | 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 un programa | Una biblioteca: TypeScript, Java o Python |
Playground
play.stxt.dev es un editor en el navegador, concebido como un VS Code simplificado: varios documentos a la vez, sus esquemas o plantillas al lado, errores de sintaxis y de validación durante la edición, autocompletado guiado por la gramática y hover con la definición de cada nodo.
- No requiere instalación ni cuenta; el trabajo se guarda en el propio navegador.
- Incluye una semilla de documentos de ejemplo.
- Un documento se puede compartir con un enlace que lleva el contenido dentro.
Permite seguir el tutorial sin salir del navegador.
Extensión de VS Code
La extensión oficial es
STXT Language (stxt-lang.stxt).
Desde la paleta de extensiones, buscando stxt, o desde el terminal:
code --install-extension stxt-lang.stxt
Funciones:
- Errores de sintaxis en tiempo real, y de esquema cuando hay una gramática que aplica.
- Coloreado semántico dirigido por el propio parser.
- Autocompletado con los nodos que permite el esquema y los valores de un
ENUM. - Información al pasar el ratón: nodo, nombre canónico, tipo, valores y descripción.
- Ir a la definición (F12): del nodo al
Node:de su esquema o a su línea en laStructurede su plantilla. - Formateo del documento.
- Resolución de esquemas y plantillas desde los directorios
.stxt/del proyecto, del usuario y del sistema, tal como describe la referencia de resolución.
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
Sin instalación permanente, con npx:
npx @stxt-lang/cli validate docs/
Los comandos:
| Comando | Qué hace |
|---|---|
stxt validate |
Parsea y valida uno o varios ficheros o directorios; sin salida 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 |
Muestra 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 los errores de los documentos (1) del uso incorrecto
del comando (2), de modo que se puede usar directamente en un script. Ningún
comando reescribe ficheros sin --write. Todas las opciones, las salidas y los
códigos de salida están en la referencia de la línea de comandos.
Bibliotecas
Desde este portal se mantienen tres implementaciones oficiales —TypeScript/JavaScript, Java y Python—, y esperamos que aparezcan muchas más para otros lenguajes.
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.
La guía completa —árbol, validación, resolución, JSON canónico, escritura— está
en la biblioteca TypeScript.
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. La guía completa
está en la biblioteca Java.
<dependency>
<groupId>dev.stxt</groupId>
<artifactId>stxt-core</artifactId>
<version>1.0.0</version>
</dependency>
O con Gradle:
implementation 'dev.stxt:stxt-core:1.0.0'
Python
stxt en PyPI. Python puro, 3.10 o superior. La
guía completa está en la biblioteca Python.
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-lang | Este sitio: las especificaciones, el kit de conformidad 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 preguntas, las ideas y todo lo que sea del lenguaje en sí van a las discusiones de la organización; los errores, a las incidencias del repositorio de la herramienta afectada.