From 2df6182314bda4f228ec06fbc78bd47f87671cbb Mon Sep 17 00:00:00 2001 From: FroVolod Date: Thu, 21 Sep 2023 15:08:18 +0300 Subject: [PATCH] added fn try_parse_from() --- .../src/derives/interactive_clap/mod.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/interactive-clap-derive/src/derives/interactive_clap/mod.rs b/interactive-clap-derive/src/derives/interactive_clap/mod.rs index 0dae9d3..6a07ef7 100644 --- a/interactive-clap-derive/src/derives/interactive_clap/mod.rs +++ b/interactive-clap-derive/src/derives/interactive_clap/mod.rs @@ -189,13 +189,17 @@ pub fn impl_interactive_clap(ast: &syn::DeriveInput) -> TokenStream { impl #name { #(#vec_fn_input_arg)* - fn try_parse() -> Result<#cli_name, clap::Error> { + pub fn try_parse() -> Result<#cli_name, clap::Error> { <#cli_name as clap::Parser>::try_parse() } - fn parse() -> #cli_name { + pub fn parse() -> #cli_name { <#cli_name as clap::Parser>::parse() } + + pub fn try_parse_from(s: &str) -> Result<#cli_name, clap::Error> { + <#cli_name as clap::Parser>::try_parse_from(s.split(" ")) + } } impl From<#name> for #cli_name { @@ -324,13 +328,17 @@ pub fn impl_interactive_clap(ast: &syn::DeriveInput) -> TokenStream { impl #name { #fn_choose_variant - fn try_parse() -> Result<#cli_name, clap::Error> { + pub fn try_parse() -> Result<#cli_name, clap::Error> { <#cli_name as clap::Parser>::try_parse() } - fn parse() -> #cli_name { + pub fn parse() -> #cli_name { <#cli_name as clap::Parser>::parse() } + + pub fn try_parse_from(s: &str) -> Result<#cli_name, clap::Error> { + <#cli_name as clap::Parser>::try_parse_from(s.split(" ")) + } } } }