From 41cb7e1ca7d01eb8ac33dffc6736c8ae3ef7f6b2 Mon Sep 17 00:00:00 2001 From: ilmar Date: Sat, 23 Feb 2019 00:25:21 +0200 Subject: [PATCH 1/3] 0.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dea6b3a..c7a2a87 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "description": "Adds heading support to Etherpad Lite. Includes improved suppot for export, i18n etc.", "name": "ep_headings2", - "version": "0.0.9", + "version": "0.1.0", "author": { "name": "John McLear", "email": "john@mclear.co.uk" From abd344446f2939e34ab681a707cace62dc42b1cb Mon Sep 17 00:00:00 2001 From: ilmar Date: Sat, 23 Feb 2019 00:26:36 +0200 Subject: [PATCH 2/3] 0.0.10 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c7a2a87..3b71b17 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "description": "Adds heading support to Etherpad Lite. Includes improved suppot for export, i18n etc.", "name": "ep_headings2", - "version": "0.1.0", + "version": "0.0.10", "author": { "name": "John McLear", "email": "john@mclear.co.uk" From cadd9ebd63d08188afbea3c06f0bafbe83f27130 Mon Sep 17 00:00:00 2001 From: ilmar Date: Thu, 17 Dec 2020 13:29:41 +0200 Subject: [PATCH 3/3] Fix to work with text formating --- index.js | 12 ++++++++- static/tests/backend/specs/exportHTML.js | 34 ++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index e6e2d28..d016b61 100644 --- a/index.js +++ b/index.js @@ -33,6 +33,16 @@ const _analyzeLine = (alineAttrs, apool) => { exports.getLineHTMLForExport = async (hookName, context) => { const header = _analyzeLine(context.attribLine, context.apool); if (header) { - context.lineContent = `<${header}>${context.lineContent.substring(1)}`; + if (context.text.indexOf('*') === 0) { + context.lineContent = context.lineContent.replace('*', ''); + } + const paragraph = context.lineContent.match(/]+)?>/); + if (paragraph) { + context.lineContent = context.lineContent.replace('', ``); + } else { + context.lineContent = `<${header}>${context.lineContent}`; + } + return context.lineContent; } }; diff --git a/static/tests/backend/specs/exportHTML.js b/static/tests/backend/specs/exportHTML.js index c23a3d6..eb47eb2 100644 --- a/static/tests/backend/specs/exportHTML.js +++ b/static/tests/backend/specs/exportHTML.js @@ -82,4 +82,38 @@ describe('ep_headings2 - export headings to HTML', function () { .end(done); }); }); + + context('when pad text has multiple Headings and align tags', function () { + before(async function () { + html = () => buildHTML('

Hello world


Foo

'); + }); + + it('returns ok', function (done) { + api.get(getHTMLEndPointFor(padID)) + .expect('Content-Type', /json/) + .expect(200, done); + }); + + it('returns HTML with Multiple Headings HTML tags', function (done) { + try { + require.resolve('ep_align'); // eslint-disable-line + api.get(getHTMLEndPointFor(padID)) + .expect((res) => { + const html = res.body.data.html; + if (html.indexOf('

Hello world

') === -1) { + throw new Error('No H1 tag detected'); + } + if (html.indexOf('

Foo

') === -1) { + throw new Error('No H2 tag detected'); + } + }) + .end(done); + } catch (e) { + if (e.message.indexOf('Cannot find module') === -1) { + throw new Error(e.message); + } + done(); + } + }); + }); });