Support tg-spoiler HTML tag.
This commit is contained in:
parent
62d4e339de
commit
19f1f66eca
|
@ -2938,7 +2938,7 @@ static Result<vector<MessageEntity>> do_parse_html(CSlice text, string &result)
|
|||
string tag_name = to_lower(text.substr(begin_pos + 1, i - begin_pos - 1));
|
||||
if (tag_name != "a" && tag_name != "b" && tag_name != "strong" && tag_name != "i" && tag_name != "em" &&
|
||||
tag_name != "s" && tag_name != "strike" && tag_name != "del" && tag_name != "u" && tag_name != "ins" &&
|
||||
tag_name != "span" && tag_name != "pre" && tag_name != "code") {
|
||||
tag_name != "tg-spoiler" && tag_name != "span" && tag_name != "pre" && tag_name != "code") {
|
||||
return Status::Error(400, PSLICE()
|
||||
<< "Unsupported start tag \"" << tag_name << "\" at byte offset " << begin_pos);
|
||||
}
|
||||
|
@ -3059,8 +3059,7 @@ static Result<vector<MessageEntity>> do_parse_html(CSlice text, string &result)
|
|||
entities.emplace_back(MessageEntity::Type::Strikethrough, entity_offset, entity_length);
|
||||
} else if (tag_name == "u" || tag_name == "ins") {
|
||||
entities.emplace_back(MessageEntity::Type::Underline, entity_offset, entity_length);
|
||||
} else if (tag_name == "span") {
|
||||
CHECK(nested_entities.back().argument == "spoiler");
|
||||
} else if (tag_name == "tg-spoiler" || (tag_name == "span" && nested_entities.back().argument == "spoiler")) {
|
||||
entities.emplace_back(MessageEntity::Type::Spoiler, entity_offset, entity_length);
|
||||
} else if (tag_name == "a") {
|
||||
auto url = std::move(nested_entities.back().argument);
|
||||
|
|
|
@ -1267,6 +1267,13 @@ TEST(MessageEntities, parse_html) {
|
|||
check_parse_html("π π<span class=\"tg-spoiler\">π ><b aba = caba><π</b></span>",
|
||||
"π ππ ><π",
|
||||
{{td::MessageEntity::Type::Spoiler, 5, 7}, {td::MessageEntity::Type::Bold, 9, 3}});
|
||||
check_parse_html("β‘οΈ β‘οΈ<tg-spoiler>β‘οΈ β‘οΈ</tg-spoiler><b>β‘οΈ β‘οΈ</b>",
|
||||
"β‘οΈ β‘οΈβ‘οΈ β‘οΈβ‘οΈ β‘οΈ",
|
||||
{{td::MessageEntity::Type::Spoiler, 5, 5}, {td::MessageEntity::Type::Bold, 10, 5}});
|
||||
check_parse_html("π π<tg-spoiler>π <π</tg-spoiler>", "π ππ <π",
|
||||
{{td::MessageEntity::Type::Spoiler, 5, 6}});
|
||||
check_parse_html("π π<tg-spoiler>π ><b aba = caba><π</b></tg-spoiler>", "π ππ ><π",
|
||||
{{td::MessageEntity::Type::Spoiler, 5, 7}, {td::MessageEntity::Type::Bold, 9, 3}});
|
||||
check_parse_html("<a href=telegram.org>\t</a>", "\t",
|
||||
{{td::MessageEntity::Type::TextUrl, 0, 1, "http://telegram.org/"}});
|
||||
check_parse_html("<a href=telegram.org>\r</a>", "\r",
|
||||
|
|
Loadingβ¦
Reference in New Issue
Block a user