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