xee-xpath-macros 0.1.4

Proc macros for xee-interpreter function library
Documentation
extern crate proc_macro;

#[macro_use]
mod error;
mod convert;
mod parse;
mod wrapper;

use quote::quote;
use syn::parse_macro_input;

use parse::XPathFnOptions;
use wrapper::xpath_fn_wrapper;

#[proc_macro_attribute]
pub fn xpath_fn(
    attr: proc_macro::TokenStream,
    input: proc_macro::TokenStream,
) -> proc_macro::TokenStream {
    let options = parse_macro_input!(attr as XPathFnOptions);
    let ast = parse_macro_input!(input as syn::ItemFn);
    let wrapper = xpath_fn_wrapper(&ast, &options).unwrap_or_else(|e| e.into_compile_error());
    quote!(
        #ast
        #wrapper
    )
    .into()
}