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,25 @@
|
||||
//! El dialecto de la línea — qué sintaxis se analiza.
|
||||
//!
|
||||
//! Hoy sólo Bash. El tipo existe para que el shell pueda, más adelante,
|
||||
//! conmutar a zsh/fish/python sin que los consumidores cambien: el
|
||||
//! analizador despacha sobre el `Dialect` y cada nuevo dialecto entra
|
||||
//! con su propio lexer.
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
/// Sintaxis con la que se interpreta la línea de comandos.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
|
||||
pub enum Dialect {
|
||||
/// Shell Bourne-again — el dialecto inicial.
|
||||
#[default]
|
||||
Bash,
|
||||
}
|
||||
|
||||
impl Dialect {
|
||||
/// Nombre legible del dialecto.
|
||||
pub fn name(self) -> &'static str {
|
||||
match self {
|
||||
Dialect::Bash => "bash",
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user