vimwiki_macros 0.1.0

Macro library that provides macros to generate vimwiki language at compile time.
Documentation
use crate::tokens::{utils::root_crate, Tokenize, TokenizeContext};
use proc_macro2::TokenStream;
use quote::quote;
use vimwiki_core::Placeholder;

impl_tokenize!(tokenize_placeholder, Placeholder<'a>, 'a);
fn tokenize_placeholder(
    ctx: &TokenizeContext,
    placeholder: &Placeholder,
) -> TokenStream {
    let root = root_crate();
    match &placeholder {
        Placeholder::Date(x) => {
            let t = do_tokenize!(ctx, &x);
            quote! { #root::Placeholder::Date(#t) }
        }
        Placeholder::NoHtml => {
            quote! { #root::Placeholder::NoHtml }
        }
        Placeholder::Other { name, value } => {
            let name_t = do_tokenize!(ctx, &name);
            let value_t = do_tokenize!(ctx, &value);
            quote! {
                #root::Placeholder::Other {
                    name: #name_t,
                    value: #value_t,
                }
            }
        }
        Placeholder::Template(x) => {
            let t = do_tokenize!(ctx, &x);
            quote! { #root::Placeholder::Template(#t) }
        }
        Placeholder::Title(x) => {
            let t = do_tokenize!(ctx, &x);
            quote! { #root::Placeholder::Title(#t) }
        }
    }
}