summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2013-06-01 08:26:46 (GMT)
committerKevin Smith <git@kismith.co.uk>2013-08-01 09:22:45 (GMT)
commitdb698bbb6d8c7e878e2cb997e18e572f3646e11d (patch)
tree61aa3ff72c64dd8f309a2fe4b31b5b2d3f22f04b /Swiften/Base
parentb45602bcd36fb9d2e7a22998434e31014f072d33 (diff)
downloadswift-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.cpp37
-rw-r--r--Swiften/Base/Regex.h19
-rw-r--r--Swiften/Base/SConscript1
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])