feat(html-parser): support collapsible blockquotes
This commit is contained in:
parent
9fd2aa85f2
commit
3cc193a8fa
2 changed files with 21 additions and 3 deletions
|
@ -64,6 +64,14 @@ describe('HtmlMessageEntityParser', () => {
|
|||
)
|
||||
})
|
||||
|
||||
it('should handle collapsible blockquotes', () => {
|
||||
test(
|
||||
'plain blockquote plain',
|
||||
[createEntity('messageEntityBlockquote', 6, 10, { collapsed: true })],
|
||||
'plain <blockquote collapsible>blockquote</blockquote> plain',
|
||||
)
|
||||
})
|
||||
|
||||
it('should handle links and text mentions', () => {
|
||||
test(
|
||||
'plain https://google.com google @durov Pavel Durov mail@mail.ru plain',
|
||||
|
@ -253,13 +261,21 @@ describe('HtmlMessageEntityParser', () => {
|
|||
[
|
||||
createEntity('messageEntityCode', 6, 4),
|
||||
createEntity('messageEntityPre', 11, 3, { language: '' }),
|
||||
createEntity('messageEntityBlockquote', 15, 10),
|
||||
createEntity('messageEntityBlockquote', 15, 10, { collapsed: false }),
|
||||
createEntity('messageEntitySpoiler', 26, 7),
|
||||
],
|
||||
'plain code pre blockquote spoiler plain',
|
||||
)
|
||||
})
|
||||
|
||||
it('should handle collapsible blockquotes', () => {
|
||||
test(
|
||||
htm`plain <blockquote collapsible>blockquote</blockquote> plain`,
|
||||
[createEntity('messageEntityBlockquote', 6, 10, { collapsed: true })],
|
||||
'plain blockquote plain',
|
||||
)
|
||||
})
|
||||
|
||||
it('should handle links and text mentions', () => {
|
||||
test(
|
||||
htm`plain https://google.com <a href="https://google.com">google</a> @durov <a href="tg://user?id=36265675">Pavel Durov</a> plain`,
|
||||
|
|
|
@ -105,6 +105,7 @@ function parse(
|
|||
_: 'messageEntityBlockquote',
|
||||
offset: plainText.length,
|
||||
length: 0,
|
||||
collapsed: 'collapsible' in attribs,
|
||||
}
|
||||
break
|
||||
case 'code':
|
||||
|
@ -372,7 +373,6 @@ function _unparse(
|
|||
case 'messageEntityUnderline':
|
||||
case 'messageEntityStrike':
|
||||
case 'messageEntityCode':
|
||||
case 'messageEntityBlockquote':
|
||||
case 'messageEntitySpoiler':
|
||||
{
|
||||
const tag = (
|
||||
|
@ -382,13 +382,15 @@ function _unparse(
|
|||
messageEntityUnderline: 'u',
|
||||
messageEntityStrike: 's',
|
||||
messageEntityCode: 'code',
|
||||
messageEntityBlockquote: 'blockquote',
|
||||
messageEntitySpoiler: 'spoiler',
|
||||
} as const
|
||||
)[type]
|
||||
html.push(`<${tag}>${entityText}</${tag}>`)
|
||||
}
|
||||
break
|
||||
case 'messageEntityBlockquote':
|
||||
html.push(`<blockquote${entity.collapsed ? ' collapsible' : ''}>${entityText}</blockquote>`)
|
||||
break
|
||||
case 'messageEntityPre':
|
||||
html.push(
|
||||
`<pre${entity.language ? ` language="${entity.language}"` : ''}>${
|
||||
|
|
Loading…
Reference in a new issue