pretend-codegen 0.4.0

codegen for pretend.
Documentation
use crate::utils::parse_param_name;
use proc_macro2::TokenStream;
use quote::quote;
use syn::TraitItemMethod;

pub(crate) fn implement_query(method: &TraitItemMethod) -> TokenStream {
    if has_query(method) {
        quote! {
            let url = pretend::internal::build_query(url, &query)?;
        }
    } else {
        TokenStream::new()
    }
}

fn has_query(method: &TraitItemMethod) -> bool {
    let inputs = &method.sig.inputs;
    inputs
        .iter()
        .filter_map(parse_param_name)
        .any(|param| param == "query")
}