diff options
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> | 2014-06-08 05:35:36 +0200 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2014-06-08 05:35:36 +0200 |
commit | 3d9183557f3ad9b599c812c03a445453e7d4f703 (patch) | |
tree | b084919560ecae720ceb43efc0c3dcf2e1434b7e | |
parent | 2d5e2fdcf69416bd93982e1432b4d2b744da203e (diff) | |
download | biboumi-3d9183557f3ad9b599c812c03a445453e7d4f703.tar.gz biboumi-3d9183557f3ad9b599c812c03a445453e7d4f703.tar.bz2 biboumi-3d9183557f3ad9b599c812c03a445453e7d4f703.tar.xz biboumi-3d9183557f3ad9b599c812c03a445453e7d4f703.zip |
Convert \n to <br/> in xhtml body
fix #2539
-rw-r--r-- | src/bridge/colors.cpp | 7 | ||||
-rw-r--r-- | src/bridge/colors.hpp | 2 | ||||
-rw-r--r-- | src/test.cpp | 4 |
3 files changed, 13 insertions, 0 deletions
diff --git a/src/bridge/colors.cpp b/src/bridge/colors.cpp index 6f6d7a9..3aed07c 100644 --- a/src/bridge/colors.cpp +++ b/src/bridge/colors.cpp @@ -77,6 +77,13 @@ Xmpp::body irc_format_to_xhtmlim(const std::string& s) if (s[pos_end] == IRC_FORMAT_BOLD_CHAR) styles.strong = !styles.strong; + else if (s[pos_end] == IRC_FORMAT_NEWLINE_CHAR) + { + XmlNode* br_node = new XmlNode("br"); + br_node->close(); + current_node->add_child(br_node); + cleaned += '\n'; + } else if (s[pos_end] == IRC_FORMAT_UNDERLINE_CHAR) styles.underline = !styles.underline; else if (s[pos_end] == IRC_FORMAT_ITALIC_CHAR) diff --git a/src/bridge/colors.hpp b/src/bridge/colors.hpp index 82e6faf..b5e6e7b 100644 --- a/src/bridge/colors.hpp +++ b/src/bridge/colors.hpp @@ -28,6 +28,7 @@ namespace Xmpp #define IRC_FORMAT_REVERSE2_CHAR '\x16' // wat #define IRC_FORMAT_ITALIC_CHAR '\x1D' // done #define IRC_FORMAT_UNDERLINE_CHAR '\x1F' // done +#define IRC_FORMAT_NEWLINE_CHAR '\n' // done static const char irc_format_char[] = { IRC_FORMAT_BOLD_CHAR, @@ -38,6 +39,7 @@ static const char irc_format_char[] = { IRC_FORMAT_REVERSE2_CHAR, IRC_FORMAT_ITALIC_CHAR, IRC_FORMAT_UNDERLINE_CHAR, + IRC_FORMAT_NEWLINE_CHAR, '\x00' }; diff --git a/src/test.cpp b/src/test.cpp index 9c77376..216608a 100644 --- a/src/test.cpp +++ b/src/test.cpp @@ -258,6 +258,10 @@ int main() assert(cleaned_up == "0e46ab by Pierre Dindon [0|1|0] http://example.net/Ojrh4P media: avoid pop-in effect when loading thumbnails by specifying an explicit size"); assert(xhtml->to_string() == "<body xmlns='http://www.w3.org/1999/xhtml'>0e46ab by <span style='color:green;'>Pierre Dindon</span> [<span style='color:lightgreen;'>0</span>|<span style='color:lightgreen;'>1</span>|<span style='color:indianred;'>0</span>] <span style='text-decoration:underline;'/><span style='text-decoration:underline;color:blue;'>http://example.net/Ojrh4P</span><span style='text-decoration:underline;'/> media: avoid pop-in effect when loading thumbnails by specifying an explicit size</body>"); + std::tie(cleaned_up, xhtml) = irc_format_to_xhtmlim("test\ncoucou"); + assert(cleaned_up == "test\ncoucou"); + assert(xhtml->to_string() == "<body xmlns='http://www.w3.org/1999/xhtml'>test<br/>coucou</body>"); + /** * JID parsing */ |