wip: enable more diffing
This commit is contained in:
1 parent
b5e5ef171a
commit
e8f29a8f8a
26 files changed
+1326
-367
No files matched your search
@@ -68,19 +68,43 @@ impl ToTokens for Element {
|
||||
let name = &self.name.to_string();
|
||||
|
||||
tokens.append_all(quote! {
|
||||
dioxus::builder::ElementBuilder::new(__cx, #name)
|
||||
__cx.element(#name)
|
||||
});
|
||||
// dioxus::builder::ElementBuilder::new(__cx, #name)
|
||||
// dioxus::builder::ElementBuilder::new(__cx, #name)
|
||||
|
||||
// Add attributes
|
||||
// TODO: conver to the "attrs" syntax for compile-time known sizes
|
||||
for attr in self.attrs.iter() {
|
||||
attr.to_tokens(tokens);
|
||||
}
|
||||
|
||||
let mut children = self.children.iter();
|
||||
while let Some(child) = children.next() {
|
||||
let inner_toks = child.to_token_stream();
|
||||
// let mut children = self.children.iter();
|
||||
// while let Some(child) = children.next() {
|
||||
// let inner_toks = child.to_token_stream();
|
||||
// tokens.append_all(quote! {
|
||||
// .iter_child(#inner_toks)
|
||||
// })
|
||||
// }
|
||||
|
||||
let mut childs = quote! {};
|
||||
for child in &self.children {
|
||||
match child {
|
||||
Node::Text(e) => e.to_tokens(&mut childs),
|
||||
Node::Element(e) => e.to_tokens(&mut childs),
|
||||
Node::RawExpr(e) => quote! {
|
||||
__cx.fragment_from_iter(#e)
|
||||
}
|
||||
.to_tokens(&mut childs),
|
||||
}
|
||||
childs.append_all(quote! {,})
|
||||
}
|
||||
if self.children.len() > 0 {
|
||||
tokens.append_all(quote! {
|
||||
.iter_child(#inner_toks)
|
||||
})
|
||||
.children([
|
||||
#childs
|
||||
])
|
||||
});
|
||||
}
|
||||
|
||||
tokens.append_all(quote! {
|
||||
|
||||
@@ -99,14 +99,14 @@ impl ToTokens for RsxRender {
|
||||
// The `in cx` pattern allows directly rendering
|
||||
Some(ident) => out_tokens.append_all(quote! {
|
||||
#ident.render(dioxus::prelude::LazyNodes::new(move |__cx|{
|
||||
let bump = &__cx.bump();
|
||||
// let bump = &__cx.bump();
|
||||
#inner
|
||||
}))
|
||||
}),
|
||||
// Otherwise we just build the LazyNode wrapper
|
||||
None => out_tokens.append_all(quote! {
|
||||
dioxus::prelude::LazyNodes::new(move |__cx: &NodeFactory|{
|
||||
let bump = &__cx.bump();
|
||||
// let bump = &__cx.bump();
|
||||
#inner
|
||||
})
|
||||
}),
|
||||
|
||||
@@ -61,13 +61,7 @@ impl ToTokens for TextNode {
|
||||
// todo: use heuristics to see if we can promote to &static str
|
||||
let token_stream = &self.0.to_token_stream();
|
||||
tokens.append_all(quote! {
|
||||
{
|
||||
// use bumpalo::core_alloc::fmt::Write;
|
||||
// let mut s = bumpalo::collections::String::new_in(bump);
|
||||
// s.write_fmt(format_args_f!(#token_stream)).unwrap();
|
||||
dioxus::builder::text3(bump, format_args_f!(#token_stream))
|
||||
// dioxus::builder::text2(s)
|
||||
}
|
||||
__cx.text(format_args_f!(#token_stream))
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -105,7 +105,7 @@ static HTML_TAGS: Lazy<HashSet<&'static str>> = Lazy::new(|| {
|
||||
"source",
|
||||
"span",
|
||||
"strong",
|
||||
// "style",
|
||||
"style",
|
||||
"sub",
|
||||
"summary",
|
||||
"sup",
|
||||
|
||||
Reference in new issue
Block a user