fixed fn is_field_without_subcommand()
This commit is contained in:
parent
eca1aba016
commit
80d5022bba
3 changed files with 24 additions and 21 deletions
|
|
@ -4,12 +4,11 @@ use proc_macro_error::abort_call_site;
|
|||
use syn;
|
||||
use quote::quote;
|
||||
|
||||
pub fn field_without_subcommand(field: &syn::Field) -> proc_macro2::TokenStream {
|
||||
let ident_field = &field.clone().ident.expect("this field does not exist");
|
||||
pub fn is_field_without_subcommand(field: &syn::Field) -> bool {
|
||||
if field.attrs.is_empty() {
|
||||
quote! {#ident_field}
|
||||
} else {
|
||||
match field.attrs.iter()
|
||||
return true
|
||||
}
|
||||
match field.attrs.iter()
|
||||
.filter(|attr| attr.path.is_ident("interactive_clap".into()))
|
||||
.map(|attr| attr.tokens.clone())
|
||||
.flatten()
|
||||
|
|
@ -25,12 +24,8 @@ pub fn field_without_subcommand(field: &syn::Field) -> proc_macro2::TokenStream
|
|||
_ => abort_call_site!("Only option `TokenTree::Group` is needed")
|
||||
}
|
||||
})
|
||||
.map(|_| {
|
||||
quote! {#ident_field}
|
||||
})
|
||||
.next() {
|
||||
Some(token_stream) => token_stream,
|
||||
None => quote! ()
|
||||
Some(token_stream) => true,
|
||||
None => false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,11 +15,15 @@ pub fn from_cli_for_struct(ast: &syn::DeriveInput, fields: &syn::Fields) -> proc
|
|||
return quote! ();
|
||||
};
|
||||
|
||||
let fields_without_subcommand = fields.iter().map(|field| {
|
||||
super::fields_without_subcommand::field_without_subcommand(field)
|
||||
})
|
||||
.filter(|token_stream| !token_stream.is_empty())
|
||||
.collect::<Vec<_>>();
|
||||
let fields_without_subcommand = fields.iter()
|
||||
.filter(|field| {
|
||||
super::fields_without_subcommand::is_field_without_subcommand(field)
|
||||
})
|
||||
.map(|field| {
|
||||
let ident_field = &field.clone().ident.expect("this field does not exist");
|
||||
quote! {#ident_field}
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let fields_value = fields.iter().map(|field| {
|
||||
fields_value(field)
|
||||
|
|
|
|||
|
|
@ -11,11 +11,15 @@ pub fn from_cli_arg(ast: &syn::DeriveInput, fields: &syn::Fields) -> Vec<proc_ma
|
|||
return vec![quote! ()];
|
||||
};
|
||||
|
||||
let fields_without_subcommand = fields.iter().map(|field| {
|
||||
super::fields_without_subcommand::field_without_subcommand(field)
|
||||
})
|
||||
.filter(|token_stream| !token_stream.is_empty())
|
||||
.collect::<Vec<_>>();
|
||||
let fields_without_subcommand = fields.iter()
|
||||
.filter(|field| {
|
||||
super::fields_without_subcommand::is_field_without_subcommand(field)
|
||||
})
|
||||
.map(|field| {
|
||||
let ident_field = &field.clone().ident.expect("this field does not exist");
|
||||
quote! {#ident_field}
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let fields_with_skip_default_from_cli = fields.iter().map(|field| {
|
||||
super::fields_with_skip_default_from_cli::field_with_skip_default_from_cli(field)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue