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