diff --git a/packages/html-parser/src/index.ts b/packages/html-parser/src/index.ts
index 79307ab3..e609083f 100644
--- a/packages/html-parser/src/index.ts
+++ b/packages/html-parser/src/index.ts
@@ -275,6 +275,10 @@ export class HtmlMessageEntityParser implements IMessageEntityParser {
if (!text) return text
if (!entities.length || entities.length === entitiesOffset) {
return HtmlMessageEntityParser.escape(text)
+ .replace(/\n/g, '
')
+ .replace(/ {2,}/g, (match) => {
+ return ' '.repeat(match.length)
+ })
}
const end = offset + length
@@ -314,15 +318,22 @@ export class HtmlMessageEntityParser implements IMessageEntityParser {
const substr = text.substr(relativeOffset, length)
if (!substr) continue
- const entityText = this._unparse(
- substr,
- entities,
- i + 1,
- offset + relativeOffset,
- length
- )
-
const type = entity.type
+
+ let entityText
+
+ if (type === 'pre') {
+ entityText = substr
+ } else {
+ entityText = this._unparse(
+ substr,
+ entities,
+ i + 1,
+ offset + relativeOffset,
+ length
+ )
+ }
+
switch (type) {
case 'bold':
case 'italic':
@@ -339,7 +350,7 @@ export class HtmlMessageEntityParser implements IMessageEntityParser {
? ` language="${entity.language}"`
: ''
}>${
- this._syntaxHighlighter
+ this._syntaxHighlighter && entity.language
? this._syntaxHighlighter(
entityText,
entity.language!
diff --git a/packages/html-parser/tests/html-parser.spec.ts b/packages/html-parser/tests/html-parser.spec.ts
index c0786715..7725cddb 100644
--- a/packages/html-parser/tests/html-parser.spec.ts
+++ b/packages/html-parser/tests/html-parser.spec.ts
@@ -253,17 +253,27 @@ describe('HtmlMessageEntityParser', () => {
}),
createEntity('messageEntityPre', 35, 9, { language: '' }),
],
- 'plain
lang: javascript
console.log("Hello, world!")
lang:plain', + 'plain
some code
lang: javascript
console.log("Hello, world!")
some codeplain', parser ) }) - it('should replace newlines with
plain\n\nplain' + ) }) it('should replace multiple spaces with ', () => {