Compare commits

..

No commits in common. "9e147cda69845e368fd8eb39dc8d258dc68dacbc" and "4fbd6ab4082a81b495f8a195d046a53b60b8aba9" have entirely different histories.

3 changed files with 25 additions and 43 deletions

View file

@ -335,40 +335,29 @@ pub struct Configuration {
impl Configuration { impl Configuration {
pub fn from_path (path: &impl AsRef<Path>, _watch: bool) -> Usually<Self> { pub fn from_path (path: &impl AsRef<Path>, _watch: bool) -> Usually<Self> {
let mut config = Self { path: path.as_ref().into(), ..Default::default() }; let mut config = Self::default();
let mut dsl = read_and_leak(path.as_ref())?; config.path = path.as_ref().into();
let mut head: Option<Arc<str>> = dsl.head()?.map(Into::into); let mut dsl = read_and_leak(path.as_ref())?;
let mut tail: Option<Arc<str>> = dsl.tail()?.map(Into::into); while let Some(mut exp) = dsl.exp_next()? {
loop { match exp.exp_head()?.key()? {
if let Some(exp) = head.exp()? { Some("name") => match exp.text()? {
match exp.head()?.key()? { Some(name) => config.name = Some(name.into()),
Some("name") => match exp.tail()?.text()? { _ => return Err(format!("missing name definition").into())
Some(name) => config.name = Some(name.into()), },
_ => return Err(format!("missing name definition").into()) Some("info") => match exp.text()? {
}, Some(info) => config.info = Some(info.into()),
Some("info") => match exp.tail()?.text()? { _ => return Err(format!("missing info definition").into())
Some(info) => config.info = Some(info.into()), },
_ => return Err(format!("missing info definition").into()) Some("keys") => match exp.text()? {
}, Some(keys) => config.keys = EventMap::from_dsl(keys)?,
Some("keys") => match exp.tail()? { _ => return Err(format!("missing keys definition").into())
Some(keys) => config.keys = EventMap::from_dsl(&mut &keys)?, },
_ => return Err(format!("missing keys definition").into()) Some("view") => match exp.exp_tail()? {
}, Some(tail) => config.view = tail.src().into(),
Some("view") => match exp.tail()? { _ => return Err(format!("missing view definition").into())
Some(tail) => config.view = tail.src().into(), },
_ => return Err(format!("missing view definition").into()) Some(k) => return Err(format!("(e3) unexpected key {k:?} in {exp:?}").into()),
}, None => return Err(format!("(e2) unexpected exp {exp:?}").into()),
Some(k) => return Err(format!("(e3) unexpected key {k:?} in {exp:?}").into()),
None => return Err(format!("(e2) unexpected exp {exp:?}").into()),
}
} else {
break
}
if let Some(next) = tail {
head = next.head()?.map(Into::into);
tail = next.tail()?.map(Into::into);
} else {
break
} }
} }
Ok(config) Ok(config)

View file

@ -24,7 +24,7 @@ impl<T: Content<TuiOut>> Content<TuiOut> for ErrorBoundary<TuiOut, T> {
impl App { impl App {
pub fn view (model: &Self) -> impl Content<TuiOut> + '_ { pub fn view (model: &Self) -> impl Content<TuiOut> + '_ {
ErrorBoundary::new(Ok(Some(Tui::bg(Black, model.view_menu())))) ErrorBoundary::new(Ok(Some(Tui::bg(Black, model.view_nil()))))
//ErrorBoundary::new(Take::take(model, &mut model.config.view.clone())) //ErrorBoundary::new(Take::take(model, &mut model.config.view.clone()))
//ErrorBoundary::new(Give::give(model, &mut model.config.view.clone())) //ErrorBoundary::new(Give::give(model, &mut model.config.view.clone()))
} }
@ -37,13 +37,6 @@ impl App {
pub fn view_nil (&self) -> impl Content<TuiOut> + '_ { pub fn view_nil (&self) -> impl Content<TuiOut> + '_ {
"nil" "nil"
} }
pub fn view_menu (&self) -> impl Content<TuiOut> + use<'_> {
Stack::south(|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
add(&Tui::bold(true, "tek"));
add(&"");
add(&"+ new session");
})
}
pub fn view_dialog (&self) -> impl Content<TuiOut> + use<'_> { pub fn view_dialog (&self) -> impl Content<TuiOut> + use<'_> {
self.dialog.as_ref().map(|dialog|Bsp::b("", self.dialog.as_ref().map(|dialog|Bsp::b("",
Fixed::xy(70, 23, Tui::fg_bg(Rgb(255,255,255), Rgb(16,16,16), Bsp::b( Fixed::xy(70, 23, Tui::fg_bg(Rgb(255,255,255), Rgb(16,16,16), Bsp::b(

2
deps/tengri vendored

@ -1 +1 @@
Subproject commit 85c305385bc08ef805afb113f677c510027a7234 Subproject commit 360b404b69abb1ec4e0e9959667e08d4b99c6131