diff options
author | Stijn Buys <ingar@osirion.org> | 2008-07-28 22:12:28 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-07-28 22:12:28 +0000 |
commit | fa45b822bb8cdcd3fb3654ee099bdeddd2290a5c (patch) | |
tree | c47a52b6218d6531b546bccb1cbdc6200af65a12 /src/auxiliary | |
parent | 2acd2ce9ba60cd8c1535760d174e821ce345843d (diff) |
label protection
Diffstat (limited to 'src/auxiliary')
-rw-r--r-- | src/auxiliary/functions.cc | 22 | ||||
-rw-r--r-- | src/auxiliary/functions.h | 6 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/auxiliary/functions.cc b/src/auxiliary/functions.cc index dbfc799..a6187af 100644 --- a/src/auxiliary/functions.cc +++ b/src/auxiliary/functions.cc @@ -143,4 +143,26 @@ void trim(std::string &text) } } +void to_label(std::string &text) +{ + trim(text); + size_t pos = 0; + + while (pos < text.size()) { + if ((text[pos] == ' ') || (text[pos] == '-')) { + text[pos] = '_'; + pos++; + } else if ((text[pos] >= 'A') && (text[pos] <= 'Z')) { + text[pos] = text[pos] + 'a' - 'A'; + pos++; + } else if ((text[pos] >= 'a') && (text[pos] <= 'z')) { + pos++; + } else if ((text[pos] >= '0') && (text[pos] <= '9')) { + pos++; + } else { + text.erase(pos, 1); + } + } +} + } diff --git a/src/auxiliary/functions.h b/src/auxiliary/functions.h index 557ab45..65b6a2b 100644 --- a/src/auxiliary/functions.h +++ b/src/auxiliary/functions.h @@ -55,6 +55,12 @@ const std::string text_strip_lowercase(const std::string &text); /// trim leading ad trailing spaces from a string void trim(std::string &text); +/// convert a string to a valid label string +/** trim leading and trealing spaces, convert remaining spaces to underscores, and make lowercase + * remove any non-alphanumeric character + */ +void to_label(std::string &text); + } #endif // __INCLUDED_AUX_FUNCTIONS_H__ |