mirror of
https://github.com/DioxusLabs/dioxus
synced 2025-02-20 07:38:27 +00:00
fix raw attributes with dynamic values
This commit is contained in:
parent
30b124189c
commit
be4b0c801a
1 changed files with 11 additions and 12 deletions
|
@ -4,12 +4,7 @@ use super::*;
|
||||||
|
|
||||||
use proc_macro2::{Span, TokenStream as TokenStream2};
|
use proc_macro2::{Span, TokenStream as TokenStream2};
|
||||||
use quote::{quote, ToTokens, TokenStreamExt};
|
use quote::{quote, ToTokens, TokenStreamExt};
|
||||||
use syn::{
|
use syn::{Expr, Ident, LitStr};
|
||||||
parse::{Parse, ParseStream},
|
|
||||||
punctuated::Punctuated,
|
|
||||||
spanned::Spanned,
|
|
||||||
Expr, Ident, LitStr, Result, Token,
|
|
||||||
};
|
|
||||||
|
|
||||||
#[derive(PartialEq, Eq, Clone, Debug, Hash)]
|
#[derive(PartialEq, Eq, Clone, Debug, Hash)]
|
||||||
pub struct ElementAttrNamed {
|
pub struct ElementAttrNamed {
|
||||||
|
@ -38,13 +33,17 @@ impl ToTokens for ElementAttrNamed {
|
||||||
fn to_tokens(&self, tokens: &mut TokenStream2) {
|
fn to_tokens(&self, tokens: &mut TokenStream2) {
|
||||||
let ElementAttrNamed { el_name, attr } = self;
|
let ElementAttrNamed { el_name, attr } = self;
|
||||||
|
|
||||||
let ns = |name| match el_name {
|
let ns = |name: &ElementAttrName| match (el_name, name) {
|
||||||
ElementName::Ident(i) => quote! { dioxus_elements::#i::#name.1 },
|
(ElementName::Ident(i), ElementAttrName::BuiltIn(_)) => {
|
||||||
ElementName::Custom(_) => quote! { None },
|
quote! { dioxus_elements::#i::#name.1 }
|
||||||
|
}
|
||||||
|
_ => quote! { None },
|
||||||
};
|
};
|
||||||
let volitile = |name| match el_name {
|
let volitile = |name: &ElementAttrName| match (el_name, name) {
|
||||||
ElementName::Ident(_) => quote! { #el_name::#name.2 },
|
(ElementName::Ident(i), ElementAttrName::BuiltIn(_)) => {
|
||||||
ElementName::Custom(_) => quote! { false },
|
quote! { dioxus_elements::#i::#name.2 }
|
||||||
|
}
|
||||||
|
_ => quote! { false },
|
||||||
};
|
};
|
||||||
let attribute = |name: &ElementAttrName| match name {
|
let attribute = |name: &ElementAttrName| match name {
|
||||||
ElementAttrName::BuiltIn(name) => match el_name {
|
ElementAttrName::BuiltIn(name) => match el_name {
|
||||||
|
|
Loading…
Add table
Reference in a new issue