#ifndef SASS_UTIL_STRING_H #define SASS_UTIL_STRING_H #include "sass.hpp" #include namespace Sass { namespace Util { // ########################################################################## // Special case insensitive string matcher. We can optimize // the more general compare case quite a bit by requiring // consumers to obey some rules (lowercase and no space). // - `literal` must only contain lower case ascii characters // there is one edge case where this could give false positives // test could contain a (non-ascii) char exactly 32 below literal // ########################################################################## bool equalsLiteral(const char* lit, const sass::string& test); // ########################################################################### // Returns [name] without a vendor prefix. // If [name] has no vendor prefix, it's returned as-is. // ########################################################################### sass::string unvendor(const sass::string& name); sass::string rtrim(sass::string str); sass::string normalize_newlines(const sass::string& str); sass::string normalize_underscores(const sass::string& str); sass::string normalize_decimals(const sass::string& str); char opening_bracket_for(char closing_bracket); char closing_bracket_for(char opening_bracket); // Locale-independent ASCII character routines. inline bool ascii_isalpha(unsigned char c) { return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'); } inline bool ascii_isdigit(unsigned char c) { return (c >= '0' && c <= '9'); } inline bool ascii_isalnum(unsigned char c) { return ascii_isalpha(c) || ascii_isdigit(c); } inline bool ascii_isascii(unsigned char c) { return c < 128; } inline bool ascii_isxdigit(unsigned char c) { return ascii_isdigit(c) || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f'); } inline bool ascii_isspace(unsigned char c) { return c == ' ' || c == '\t' || c == '\v' || c == '\f' || c == '\r' || c == '\n'; } inline char ascii_tolower(unsigned char c) { if (c >= 'A' && c <= 'Z') return c + 32; return c; } void ascii_str_tolower(sass::string* s); inline char ascii_toupper(unsigned char c) { if (c >= 'a' && c <= 'z') return c - 32; return c; } void ascii_str_toupper(sass::string* s); } // namespace Sass } // namespace Util #endif // SASS_UTIL_STRING_H