From 56d59c369b2ada8a6c758732f618276455d9d79c Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Thu, 13 Nov 2025 23:24:28 +0100 Subject: [PATCH 01/10] Simplify code --- include/argparse.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 60665ae..48d4a6c 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -758,12 +758,12 @@ namespace argparse return process_token(token.m_token, name_for_error); } - auto process_token(std::string const & token, std::function name_for_error) const -> std::any + auto process_token(std::string const & token, std::function /* name_for_error */) const -> std::any { auto const value = m_options.type_handler->from_string(token); if (!value.has_value()) { - throw parsing_error(std::format("argument {}: invalid value: '{}'", name_for_error(), token)); + throw parsing_error(std::format("argument {}: invalid value: '{}'", get_joined_names(), token)); } check_choices(value); return value; From 8f016f6f7cd95809be5cd6d72c491616e926fce7 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Thu, 13 Nov 2025 23:27:55 +0100 Subject: [PATCH 02/10] Simplify code --- include/argparse.hpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 48d4a6c..bf77bd5 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -752,13 +752,13 @@ namespace argparse return m_options.type_handler->transform(values); } - auto consume_token(Token & token, std::function name_for_error) const -> std::any + auto consume_token(Token & token, std::function /* name_for_error */) const -> std::any { token.m_consumed = true; - return process_token(token.m_token, name_for_error); + return process_token(token.m_token); } - auto process_token(std::string const & token, std::function /* name_for_error */) const -> std::any + auto process_token(std::string const & token) const -> std::any { auto const value = m_options.type_handler->from_string(token); if (!value.has_value()) @@ -769,13 +769,13 @@ namespace argparse return value; } - auto consume_tokens(std::ranges::view auto tokens, std::function name_for_error) const -> std::vector + auto consume_tokens(std::ranges::view auto tokens, std::function /* name_for_error */) const -> std::vector { auto result = std::vector(); auto consumed = std::vector(); for (auto & token : tokens) { - result.push_back(process_token(token.m_token, name_for_error)); + result.push_back(process_token(token.m_token)); consumed.push_back(&token); } std::ranges::for_each(consumed, [](auto token) { token->m_consumed = true; }); @@ -854,7 +854,7 @@ namespace argparse } else { - value = impl.process_token(val, name_for_error); + value = impl.process_token(val); } } } @@ -1080,7 +1080,7 @@ namespace argparse } else { - auto const v = impl.process_token(val, name_for_error); + auto const v = impl.process_token(val); impl.append_value(v, value); } } From 672ba1d45f868caae2ab2fbfdc26ce64ea5f51a8 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Thu, 13 Nov 2025 23:31:47 +0100 Subject: [PATCH 03/10] Simplify code --- include/argparse.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index bf77bd5..392024b 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -752,7 +752,7 @@ namespace argparse return m_options.type_handler->transform(values); } - auto consume_token(Token & token, std::function /* name_for_error */) const -> std::any + auto consume_token(Token & token) const -> std::any { token.m_consumed = true; return process_token(token.m_token); @@ -850,7 +850,7 @@ namespace argparse { if (val.empty()) { - value = impl.consume_token(tokens.front(), name_for_error); + value = impl.consume_token(tokens.front()); } else { @@ -892,7 +892,7 @@ namespace argparse { if (!tokens.empty()) { - return impl.consume_token(tokens.front(), name_for_error); + return impl.consume_token(tokens.front()); } else { @@ -1067,7 +1067,7 @@ namespace argparse } else { - auto const v = impl.consume_token(tokens.front(), name_for_error); + auto const v = impl.consume_token(tokens.front()); impl.append_value(v, value); } } @@ -1111,7 +1111,7 @@ namespace argparse { if (!tokens.empty()) { - return m_impl.consume_token(tokens.front(), get_name_for_error()); + return m_impl.consume_token(tokens.front()); } else { @@ -1206,7 +1206,7 @@ namespace argparse { if (!consumable.empty()) { - m_value = m_impl.consume_token(consumable.front(), get_name_for_error()); + m_value = m_impl.consume_token(consumable.front()); } } } From fffc12c8e35497e1dff4a261cea9f39644ab8622 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Thu, 13 Nov 2025 23:34:46 +0100 Subject: [PATCH 04/10] Simplify code --- include/argparse.hpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 392024b..42c6f72 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -746,9 +746,9 @@ namespace argparse return join(m_options.choices | std::views::transform([&](auto const & choice) { return m_options.type_handler->to_string(choice); }), separator); } - auto parse_arguments(std::ranges::view auto tokens, std::function name_for_error) const -> std::any + auto parse_arguments(std::ranges::view auto tokens, std::function /* name_for_error */) const -> std::any { - auto const values = consume_tokens(tokens, name_for_error); + auto const values = consume_tokens(tokens); return m_options.type_handler->transform(values); } @@ -769,7 +769,7 @@ namespace argparse return value; } - auto consume_tokens(std::ranges::view auto tokens, std::function /* name_for_error */) const -> std::vector + auto consume_tokens(std::ranges::view auto tokens) const -> std::vector { auto result = std::vector(); auto consumed = std::vector(); @@ -873,10 +873,10 @@ namespace argparse } private: - auto parse_arguments_number(ArgumentImpl const & impl, std::function name_for_error, std::ranges::view auto tokens) const -> std::any + auto parse_arguments_number(ArgumentImpl const & impl, std::function /* name_for_error */, std::ranges::view auto tokens) const -> std::any { auto const nargs_number = impl.get_nargs_number(); - auto const values = impl.consume_tokens(tokens | std::views::take(nargs_number), name_for_error); + auto const values = impl.consume_tokens(tokens | std::views::take(nargs_number)); if (values.size() < nargs_number) { throw parsing_error(std::format("argument {}: expected {} argument{}", impl.get_joined_names(), std::to_string(nargs_number), nargs_number > 1 ? "s" : "")); @@ -905,7 +905,7 @@ namespace argparse } case one_or_more: { - if (auto const values = impl.consume_tokens(tokens, name_for_error); !values.empty()) + if (auto const values = impl.consume_tokens(tokens); !values.empty()) { return impl.get_transformed(values); } @@ -1056,13 +1056,13 @@ namespace argparse class AppendAction { public: - auto perform(ArgumentImpl const & impl, std::any & value, std::function name_for_error, std::string const & val, std::ranges::view auto tokens) const -> void + auto perform(ArgumentImpl const & impl, std::any & value, std::function /* name_for_error */, std::string const & val, std::ranges::view auto tokens) const -> void { if (val.empty()) { if (!value.has_value()) { - auto const values = impl.consume_tokens(tokens | std::views::take(1), name_for_error); + auto const values = impl.consume_tokens(tokens | std::views::take(1)); value = impl.get_transformed(values); } else @@ -1075,7 +1075,7 @@ namespace argparse { if (!value.has_value()) { - auto const values = impl.consume_tokens(std::views::single(Token{val}), name_for_error); + auto const values = impl.consume_tokens(std::views::single(Token{val})); value = impl.get_transformed(values); } else @@ -1124,7 +1124,7 @@ namespace argparse } case one_or_more: { - if (auto const values = m_impl.consume_tokens(tokens, get_name_for_error()); !values.empty()) + if (auto const values = m_impl.consume_tokens(tokens); !values.empty()) { return m_impl.get_transformed(values); } From ee5393ff6febe4a9020dcdbf35169c12ffbe71b2 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Thu, 13 Nov 2025 23:38:55 +0100 Subject: [PATCH 05/10] Simplify code --- include/argparse.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 42c6f72..4b3a9d0 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -746,7 +746,7 @@ namespace argparse return join(m_options.choices | std::views::transform([&](auto const & choice) { return m_options.type_handler->to_string(choice); }), separator); } - auto parse_arguments(std::ranges::view auto tokens, std::function /* name_for_error */) const -> std::any + auto parse_arguments(std::ranges::view auto tokens) const -> std::any { auto const values = consume_tokens(tokens); return m_options.type_handler->transform(values); @@ -884,7 +884,7 @@ namespace argparse return impl.get_transformed(values); } - auto parse_arguments_option(ArgumentImpl const & impl, std::function name_for_error, std::ranges::view auto tokens) const -> std::any + auto parse_arguments_option(ArgumentImpl const & impl, std::function /* name_for_error */, std::ranges::view auto tokens) const -> std::any { switch (impl.get_nargs_option()) { @@ -901,7 +901,7 @@ namespace argparse } case zero_or_more: { - return impl.parse_arguments(tokens, name_for_error); + return impl.parse_arguments(tokens); } case one_or_more: { @@ -1120,7 +1120,7 @@ namespace argparse } case zero_or_more: { - return m_impl.parse_arguments(tokens, get_name_for_error()); + return m_impl.parse_arguments(tokens); } case one_or_more: { @@ -1195,7 +1195,7 @@ namespace argparse { if (has_nargs_number()) { - m_value = m_impl.parse_arguments(consumable | std::views::take(get_nargs_number()), get_name_for_error()); + m_value = m_impl.parse_arguments(consumable | std::views::take(get_nargs_number())); } else { From b797228b1147b0801967f949114c72ba87cddfdb Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Thu, 13 Nov 2025 23:40:46 +0100 Subject: [PATCH 06/10] Simplify code --- include/argparse.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 4b3a9d0..4065e66 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -839,7 +839,7 @@ namespace argparse { if (impl.has_nargs_number()) { - value = parse_arguments_number(impl, name_for_error, tokens); + value = parse_arguments_number(impl, tokens); } else { @@ -873,7 +873,7 @@ namespace argparse } private: - auto parse_arguments_number(ArgumentImpl const & impl, std::function /* name_for_error */, std::ranges::view auto tokens) const -> std::any + auto parse_arguments_number(ArgumentImpl const & impl, std::ranges::view auto tokens) const -> std::any { auto const nargs_number = impl.get_nargs_number(); auto const values = impl.consume_tokens(tokens | std::views::take(nargs_number)); From 1ee8c302d243ad6ad691469078f1d58367eff003 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Thu, 13 Nov 2025 23:42:42 +0100 Subject: [PATCH 07/10] Simplify code --- include/argparse.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 4065e66..94e642a 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -833,7 +833,7 @@ namespace argparse class StoreAction { public: - auto perform(ArgumentImpl const & impl, std::any & value, std::function name_for_error, std::string const & val, std::ranges::view auto tokens) const -> void + auto perform(ArgumentImpl const & impl, std::any & value, std::function /* name_for_error */, std::string const & val, std::ranges::view auto tokens) const -> void { if (impl.has_nargs()) { @@ -843,7 +843,7 @@ namespace argparse } else { - value = parse_arguments_option(impl, name_for_error, tokens); + value = parse_arguments_option(impl, tokens); } } else @@ -884,7 +884,7 @@ namespace argparse return impl.get_transformed(values); } - auto parse_arguments_option(ArgumentImpl const & impl, std::function /* name_for_error */, std::ranges::view auto tokens) const -> std::any + auto parse_arguments_option(ArgumentImpl const & impl, std::ranges::view auto tokens) const -> std::any { switch (impl.get_nargs_option()) { From 34ef32c65fd056b986464731cea85c21153e6307 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Thu, 13 Nov 2025 23:45:38 +0100 Subject: [PATCH 08/10] Simplify code --- include/argparse.hpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 94e642a..0787e12 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -833,7 +833,7 @@ namespace argparse class StoreAction { public: - auto perform(ArgumentImpl const & impl, std::any & value, std::function /* name_for_error */, std::string const & val, std::ranges::view auto tokens) const -> void + auto perform(ArgumentImpl const & impl, std::any & value, std::string const & val, std::ranges::view auto tokens) const -> void { if (impl.has_nargs()) { @@ -923,7 +923,7 @@ namespace argparse class StoreConstAction { public: - auto perform(ArgumentImpl const & impl, std::any & value, std::function /* name_for_error */, std::string const & /* val */, std::ranges::view auto /* tokens */) const -> void + auto perform(ArgumentImpl const & impl, std::any & value, std::string const & /* val */, std::ranges::view auto /* tokens */) const -> void { value = impl.get_const(); } @@ -945,7 +945,7 @@ namespace argparse class StoreTrueAction { public: - auto perform(ArgumentImpl const & /* impl */, std::any & value, std::function /* name_for_error */, std::string const & /* val */, std::ranges::view auto /* tokens */) const -> void + auto perform(ArgumentImpl const & /* impl */, std::any & value, std::string const & /* val */, std::ranges::view auto /* tokens */) const -> void { value = true; } @@ -967,7 +967,7 @@ namespace argparse class StoreFalseAction { public: - auto perform(ArgumentImpl const & /* impl */, std::any & value, std::function /* name_for_error */, std::string const & /* val */, std::ranges::view auto /* tokens */) const -> void + auto perform(ArgumentImpl const & /* impl */, std::any & value, std::string const & /* val */, std::ranges::view auto /* tokens */) const -> void { value = false; } @@ -989,7 +989,7 @@ namespace argparse class HelpAction { public: - auto perform(ArgumentImpl const & /* impl */, std::any & value, std::function /* name_for_error */, std::string const & /* val */, std::ranges::view auto /* tokens */) const -> void + auto perform(ArgumentImpl const & /* impl */, std::any & value, std::string const & /* val */, std::ranges::view auto /* tokens */) const -> void { value = true; throw HelpRequested(); @@ -1008,7 +1008,7 @@ namespace argparse class VersionAction { public: - auto perform(ArgumentImpl const & /* impl */, std::any & value, std::function /* name_for_error */, std::string const & /* val */, std::ranges::view auto /* tokens */) const -> void + auto perform(ArgumentImpl const & /* impl */, std::any & value, std::string const & /* val */, std::ranges::view auto /* tokens */) const -> void { value = true; throw VersionRequested(); @@ -1027,7 +1027,7 @@ namespace argparse class CountAction { public: - auto perform(ArgumentImpl const & /* impl */, std::any & value, std::function /* name_for_error */, std::string const & /* val */, std::ranges::view auto /* tokens */) const -> void + auto perform(ArgumentImpl const & /* impl */, std::any & value, std::string const & /* val */, std::ranges::view auto /* tokens */) const -> void { if (!value.has_value()) { @@ -1056,7 +1056,7 @@ namespace argparse class AppendAction { public: - auto perform(ArgumentImpl const & impl, std::any & value, std::function /* name_for_error */, std::string const & val, std::ranges::view auto tokens) const -> void + auto perform(ArgumentImpl const & impl, std::any & value, std::string const & val, std::ranges::view auto tokens) const -> void { if (val.empty()) { @@ -1330,7 +1330,7 @@ namespace argparse private: auto perform_action(std::string const & value, std::ranges::view auto tokens) -> void { - std::visit([&](auto const & action) { action.perform(m_impl, m_value, get_name_for_error(), value, tokens); }, m_action); + std::visit([&](auto const & action) { action.perform(m_impl, m_value, value, tokens); }, m_action); } auto has_arg(auto it) const -> std::string_view From 24adcab07b0ff7e0ef5dd6d42fdec0ea18314025 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Thu, 13 Nov 2025 23:47:40 +0100 Subject: [PATCH 09/10] Simplify code --- include/argparse.hpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 0787e12..7b6b9df 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -1138,11 +1138,6 @@ namespace argparse std::unreachable(); } - auto get_name_for_error() const -> std::function - { - return [&]() { return get_dest_name(); }; - } - static auto get_consumable(Tokens & tokens) { return tokens From b20b2b84b81b38eadba8e08674d33abc2d80fc50 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Thu, 13 Nov 2025 23:48:52 +0100 Subject: [PATCH 10/10] Simplify code --- include/argparse.hpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 7b6b9df..3d07826 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -1408,11 +1408,6 @@ namespace argparse return get_name().substr(1); } - auto get_name_for_error() const -> std::function - { - return [&]() { return get_joined_names(); }; - } - auto check_errors(std::string_view value, std::ranges::view auto tokens) const -> void { std::visit([&](auto const & action) { action.check_errors(m_impl, value, tokens); }, m_action);