jockey_derive 0.1.0

Implementation of #[derive(JockeyArguments)] for the jockey crate
Documentation
use util;
pub fn derive_to_args(input: &syn::DeriveInput) -> proc_macro2::TokenStream {
    let struct_def = util::derive_input_to_struct_def(input);

    let mut pushes = quote!{};

    for ref field in struct_def.fields {
        let field_ident = &field.ident;
        let long_option = &field.long_option;

        pushes.extend(match field.ty {
            util::Type::MandatoryString => quote!{
                result.push(#long_option.into());
                result.push(self.#field_ident.clone());
            },
            util::Type::OptionalString => quote! {
                match self.#field_ident {
                    Some(ref val) => {
                        result.push(#long_option.into());
                        result.push(val.clone());
                    },
                    None => {},
                }
            },
            util::Type::Flag => quote! {
                if self.#field_ident {
                    result.push(#long_option.into());
                }
            },
        });
    }

    let result = quote! {
        fn to_args(&self) -> Vec<String> {
            let mut result: Vec<String> = Vec::new();

            #pushes

            result
        }
    };
    result.into()
}