diff options
author | Kevin Smith <git@kismith.co.uk> | 2013-06-01 08:26:46 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2013-08-01 09:22:45 (GMT) |
commit | db698bbb6d8c7e878e2cb997e18e572f3646e11d (patch) | |
tree | 61aa3ff72c64dd8f309a2fe4b31b5b2d3f22f04b /Swiften/Base | |
parent | b45602bcd36fb9d2e7a22998434e31014f072d33 (diff) | |
download | swift-db698bbb6d8c7e878e2cb997e18e572f3646e11d.zip swift-db698bbb6d8c7e878e2cb997e18e572f3646e11d.tar.bz2 |
Refactor chat messages so parsing of links/emoticons happens in controllers.
Change-Id: I07256f23ffbb6520f5063bdfbed9111946c46746
Diffstat (limited to 'Swiften/Base')
-rw-r--r-- | Swiften/Base/Regex.cpp | 37 | ||||
-rw-r--r-- | Swiften/Base/Regex.h | 19 | ||||
-rw-r--r-- | Swiften/Base/SConscript | 1 |
3 files changed, 57 insertions, 0 deletions
diff --git a/Swiften/Base/Regex.cpp b/Swiften/Base/Regex.cpp new file mode 100644 index 0000000..5e3d89a --- /dev/null +++ b/Swiften/Base/Regex.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2013 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +/* + * Copyright (c) 2012 Maciej Niedzielski + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#include <Swiften/Base/Regex.h> + +#include <string> + +#include <boost/regex.hpp> + +namespace Swift { + + namespace Regex { + std::string escape(const std::string& source) { + // escape regex special characters: ^.$| etc + // these need to be escaped: [\^\$\|.........] + // and then C++ requires '\' to be escaped, too.... + static const boost::regex esc("([\\^\\.\\$\\|\\(\\)\\[\\]\\*\\+\\?\\/\\{\\}\\\\])"); + // matched character should be prepended with '\' + // replace matched special character with \\\1 + // and escape once more for C++ rules... + static const std::string rep("\\\\\\1"); + return boost::regex_replace(source, esc, rep); + } + + } + +} + diff --git a/Swiften/Base/Regex.h b/Swiften/Base/Regex.h new file mode 100644 index 0000000..6d12a60 --- /dev/null +++ b/Swiften/Base/Regex.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2013 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <string> + +#include <Swiften/Base/API.h> + +namespace Swift { + + namespace Regex { + SWIFTEN_API std::string escape(const std::string& source); + } + +} diff --git a/Swiften/Base/SConscript b/Swiften/Base/SConscript index 4956fba..094059a 100644 --- a/Swiften/Base/SConscript +++ b/Swiften/Base/SConscript @@ -16,5 +16,6 @@ objects = swiften_env.SwiftenObject([ "BoostRandomGenerator.cpp", "sleep.cpp", "URL.cpp", + "Regex.cpp" ]) swiften_env.Append(SWIFTEN_OBJECTS = [objects]) |