From cf16090838d127354e333dcbc0b06474835b87d6 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Wed, 3 Mar 2021 23:06:11 -0500 Subject: [PATCH] Feat: add context to builder --- packages/core-macro/src/htm.rs | 2 +- packages/core-macro/src/rsxt.rs | 2 +- packages/core/src/context.rs | 10 +-- packages/core/src/nodebuilder.rs | 40 ++++++------ packages/core/src/patch.rs | 108 ++++++++++++++++++++----------- packages/core/src/scope.rs | 12 ++-- packages/web/examples/basic.rs | 19 +++--- packages/web/src/interpreter.rs | 49 +++++++------- 8 files changed, 144 insertions(+), 98 deletions(-) diff --git a/packages/core-macro/src/htm.rs b/packages/core-macro/src/htm.rs index a61106756..fcb45667e 100644 --- a/packages/core-macro/src/htm.rs +++ b/packages/core-macro/src/htm.rs @@ -59,7 +59,7 @@ impl ToTokens for HtmlRender { // create a lazy tree that accepts a bump allocator let final_tokens = quote! { move |ctx| { - let bump = ctx.bump(); + let bump = ctx.bump; #new_toks } diff --git a/packages/core-macro/src/rsxt.rs b/packages/core-macro/src/rsxt.rs index d36ca48e8..6e24fa4b5 100644 --- a/packages/core-macro/src/rsxt.rs +++ b/packages/core-macro/src/rsxt.rs @@ -73,7 +73,7 @@ impl ToTokens for RsxRender { // create a lazy tree that accepts a bump allocator let final_tokens = quote! { move |ctx| { - let bump = ctx.bump(); + let bump = ctx.bump; #new_toks } }; diff --git a/packages/core/src/context.rs b/packages/core/src/context.rs index 4a4adc55c..074f17681 100644 --- a/packages/core/src/context.rs +++ b/packages/core/src/context.rs @@ -78,17 +78,17 @@ impl<'a> Context<'a> { /// ctx.render(lazy_tree) /// } ///``` - pub fn render(self, lazy_nodes: impl FnOnce(&'a NodeCtx<'a>) -> VNode<'a> + 'a) -> DomTree { + pub fn render(self, lazy_nodes: impl FnOnce(&NodeCtx<'a>) -> VNode<'a> + 'a) -> DomTree { let ctx = NodeCtx { bump: self.bump, idx: 0.into(), scope: self.scope, }; - todo!(); - // let safe_nodes = lazy_nodes(&ctx); + // todo!(); + let safe_nodes = lazy_nodes(&ctx); - // let unsafe_nodes = unsafe { std::mem::transmute::, VNode<'static>>(safe_nodes) }; - // self.final_nodes.deref().borrow_mut().replace(unsafe_nodes); + let unsafe_nodes = unsafe { std::mem::transmute::, VNode<'static>>(safe_nodes) }; + self.final_nodes.deref().borrow_mut().replace(unsafe_nodes); DomTree {} } diff --git a/packages/core/src/nodebuilder.rs b/packages/core/src/nodebuilder.rs index 4163cfb7e..8b6215e79 100644 --- a/packages/core/src/nodebuilder.rs +++ b/packages/core/src/nodebuilder.rs @@ -19,13 +19,13 @@ use bumpalo::Bump; /// function for building `
` elements or the `button` function for building /// `