23 char operator()(
char c)
const noexcept
29 template<invocable_r<
char,
char> OnUpper=
char_to_
char>
30 std::string& camel_to_words(std::string& text, std::string_view separator =
" ", OnUpper onUpper = OnUpper{})
33 while(i != text.end())
39 if((std::ranges::distance(text.begin(), i) > 0))
41 i = text.insert(i, separator.begin(), separator.end());
42 i += std::ranges::distance(separator);
52 template<invocable_r<
char,
char> OnUpper =
char_to_
char>
54 std::string camel_to_words(std::string_view text, std::string_view separator =
" ", OnUpper onUpper = OnUpper{})
56 std::string str{text};
57 return camel_to_words(str, separator, onUpper);
60 std::string& to_camel_case(std::string& text, std::string_view separator=
"");
63 std::string to_camel_case(std::string_view text, std::string_view separator =
"");
65 std::string& to_snake_case(std::string& text);
68 std::string to_snake_case(std::string_view text);
70 std::string& capitalize(std::string& text);
73 std::string capitalize(std::string_view text);
75 std::string& uncapitalize(std::string& text);
78 std::string uncapitalize(std::string_view text);
80 std::string& replace(std::string& text, std::string_view from, std::string_view to);
83 std::string replace(std::string_view text, std::string_view from, std::string_view to);
85 std::string& replace_all(std::string& text, std::string_view from, std::string_view to);
88 std::string replace_all(std::string_view text, std::string_view from, std::string_view to);
90 std::string& replace_all_recursive(std::string& text, std::string_view from, std::string_view to);
93 std::string replace_all_recursive(std::string_view text, std::string_view from, std::string_view to);
100 template<
class... Replacement>
101 requires (std::is_same_v<Replacement, replacement> && ...)
102 std::string& replace_all(std::string& text,
const Replacement&... rs)
104 (replace_all(text, rs.from, rs.to), ...);
109 template<
class... Replacement>
110 requires (std::is_same_v<Replacement, replacement> && ...)
112 std::string replace_all(std::string_view text,
const Replacement&... rs)
114 std::string str{text};
115 return replace_all(str, rs...);
118 std::string& replace_all(std::string& text, std::string_view anyOfLeft, std::string_view from, std::string_view anyOfRight, std::string_view to);
121 std::string replace_all(std::string_view text, std::string_view anyOfLeft, std::string_view from, std::string_view anyOfRight, std::string_view to);
123 template<invocable_r<
bool,
char> LeftPred, invocable_r<
bool,
char> RightPred>
124 std::string& replace_all(std::string& text, LeftPred lPred, std::string_view from, RightPred rPred, std::string_view to)
126 constexpr auto npos{std::string::npos};
127 std::string::size_type pos{};
128 while((pos = text.find(from, pos)) != npos)
130 if( (((pos > 0) && lPred(text[pos - 1])) || ((pos == 0) && lPred(
'\0')))
131 && ( ((pos + from.length() < text.length()) && rPred(text[pos + from.length()]))
132 || ((pos + from.length() == text.length()) && rPred(
'\0')))
135 text.replace(pos, from.length(), to);
136 pos += (to.length() + 1);
140 pos += (from.length() + 1) ;
147 template<invocable_r<
bool,
char> LeftPred, invocable_r<
bool,
char> RightPred>
149 std::string replace_all(std::string_view text, LeftPred lPred, std::string_view from, RightPred rPred, std::string_view to)
151 std::string str{text};
152 return replace_all(str, lPred, from, rPred, to);
Concepts which are sufficiently general to appear in the sequoia namespace.
Definition: Substitutions.hpp:21
Definition: Substitutions.hpp:96