From 96a2aa671852d7462b2bda4768ecc556e6869e84 Mon Sep 17 00:00:00 2001 From: Ze Yu Date: Thu, 28 May 2020 16:02:43 +0800 Subject: [PATCH] Use preRenderNode in panel span heading plugin --- .../markbind-plugin-shorthandSyntax.js | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/plugins/default/markbind-plugin-shorthandSyntax.js b/src/plugins/default/markbind-plugin-shorthandSyntax.js index 4888bc3d7e..da3c5bc70b 100644 --- a/src/plugins/default/markbind-plugin-shorthandSyntax.js +++ b/src/plugins/default/markbind-plugin-shorthandSyntax.js @@ -1,22 +1,19 @@ -const cheerio = module.parent.require('cheerio'); - -// Convert panel headings: -function convertPanelHeadings($) { - $('panel>span[heading]').each((i, element) => { - $(element).attr('slot', 'header'); - $(element).addClass('card-title'); - $(element).removeAttr('heading'); - }); -} - /** * Converts shorthand syntax to proper Markbind syntax * @param content of the page */ module.exports = { - postRender: (content) => { - const $ = cheerio.load(content, { xmlMode: false }); - convertPanelHeadings($); - return $.html(); + preRenderNode: (node) => { + if (node.name === 'panel' && node.children) { + node.children.forEach((n) => { + if (n.name === 'span' && n.attribs.heading !== undefined) { + n.attribs.slot = 'header'; + n.attribs.class = n.attribs.class ? `${n.attribs.class} card-title` : 'card-title'; + delete n.attribs.heading; + } + }); + } + + return node; }, };