feat(shuma): shuma-line — el cerebro agnóstico del input del shell
Análisis de la línea de comandos bash, listo para GUI o TUI: - lexer: tokeniza + clasifica (comando vs argumento por etapa), reconoce comillas, variables, tuberías, redirecciones, operadores. - pipeline: descompone la línea en etapas separadas por |. - complete: autocompletado posicional (comando / flag / ruta) con CompletionSource inyectable; diccionario de flags por comando. - LineState: input editable UTF-8-safe (cursor, motions, completado). - Dialect conmutable (bash hoy; zsh/fish/python a futuro). 32 tests. #![forbid(unsafe_code)], cero deps de UI. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
//! `shuma-line` — el cerebro del input del shell.
|
||||
//!
|
||||
//! La función principal del shell es su línea de comandos, y esta línea
|
||||
//! no es un campo de texto tonto: analiza lo que se escribe para
|
||||
//! resaltarlo, autocompletarlo y entender sus tuberías. Toda esa
|
||||
//! inteligencia vive aquí, **agnóstica de frontend** — la usa igual el
|
||||
//! shell GPUI de brahman que una versión TUI.
|
||||
//!
|
||||
//! - [`dialect`] — el [`Dialect`] de la línea (bash hoy; zsh/fish/python
|
||||
//! a futuro, conmutable).
|
||||
//! - [`token`] — el [`Token`] y su [`TokenKind`] (la clase de resaltado).
|
||||
//! - [`lexer`] — [`tokenize`]: el análisis léxico + clasificación.
|
||||
//! - [`pipeline`] — [`split_pipeline`]: la línea descompuesta en etapas
|
||||
//! separadas por `|`.
|
||||
//! - [`complete`] — el motor de autocompletado y su [`CompletionSource`].
|
||||
//! - [`editor`] — [`LineState`], el estado editable del input.
|
||||
//!
|
||||
//! Un frontend traduce sus eventos de teclado a métodos de `LineState` y
|
||||
//! pinta `LineState::tokens()` con un color por `TokenKind`. Nada más.
|
||||
|
||||
#![forbid(unsafe_code)]
|
||||
|
||||
pub mod complete;
|
||||
pub mod dialect;
|
||||
pub mod editor;
|
||||
pub mod lexer;
|
||||
pub mod pipeline;
|
||||
pub mod token;
|
||||
|
||||
pub use complete::{complete, Completion, CompletionKind, CompletionSource, StaticSource};
|
||||
pub use dialect::Dialect;
|
||||
pub use editor::LineState;
|
||||
pub use lexer::tokenize;
|
||||
pub use pipeline::{split_pipeline, Pipeline, Stage};
|
||||
pub use token::{Token, TokenKind};
|
||||
Reference in New Issue
Block a user