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