concordia-library/concordia/regex_replacement.cpp
rjawor 9358863f8d text utils stub
Former-commit-id: d4459220f5696839d98848e9c30a61c084763a91
2014-04-24 08:36:48 +02:00

37 lines
1.2 KiB
C++

#include "concordia/regex_replacement.hpp"
#include <sstream>
#include <boost/exception/all.hpp>
#include <boost/throw_exception.hpp>
RegexReplacement::RegexReplacement(string patternString, string replacement,
bool caseSensitive)
throw(ConcordiaException):
_replacement(replacement) {
try {
if (caseSensitive) {
_pattern = boost::make_u32regex(patternString);
} else {
_pattern = boost::make_u32regex(patternString, boost::regex::icase);
}
} catch ( const std::exception & e ) {
stringstream ss;
ss << "Bad regex pattern: " << patternString <<
" Detailed info: " << e.what();
if ( std::string const * extra = boost::get_error_info<my_tag_error_info>(e) ) {
ss << *extra;
}
throw ConcordiaException(ss.str());
}
}
RegexReplacement::~RegexReplacement() {
}
string RegexReplacement::apply(const string & text) {
return boost::u32regex_replace(text, _pattern, _replacement,
boost::match_default | boost::format_all);
}