diff --git a/plugins/NewStory/src/templates.cpp b/plugins/NewStory/src/templates.cpp index 4172521496f..d6c0472836b 100644 --- a/plugins/NewStory/src/templates.cpp +++ b/plugins/NewStory/src/templates.cpp @@ -175,6 +175,15 @@ static void AppendString(CMStringW &buf, const wchar_t *p, ItemData *pItem) p = p1 + 5; } } + else if (!wcsncmp(p, L"code]", 5)) { + p += 5; + + if (auto *p1 = wcsstr(p, L"[/code]")) { + CMStringW wszUrl(p, int(p1 - p)); + buf.AppendFormat(L"
%s
", wszUrl.c_str()); + p = p1 + 6; + } + } else { buf.AppendChar('['); if (*pEnd == '/') diff --git a/protocols/Telegram/src/utils.cpp b/protocols/Telegram/src/utils.cpp index faf52c94d08..34201b930d5 100644 --- a/protocols/Telegram/src/utils.cpp +++ b/protocols/Telegram/src/utils.cpp @@ -19,7 +19,7 @@ along with this program. If not, see . enum class BBCODE { - BOLD, ITALIC, STRIKE, UNDERLINE, URL + BOLD, ITALIC, STRIKE, UNDERLINE, URL, CODE }; struct @@ -30,11 +30,12 @@ struct } static bbCodes[] = { - { BBCODE::BOLD, L"[b]", L"[/b]", 3, 4 }, - { BBCODE::ITALIC, L"[i]", L"[/i]", 3, 4 }, - { BBCODE::STRIKE, L"[s]", L"[/s]", 3, 4 }, - { BBCODE::UNDERLINE, L"[u]", L"[/u]", 3, 4 }, - { BBCODE::URL, L"[url]", L"[/url]", 5, 6 }, + { BBCODE::BOLD, L"[b]", L"[/b]", 3, 4 }, + { BBCODE::ITALIC, L"[i]", L"[/i]", 3, 4 }, + { BBCODE::STRIKE, L"[s]", L"[/s]", 3, 4 }, + { BBCODE::UNDERLINE, L"[u]", L"[/u]", 3, 4 }, + { BBCODE::URL, L"[url]", L"[/url]", 5, 6 }, + { BBCODE::CODE, L"[code]", L"[/code]", 6, 7 }, }; TD::object_ptr formatBbcodes(const char *pszText) @@ -65,6 +66,7 @@ TD::object_ptr formatBbcodes(const char *pszText) TD::object_ptr pNew; switch (it.type) { case BBCODE::URL: pNew = TD::make_object(); break; + case BBCODE::CODE: pNew = TD::make_object(); break; case BBCODE::BOLD: pNew = TD::make_object(); break; case BBCODE::ITALIC: pNew = TD::make_object(); break; case BBCODE::STRIKE: pNew = TD::make_object(); break; @@ -94,6 +96,7 @@ static CMStringA getFormattedText(TD::object_ptr &pText) case TD::textEntityTypeStrikethrough::ID: iCode = 2; break; case TD::textEntityTypeUnderline::ID: iCode = 3; break; case TD::textEntityTypeUrl::ID: iCode = 4; break; + case TD::textEntityTypeCode::ID: iCode = 5; break; default: continue; }