wip: 1e !

This commit is contained in:
🪞👃🪞 2025-07-29 17:04:24 +03:00
parent 4fbd6ab408
commit 121a273788
2 changed files with 35 additions and 24 deletions

View file

@ -335,30 +335,41 @@ 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::default(); let mut config = Self { path: path.as_ref().into(), ..Default::default() };
config.path = path.as_ref().into();
let mut dsl = read_and_leak(path.as_ref())?; let mut dsl = read_and_leak(path.as_ref())?;
while let Some(mut exp) = dsl.exp_next()? { let mut head = dsl.head()?;
match exp.exp_head()?.key()? { let mut tail = dsl.tail()?;
Some("name") => match exp.text()? { loop {
if let Some(exp) = head.exp()? {
match exp.head()?.key()? {
Some("name") => match exp.tail()?.text()? {
Some(name) => config.name = Some(name.into()), Some(name) => config.name = Some(name.into()),
_ => return Err(format!("missing name definition").into()) _ => return Err(format!("missing name definition").into())
}, },
Some("info") => match exp.text()? { Some("info") => match exp.tail()?.text()? {
Some(info) => config.info = Some(info.into()), Some(info) => config.info = Some(info.into()),
_ => return Err(format!("missing info definition").into()) _ => return Err(format!("missing info definition").into())
}, },
Some("keys") => match exp.text()? { Some("keys") => match exp.tail()? {
Some(keys) => config.keys = EventMap::from_dsl(keys)?, Some(keys) => config.keys = EventMap::from_dsl(&mut &keys)?,
_ => return Err(format!("missing keys definition").into()) _ => return Err(format!("missing keys definition").into())
}, },
Some("view") => match exp.exp_tail()? { Some("view") => match exp.tail()? {
Some(tail) => config.view = tail.src().into(), Some(tail) => config.view = tail.src().into(),
_ => return Err(format!("missing view definition").into()) _ => return Err(format!("missing view definition").into())
}, },
Some(k) => return Err(format!("(e3) unexpected key {k:?} in {exp:?}").into()), Some(k) => return Err(format!("(e3) unexpected key {k:?} in {exp:?}").into()),
None => return Err(format!("(e2) unexpected exp {exp:?}").into()), None => return Err(format!("(e2) unexpected exp {exp:?}").into()),
} }
} else {
break
}
if let Some(next) = tail {
head = next.head()?;
tail = next.tail()?;
} else {
break
}
} }
Ok(config) Ok(config)
} }

2
deps/tengri vendored

@ -1 +1 @@
Subproject commit 360b404b69abb1ec4e0e9959667e08d4b99c6131 Subproject commit 16969aeb64a61a6c9819e7533e435ee2d693dddd