mirror of
https://codeberg.org/unspeaker/tengri.git
synced 2025-12-06 11:46:42 +01:00
dsl: use only Dsl trait
This commit is contained in:
parent
3bc739328e
commit
90f5699fff
11 changed files with 430 additions and 406 deletions
|
|
@ -52,7 +52,7 @@ impl ToTokens for ViewDef {
|
|||
}).collect();
|
||||
let available: String = available.join(", ");
|
||||
let error_msg = LitStr::new(
|
||||
&format!("expected Sym(content), got: {{value:?}}, available: {available}"),
|
||||
&format!("expected Sym(content), got: {{iter:?}}, available: {available}"),
|
||||
Span::call_site()
|
||||
);
|
||||
for token in quote! {
|
||||
|
|
@ -60,15 +60,16 @@ impl ToTokens for ViewDef {
|
|||
/// Generated by [tengri_proc].
|
||||
impl ::tengri::output::Content<#output> for #ident {
|
||||
fn content (&self) -> impl Render<#output> {
|
||||
// TODO move to self.view()
|
||||
self.size.of(::tengri::output::View(self, self.config.view))
|
||||
}
|
||||
}
|
||||
/// Generated by [tengri_proc].
|
||||
impl<'state> ::tengri::output::ViewContext<'state, #output> for #ident {
|
||||
fn get_content_sym <'source: 'state> (&'state self, value: &Value<'source>)
|
||||
-> Option<RenderBox<'state, #output>>
|
||||
fn get_content_sym <'source: 'state> (&'state self, iter: &mut TokenIter<'source>)
|
||||
-> ::tengri::Perhaps<RenderBox<'state, #output>>
|
||||
{
|
||||
match value { #(#exposed)* _ => panic!(#error_msg) }
|
||||
Ok(match iter.peek() { #(#exposed)* _ => panic!(#error_msg) })
|
||||
}
|
||||
}
|
||||
} {
|
||||
|
|
@ -80,21 +81,44 @@ impl ToTokens for ViewDef {
|
|||
impl ToTokens for ViewArm {
|
||||
fn to_tokens (&self, out: &mut TokenStream2) {
|
||||
let Self(key, value) = self;
|
||||
out.append(Punct::new(':', Joint));
|
||||
out.append(Punct::new(':', Alone));
|
||||
out.append(Ident::new("tengri", Span::call_site()));
|
||||
out.append(Punct::new(':', Joint));
|
||||
out.append(Punct::new(':', Alone));
|
||||
out.append(Ident::new("dsl", Span::call_site()));
|
||||
out.append(Punct::new(':', Joint));
|
||||
out.append(Punct::new(':', Alone));
|
||||
out.append(Ident::new("Value", Span::call_site()));
|
||||
out.append(Punct::new(':', Joint));
|
||||
out.append(Punct::new(':', Alone));
|
||||
out.append(Ident::new("Sym", Span::call_site()));
|
||||
out.append(Ident::new("Some", Span::call_site()));
|
||||
out.append(Group::new(Delimiter::Parenthesis, {
|
||||
let mut out = TokenStream2::new();
|
||||
out.append(LitStr::new(key, Span::call_site()).token());
|
||||
out.append(Punct::new(':', Joint));
|
||||
out.append(Punct::new(':', Alone));
|
||||
out.append(Ident::new("tengri", Span::call_site()));
|
||||
out.append(Punct::new(':', Joint));
|
||||
out.append(Punct::new(':', Alone));
|
||||
out.append(Ident::new("dsl", Span::call_site()));
|
||||
out.append(Punct::new(':', Joint));
|
||||
out.append(Punct::new(':', Alone));
|
||||
out.append(Ident::new("Token", Span::call_site()));
|
||||
out.append(Group::new(Delimiter::Brace, {
|
||||
let mut out = TokenStream2::new();
|
||||
out.append(Ident::new("value", Span::call_site()));
|
||||
out.append(Punct::new(':', Alone));
|
||||
out.append(Punct::new(':', Joint));
|
||||
out.append(Punct::new(':', Alone));
|
||||
out.append(Ident::new("tengri", Span::call_site()));
|
||||
out.append(Punct::new(':', Joint));
|
||||
out.append(Punct::new(':', Alone));
|
||||
out.append(Ident::new("dsl", Span::call_site()));
|
||||
out.append(Punct::new(':', Joint));
|
||||
out.append(Punct::new(':', Alone));
|
||||
out.append(Ident::new("Value", Span::call_site()));
|
||||
out.append(Punct::new(':', Joint));
|
||||
out.append(Punct::new(':', Alone));
|
||||
out.append(Ident::new("Sym", Span::call_site()));
|
||||
out.append(Group::new(Delimiter::Parenthesis, {
|
||||
let mut out = TokenStream2::new();
|
||||
out.append(LitStr::new(key, Span::call_site()).token());
|
||||
out
|
||||
}));
|
||||
out.append(Punct::new(',', Alone));
|
||||
out.append(Punct::new('.', Joint));
|
||||
out.append(Punct::new('.', Alone));
|
||||
out
|
||||
}));
|
||||
out
|
||||
}));
|
||||
out.append(Punct::new('=', Joint));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue