mirror of
https://github.com/matrix-construct/construct
synced 2025-03-13 21:10:32 +01:00
ircd: Add tokens_before() to suite.
This commit is contained in:
parent
34abaea046
commit
6574da4b22
2 changed files with 31 additions and 0 deletions
|
@ -83,6 +83,8 @@ namespace ircd
|
|||
string_view token_first(const string_view &str, const char *const &sep);
|
||||
string_view tokens_after(const string_view &str, const char &sep, const size_t &at);
|
||||
string_view tokens_after(const string_view &str, const char *const &sep, const size_t &at);
|
||||
string_view tokens_before(const string_view &str, const char &sep, const size_t &at);
|
||||
string_view tokens_before(const string_view &str, const char *const &sep, const size_t &at);
|
||||
}
|
||||
|
||||
template<size_t N,
|
||||
|
|
|
@ -24,6 +24,35 @@
|
|||
// ircd/tokens.h
|
||||
//
|
||||
|
||||
ircd::string_view
|
||||
ircd::tokens_before(const string_view &str,
|
||||
const char &sep,
|
||||
const size_t &i)
|
||||
{
|
||||
const char ssep[2] { sep, '\0' };
|
||||
return tokens_before(str, ssep, i);
|
||||
}
|
||||
|
||||
ircd::string_view
|
||||
ircd::tokens_before(const string_view &str,
|
||||
const char *const &sep,
|
||||
const size_t &i)
|
||||
{
|
||||
using type = string_view;
|
||||
using iter = typename type::const_iterator;
|
||||
using delim = boost::char_separator<char>;
|
||||
|
||||
const delim d(sep);
|
||||
const boost::tokenizer<delim, iter, type> view(str, d);
|
||||
|
||||
string_view ret;
|
||||
auto it(begin(view));
|
||||
for(size_t j(0); it != end(view) && j < i; ++it, j++)
|
||||
ret = { begin(view)->data(), it->data() + it->size() };
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
ircd::string_view
|
||||
ircd::tokens_after(const string_view &str,
|
||||
const char &sep,
|
||||
|
|
Loading…
Add table
Reference in a new issue