Add variation of 'with' that extracts the trailing string and feeds it back into the callback

This commit is contained in:
gaztin committed 2026-07-11 22:35:01 +02:00
1 parent af1baeeef7
commit 753b64c826
1 file changed
+13
@@ -1,4 +1,6 @@
#pragma once #pragma once
#include "core-library/traits/function-traits.h"
#include <ranges> #include <ranges>
#include <span> #include <span>
#include <string_view> #include <string_view>
@@ -22,6 +24,17 @@ public:
std::invoke(std::forward<F>(function)); std::invoke(std::forward<F>(function));
} }
template<typename F>
requires core::callable_with_argument_converted<F, std::string_view>
void with(std::string_view arg_to_match_view, F&& function) const
{
if (m_arg_view.starts_with(arg_to_match_view))
{
const std::string_view value_part = m_arg_view.substr(arg_to_match_view.size());
std::invoke(std::forward<F>(function), core::first_argument_type_t<F>{value_part});
}
}
private: private:
std::string_view m_arg_view; std::string_view m_arg_view;
std::span<char*> m_modifiers; std::span<char*> m_modifiers;