From 3b48447469ff5c2ec2729dbf0ececcc61421dc38 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Mon, 6 Oct 2025 22:39:29 +0200 Subject: [PATCH 01/12] Refactor: replace raw loop with a function --- include/argparse.hpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 81442dd..23efa5d 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -426,11 +426,10 @@ namespace argparse static auto parse_positional_arguments(std::ranges::view auto arguments, Tokens & tokens) -> void { - for (auto & argument : arguments - | std::views::filter(&Argument::is_positional)) - { - argument.parse_tokens(tokens); - } + std::ranges::for_each( + arguments | std::views::filter(&Argument::is_positional), + [&](auto & argument) { argument.parse_tokens(tokens); } + ); } static auto consume_pseudo_arguments(Tokens & tokens) -> void From fa35a608fd37aab2be11b54112405916fa6241d6 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Mon, 6 Oct 2025 22:40:05 +0200 Subject: [PATCH 02/12] Refactor: replace raw loop with a function --- include/argparse.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 23efa5d..ae68932 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -434,11 +434,11 @@ namespace argparse static auto consume_pseudo_arguments(Tokens & tokens) -> void { - for (auto & token : tokens - | std::views::filter([](auto const & t) { return t.m_token == "--"; })) - { - token.m_consumed = true; - } + std::ranges::for_each( + tokens + | std::views::filter([](auto const & token) { return token.m_token == "--"; }), + [](auto & token) { token.m_consumed = true; } + ); } static auto check_unrecognised_arguments(Tokens const & tokens) -> void From 04ab53dc46f8ad681f567d83440443b1402bf197 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Mon, 6 Oct 2025 22:41:16 +0200 Subject: [PATCH 03/12] Refactor: replace raw loop with a function --- include/argparse.hpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index ae68932..e50547a 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -471,18 +471,21 @@ namespace argparse { auto error_message = OptString(); - for (auto const & argument : arguments - | std::views::filter([](auto const & arg) { return arg.is_required() && !arg.has_value(); })) - { - if (!error_message) - { - error_message = "the following arguments are required: " + argument.get_joined_names(); - } - else - { - *error_message += " " + argument.get_joined_names(); - } - } + std::ranges::for_each( + arguments + | std::views::filter([](auto const & argument) { return argument.is_required() && !argument.has_value(); }), + [&](auto const & argument) + { + if (!error_message) + { + error_message = "the following arguments are required: " + argument.get_joined_names(); + } + else + { + *error_message += " " + argument.get_joined_names(); + } + } + ); if (error_message) { From 4442eac4728e386406278b5d966b0728f2947d82 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Mon, 6 Oct 2025 22:41:30 +0200 Subject: [PATCH 04/12] Refactor: replace raw loop with a function --- include/argparse.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index e50547a..cab5cf7 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -497,10 +497,10 @@ namespace argparse { auto result = Parameters(); - for (auto const & argument : arguments) - { - result.insert(argument.get_dest_name(), argument.get_value()); - } + std::ranges::for_each( + arguments, + [&](auto const & argument) { result.insert(argument.get_dest_name(), argument.get_value()); } + ); return result; } From 820e33c1f82cf3a2127040452b5403bcf5a9130f Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Mon, 6 Oct 2025 22:41:46 +0200 Subject: [PATCH 05/12] Refactor: replace raw loop with a function --- include/argparse.hpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index cab5cf7..65d3656 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -790,11 +790,14 @@ namespace argparse { auto result = std::vector(); auto consumed = std::vector(); - for (auto & token : tokens) - { - result.push_back(process_token(token.m_token)); - consumed.push_back(&token); - } + std::ranges::for_each( + tokens, + [&](auto & token) + { + result.push_back(process_token(token.m_token)); + consumed.push_back(&token); + } + ); std::ranges::for_each(consumed, [](auto token) { token->m_consumed = true; }); return result; } From 46affbc5c4e621a2d155463d76a4f5280e8dcb9b Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Mon, 6 Oct 2025 22:42:11 +0200 Subject: [PATCH 06/12] Refactor: replace raw loop with a function --- include/argparse.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 65d3656..7c82483 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -1364,12 +1364,12 @@ namespace argparse auto get_name_for_dest() const -> std::string { - for (auto const & name : get_names()) + if (auto const it = std::ranges::find_if( + get_names(), + [](auto const & name) { return name.starts_with("--"); }); + it != get_names().end()) { - if (name.starts_with("--")) - { - return name.substr(2); - } + return it->substr(2); } return get_name().substr(1); From bcc2711c490448a2ab75fb53396897aea0b5f55b Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Mon, 6 Oct 2025 22:42:34 +0200 Subject: [PATCH 07/12] Refactor: replace raw loop with a function --- include/argparse.hpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 7c82483..d743030 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -1609,19 +1609,21 @@ namespace argparse { auto usage_text = std::string(); - for (auto const & argument : arguments - | std::views::filter(&Formattable::is_positional)) - { - if (argument.has_nargs()) - { - usage_text += format_nargs(argument); - } - else - { - usage_text += " "; - usage_text += format_arg(argument); - } - } + std::ranges::for_each( + arguments | std::views::filter(&Formattable::is_positional), + [&](auto const & argument) + { + if (argument.has_nargs()) + { + usage_text += format_nargs(argument); + } + else + { + usage_text += " "; + usage_text += format_arg(argument); + } + } + ); return usage_text; } From e1d25adf3abc44bd2b0f7451174f0bba7ceaf45e Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Mon, 6 Oct 2025 22:42:46 +0200 Subject: [PATCH 08/12] Refactor: replace raw loop with a function --- include/argparse.hpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index d743030..302a258 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -1687,19 +1687,21 @@ namespace argparse { auto help_text = std::string(); - for (auto const & argument : arguments - | std::views::filter(&Formattable::is_positional)) - { - auto help_line = " " + format_arg(argument); + std::ranges::for_each( + arguments | std::views::filter(&Formattable::is_positional), + [&](auto const & argument) + { + auto help_line = " " + format_arg(argument); - if (auto const & help = argument.get_help(); !help.empty()) - { - help_line += help_string_separation(help_line.size()); - help_line += replace_prog(help, prog); - } + if (auto const & help = argument.get_help(); !help.empty()) + { + help_line += help_string_separation(help_line.size()); + help_line += replace_prog(help, prog); + } - help_text += '\n' + help_line; - } + help_text += '\n' + help_line; + } + ); return help_text; } From 544b62d6a09b7592707ca9fddb5b1eb659797970 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Mon, 6 Oct 2025 22:47:24 +0200 Subject: [PATCH 09/12] Refactor: replace raw loop with a function --- include/argparse.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 302a258..312803c 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -411,11 +411,11 @@ namespace argparse static auto parse_optional_arguments(std::ranges::view auto arguments, Tokens & tokens) -> void { - for (auto & argument : arguments - | std::views::filter([](auto const & arg) { return !arg.is_positional() && arg.expects_argument(); })) - { - argument.parse_tokens(tokens); - } + std::ranges::for_each( + arguments + | std::views::filter([](auto const & argument) { return !argument.is_positional() && argument.expects_argument(); }), + [&](auto & argument) { argument.parse_tokens(tokens); } + ); for (auto & argument : arguments | std::views::filter([](auto const & arg) { return !arg.is_positional() && !arg.expects_argument(); })) From 8393420f11e7c9a9bf4d532fd3bbe9cb4056f4da Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Mon, 6 Oct 2025 22:47:33 +0200 Subject: [PATCH 10/12] Refactor: replace raw loop with a function --- include/argparse.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 312803c..38e297d 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -417,11 +417,11 @@ namespace argparse [&](auto & argument) { argument.parse_tokens(tokens); } ); - for (auto & argument : arguments - | std::views::filter([](auto const & arg) { return !arg.is_positional() && !arg.expects_argument(); })) - { - argument.parse_tokens(tokens); - } + std::ranges::for_each( + arguments + | std::views::filter([](auto const & argument) { return !argument.is_positional() && !argument.expects_argument(); }), + [&](auto & argument) { argument.parse_tokens(tokens); } + ); } static auto parse_positional_arguments(std::ranges::view auto arguments, Tokens & tokens) -> void From 91fc715fc44f52474340862f59b360b82043de7b Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Mon, 6 Oct 2025 22:48:46 +0200 Subject: [PATCH 11/12] Refactor: replace raw loop with a function --- include/argparse.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 38e297d..22d2b3c 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -396,10 +396,10 @@ namespace argparse { auto result = std::string(); - for (auto const & string : strings | std::views::take(1)) - { - result += string; - } + std::ranges::for_each( + strings | std::views::take(1), + [&](auto const & string) { result += string; } + ); for (auto const & string : strings | std::views::drop(1)) { result += separator; From d2f9ae41c3fce239c3bceb97eb98d6933368d9d9 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Mon, 6 Oct 2025 22:48:59 +0200 Subject: [PATCH 12/12] Refactor: replace raw loop with a function --- include/argparse.hpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 22d2b3c..04c8048 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -400,11 +400,10 @@ namespace argparse strings | std::views::take(1), [&](auto const & string) { result += string; } ); - for (auto const & string : strings | std::views::drop(1)) - { - result += separator; - result += string; - } + std::ranges::for_each( + strings | std::views::drop(1), + [&](auto const & string) { result += separator; result += string; } + ); return result; }