diff options
Diffstat (limited to 'Swift/Controllers/HighlightRule.cpp')
| -rw-r--r-- | Swift/Controllers/HighlightRule.cpp | 64 | 
1 files changed, 6 insertions, 58 deletions
diff --git a/Swift/Controllers/HighlightRule.cpp b/Swift/Controllers/HighlightRule.cpp index 9ca7d86..f1a5235 100644 --- a/Swift/Controllers/HighlightRule.cpp +++ b/Swift/Controllers/HighlightRule.cpp @@ -4,6 +4,12 @@   * See Documentation/Licenses/BSD-simplified.txt for more information.   */ +/* + * Copyright (c) 2014 Kevin Smith and Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ +  #include <algorithm>  #include <boost/algorithm/string.hpp>  #include <boost/lambda/lambda.hpp> @@ -56,57 +62,6 @@ bool HighlightRule::boolFromString(const std::string& s)  	return s == "1";  } -std::string HighlightRule::toString() const -{ -	std::vector<std::string> v; -	v.push_back(boost::join(senders_, "\t")); -	v.push_back(boost::join(keywords_, "\t")); -	v.push_back(boolToString(nickIsKeyword_)); -	v.push_back(boolToString(matchChat_)); -	v.push_back(boolToString(matchMUC_)); -	v.push_back(boolToString(matchCase_)); -	v.push_back(boolToString(matchWholeWords_)); -	v.push_back(boolToString(action_.highlightText())); -	v.push_back(action_.getTextColor()); -	v.push_back(action_.getTextBackground()); -	v.push_back(boolToString(action_.playSound())); -	v.push_back(action_.getSoundFile()); -	return boost::join(v, "\n"); -} - -HighlightRule HighlightRule::fromString(const std::string& s) -{ -	std::vector<std::string> v; -	boost::split(v, s, boost::is_any_of("\n")); - -	HighlightRule r; -	size_t i = 0; -	try { -		boost::split(r.senders_, v.at(i++), boost::is_any_of("\t")); -		r.senders_.erase(std::remove_if(r.senders_.begin(), r.senders_.end(), boost::lambda::_1 == ""), r.senders_.end()); -		boost::split(r.keywords_, v.at(i++), boost::is_any_of("\t")); -		r.keywords_.erase(std::remove_if(r.keywords_.begin(), r.keywords_.end(), boost::lambda::_1 == ""), r.keywords_.end()); -		r.nickIsKeyword_ = boolFromString(v.at(i++)); -		r.matchChat_ = boolFromString(v.at(i++)); -		r.matchMUC_ = boolFromString(v.at(i++)); -		r.matchCase_ = boolFromString(v.at(i++)); -		r.matchWholeWords_ = boolFromString(v.at(i++)); -		r.action_.setHighlightText(boolFromString(v.at(i++))); -		r.action_.setTextColor(v.at(i++)); -		r.action_.setTextBackground(v.at(i++)); -		r.action_.setPlaySound(boolFromString(v.at(i++))); -		r.action_.setSoundFile(v.at(i++)); -	} -	catch (std::out_of_range) { -		// this may happen if more properties are added to HighlightRule object, etc... -		// in such case, default values (set by default constructor) will be used -	} - -	r.updateRegex(); - -	return r; -} -  bool HighlightRule::isMatch(const std::string& body, const std::string& sender, const std::string& nick, MessageType messageType) const  {  	if ((messageType == HighlightRule::ChatMessage && matchChat_) || (messageType == HighlightRule::MUCMessage && matchMUC_)) { @@ -114,13 +69,6 @@ bool HighlightRule::isMatch(const std::string& body, const std::string& sender,  		bool matchesKeyword = keywords_.empty() && (nick.empty() || !nickIsKeyword_);  		bool matchesSender = senders_.empty(); -		foreach (const boost::regex & rx, keywordRegex_) { -			if (boost::regex_search(body, rx)) { -				matchesKeyword = true; -				break; -			} -		} -  		if (!matchesKeyword && nickIsKeyword_ && !nick.empty()) {  			if (boost::regex_search(body, regexFromString(nick))) {  				matchesKeyword = true;  | 
 Swift