1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
"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;
}
}
}
}
|