summaryrefslogtreecommitdiff
path: root/src/string_utils.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/string_utils.hh')
-rw-r--r--src/string_utils.hh111
1 files changed, 2 insertions, 109 deletions
diff --git a/src/string_utils.hh b/src/string_utils.hh
index 3034dfd5..9e245bcc 100644
--- a/src/string_utils.hh
+++ b/src/string_utils.hh
@@ -4,9 +4,9 @@
#include "string.hh"
#include "enum.hh"
#include "vector.hh"
-#include "ranges.hh"
#include "optional.hh"
-#include "utils.hh"
+#include "format.hh"
+#include "array.hh"
namespace Kakoune
{
@@ -66,116 +66,9 @@ bool subsequence_match(StringView str, StringView subseq);
String expand_tabs(StringView line, ColumnCount tabstop, ColumnCount col = 0);
-struct WrapView
-{
- struct Iterator
- {
- using difference_type = ptrdiff_t;
- using value_type = StringView;
- using pointer = StringView*;
- using reference = StringView&;
- using iterator_category = std::forward_iterator_tag;
-
- Iterator(StringView text, ColumnCount max_width);
-
- Iterator& operator++();
- Iterator operator++(int) { auto copy = *this; ++(*this); return copy; }
-
- bool operator==(Iterator other) const { return m_remaining == other.m_remaining and m_current == other.m_current; }
- StringView operator*() { return m_current; }
-
- private:
- StringView m_current;
- StringView m_remaining;
- ColumnCount m_max_width;
- };
-
- Iterator begin() const { return {text, max_width}; }
- Iterator end() const { return {{}, 1}; }
-
- StringView text;
- ColumnCount max_width;
-};
-
-inline auto wrap_at(ColumnCount max_width)
-{
- return ViewFactory{[=](StringView text) {
- return WrapView{text, max_width};
- }};
-}
-
int str_to_int(StringView str); // throws on error
Optional<int> str_to_int_ifp(StringView str);
-template<size_t N>
-struct InplaceString
-{
- static_assert(N < 256, "InplaceString cannot handle sizes >= 256");
-
- constexpr operator StringView() const { return {m_data, ByteCount{m_length}}; }
- operator String() const { return {m_data, ByteCount{m_length}}; }
-
- unsigned char m_length{};
- char m_data[N];
-};
-
-struct Hex { size_t val; };
-constexpr Hex hex(size_t val) { return {val}; }
-
-struct Grouped { size_t val; };
-constexpr Grouped grouped(size_t val) { return {val}; }
-
-InplaceString<15> to_string(int val);
-InplaceString<15> to_string(unsigned val);
-InplaceString<23> to_string(long int val);
-InplaceString<23> to_string(unsigned long val);
-InplaceString<23> to_string(long long int val);
-InplaceString<23> to_string(Hex val);
-InplaceString<23> to_string(Grouped val);
-InplaceString<23> to_string(float val);
-InplaceString<7> to_string(Codepoint c);
-
-template<typename RealType, typename ValueType>
-decltype(auto) to_string(const StronglyTypedNumber<RealType, ValueType>& val)
-{
- return to_string((ValueType)val);
-}
-
-namespace detail
-{
-
-template<typename T> requires std::is_convertible_v<T, StringView>
-StringView format_param(const T& val) { return val; }
-
-template<typename T> requires (not std::is_convertible_v<T, StringView>)
-decltype(auto) format_param(const T& val) { return to_string(val); }
-
-}
-
-String format(StringView fmt, ArrayView<const StringView> params);
-
-template<typename... Types>
-String format(StringView fmt, Types&&... params)
-{
- return format(fmt, ArrayView<const StringView>{detail::format_param(std::forward<Types>(params))...});
-}
-
-StringView format_to(ArrayView<char> buffer, StringView fmt, ArrayView<const StringView> params);
-
-template<typename... Types>
-StringView format_to(ArrayView<char> buffer, StringView fmt, Types&&... params)
-{
- return format_to(buffer, fmt, ArrayView<const StringView>{detail::format_param(std::forward<Types>(params))...});
-}
-
-void format_with(FunctionRef<void (StringView)> append, StringView fmt, ArrayView<const StringView> params);
-
-template<typename... Types>
-void format_with(FunctionRef<void (StringView)> append, StringView fmt, Types&&... params)
-{
- return format_with(append, fmt, ArrayView<const StringView>{detail::format_param(std::forward<Types>(params))...});
-}
-
String double_up(StringView s, StringView characters);
inline String quote(StringView s)