/* aux/functions.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #include "auxiliary/functions.h" namespace aux { const std::string plural(const char * word, size_t n) { std::string p(word); if (n != 1) p += 's'; return p; } const std::string article(const char * word) { std::string w(word); if (!w.size()) return w; switch (word[0]) { case 'a': case 'A': case 'e': case 'E': case 'i': case 'I': case 'o': case 'O': case 'u': case 'U': case 'y': case 'Y': w.assign("an "); break; default: w.assign("a "); } w.append(word); return w; } size_t text_length(const std::string &text) { const char *c = text.c_str(); size_t len = 0; while (*c) { if (is_color_code(c)) { c++; } else { len++; } c++; } return len; } const std::string text_strip(const std::string &text) { const char *c = text.c_str(); std::string r; while (*c) { if (is_color_code(c)) { c++; } else { r += *c; } c++; } return r; } const std::string text_strip_lowercase(const std::string &text) { const char *c = text.c_str(); std::string r; while (*c) { if (is_color_code(c)) { c++; } else { r += tolower(*c); } c++; } return r; } const std::string spaces(const std::string &text,size_t n) { size_t l = text_length(text); if (n <= l) return text; std::string s; s.assign(n-l, ' '); s.append(text); return s; } void to_lowercase(std::string &text) { for (std::string::iterator i = text.begin(); i != text.end(); ++i) (*i) = tolower(*i); } const std::string lowercase(const std::string &text) { std::string t; for (std::string::const_iterator i = text.begin(); i != text.end(); ++i) t += tolower(*i); return t; } void trim(std::string &text) { while (text.size() && text[0] == ' ') { text.erase(0, 1); } while (text.size() && text[text.size()-1] == ' ') { text.erase(text.size()-1, 1); } } }