yew-askama 0.1.0

Create Yew components from Askama templates.
Documentation
use proc_macro2::{Ident, Span};
use quote::quote;
use syn::{Attribute, AttrStyle, MacroDelimiter, Meta, MetaList, Path, PathSegment, token};
use syn::punctuated::Punctuated;
use syn::token::Pound;

pub(crate) fn create_derive_attr() -> Attribute {
    Attribute {
        pound_token: Pound::default(),
        style: AttrStyle::Outer,
        bracket_token: token::Bracket::default(),
        meta: Meta::List(MetaList {
            path: Path {
                leading_colon: None,
                segments: {
                    let mut punctuated = Punctuated::default();
                    punctuated.push(PathSegment {
                        ident: Ident::new("derive", Span::call_site()),
                        arguments: Default::default(),
                    });
                    punctuated
                },
            },
            delimiter: MacroDelimiter::Paren(token::Paren::default()),
            tokens: quote! {
                askama::Template, yew::Properties, PartialEq
            },
        }),
    }
}