seedle-macros 1.8.2

cbor codegeneration
Documentation
use crate::parse::Language;
use heck::*;
use proc_macro2::TokenStream;
use quote::quote;
use syn::Ident;

pub fn method_attrs(lang: Language, method: Ident) -> (TokenStream, TokenStream) {
    use proc_macro2::Literal;
    let attrs = match lang {
        Language::C => quote! {#[no_mangle] pub extern "C"},
        Language::Rust => quote! {pub},
        Language::Typescript => {
            let n = Literal::string(&format!("{}", method.to_string().to_lower_camel_case()));
            quote! {
                #[wasm_bindgen(js_name=#n)]
                #[no_mangle]
                pub extern "C"
            }
        }
    };
    (quote! {#method}, quote! {#attrs})
}