diff --git a/src/matrixmessageprocessor.ts b/src/matrixmessageprocessor.ts index a0a4c550d4d051d936568afb81603e2986385ec3..1cdeff18b0611de1188f7273c89e56dddfad21b6 100644 --- a/src/matrixmessageprocessor.ts +++ b/src/matrixmessageprocessor.ts @@ -304,6 +304,14 @@ export class MatrixMessageProcessor { return ""; case "hr": return "\n----------\n"; + case "h1": + case "h2": + case "h3": + case "h4": + case "h5": + case "h6": + const level = parseInt(nodeHtml.tagName[1], 10); + return `**${"#".repeat(level)} ${await this.walkChildNodes(nodeHtml)}**\n`; default: return await this.walkChildNodes(nodeHtml); } diff --git a/test/test_matrixmessageprocessor.ts b/test/test_matrixmessageprocessor.ts index 611496fd6a9fe833e0aefb17354fff207b4be1df..af6253c67219f8cca1f64d07dec3a33fcb1b6c35 100644 --- a/test/test_matrixmessageprocessor.ts +++ b/test/test_matrixmessageprocessor.ts @@ -165,6 +165,23 @@ code const result = await mp.FormatMessage(msg, guild as any); expect(result).is.equal("test\n----------\nfoxes"); }); + it("handles headings", async () => { + const mp = new MatrixMessageProcessor(bot); + const guild = new MockGuild("1234"); + const msg = getHtmlMessage(`<h1>fox</h1> +<h2>floof</h2> +<h3>pony</h3> +<h4>hooves</h4> +<h5>tail</h5> +<h6>foxies</h6>`); + const result = await mp.FormatMessage(msg, guild as any); + expect(result).is.equal(`**# fox** +**## floof** +**### pony** +**#### hooves** +**##### tail** +**###### foxies**`); + }); }); describe("FormatMessage / formatted_body / complex", () => { it("html unescapes stuff inside of code", async () => {