test top level expr parsing

This commit is contained in:
🪞👃🪞 2025-01-18 22:17:10 +01:00
parent d14d67172c
commit 9756862091
7 changed files with 129 additions and 82 deletions

View file

@ -9,9 +9,12 @@ use crate::*;
impl<'a> ViewContext<'a, $Output> for $State {
fn get_content_custom (&'a $self, value: &Value<'a>) -> Option<RenderBox<'a, $Output>> {
if let Value::Sym(s) = value {
match *s { $($sym => Some($body),)* _ => None }
match *s {
$($sym => Some($body),)*
_ => None
}
} else {
panic!("expected symbol")
panic!("expected content, got: {value:?}")
}
}
}
@ -72,12 +75,10 @@ pub trait ViewContext<'a, E: Output + 'a>: Send + Sync
}
}
#[macro_export] macro_rules! try_from_expr {
(<$l:lifetime, $E:ident>: $Struct:ty: |$state:ident, $atoms:ident|$body:expr) => {
(<$l:lifetime, $E:ident>: $Struct:ty: |$state:ident, $iter:ident|$body:expr) => {
impl<$l, $E: Output + $l, T: ViewContext<$l, $E>> TryFromAtom<$l, T> for $Struct {
fn try_from_atom ($state: &$l T, atom: Value<$l>) -> Option<Self> {
if let Value::Exp(0, $atoms) = atom {
$body;
}
fn try_from_expr ($state: &$l T, $iter: TokenIter<'a>) -> Option<Self> {
$body;
None
}
}