From 5165cc48e6fc2346d8bf85e56bcbaae2dde5c8c5 Mon Sep 17 00:00:00 2001 From: Erik Demaine Date: Fri, 12 May 2017 09:33:14 -0400 Subject: [PATCH] Refactor and comment space splicing code --- src/buildHTML.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/buildHTML.js b/src/buildHTML.js index 4180b1b..a6b4952 100644 --- a/src/buildHTML.js +++ b/src/buildHTML.js @@ -93,14 +93,20 @@ const buildExpression = function(expression, options, isRealGroup) { // CSS. So we splice them out of `groups` and into the atoms themselves. for (let i = 0; i < groups.length; i++) { const spaces = spliceSpaces(groups, i); - if (spaces && i < groups.length) { - if (groups[i] instanceof domTree.symbolNode) { - groups[i] = makeSpan([].concat(groups[i].classes), [groups[i]]); + if (spaces) { + // Splicing of spaces may have removed all remaining groups. + if (i < groups.length) { + // If there is a following group, move space within it. + if (groups[i] instanceof domTree.symbolNode) { + groups[i] = makeSpan([].concat(groups[i].classes), + [groups[i]]); + } + buildCommon.prependChildren(groups[i], spaces); + } else { + // Otherwise, put any spaces back at the end of the groups. + Array.prototype.push.apply(groups, spaces); + break; } - buildCommon.prependChildren(groups[i], spaces); - } else if (spaces) { - Array.prototype.push.apply(groups, spaces); - break; } }