diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-03-10 20:47:23 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-03-10 21:19:50 +0100 |
| commit | a9fdff244aef859449a76e5f762ee7c343a8ddcc (patch) | |
| tree | 172b543183296b4bc30b3008650f594688467914 /macros | |
| parent | 62f35602a87574dcc607f1637aeae1be574981ff (diff) | |
Expose content representation more
Diffstat (limited to 'macros')
| -rw-r--r-- | macros/src/node.rs | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/macros/src/node.rs b/macros/src/node.rs index 92faf7dd..f89ee8df 100644 --- a/macros/src/node.rs +++ b/macros/src/node.rs @@ -186,7 +186,7 @@ fn create(node: &Node) -> TokenStream { #(#field_style_methods)* /// The node's span. - pub fn span(&self) -> Option<::typst::syntax::Span> { + pub fn span(&self) -> ::typst::syntax::Span { self.0.span() } } @@ -228,7 +228,7 @@ fn create_field_method(field: &Field) -> TokenStream { quote! { #[doc = #docs] #vis fn #ident(&self) -> #output { - self.0.cast_required_field(#name) + self.0.field(#name).unwrap().clone().cast().unwrap() } } } else { @@ -319,19 +319,8 @@ fn create_node_impl(node: &Node) -> TokenStream { static META: ::typst::model::NodeMeta = ::typst::model::NodeMeta { name: #name, vtable: #vtable_func, - }; - ::typst::model::NodeId::from_meta(&META) - } - - fn pack(self) -> ::typst::model::Content { - self.0 - } - - fn func() -> ::typst::eval::NodeFunc { - ::typst::eval::NodeFunc { - id: Self::id(), - construct: <Self as ::typst::model::Construct>::construct, - set: <Self as ::typst::model::Set>::set, + construct: <#ident as ::typst::model::Construct>::construct, + set: <#ident as ::typst::model::Set>::set, info: ::typst::eval::Lazy::new(|| typst::eval::FuncInfo { name: #name, display: #display, @@ -340,7 +329,12 @@ fn create_node_impl(node: &Node) -> TokenStream { returns: ::std::vec!["content"], category: #category, }), - } + }; + ::typst::model::NodeId(&META) + } + + fn pack(self) -> ::typst::model::Content { + self.0 } } } |
