'use strict'; function resolveEnd(end, offset, reqSpace, onError) { let comment = ''; if (end) { let hasSpace = false; let sep = ''; for (const token of end) { const { source, type } = token; switch (type) { case 'space': hasSpace = true; break; case 'comment': { if (reqSpace && !hasSpace) onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters'); const cb = source.substring(1) || ' '; if (!comment) comment = cb; else comment += sep + cb; sep = ''; break; } case 'newline': if (comment) sep += source; hasSpace = true; break; default: onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`); } offset += source.length; } } return { comment, offset }; } exports.resolveEnd = resolveEnd;