summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Steinbrink <B.Steinbrink@gmx.de>2006-03-06 23:40:12 +0000
committerBjörn Steinbrink <B.Steinbrink@gmx.de>2006-03-06 23:40:12 +0000
commit0b5a149f0ac8e26d61510eb4f9337e2c889ecece (patch)
tree274eb6de62d67ba66c0384231c62b276fa04708f
parent1941e274acd375ff70fd09a9d458755d2a82e66e (diff)
downloadmanaserv-0b5a149f0ac8e26d61510eb4f9337e2c889ecece.tar.gz
manaserv-0b5a149f0ac8e26d61510eb4f9337e2c889ecece.tar.bz2
manaserv-0b5a149f0ac8e26d61510eb4f9337e2c889ecece.tar.xz
manaserv-0b5a149f0ac8e26d61510eb4f9337e2c889ecece.zip
A bunch of cleanups.
-rw-r--r--ChangeLog5
-rw-r--r--src/utils/stringfilter.cpp118
-rw-r--r--src/utils/stringfilter.h4
3 files changed, 54 insertions, 73 deletions
diff --git a/ChangeLog b/ChangeLog
index da310e01..3d62f237 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-03-07 Björn Steinbrink <B.Steinbrink@gmx.de>
+
+ * src/utils/stringfilter.h, src/utils/stringfilter.cpp: A bunch of
+ cleanups.
+
2006-03-06 Björn Steinbrink <B.Steinbrink@gmx.de>
* src/connectionhandler.h, src/storage.cpp, src/configuration.cpp,
diff --git a/src/utils/stringfilter.cpp b/src/utils/stringfilter.cpp
index fc9ed1ea..a75d8506 100644
--- a/src/utils/stringfilter.cpp
+++ b/src/utils/stringfilter.cpp
@@ -32,53 +32,42 @@ namespace tmwserv
namespace utils
{
-StringFilter::StringFilter(Configuration *config)
- : mInitialized(false),
- mConfig(config)
+StringFilter::StringFilter(Configuration *config):
+ mInitialized(false),
+ mConfig(config)
{
- mSlangs.clear();
+ mSlangs.clear(); // Does this make any sense here?
loadSlangFilterList();
}
StringFilter::~StringFilter()
{
writeSlangFilterList();
- mSlangs.clear();
+ mSlangs.clear(); // Does this make any sense here?
}
bool StringFilter::loadSlangFilterList()
{
mInitialized = false;
+
std::string slangsList = mConfig->getValue("SlangsList", "");
- if ( slangsList != "")
- {
- // Getting the words from the list.
- unsigned int i = 0; // this is the latest comma position keeper
- for (unsigned int j = 0; j < slangsList.length(); j++)
- {
- if (slangsList[j] == ',')
- {
- if (i == 0)
- mSlangs.push_back(slangsList.substr(i, j-i));
- else
- mSlangs.push_back(slangsList.substr(i+1, j-i-1));
-
- i = j;
- }
+ if (slangsList != "") {
+ std::istringstream iss(slangsList);
+ std::string tmp;
+ while (getline(iss, tmp, ',')) {
+ mSlangs.push_back(tmp);
}
- // Getting the last word
- mSlangs.push_back(slangsList.substr(i+1, slangsList.length() - 1));
mInitialized = true;
- return true;
}
- return false;
+
+ return mInitialized;
}
void StringFilter::writeSlangFilterList()
{
// Write the list to config
std::string slangsList = "";
- for (std::list<std::string>::iterator i = mSlangs.begin(); i != mSlangs.end(); )
+ for (SlangIterator i = mSlangs.begin(); i != mSlangs.end(); )
{
slangsList += *i;
++i;
@@ -89,69 +78,54 @@ void StringFilter::writeSlangFilterList()
bool StringFilter::filterContent(const std::string& text)
{
- if (mInitialized)
- {
- bool isContentClean = true;
-
- for (std::list<std::string>::iterator i = mSlangs.begin(); i != mSlangs.end(); )
- {
- // We look for slangs into the sentence.
- std::string upcasedText = text;
- std::string upcasedSlang = *i;
- std::transform(upcasedText.begin(), upcasedText.end(), upcasedText.begin(),
- (int(*)(int))std::toupper);
- std::transform(upcasedSlang.begin(), upcasedSlang.end(), upcasedSlang.begin(),
- (int(*)(int))std::toupper);
-
- for ( unsigned int j = 0; j < text.length(); j++)
- {
- if ( upcasedText.substr(j, upcasedSlang.length()) == upcasedSlang )
- {
- isContentClean = false;
- break;
- }
- }
- if (!isContentClean) break;
- ++i;
- }
- return isContentClean;
+ if (!mInitialized) {
+ LOG_INFO("Slangs List is not initialized.", 2)
+ return true;
}
- else
+
+ bool isContentClean = true;
+ std::string upperCaseText = text;
+
+ std::transform(text.begin(), text.end(), upperCaseText.begin(),
+ (int(*)(int))std::toupper);
+
+ for (SlangIterator i = mSlangs.begin(); i != mSlangs.end(); ++i)
{
- return true;
- LOG_INFO("Slangs List is not initialized.", 2)
+ // We look for slangs into the sentence.
+ std::string upperCaseSlang = *i;
+ std::transform(upperCaseSlang.begin(), upperCaseSlang.end(),
+ upperCaseSlang.begin(), (int(*)(int))std::toupper);
+
+ if (upperCaseText.compare(upperCaseSlang)) {
+ isContentClean = false;
+ break;
+ }
}
+
+ return isContentClean;
}
bool StringFilter::isEmailValid(const std::string& email)
{
// Testing Email validity
- if ( (email.length() < MIN_EMAIL_LENGTH) || (email.length() > MAX_EMAIL_LENGTH))
+ if ((email.length() < MIN_EMAIL_LENGTH) ||
+ (email.length() > MAX_EMAIL_LENGTH))
{
LOG_INFO(email << ": Email too short or too long.", 1)
return false;
}
- if ((email.find_first_of('@') != std::string::npos)) // Searching for an @.
- {
- int atpos = email.find_first_of('@');
- if (email.find_first_of('.', atpos) != std::string::npos) // Searching for a '.' after the @.
- {
- if (email.find_first_of(' ') == std::string::npos) // Searching if there's no spaces.
- {
- return true;
- }
- }
- }
- return false;
+
+ std::string::size_type atpos = email.find_first_of('@');
+
+ // TODO Find some nice regex for this...
+ return (atpos != std::string::npos) &&
+ (email.find_first_of('.', atpos) != std::string::npos) &&
+ (email.find_first_of(' ') == std::string::npos);
}
bool StringFilter::findDoubleQuotes(const std::string& text)
{
- for (unsigned int i = 0; i < text.length(); i++)
- {
- if (text[i] == '\"') return true;
- }
- return false;
+ return (text.find('"', 0) != std::string::npos);
}
} // ::utils
diff --git a/src/utils/stringfilter.h b/src/utils/stringfilter.h
index e38d1931..e48faa31 100644
--- a/src/utils/stringfilter.h
+++ b/src/utils/stringfilter.h
@@ -87,7 +87,9 @@ class StringFilter
findDoubleQuotes(const std::string& text);
private:
- std::list<std::string> mSlangs; /**< the formatted Slangs list */
+ typedef std::list<std::string> Slangs;
+ typedef Slangs::iterator SlangIterator;
+ Slangs mSlangs; /**< the formatted Slangs list */
bool mInitialized; /**< Set if the list is loaded */
Configuration *mConfig; /**< The config instance */
};