12345678910111213141516171819202122232425262728293031323334353637 |
- 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 };
- }
- export { resolveEnd };
|