diff --git a/packages/core-macro/Cargo.toml b/packages/core-macro/Cargo.toml index f539cd108..69f7117f4 100644 --- a/packages/core-macro/Cargo.toml +++ b/packages/core-macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dioxus-core-macro" -version = "0.1.1" +version = "0.1.2" authors = ["Jonathan Kelley "] edition = "2018" description = "Core macro for Dioxus Virtual DOM" diff --git a/packages/core-macro/src/htm.rs b/packages/core-macro/src/htm.rs index a5f6dbd8b..88f8cb0a9 100644 --- a/packages/core-macro/src/htm.rs +++ b/packages/core-macro/src/htm.rs @@ -14,13 +14,12 @@ //! use { - proc_macro::TokenStream, - proc_macro2::{Span, TokenStream as TokenStream2}, + proc_macro2::TokenStream as TokenStream2, quote::{quote, ToTokens, TokenStreamExt}, syn::{ ext::IdentExt, parse::{Parse, ParseStream}, - token, Error, Expr, ExprClosure, Ident, LitBool, LitStr, Path, Result, Token, + token, Error, Expr, ExprClosure, Ident, LitStr, Result, Token, }, }; @@ -121,7 +120,7 @@ impl ToTokens for ToToksCtx<&Node> { } impl Node { - fn peek(s: ParseStream) -> bool { + fn _peek(s: ParseStream) -> bool { (s.peek(Token![<]) && !s.peek2(Token![/])) || s.peek(token::Brace) || s.peek(LitStr) } } diff --git a/packages/core-macro/src/ifmt.rs b/packages/core-macro/src/ifmt.rs index 5bac539d2..58d88fb78 100644 --- a/packages/core-macro/src/ifmt.rs +++ b/packages/core-macro/src/ifmt.rs @@ -7,44 +7,12 @@ use ::syn::{ }; use proc_macro2::TokenStream; -// #[cfg(not(feature = "verbose-expansions"))] -macro_rules! debug_input { - ($expr:expr) => { - $expr - }; -} - -// #[cfg(not(feature = "verbose-expansions"))] macro_rules! debug_output { ($expr:expr) => { $expr }; } -// #[cfg(feature = "verbose-expansions")] -// macro_rules! debug_input { -// ($expr:expr) => { -// match $expr { -// expr => { -// eprintln!("-------------------\n{} ! ( {} )", FUNCTION_NAME, expr); -// expr -// } -// } -// }; -// } - -// #[cfg(feature = "verbose-expansions")] -// macro_rules! debug_output { -// ($expr:expr) => { -// match $expr { -// expr => { -// eprintln!("=>\n{}\n-------------------\n", expr); -// expr -// } -// } -// }; -// } - pub fn format_args_f_impl(input: IfmtInput) -> Result { let IfmtInput { mut format_literal, diff --git a/packages/core-macro/src/rsx/ambiguous.rs b/packages/core-macro/src/rsx/ambiguous.rs index ad535ef31..2fbfec7ed 100644 --- a/packages/core-macro/src/rsx/ambiguous.rs +++ b/packages/core-macro/src/rsx/ambiguous.rs @@ -12,10 +12,10 @@ use proc_macro2::TokenStream as TokenStream2; use quote::ToTokens; use syn::{ parse::{Parse, ParseStream}, - Error, Ident, LitStr, Result, Token, + Error, Ident, Result, Token, }; -pub enum AmbiguousElement { +pub enum AmbiguousElement { Element(Element), Component(Component), } @@ -98,7 +98,7 @@ impl Parse for AmbiguousElement { } } -impl ToTokens for AmbiguousElement { +impl ToTokens for AmbiguousElement { fn to_tokens(&self, tokens: &mut TokenStream2) { match self { AmbiguousElement::Element(el) => el.to_tokens(tokens), diff --git a/packages/core-macro/src/rsx/body.rs b/packages/core-macro/src/rsx/body.rs index 718c1c83d..e4fd35283 100644 --- a/packages/core-macro/src/rsx/body.rs +++ b/packages/core-macro/src/rsx/body.rs @@ -2,12 +2,12 @@ use proc_macro2::TokenStream as TokenStream2; use quote::{quote, ToTokens, TokenStreamExt}; use syn::{ parse::{Parse, ParseStream}, - Error, Ident, Result, Token, + Ident, Result, Token, }; use super::*; -pub struct RsxBody { +pub struct RsxBody { custom_context: Option, roots: Vec>, } @@ -50,7 +50,7 @@ fn try_parse_custom_context(input: ParseStream) -> Result> { } /// Serialize the same way, regardless of flavor -impl ToTokens for RsxBody { +impl ToTokens for RsxBody { fn to_tokens(&self, out_tokens: &mut TokenStream2) { let inner = if self.roots.len() == 1 { let inner = &self.roots[0]; diff --git a/packages/core-macro/src/rsx/component.rs b/packages/core-macro/src/rsx/component.rs index b30d2c8ee..1984c791f 100644 --- a/packages/core-macro/src/rsx/component.rs +++ b/packages/core-macro/src/rsx/component.rs @@ -22,7 +22,7 @@ use syn::{ token, Error, Expr, ExprClosure, Ident, Result, Token, }; -pub struct Component { +pub struct Component { // accept any path-like argument name: syn::Path, body: Vec>, @@ -82,13 +82,13 @@ impl Parse for Component { } } -pub struct BodyParseConfig { +pub struct BodyParseConfig { pub allow_fields: bool, pub allow_children: bool, pub allow_manual_props: bool, } -impl BodyParseConfig { +impl BodyParseConfig { /// The configuration to parse the root pub fn new_as_body() -> Self { Self { @@ -214,7 +214,7 @@ impl BodyParseConfig { } } -impl ToTokens for Component { +impl ToTokens for Component { fn to_tokens(&self, tokens: &mut TokenStream2) { let name = &self.name; @@ -284,7 +284,7 @@ impl ToTokens for Component { } // the struct's fields info -pub struct ComponentField { +pub struct ComponentField { name: Ident, content: ContentField, } @@ -354,7 +354,7 @@ impl Parse for ComponentField { } } -impl ToTokens for ComponentField { +impl ToTokens for ComponentField { fn to_tokens(&self, tokens: &mut TokenStream2) { let ComponentField { name, content, .. } = self; tokens.append_all(quote! { diff --git a/packages/core-macro/src/rsx/element.rs b/packages/core-macro/src/rsx/element.rs index 451a3d1f9..47a89d98e 100644 --- a/packages/core-macro/src/rsx/element.rs +++ b/packages/core-macro/src/rsx/element.rs @@ -11,13 +11,13 @@ use syn::{ // ======================================= // Parse the VNode::Element type // ======================================= -pub struct Element { +pub struct Element { name: Ident, key: Option, attributes: Vec>, listeners: Vec>, children: Vec>, - is_static: bool, + _is_static: bool, } impl Parse for Element { @@ -66,31 +66,21 @@ impl Parse for Element { attributes, children, listeners, - is_static: false, + _is_static: false, }) } } impl Parse for Element { fn parse(stream: ParseStream) -> Result { - let l_tok = stream.parse::()?; + let _l_tok = stream.parse::()?; let el_name = Ident::parse(stream)?; - // parse the guts - // let content: ParseBuffer; - // syn::braced!(content in stream); - let mut attributes: Vec> = vec![]; let mut listeners: Vec> = vec![]; - let mut children: Vec> = vec![]; - let mut key = None; + let children: Vec> = vec![]; + let key = None; - // loop { - // if stream.peek(Token![>]) { - // break; - // } else { - // } - // } while !stream.peek(Token![>]) { // self-closing if stream.peek(Token![/]) { @@ -101,7 +91,7 @@ impl Parse for Element { name: el_name, key: None, attributes, - is_static: false, + _is_static: false, listeners, children, }); @@ -186,12 +176,12 @@ impl Parse for Element { attributes, children, listeners, - is_static: false, + _is_static: false, }) } } -impl ToTokens for Element { +impl ToTokens for Element { fn to_tokens(&self, tokens: &mut TokenStream2) { let name = &self.name; let attr = &self.attributes; @@ -217,7 +207,7 @@ impl ToTokens for Element { /// ======================================= /// Parse a VElement's Attributes /// ======================================= -struct ElementAttr { +struct ElementAttr { element_name: Ident, name: Ident, value: AttrType, @@ -346,13 +336,14 @@ fn parse_rsx_element_field( Ok(()) } -impl ToTokens for ElementAttr { +impl ToTokens for ElementAttr { fn to_tokens(&self, tokens: &mut TokenStream2) { let el_name = &self.element_name; - let name_str = self.name.to_string(); let nameident = &self.name; - let namespace = match &self.namespace { + // TODO: wire up namespace + let _name_str = self.name.to_string(); + let _namespace = match &self.namespace { Some(t) => quote! { Some(#t) }, None => quote! { None }, }; @@ -376,15 +367,3 @@ impl ToTokens for ElementAttr { } } } - -// __cx.attr(#name, format_args_f!(#value), #namespace, false) -// -// AttrType::BumpText(value) => tokens.append_all(quote! { -// __cx.attr(#name, format_args_f!(#value), #namespace, false) -// }), -// __cx.attr(#name_str, #exp, #namespace, false) - -// AttrType::FieldTokens(exp) => tokens.append_all(quote! { -// dioxus_elements::#el_name.#nameident(__cx, format_args_f!(#value)) -// __cx.attr(#name_str, #exp, #namespace, false) -// }), diff --git a/packages/core-macro/src/rsx/fragment.rs b/packages/core-macro/src/rsx/fragment.rs index e1b57b2d4..91141538e 100644 --- a/packages/core-macro/src/rsx/fragment.rs +++ b/packages/core-macro/src/rsx/fragment.rs @@ -8,22 +8,18 @@ //! - [ ] Children //! - [ ] Keys +use super::{AmbiguousElement, HtmlOrRsx, AS_HTML, AS_RSX}; use syn::parse::ParseBuffer; - -use super::{AmbiguousElement, AS_HTML, AS_RSX, HTML_OR_RSX}; - use { - proc_macro::TokenStream, - proc_macro2::{Span, TokenStream as TokenStream2}, + proc_macro2::TokenStream as TokenStream2, quote::{quote, ToTokens, TokenStreamExt}, syn::{ - ext::IdentExt, parse::{Parse, ParseStream}, - token, Error, Expr, ExprClosure, Ident, LitBool, LitStr, Path, Result, Token, + Ident, Result, Token, }, }; -pub struct Fragment { +pub struct Fragment { children: Vec>, } @@ -67,7 +63,7 @@ impl Parse for Fragment { } } -impl ToTokens for Fragment { +impl ToTokens for Fragment { fn to_tokens(&self, tokens: &mut TokenStream2) { let childs = &self.children; let children = quote! { diff --git a/packages/core-macro/src/rsx/mod.rs b/packages/core-macro/src/rsx/mod.rs index ce8bef36e..57f3d9bf7 100644 --- a/packages/core-macro/src/rsx/mod.rs +++ b/packages/core-macro/src/rsx/mod.rs @@ -26,6 +26,6 @@ pub use element::*; pub use fragment::*; pub use node::*; -pub type HTML_OR_RSX = bool; +pub(crate) type HtmlOrRsx = bool; pub const AS_HTML: bool = true; pub const AS_RSX: bool = false; diff --git a/packages/core-macro/src/rsx/node.rs b/packages/core-macro/src/rsx/node.rs index 33bb44e65..9d0475bb7 100644 --- a/packages/core-macro/src/rsx/node.rs +++ b/packages/core-macro/src/rsx/node.rs @@ -10,7 +10,7 @@ use syn::{ // ============================================== // Parse any div {} as a VElement // ============================================== -pub enum BodyNode { +pub enum BodyNode { Element(AmbiguousElement), Text(TextNode), RawExpr(Expr), @@ -57,7 +57,7 @@ impl Parse for BodyNode { } } -impl ToTokens for BodyNode { +impl ToTokens for BodyNode { fn to_tokens(&self, tokens: &mut TokenStream2) { match &self { BodyNode::Element(el) => el.to_tokens(tokens),