diff --git a/service.js b/service.js index d113a8f..5a2e846 100644 --- a/service.js +++ b/service.js @@ -71,12 +71,34 @@ class BesService { * Recursively grammar-proofs a DOM tree. * * @param {Node} node DOM root node to proof - * @param {Boolean} isInitialCall Is this first-level call in recursion? - * @returns {Array} Markup of text to proof using BesStr */ - async proof(node, isInitialCall = true) { + proof(node) { this.updateStatusIcon('bes-status-loading') this.statusDiv.title = 'BesService je v procesu preverjanja pravopisa.' + + this.recursiveProof(node) + + // TODO: Check count in 'makrofinančno' case. + const count = this.children?.reduce( + (total, child) => total + child.matches.length, + 0 + ) + if (count > 0) { + this.updateStatusIcon('bes-status-mistakes') + this.statusDiv.title = 'Število napak: ' + count + } else { + this.updateStatusIcon('bes-status-success') + this.statusDiv.title = 'V besedilu ni napak.' + } + } + + /** + * Recursively grammar-proofs a DOM tree. + * + * @param {Node} node DOM root node to proof + * @returns {Array} Markup of text to proof using BesStr + */ + async recursiveProof(node) { switch (node.nodeType) { case Node.TEXT_NODE: return [{ text: node.textContent, node: node, markup: false }] @@ -91,7 +113,7 @@ class BesService { } this.clearMistakeMarkup(node) let dataPromises = Array.from(node.childNodes).map(child => - this.proof(child, false) + this.recursiveProof(child) ) let data = (await Promise.all(dataPromises)).flat() if (data.some(x => !x.markup && !/^\s*$/.test(x.text))) { @@ -181,25 +203,11 @@ class BesService { ) }) } - if (isInitialCall) { - // TODO: Check count in 'makrofinančno' case. - const count = this.children?.reduce( - (total, child) => total + child.matches.length, - 0 - ) - if (count > 0) { - this.updateStatusIcon('bes-status-mistakes') - this.statusDiv.title = 'Število napak: ' + count - } else { - this.updateStatusIcon('bes-status-success') - this.statusDiv.title = 'V besedilu ni napak.' - } - } return [{ text: '<' + node.tagName + '/>', node: node, markup: true }] } else { // Inline elements require no markup. Keep plain text only. let dataPromises = Array.from(node.childNodes).map(child => - this.proof(child, false) + this.recursiveProof(child) ) let data = (await Promise.all(dataPromises)).flat() return data