UNPKG

tap

Version:

A Test-Anything-Protocol library for JavaScript

123 lines (102 loc) 3.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkFlowCollectionEnd = checkFlowCollectionEnd; exports.checkKeyLength = checkKeyLength; exports.resolveComments = resolveComments; var _errors = require("../errors"); var _constants = require("../constants"); function checkFlowCollectionEnd(errors, cst) { var char, name; switch (cst.type) { case _constants.Type.FLOW_MAP: char = '}'; name = 'flow map'; break; case _constants.Type.FLOW_SEQ: char = ']'; name = 'flow sequence'; break; default: errors.push(new _errors.YAMLSemanticError(cst, 'Not a flow collection!?')); return; } var lastItem; for (var i = cst.items.length - 1; i >= 0; --i) { var item = cst.items[i]; if (!item || item.type !== _constants.Type.COMMENT) { lastItem = item; break; } } if (lastItem && lastItem.char !== char) { var msg = "Expected ".concat(name, " to end with ").concat(char); var err; if (typeof lastItem.offset === 'number') { err = new _errors.YAMLSemanticError(cst, msg); err.offset = lastItem.offset + 1; } else { err = new _errors.YAMLSemanticError(lastItem, msg); if (lastItem.range && lastItem.range.end) err.offset = lastItem.range.end - lastItem.range.start; } errors.push(err); } } function checkKeyLength(errors, node, itemIdx, key, keyStart) { if (!key || typeof keyStart !== 'number') return; var item = node.items[itemIdx]; var keyEnd = item && item.range && item.range.start; if (!keyEnd) { for (var i = itemIdx - 1; i >= 0; --i) { var it = node.items[i]; if (it && it.range) { keyEnd = it.range.end + 2 * (itemIdx - i); break; } } } if (keyEnd > keyStart + 1024) { var k = String(key).substr(0, 8) + '...' + String(key).substr(-8); errors.push(new _errors.YAMLSemanticError(node, "The \"".concat(k, "\" key is too long"))); } } function resolveComments(collection, comments) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = comments[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _step$value = _step.value, afterKey = _step$value.afterKey, before = _step$value.before, comment = _step$value.comment; var item = collection.items[before]; if (!item) { if (comment !== undefined) { if (collection.comment) collection.comment += '\n' + comment;else collection.comment = comment; } } else { if (afterKey && item.value) item = item.value; if (comment === undefined) { if (afterKey || !item.commentBefore) item.spaceBefore = true; } else { if (item.commentBefore) item.commentBefore += '\n' + comment;else item.commentBefore = comment; } } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } }