|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #pragma once
- #include "common.hpp"
-
-
- namespace rack {
-
-
- /** Supplemental `std::string` functions
- */
- namespace string {
-
-
- /** Converts a UTF-16/32 string (depending on the size of wchar_t) to a UTF-8 string. */
- std::string fromWstring(const std::wstring &s);
- std::wstring toWstring(const std::string &s);
- /** Converts a `printf()` format string and optional arguments into a std::string
- Remember that "%s" must reference a `char *`, so use `.c_str()` for `std::string`s.
- */
- std::string f(const char *format, ...);
- /** Replaces all characters to lowercase letters */
- std::string lowercase(const std::string &s);
- /** Replaces all characters to uppercase letters */
- std::string uppercase(const std::string &s);
- std::string trim(const std::string &s);
- /** Truncates and adds "..." to a string, not exceeding `len` characters */
- std::string ellipsize(const std::string &s, size_t len);
- std::string ellipsizePrefix(const std::string &s, size_t len);
- bool startsWith(const std::string &str, const std::string &prefix);
- bool endsWith(const std::string &str, const std::string &suffix);
- /** Extracts the directory of the path.
- Example: directory("dir/file.txt") // "dir"
- Calls POSIX dirname().
- */
- std::string directory(const std::string &path);
- /** Extracts the filename of the path.
- Example: directory("dir/file.txt") // "file.txt"
- Calls POSIX basename().
- */
- std::string filename(const std::string &path);
- /** Extracts the portion of a filename without the extension.
- Example: filenameBase("file.txt") // "file"
- Note: Only works on filenames. Call filename(path) to get the filename of the path.
- */
- std::string filenameBase(const std::string &filename);
- /** Extracts the extension of a filename.
- Example: filenameExtension("file.txt") // "txt"
- Note: Only works on filenames. Call filename(path) to get the filename of the path.
- */
- std::string filenameExtension(const std::string &filename);
- /** Scores how well a query matches a string.
- A score of 0 means no match.
- The score is arbitrary and is only meaningful for sorting.
- */
- float fuzzyScore(const std::string &s, const std::string &query);
-
- struct CaseInsensitiveCompare {
- bool operator()(const std::string &a, const std::string &b) const {
- return lowercase(a) < lowercase(b);
- }
- };
-
-
- } // namespace string
- } // namespace rack
|