sq3_derive 0.2.3

SQLite reader with no dependencies
Documentation
use proc_macro::TokenStream;

#[proc_macro_derive(Name)]
pub fn name_derive(input: TokenStream) -> TokenStream {
    let input = input.to_string();
    dbg!(&input);
    let struct_name = input
        .lines()
        .find(|line| line.trim().contains("struct") || line.trim().contains("enum"))
        .and_then(|line| {
            line.split_whitespace()
                .nth(2)
                .map(|s| {
                    let mut modified: Option<&str> = Some(s);
                    for c in [';', '{', '('].iter() {
                        modified = modified
                            .map(|s| {
                                dbg!(s);
                                s.split(*c).next()
                            })
                            .flatten()
                    }
                    modified
                })
                .flatten()
        })
        .expect(format!("Error on macro parsing input: {input}").as_str());

    let output = format!(
        "impl TypeName for {0} {{
            const NAME: &'static str = \"{0}\";
        }}",
        struct_name
    );

    output.parse().unwrap()
}