string Skin::applyHtmlFixes(string text, bool forceHtml)
	{
		// Контекст библиотеки
		if (!forceHtml && (getInt(espUseHtml) == 0)) {
			// Если USEHTML = 0, выводим текст "как есть".
			replaceAll(text, "&", "&");
			replaceAll(text, "<", "&lt;");
			replaceAll(text, ">", "&gt;");
			// Заменяем переводы строк.
			replaceAll(text, "\r\n", "<br />");
			replaceAll(text, "\r", "<br />");
			replaceAll(text, "\n", "<br />");
		} else {
			// THIS IS ONLY FOR LEGACY
			// В Байтовском AeroQSP неправильно эскейпились кавычки и апострофы, и не эскейпились амперсанды(&).
			// Для совместимости с играми, написанными под Байтовский AeroQSP, делаем замену.
			// Специальная функция для правильной замены "&" на "&amp;"
			replaceAmp(text);
			replaceAll(text, "\\\"", "&quot;");
			replaceAll(text, "\\'", "&#39;");
			// Заменяем переводы строк, но только вне HTML-тегов.
			replaceNewlines(text);
		}
		return text;
	}
Example #2
0
String::String(const std::string &str)
    : BaseDatatype('S', replaceNewlines(str))
{
    // nop
}