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; } }