diff --git a/webclient/src/Article.js b/webclient/src/Article.js index a33b317..b80fb73 100644 --- a/webclient/src/Article.js +++ b/webclient/src/Article.js @@ -60,7 +60,25 @@ function Article({ cache }) { }; const isCodeBlock = (v) => { - return v.localName === 'pre' || (v.localName === 'code' && !v.closest('p')); + if (v.localName === 'pre') { + return true; + } + + if (v.localName === 'code') { + if (v.closest('p')) { + return false; + } + const parent = v.parentElement; + if (parent) { + const nonWhitespaceChildren = Array.from(parent.childNodes).filter(n => { + return n.nodeType !== Node.TEXT_NODE || n.textContent.trim() !== ''; + }); + if (nonWhitespaceChildren.length === 1 && nonWhitespaceChildren[0] === v) { + return true; + } + } + } + return false; }; const renderNodes = (nodes, keyPrefix = '') => {