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 la Structure de 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.