From fabef0134cce2351e7b68bf7929fd1b875e93ec1 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Tue, 4 Mar 2025 23:32:58 +0100 Subject: [PATCH 1/3] Refactor: use view pipe syntax --- include/argparse.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/argparse.h b/include/argparse.h index bcc48ec0..72913c8e 100644 --- a/include/argparse.h +++ b/include/argparse.h @@ -687,7 +687,7 @@ namespace argparse auto parse_args(tokens args) -> tokens override { - auto consumable = std::ranges::drop_while_view(args, [](auto const & token) { return token.m_consumed; }); + auto consumable = args | std::views::drop_while([](auto const & token) { return token.m_consumed; }); if (has_nargs()) { if (has_nargs_number()) From fb9095481b5b34122c95943e0d6943998fa104fe Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Tue, 4 Mar 2025 23:35:17 +0100 Subject: [PATCH 2/3] Refactor: use view pipe syntax --- include/argparse.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/argparse.h b/include/argparse.h index 72913c8e..645dcfc5 100644 --- a/include/argparse.h +++ b/include/argparse.h @@ -829,7 +829,8 @@ namespace argparse auto parse_args(tokens args) -> tokens override { - auto consumable = std::ranges::drop_while_view(args, [](auto const & token) { return token.m_consumed; }) + auto consumable = args + | std::views::drop_while([](auto const & token) { return token.m_consumed; }) | std::views::take_while([](auto const & token) { return token.m_token != "--"; }) | std::views::common; for (auto it = consumable.begin(); it != consumable.end(); ++it) From ecc5ff1a215a346d45fbfd2a04381b4aa0c00a99 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Tue, 4 Mar 2025 23:53:25 +0100 Subject: [PATCH 3/3] Refactor: replace raw loop with a function --- include/argparse.h | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/include/argparse.h b/include/argparse.h index 645dcfc5..acd8617e 100644 --- a/include/argparse.h +++ b/include/argparse.h @@ -1101,13 +1101,7 @@ namespace argparse auto count_args(auto it, auto end) const -> std::size_t { - auto result = std::size_t(0); - while (it != end && !it->m_token.starts_with('-')) - { - ++result; - ++it; - } - return result; + return std::ranges::distance(std::ranges::subrange(it, end) | std::views::take_while([](auto const & arg) { return !arg.m_token.starts_with('-'); })); } auto consume_arg(Token & arg) const -> std::any