kconfig_impl 0.0.1

Crate containing macros for kconfig
Documentation
use std::str::FromStr;

use kconfig_compiler::{kcfg_to_tokenstream, kcfgc::Kcfgc};
use syn::{parse_macro_input, ExprLit, Lit};

#[proc_macro]
pub fn kcfg_inline(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
    let input = parse_macro_input!(input as ExprLit);
    match input.lit {
        Lit::Str(xml) => kcfg_to_tokenstream(&Kcfgc::default(), xml.value().as_str())
            .unwrap()
            .into(),
        _ => panic!("Not valid Input"),
    }
}

#[proc_macro]
pub fn kcfgc_inline(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
    let input = parse_macro_input!(input as ExprLit);
    let x = match input.lit {
        Lit::Str(kcfgc) => Kcfgc::from_str(kcfgc.value().as_str()).unwrap(),
        _ => panic!("Invalid Input for kcfgc"),
    };
    let kcfg = x.get_kcfg_contents().unwrap();
    kcfg_to_tokenstream(&x, &kcfg).unwrap().into()
}

#[proc_macro]
pub fn kcfgc(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
    let input = parse_macro_input!(input as ExprLit);
    let x = match input.lit {
        Lit::Str(file) => Kcfgc::from_file(file.value().as_str()).unwrap(),
        _ => panic!("Invalid Input for kcfgc"),
    };
    let kcfg = x.get_kcfg_contents().unwrap();
    kcfg_to_tokenstream(&x, &kcfg).unwrap().into()
}