mirror of
https://gitlab.com/niansa/commoncpp.git
synced 2025-03-06 20:48:30 +01:00
Added and fixed functions
This commit is contained in:
parent
32d1fc5417
commit
45b3bc83b5
2 changed files with 27 additions and 6 deletions
|
@ -10,11 +10,13 @@ namespace utils {
|
|||
std::vector<std::string_view> str_split(std::string_view s, char delimiter, size_t times = -1);
|
||||
bool str_replace_in_place(std::string& subject, std::string_view search, const std::string& replace);
|
||||
std::string_view max_words(std::string_view text, unsigned count);
|
||||
bool contains(std::string_view value, std::string_view ending);
|
||||
bool starts_with(std::string_view value, std::string_view ending);
|
||||
bool contains(std::string_view value, std::string_view other);
|
||||
bool starts_with(std::string_view value, std::string_view beginning);
|
||||
bool ends_with(std::string_view value, std::string_view ending);
|
||||
bool force_trailing(std::string& value, std::string_view ending);
|
||||
bool chop_down(std::string& s, char delim);
|
||||
std::string remove_nonprintable(std::string_view);
|
||||
std::string read_text_file(const std::string& path);
|
||||
|
||||
[[noreturn]] inline void unreachable() {
|
||||
// Uses compiler specific extensions if possible.
|
||||
|
|
27
utils.cpp
27
utils.cpp
|
@ -1,5 +1,10 @@
|
|||
#include "utils.hpp"
|
||||
|
||||
#include <sstream>
|
||||
#include <fstream>
|
||||
#include <stdexcept>
|
||||
#include <cerrno>
|
||||
|
||||
|
||||
|
||||
namespace common {
|
||||
|
@ -49,12 +54,12 @@ std::string_view max_words(std::string_view text, unsigned count) {
|
|||
return {text.data(), idx};
|
||||
}
|
||||
|
||||
bool contains(std::string_view value, std::string_view ending) {
|
||||
return value.find(ending) != value.npos;
|
||||
bool contains(std::string_view value, std::string_view other) {
|
||||
return value.find(other) != value.npos;
|
||||
}
|
||||
|
||||
bool starts_with(std::string_view value, std::string_view ending) {
|
||||
return value.find(ending) == 0;
|
||||
bool starts_with(std::string_view value, std::string_view beginning) {
|
||||
return value.find(beginning) == 0;
|
||||
}
|
||||
|
||||
bool ends_with(std::string_view value, std::string_view ending) {
|
||||
|
@ -62,6 +67,12 @@ bool ends_with(std::string_view value, std::string_view ending) {
|
|||
return std::equal(ending.rbegin(), ending.rend(), value.rbegin());
|
||||
}
|
||||
|
||||
bool force_trailing(std::string &value, std::string_view ending) {
|
||||
bool fres = ends_with(value, ending);
|
||||
if (!fres) value.append(ending);
|
||||
return fres;
|
||||
}
|
||||
|
||||
bool chop_down(std::string& s, char delim) {
|
||||
const auto pos = s.find(delim);
|
||||
if (pos == s.npos) return false;
|
||||
|
@ -76,5 +87,13 @@ std::string remove_nonprintable(std::string_view str) {
|
|||
}
|
||||
return fres;
|
||||
}
|
||||
|
||||
std::string read_text_file(const std::string& path) {
|
||||
std::ifstream in(path);
|
||||
if (!in) throw std::system_error(std::error_code(errno, std::system_category()), path);
|
||||
std::ostringstream sstr;
|
||||
sstr << in.rdbuf();
|
||||
return sstr.str();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue