inline-doc 0.1.0

Embed markdown/text files as documentation
Documentation
use std::fs::read_to_string;

use quote::quote;
use syn::{parse_macro_input, LitStr};

#[proc_macro_attribute]
pub fn inline_doc(
    attr: proc_macro::TokenStream,
    input: proc_macro::TokenStream,
) -> proc_macro::TokenStream {
    let input: proc_macro2::TokenStream = input.into();

    let path = parse_macro_input!(attr as LitStr);
    let path = path.value();

    let md = read_to_string(&path).unwrap_or_else(|_| panic!("Could not find {path:?}"));
    let md = format!("\n\n{}\n\n\n", md.trim());

    quote! {
        #[doc = #md]
        #input
    }
    .into()
}