wip: remove HTML macro and add custom fields
This commit is contained in:
1 parent
a42711a324
commit
9f7eb0f600
9 files changed
+290
-758
No files matched your search
@@ -10,13 +10,13 @@ use syn::{
|
||||
// ==============================================
|
||||
// Parse any div {} as a VElement
|
||||
// ==============================================
|
||||
pub enum BodyNode<const AS: HtmlOrRsx> {
|
||||
Element(AmbiguousElement<AS>),
|
||||
pub enum BodyNode {
|
||||
Element(AmbiguousElement),
|
||||
Text(TextNode),
|
||||
RawExpr(Expr),
|
||||
}
|
||||
|
||||
impl Parse for BodyNode<AS_RSX> {
|
||||
impl Parse for BodyNode {
|
||||
fn parse(stream: ParseStream) -> Result<Self> {
|
||||
// Supposedly this approach is discouraged due to inability to return proper errors
|
||||
// TODO: Rework this to provide more informative errors
|
||||
@@ -31,33 +31,11 @@ impl Parse for BodyNode<AS_RSX> {
|
||||
return Ok(BodyNode::Text(stream.parse::<TextNode>()?));
|
||||
}
|
||||
|
||||
Ok(BodyNode::Element(
|
||||
stream.parse::<AmbiguousElement<AS_RSX>>()?,
|
||||
))
|
||||
}
|
||||
}
|
||||
impl Parse for BodyNode<AS_HTML> {
|
||||
fn parse(stream: ParseStream) -> Result<Self> {
|
||||
// Supposedly this approach is discouraged due to inability to return proper errors
|
||||
// TODO: Rework this to provide more informative errors
|
||||
|
||||
if stream.peek(token::Brace) {
|
||||
let content;
|
||||
syn::braced!(content in stream);
|
||||
return Ok(BodyNode::RawExpr(content.parse::<Expr>()?));
|
||||
}
|
||||
|
||||
if stream.peek(LitStr) {
|
||||
return Ok(BodyNode::Text(stream.parse::<TextNode>()?));
|
||||
}
|
||||
|
||||
Ok(BodyNode::Element(
|
||||
stream.parse::<AmbiguousElement<AS_HTML>>()?,
|
||||
))
|
||||
Ok(BodyNode::Element(stream.parse::<AmbiguousElement>()?))
|
||||
}
|
||||
}
|
||||
|
||||
impl<const AS: HtmlOrRsx> ToTokens for BodyNode<AS> {
|
||||
impl ToTokens for BodyNode {
|
||||
fn to_tokens(&self, tokens: &mut TokenStream2) {
|
||||
match &self {
|
||||
BodyNode::Element(el) => el.to_tokens(tokens),
|
||||
|
||||
Reference in new issue
Block a user