#pragma once #include #include #include /// Small string helpers; nothing here knows about breeze. namespace breeze::text { std::string trim(std::string_view s); std::vector split(std::string_view s, char delimiter); std::vector splitLines(std::string_view s); std::string join(const std::vector& parts, std::string_view separator); std::string lower(std::string_view s); bool startsWith(std::string_view s, std::string_view prefix); bool endsWith(std::string_view s, std::string_view suffix); std::string replaceAll(std::string s, std::string_view from, std::string_view to); /// "CoreFarewell" -> "core_farewell", "HTTPServer" -> "http_server", "my-app" -> "my_app". std::string snakeCase(std::string_view s); /// Lower-case letters and digits only: "Clang-CL" -> "clangcl". For comparing names loosely. std::string normalized(std::string_view s); /// A module or project name: a letter, then letters, digits, '_' (and '-' when allowDash). bool isName(std::string_view s, bool allowDash = false); /// A CMake target id as this project writes them: letters, digits, '_', '.', '+', '-' and "::". bool isTargetId(std::string_view s); /// "x" for a version-less message, with a '' stand-in for an empty value. std::string orNone(std::string_view s); }