diff options
Diffstat (limited to 'src/plugins/Plugin.cpp')
-rw-r--r-- | src/plugins/Plugin.cpp | 37 |
1 files changed, 28 insertions, 9 deletions
diff --git a/src/plugins/Plugin.cpp b/src/plugins/Plugin.cpp index 8690964..f23175c 100644 --- a/src/plugins/Plugin.cpp +++ b/src/plugins/Plugin.cpp @@ -29,22 +29,41 @@ namespace QuickMedia { } struct HtmlEscapeSequence { + char unescape_char; std::string escape_sequence; - std::string unescaped_str; }; - void html_unescape_sequences(std::string &str) { + void html_escape_sequences(std::string &str) { const std::array<HtmlEscapeSequence, 6> escape_sequences = { - HtmlEscapeSequence { """, "\"" }, - HtmlEscapeSequence { "'", "'" }, - HtmlEscapeSequence { "'", "'" }, - HtmlEscapeSequence { "<", "<" }, - HtmlEscapeSequence { ">", ">" }, - HtmlEscapeSequence { "&", "&" } // This should be last, to not accidentally replace a new sequence caused by replacing this + HtmlEscapeSequence { '"', """ }, + HtmlEscapeSequence { '\'', "'" }, + HtmlEscapeSequence { '<', "<" }, + HtmlEscapeSequence { '>', ">" }, + HtmlEscapeSequence { '&', "&" } // This should be last, to not accidentally replace a new sequence caused by replacing this }; for(const HtmlEscapeSequence &escape_sequence : escape_sequences) { - string_replace_all(str, escape_sequence.escape_sequence, escape_sequence.unescaped_str); + string_replace_all(str, escape_sequence.unescape_char, escape_sequence.escape_sequence); + } + } + + struct HtmlUnescapeSequence { + std::string escape_sequence; + std::string unescaped_str; + }; + + void html_unescape_sequences(std::string &str) { + const std::array<HtmlUnescapeSequence, 6> unescape_sequences = { + HtmlUnescapeSequence { """, "\"" }, + HtmlUnescapeSequence { "'", "'" }, + HtmlUnescapeSequence { "'", "'" }, + HtmlUnescapeSequence { "<", "<" }, + HtmlUnescapeSequence { ">", ">" }, + HtmlUnescapeSequence { "&", "&" } // This should be last, to not accidentally replace a new sequence caused by replacing this + }; + + for(const HtmlUnescapeSequence &unescape_sequence : unescape_sequences) { + string_replace_all(str, unescape_sequence.escape_sequence, unescape_sequence.unescaped_str); } } |