Added text escaping methods.

This commit is contained in:
Martin Rotter 2013-12-26 18:28:47 +01:00
parent 215b99689f
commit 3f33529bfd
2 changed files with 46 additions and 0 deletions

View File

@ -49,3 +49,44 @@ QString TextFactory::shorten(const QString &input, int text_length_limit) {
QString TextFactory::stripTags(QString text) {
return text.remove(QRegExp("<[^>]*>"));
}
QString TextFactory::escapeHtml(const QString &html) {
QMap<QString, QString> sequences;
sequences["&lt;"] = "<";
sequences["&gt;"] = ">";
sequences["&amp;"] = "&";
sequences["&quot;"] = "\"";
sequences["&nbsp;"] = " ";
sequences["&plusmn;"] = "±";
sequences["&times;"] = "×";
QList<QString> keys = sequences.uniqueKeys();
QString output = html;
foreach (const QString &key, keys) {
output.replace(key, sequences.value(key));
}
return output;
}
QString TextFactory::deEscapeHtrml(const QString &text) {
QMap<QString, QString> sequences;
sequences["<"] = "&lt;";
sequences[">"] = "&gt;";
sequences["&"] = "&amp;";
sequences["\""] = "&quot;";
sequences["±"] = "&plusmn;";
sequences["×"] = "&times;";
QList<QString> keys = sequences.uniqueKeys();
QString output = text;
foreach (const QString &key, keys) {
output.replace(key, sequences.value(key));
}
return output;
}

View File

@ -19,6 +19,11 @@ class TextFactory {
// Strips "<....>" (HTML, XML) tags from given text.
static QString stripTags(QString text);
// HTML entity escaping.
// TODO: Optimize these methods.
static QString escapeHtml(const QString &html);
static QString deEscapeHtrml(const QString &text);
// Shortens input string according to given length limit.
static QString shorten(const QString &input, int text_length_limit = TEXT_TITLE_LIMIT);
};