From bfc3606bab8dfb64c44a26c44570b658a27b113a Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Thu, 18 Sep 2025 17:21:52 +0200 Subject: [PATCH 1/2] Reduce code duplication --- include/argparse.hpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 51f7a66..86c99cc 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -228,7 +228,7 @@ namespace argparse std::exit(EXIT_SUCCESS); } - return get_parameters(m_arguments | std::views::transform([](auto const & up) -> Argument & { return *up; })); + return get_parameters(m_arguments | std::views::transform(cast_to_argument)); } catch (VersionRequested const &) { @@ -238,7 +238,7 @@ namespace argparse std::exit(EXIT_SUCCESS); } - return get_parameters(m_arguments | std::views::transform([](auto const & up) -> Argument & { return *up; })); + return get_parameters(m_arguments | std::views::transform(cast_to_argument)); } catch (parsing_error const & e) { @@ -339,7 +339,7 @@ namespace argparse auto parse_args(Tokens tokens) -> Parameters { - auto arguments = m_arguments | std::views::transform([](auto const & up) -> Argument & { return *up; }); + auto arguments = m_arguments | std::views::transform(cast_to_argument); parse_optional_arguments(arguments, tokens); parse_positional_arguments(arguments, tokens); @@ -1773,6 +1773,11 @@ namespace argparse Options m_options; }; + static auto cast_to_argument(ArgumentUptr const & up) -> Argument & + { + return *up; + } + ArgumentUptrs m_arguments; OptString m_prog; OptString m_usage; From 5b20a7b611e726dcb9a5fe8225157f0a6b8cc540 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Thu, 18 Sep 2025 17:24:29 +0200 Subject: [PATCH 2/2] Reduce code duplication --- include/argparse.hpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 86c99cc..0f99df1 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -306,13 +306,13 @@ namespace argparse auto format_usage() const -> std::string { auto const formatter = Formatter(); - return formatter.format_usage(m_arguments | std::views::transform([](auto const & ca) -> Formattable const & { return *ca; }), m_usage, m_prog); + return formatter.format_usage(m_arguments | std::views::transform(cast_to_formattable), m_usage, m_prog); } auto format_help() const -> std::string { auto const formatter = Formatter(); - return formatter.format_help(m_arguments | std::views::transform([](auto const & ca) -> Formattable const & { return *ca; }), m_prog, m_usage, m_description, m_epilog); + return formatter.format_help(m_arguments | std::views::transform(cast_to_formattable), m_prog, m_usage, m_description, m_epilog); } auto format_version() const -> std::string @@ -1778,6 +1778,11 @@ namespace argparse return *up; } + static auto cast_to_formattable(ArgumentUptr const & up) -> Formattable const & + { + return *up; + } + ArgumentUptrs m_arguments; OptString m_prog; OptString m_usage;