Support BlockQuote entities in textParseModeHTML.
This commit is contained in:
parent
5b2dd42e58
commit
f10bcc49cb
@ -3067,7 +3067,7 @@ Result<vector<MessageEntity>> parse_html(string &str) {
|
|||||||
if (tag_name != "a" && tag_name != "b" && tag_name != "strong" && tag_name != "i" && tag_name != "em" &&
|
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 != "s" && tag_name != "strike" && tag_name != "del" && tag_name != "u" && tag_name != "ins" &&
|
||||||
tag_name != "tg-spoiler" && tag_name != "tg-emoji" && tag_name != "span" && tag_name != "pre" &&
|
tag_name != "tg-spoiler" && tag_name != "tg-emoji" && tag_name != "span" && tag_name != "pre" &&
|
||||||
tag_name != "code") {
|
tag_name != "code" && tag_name != "blockquote") {
|
||||||
return Status::Error(400, PSLICE()
|
return Status::Error(400, PSLICE()
|
||||||
<< "Unsupported start tag \"" << tag_name << "\" at byte offset " << begin_pos);
|
<< "Unsupported start tag \"" << tag_name << "\" at byte offset " << begin_pos);
|
||||||
}
|
}
|
||||||
@ -3235,6 +3235,8 @@ Result<vector<MessageEntity>> parse_html(string &str) {
|
|||||||
entities.emplace_back(MessageEntity::Type::Code, entity_offset, entity_length,
|
entities.emplace_back(MessageEntity::Type::Code, entity_offset, entity_length,
|
||||||
nested_entities.back().argument);
|
nested_entities.back().argument);
|
||||||
}
|
}
|
||||||
|
} else if (tag_name == "blockquote") {
|
||||||
|
entities.emplace_back(MessageEntity::Type::BlockQuote, entity_offset, entity_length);
|
||||||
} else {
|
} else {
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
}
|
}
|
||||||
|
@ -1283,6 +1283,7 @@ TEST(MessageEntities, parse_html) {
|
|||||||
check_parse_html("➡️ ➡️<s>➡️ ➡️</s>", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Strikethrough, 5, 5}});
|
check_parse_html("➡️ ➡️<s>➡️ ➡️</s>", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Strikethrough, 5, 5}});
|
||||||
check_parse_html("➡️ ➡️<strike>➡️ ➡️</strike>", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Strikethrough, 5, 5}});
|
check_parse_html("➡️ ➡️<strike>➡️ ➡️</strike>", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Strikethrough, 5, 5}});
|
||||||
check_parse_html("➡️ ➡️<del>➡️ ➡️</del>", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Strikethrough, 5, 5}});
|
check_parse_html("➡️ ➡️<del>➡️ ➡️</del>", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::Strikethrough, 5, 5}});
|
||||||
|
check_parse_html("➡️ ➡️<blockquote>➡️ ➡️</blockquote>", "➡️ ➡️➡️ ➡️", {{td::MessageEntity::Type::BlockQuote, 5, 5}});
|
||||||
check_parse_html("➡️ ➡️<i>➡️ ➡️</i><b>➡️ ➡️</b>", "➡️ ➡️➡️ ➡️➡️ ➡️",
|
check_parse_html("➡️ ➡️<i>➡️ ➡️</i><b>➡️ ➡️</b>", "➡️ ➡️➡️ ➡️➡️ ➡️",
|
||||||
{{td::MessageEntity::Type::Italic, 5, 5}, {td::MessageEntity::Type::Bold, 10, 5}});
|
{{td::MessageEntity::Type::Italic, 5, 5}, {td::MessageEntity::Type::Bold, 10, 5}});
|
||||||
check_parse_html("🏟 🏟<i>🏟 <🏟</i>", "🏟 🏟🏟 <🏟", {{td::MessageEntity::Type::Italic, 5, 6}});
|
check_parse_html("🏟 🏟<i>🏟 <🏟</i>", "🏟 🏟🏟 <🏟", {{td::MessageEntity::Type::Italic, 5, 6}});
|
||||||
@ -1367,6 +1368,8 @@ TEST(MessageEntities, parse_html) {
|
|||||||
check_parse_html("🏟 🏟<b aba = caba><tg-emoji emoji-id=\"1\">🏟</tg-emoji>1</b>", "🏟 🏟🏟1",
|
check_parse_html("🏟 🏟<b aba = caba><tg-emoji emoji-id=\"1\">🏟</tg-emoji>1</b>", "🏟 🏟🏟1",
|
||||||
{{td::MessageEntity::Type::Bold, 5, 3},
|
{{td::MessageEntity::Type::Bold, 5, 3},
|
||||||
{td::MessageEntity::Type::CustomEmoji, 5, 2, td::CustomEmojiId(static_cast<td::int64>(1))}});
|
{td::MessageEntity::Type::CustomEmoji, 5, 2, td::CustomEmojiId(static_cast<td::int64>(1))}});
|
||||||
|
check_parse_html("<blockquote cite=\"\">a<<pre >b;</></>", "a<b;",
|
||||||
|
{{td::MessageEntity::Type::BlockQuote, 0, 4}, {td::MessageEntity::Type::Pre, 2, 2}});
|
||||||
}
|
}
|
||||||
|
|
||||||
static void check_parse_markdown(td::string text, const td::string &result,
|
static void check_parse_markdown(td::string text, const td::string &result,
|
||||||
|
Loading…
Reference in New Issue
Block a user