yaml 1.8.3 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/browser/dist/PlainValue-ff5147c6.js +1277 -0
- package/browser/dist/Schema-2bf2c74e.js +679 -0
- package/browser/dist/index.js +923 -38
- package/browser/dist/legacy-exports.js +3 -0
- package/browser/dist/parse-cst.js +1904 -0
- package/browser/dist/resolveSeq-04825f30.js +2373 -0
- package/browser/dist/types.js +4 -0
- package/browser/dist/util.js +2 -0
- package/browser/dist/warnings-0e4b70d3.js +499 -0
- package/browser/index.js +1 -1
- package/browser/map.js +2 -2
- package/browser/pair.js +2 -2
- package/browser/parse-cst.js +1 -1
- package/browser/scalar.js +2 -2
- package/browser/schema.js +8 -6
- package/browser/seq.js +2 -2
- package/browser/types/binary.js +3 -2
- package/browser/types/omap.js +3 -2
- package/browser/types/pairs.js +3 -2
- package/browser/types/set.js +3 -2
- package/browser/types/timestamp.js +6 -6
- package/browser/types.js +1 -11
- package/browser/util.js +1 -15
- package/dist/Document-2cf6b08c.js +757 -0
- package/dist/PlainValue-ec8e588e.js +876 -0
- package/dist/Schema-42e9705c.js +522 -0
- package/dist/index.js +21 -43
- package/dist/legacy-exports.js +16 -0
- package/dist/parse-cst.js +1747 -0
- package/dist/resolveSeq-4a68b39b.js +2115 -0
- package/dist/test-events.js +11 -14
- package/dist/types.js +23 -0
- package/dist/util.js +19 -0
- package/dist/warnings-39684f17.js +416 -0
- package/index.d.ts +372 -0
- package/index.js +1 -1
- package/map.js +2 -2
- package/package.json +32 -45
- package/pair.js +2 -2
- package/parse-cst.d.ts +187 -0
- package/parse-cst.js +1 -1
- package/scalar.js +2 -2
- package/schema.js +8 -6
- package/seq.js +2 -2
- package/types/binary.js +3 -2
- package/types/omap.js +3 -2
- package/types/pairs.js +3 -2
- package/types/set.js +3 -2
- package/types/timestamp.js +6 -6
- package/types.d.ts +407 -0
- package/types.js +16 -10
- package/types.mjs +15 -18
- package/util.d.ts +86 -0
- package/util.js +14 -13
- package/util.mjs +13 -19
- package/browser/dist/Anchors.js +0 -133
- package/browser/dist/Document.js +0 -819
- package/browser/dist/addComment.js +0 -8
- package/browser/dist/constants.js +0 -26
- package/browser/dist/cst/Alias.js +0 -42
- package/browser/dist/cst/BlankLine.js +0 -56
- package/browser/dist/cst/BlockValue.js +0 -247
- package/browser/dist/cst/Collection.js +0 -274
- package/browser/dist/cst/CollectionItem.js +0 -136
- package/browser/dist/cst/Comment.js +0 -40
- package/browser/dist/cst/Directive.js +0 -72
- package/browser/dist/cst/Document.js +0 -282
- package/browser/dist/cst/FlowCollection.js +0 -216
- package/browser/dist/cst/Node.js +0 -388
- package/browser/dist/cst/ParseContext.js +0 -248
- package/browser/dist/cst/PlainValue.js +0 -166
- package/browser/dist/cst/QuoteDouble.js +0 -241
- package/browser/dist/cst/QuoteSingle.js +0 -116
- package/browser/dist/cst/Range.js +0 -67
- package/browser/dist/cst/parse.js +0 -48
- package/browser/dist/cst/source-utils.js +0 -168
- package/browser/dist/errors.js +0 -112
- package/browser/dist/foldFlowLines.js +0 -138
- package/browser/dist/listTagNames.js +0 -28
- package/browser/dist/schema/Alias.js +0 -139
- package/browser/dist/schema/Collection.js +0 -267
- package/browser/dist/schema/Map.js +0 -178
- package/browser/dist/schema/Merge.js +0 -127
- package/browser/dist/schema/Node.js +0 -7
- package/browser/dist/schema/Pair.js +0 -171
- package/browser/dist/schema/Scalar.js +0 -38
- package/browser/dist/schema/Seq.js +0 -114
- package/browser/dist/schema/index.js +0 -382
- package/browser/dist/schema/parseMap.js +0 -312
- package/browser/dist/schema/parseSeq.js +0 -168
- package/browser/dist/schema/parseUtils.js +0 -110
- package/browser/dist/stringify.js +0 -331
- package/browser/dist/tags/core.js +0 -126
- package/browser/dist/tags/failsafe/index.js +0 -4
- package/browser/dist/tags/failsafe/map.js +0 -56
- package/browser/dist/tags/failsafe/seq.js +0 -43
- package/browser/dist/tags/failsafe/string.js +0 -28
- package/browser/dist/tags/index.js +0 -36
- package/browser/dist/tags/json.js +0 -76
- package/browser/dist/tags/options.js +0 -23
- package/browser/dist/tags/yaml-1.1/binary.js +0 -87
- package/browser/dist/tags/yaml-1.1/index.js +0 -157
- package/browser/dist/tags/yaml-1.1/omap.js +0 -142
- package/browser/dist/tags/yaml-1.1/pairs.js +0 -81
- package/browser/dist/tags/yaml-1.1/set.js +0 -114
- package/browser/dist/tags/yaml-1.1/timestamp.js +0 -97
- package/browser/dist/test-events.js +0 -163
- package/browser/dist/toJSON.js +0 -20
- package/browser/dist/warnings.js +0 -28
- package/dist/Anchors.js +0 -125
- package/dist/Document.js +0 -710
- package/dist/addComment.js +0 -17
- package/dist/constants.js +0 -34
- package/dist/cst/Alias.js +0 -38
- package/dist/cst/BlankLine.js +0 -56
- package/dist/cst/BlockValue.js +0 -248
- package/dist/cst/Collection.js +0 -271
- package/dist/cst/CollectionItem.js +0 -140
- package/dist/cst/Comment.js +0 -38
- package/dist/cst/Directive.js +0 -64
- package/dist/cst/Document.js +0 -281
- package/dist/cst/FlowCollection.js +0 -218
- package/dist/cst/Node.js +0 -365
- package/dist/cst/ParseContext.js +0 -258
- package/dist/cst/PlainValue.js +0 -161
- package/dist/cst/QuoteDouble.js +0 -237
- package/dist/cst/QuoteSingle.js +0 -113
- package/dist/cst/Range.js +0 -63
- package/dist/cst/parse.js +0 -55
- package/dist/cst/source-utils.js +0 -178
- package/dist/errors.js +0 -102
- package/dist/foldFlowLines.js +0 -146
- package/dist/listTagNames.js +0 -38
- package/dist/schema/Alias.js +0 -110
- package/dist/schema/Collection.js +0 -188
- package/dist/schema/Map.js +0 -103
- package/dist/schema/Merge.js +0 -80
- package/dist/schema/Node.js +0 -10
- package/dist/schema/Pair.js +0 -161
- package/dist/schema/Scalar.js +0 -31
- package/dist/schema/Seq.js +0 -78
- package/dist/schema/index.js +0 -315
- package/dist/schema/parseMap.js +0 -343
- package/dist/schema/parseSeq.js +0 -180
- package/dist/schema/parseUtils.js +0 -104
- package/dist/stringify.js +0 -358
- package/dist/tags/core.js +0 -114
- package/dist/tags/failsafe/index.js +0 -17
- package/dist/tags/failsafe/map.js +0 -37
- package/dist/tags/failsafe/seq.js +0 -34
- package/dist/tags/failsafe/string.js +0 -40
- package/dist/tags/index.js +0 -62
- package/dist/tags/json.js +0 -60
- package/dist/tags/options.js +0 -35
- package/dist/tags/yaml-1.1/binary.js +0 -97
- package/dist/tags/yaml-1.1/index.js +0 -131
- package/dist/tags/yaml-1.1/omap.js +0 -105
- package/dist/tags/yaml-1.1/pairs.js +0 -80
- package/dist/tags/yaml-1.1/set.js +0 -91
- package/dist/tags/yaml-1.1/timestamp.js +0 -93
- package/dist/toJSON.js +0 -23
- package/dist/warnings.js +0 -39
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _constants = require("../constants");
|
|
9
|
-
|
|
10
|
-
var _errors = require("../errors");
|
|
11
|
-
|
|
12
|
-
var _BlankLine = _interopRequireDefault(require("./BlankLine"));
|
|
13
|
-
|
|
14
|
-
var _Node = _interopRequireDefault(require("./Node"));
|
|
15
|
-
|
|
16
|
-
var _Range = _interopRequireDefault(require("./Range"));
|
|
17
|
-
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
|
-
class CollectionItem extends _Node.default {
|
|
21
|
-
constructor(type, props) {
|
|
22
|
-
super(type, props);
|
|
23
|
-
this.node = null;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
get includesTrailingLines() {
|
|
27
|
-
return !!this.node && this.node.includesTrailingLines;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* @param {ParseContext} context
|
|
31
|
-
* @param {number} start - Index of first character
|
|
32
|
-
* @returns {number} - Index of the character after this
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
parse(context, start) {
|
|
37
|
-
this.context = context;
|
|
38
|
-
const {
|
|
39
|
-
parseNode,
|
|
40
|
-
src
|
|
41
|
-
} = context;
|
|
42
|
-
let {
|
|
43
|
-
atLineStart,
|
|
44
|
-
lineStart
|
|
45
|
-
} = context;
|
|
46
|
-
if (!atLineStart && this.type === _constants.Type.SEQ_ITEM) this.error = new _errors.YAMLSemanticError(this, 'Sequence items must not have preceding content on the same line');
|
|
47
|
-
const indent = atLineStart ? start - lineStart : context.indent;
|
|
48
|
-
|
|
49
|
-
let offset = _Node.default.endOfWhiteSpace(src, start + 1);
|
|
50
|
-
|
|
51
|
-
let ch = src[offset];
|
|
52
|
-
const inlineComment = ch === '#';
|
|
53
|
-
const comments = [];
|
|
54
|
-
let blankLine = null;
|
|
55
|
-
|
|
56
|
-
while (ch === '\n' || ch === '#') {
|
|
57
|
-
if (ch === '#') {
|
|
58
|
-
const end = _Node.default.endOfLine(src, offset + 1);
|
|
59
|
-
|
|
60
|
-
comments.push(new _Range.default(offset, end));
|
|
61
|
-
offset = end;
|
|
62
|
-
} else {
|
|
63
|
-
atLineStart = true;
|
|
64
|
-
lineStart = offset + 1;
|
|
65
|
-
|
|
66
|
-
const wsEnd = _Node.default.endOfWhiteSpace(src, lineStart);
|
|
67
|
-
|
|
68
|
-
if (src[wsEnd] === '\n' && comments.length === 0) {
|
|
69
|
-
blankLine = new _BlankLine.default();
|
|
70
|
-
lineStart = blankLine.parse({
|
|
71
|
-
src
|
|
72
|
-
}, lineStart);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
offset = _Node.default.endOfIndent(src, lineStart);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
ch = src[offset];
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
if (_Node.default.nextNodeIsIndented(ch, offset - (lineStart + indent), this.type !== _constants.Type.SEQ_ITEM)) {
|
|
82
|
-
this.node = parseNode({
|
|
83
|
-
atLineStart,
|
|
84
|
-
inCollection: false,
|
|
85
|
-
indent,
|
|
86
|
-
lineStart,
|
|
87
|
-
parent: this
|
|
88
|
-
}, offset);
|
|
89
|
-
} else if (ch && lineStart > start + 1) {
|
|
90
|
-
offset = lineStart - 1;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
if (this.node) {
|
|
94
|
-
if (blankLine) {
|
|
95
|
-
// Only blank lines preceding non-empty nodes are captured. Note that
|
|
96
|
-
// this means that collection item range start indices do not always
|
|
97
|
-
// increase monotonically. -- eemeli/yaml#126
|
|
98
|
-
const items = context.parent.items || context.parent.contents;
|
|
99
|
-
if (items) items.push(blankLine);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (comments.length) Array.prototype.push.apply(this.props, comments);
|
|
103
|
-
offset = this.node.range.end;
|
|
104
|
-
} else {
|
|
105
|
-
if (inlineComment) {
|
|
106
|
-
const c = comments[0];
|
|
107
|
-
this.props.push(c);
|
|
108
|
-
offset = c.end;
|
|
109
|
-
} else {
|
|
110
|
-
offset = _Node.default.endOfLine(src, start + 1);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
const end = this.node ? this.node.valueRange.end : offset;
|
|
115
|
-
this.valueRange = new _Range.default(start, end);
|
|
116
|
-
return offset;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
setOrigRanges(cr, offset) {
|
|
120
|
-
offset = super.setOrigRanges(cr, offset);
|
|
121
|
-
return this.node ? this.node.setOrigRanges(cr, offset) : offset;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
toString() {
|
|
125
|
-
const {
|
|
126
|
-
context: {
|
|
127
|
-
src
|
|
128
|
-
},
|
|
129
|
-
node,
|
|
130
|
-
range,
|
|
131
|
-
value
|
|
132
|
-
} = this;
|
|
133
|
-
if (value != null) return value;
|
|
134
|
-
const str = node ? src.slice(range.start, node.range.start) + String(node) : src.slice(range.start, range.end);
|
|
135
|
-
return _Node.default.addStringTerminator(src, range.end, str);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
exports.default = CollectionItem;
|
package/dist/cst/Comment.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _constants = require("../constants");
|
|
9
|
-
|
|
10
|
-
var _Node = _interopRequireDefault(require("./Node"));
|
|
11
|
-
|
|
12
|
-
var _Range = _interopRequireDefault(require("./Range"));
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
class Comment extends _Node.default {
|
|
17
|
-
constructor() {
|
|
18
|
-
super(_constants.Type.COMMENT);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Parses a comment line from the source
|
|
22
|
-
*
|
|
23
|
-
* @param {ParseContext} context
|
|
24
|
-
* @param {number} start - Index of first character
|
|
25
|
-
* @returns {number} - Index of the character after this scalar
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
parse(context, start) {
|
|
30
|
-
this.context = context;
|
|
31
|
-
const offset = this.parseComment(start);
|
|
32
|
-
this.range = new _Range.default(start, offset);
|
|
33
|
-
return offset;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
exports.default = Comment;
|
package/dist/cst/Directive.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _constants = require("../constants");
|
|
9
|
-
|
|
10
|
-
var _Node = _interopRequireDefault(require("./Node"));
|
|
11
|
-
|
|
12
|
-
var _Range = _interopRequireDefault(require("./Range"));
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
class Directive extends _Node.default {
|
|
17
|
-
constructor() {
|
|
18
|
-
super(_constants.Type.DIRECTIVE);
|
|
19
|
-
this.name = null;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
get parameters() {
|
|
23
|
-
const raw = this.rawValue;
|
|
24
|
-
return raw ? raw.trim().split(/[ \t]+/) : [];
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
parseName(start) {
|
|
28
|
-
const {
|
|
29
|
-
src
|
|
30
|
-
} = this.context;
|
|
31
|
-
let offset = start;
|
|
32
|
-
let ch = src[offset];
|
|
33
|
-
|
|
34
|
-
while (ch && ch !== '\n' && ch !== '\t' && ch !== ' ') ch = src[offset += 1];
|
|
35
|
-
|
|
36
|
-
this.name = src.slice(start, offset);
|
|
37
|
-
return offset;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
parseParameters(start) {
|
|
41
|
-
const {
|
|
42
|
-
src
|
|
43
|
-
} = this.context;
|
|
44
|
-
let offset = start;
|
|
45
|
-
let ch = src[offset];
|
|
46
|
-
|
|
47
|
-
while (ch && ch !== '\n' && ch !== '#') ch = src[offset += 1];
|
|
48
|
-
|
|
49
|
-
this.valueRange = new _Range.default(start, offset);
|
|
50
|
-
return offset;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
parse(context, start) {
|
|
54
|
-
this.context = context;
|
|
55
|
-
let offset = this.parseName(start + 1);
|
|
56
|
-
offset = this.parseParameters(offset);
|
|
57
|
-
offset = this.parseComment(offset);
|
|
58
|
-
this.range = new _Range.default(start, offset);
|
|
59
|
-
return offset;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
exports.default = Directive;
|
package/dist/cst/Document.js
DELETED
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _constants = require("../constants");
|
|
9
|
-
|
|
10
|
-
var _errors = require("../errors");
|
|
11
|
-
|
|
12
|
-
var _BlankLine = _interopRequireDefault(require("./BlankLine"));
|
|
13
|
-
|
|
14
|
-
var _Collection = require("./Collection");
|
|
15
|
-
|
|
16
|
-
var _Comment = _interopRequireDefault(require("./Comment"));
|
|
17
|
-
|
|
18
|
-
var _Directive = _interopRequireDefault(require("./Directive"));
|
|
19
|
-
|
|
20
|
-
var _Node = _interopRequireDefault(require("./Node"));
|
|
21
|
-
|
|
22
|
-
var _Range = _interopRequireDefault(require("./Range"));
|
|
23
|
-
|
|
24
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
-
|
|
26
|
-
class Document extends _Node.default {
|
|
27
|
-
static startCommentOrEndBlankLine(src, start) {
|
|
28
|
-
const offset = _Node.default.endOfWhiteSpace(src, start);
|
|
29
|
-
|
|
30
|
-
const ch = src[offset];
|
|
31
|
-
return ch === '#' || ch === '\n' ? offset : start;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
constructor() {
|
|
35
|
-
super(_constants.Type.DOCUMENT);
|
|
36
|
-
this.directives = null;
|
|
37
|
-
this.contents = null;
|
|
38
|
-
this.directivesEndMarker = null;
|
|
39
|
-
this.documentEndMarker = null;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
parseDirectives(start) {
|
|
43
|
-
const {
|
|
44
|
-
src
|
|
45
|
-
} = this.context;
|
|
46
|
-
this.directives = [];
|
|
47
|
-
let atLineStart = true;
|
|
48
|
-
let hasDirectives = false;
|
|
49
|
-
let offset = start;
|
|
50
|
-
|
|
51
|
-
while (!_Node.default.atDocumentBoundary(src, offset, _constants.Char.DIRECTIVES_END)) {
|
|
52
|
-
offset = Document.startCommentOrEndBlankLine(src, offset);
|
|
53
|
-
|
|
54
|
-
switch (src[offset]) {
|
|
55
|
-
case '\n':
|
|
56
|
-
if (atLineStart) {
|
|
57
|
-
const blankLine = new _BlankLine.default();
|
|
58
|
-
offset = blankLine.parse({
|
|
59
|
-
src
|
|
60
|
-
}, offset);
|
|
61
|
-
|
|
62
|
-
if (offset < src.length) {
|
|
63
|
-
this.directives.push(blankLine);
|
|
64
|
-
}
|
|
65
|
-
} else {
|
|
66
|
-
offset += 1;
|
|
67
|
-
atLineStart = true;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
break;
|
|
71
|
-
|
|
72
|
-
case '#':
|
|
73
|
-
{
|
|
74
|
-
const comment = new _Comment.default();
|
|
75
|
-
offset = comment.parse({
|
|
76
|
-
src
|
|
77
|
-
}, offset);
|
|
78
|
-
this.directives.push(comment);
|
|
79
|
-
atLineStart = false;
|
|
80
|
-
}
|
|
81
|
-
break;
|
|
82
|
-
|
|
83
|
-
case '%':
|
|
84
|
-
{
|
|
85
|
-
const directive = new _Directive.default();
|
|
86
|
-
offset = directive.parse({
|
|
87
|
-
parent: this,
|
|
88
|
-
src
|
|
89
|
-
}, offset);
|
|
90
|
-
this.directives.push(directive);
|
|
91
|
-
hasDirectives = true;
|
|
92
|
-
atLineStart = false;
|
|
93
|
-
}
|
|
94
|
-
break;
|
|
95
|
-
|
|
96
|
-
default:
|
|
97
|
-
if (hasDirectives) {
|
|
98
|
-
this.error = new _errors.YAMLSemanticError(this, 'Missing directives-end indicator line');
|
|
99
|
-
} else if (this.directives.length > 0) {
|
|
100
|
-
this.contents = this.directives;
|
|
101
|
-
this.directives = [];
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return offset;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
if (src[offset]) {
|
|
109
|
-
this.directivesEndMarker = new _Range.default(offset, offset + 3);
|
|
110
|
-
return offset + 3;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (hasDirectives) {
|
|
114
|
-
this.error = new _errors.YAMLSemanticError(this, 'Missing directives-end indicator line');
|
|
115
|
-
} else if (this.directives.length > 0) {
|
|
116
|
-
this.contents = this.directives;
|
|
117
|
-
this.directives = [];
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return offset;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
parseContents(start) {
|
|
124
|
-
const {
|
|
125
|
-
parseNode,
|
|
126
|
-
src
|
|
127
|
-
} = this.context;
|
|
128
|
-
if (!this.contents) this.contents = [];
|
|
129
|
-
let lineStart = start;
|
|
130
|
-
|
|
131
|
-
while (src[lineStart - 1] === '-') lineStart -= 1;
|
|
132
|
-
|
|
133
|
-
let offset = _Node.default.endOfWhiteSpace(src, start);
|
|
134
|
-
|
|
135
|
-
let atLineStart = lineStart === start;
|
|
136
|
-
this.valueRange = new _Range.default(offset);
|
|
137
|
-
|
|
138
|
-
while (!_Node.default.atDocumentBoundary(src, offset, _constants.Char.DOCUMENT_END)) {
|
|
139
|
-
switch (src[offset]) {
|
|
140
|
-
case '\n':
|
|
141
|
-
if (atLineStart) {
|
|
142
|
-
const blankLine = new _BlankLine.default();
|
|
143
|
-
offset = blankLine.parse({
|
|
144
|
-
src
|
|
145
|
-
}, offset);
|
|
146
|
-
|
|
147
|
-
if (offset < src.length) {
|
|
148
|
-
this.contents.push(blankLine);
|
|
149
|
-
}
|
|
150
|
-
} else {
|
|
151
|
-
offset += 1;
|
|
152
|
-
atLineStart = true;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
lineStart = offset;
|
|
156
|
-
break;
|
|
157
|
-
|
|
158
|
-
case '#':
|
|
159
|
-
{
|
|
160
|
-
const comment = new _Comment.default();
|
|
161
|
-
offset = comment.parse({
|
|
162
|
-
src
|
|
163
|
-
}, offset);
|
|
164
|
-
this.contents.push(comment);
|
|
165
|
-
atLineStart = false;
|
|
166
|
-
}
|
|
167
|
-
break;
|
|
168
|
-
|
|
169
|
-
default:
|
|
170
|
-
{
|
|
171
|
-
const iEnd = _Node.default.endOfIndent(src, offset);
|
|
172
|
-
|
|
173
|
-
const context = {
|
|
174
|
-
atLineStart,
|
|
175
|
-
indent: -1,
|
|
176
|
-
inFlow: false,
|
|
177
|
-
inCollection: false,
|
|
178
|
-
lineStart,
|
|
179
|
-
parent: this
|
|
180
|
-
};
|
|
181
|
-
const node = parseNode(context, iEnd);
|
|
182
|
-
if (!node) return this.valueRange.end = iEnd; // at next document start
|
|
183
|
-
|
|
184
|
-
this.contents.push(node);
|
|
185
|
-
offset = node.range.end;
|
|
186
|
-
atLineStart = false;
|
|
187
|
-
const ec = (0, _Collection.grabCollectionEndComments)(node);
|
|
188
|
-
if (ec) Array.prototype.push.apply(this.contents, ec);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
offset = Document.startCommentOrEndBlankLine(src, offset);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
this.valueRange.end = offset;
|
|
196
|
-
|
|
197
|
-
if (src[offset]) {
|
|
198
|
-
this.documentEndMarker = new _Range.default(offset, offset + 3);
|
|
199
|
-
offset += 3;
|
|
200
|
-
|
|
201
|
-
if (src[offset]) {
|
|
202
|
-
offset = _Node.default.endOfWhiteSpace(src, offset);
|
|
203
|
-
|
|
204
|
-
if (src[offset] === '#') {
|
|
205
|
-
const comment = new _Comment.default();
|
|
206
|
-
offset = comment.parse({
|
|
207
|
-
src
|
|
208
|
-
}, offset);
|
|
209
|
-
this.contents.push(comment);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
switch (src[offset]) {
|
|
213
|
-
case '\n':
|
|
214
|
-
offset += 1;
|
|
215
|
-
break;
|
|
216
|
-
|
|
217
|
-
case undefined:
|
|
218
|
-
break;
|
|
219
|
-
|
|
220
|
-
default:
|
|
221
|
-
this.error = new _errors.YAMLSyntaxError(this, 'Document end marker line cannot have a non-comment suffix');
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
return offset;
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* @param {ParseContext} context
|
|
230
|
-
* @param {number} start - Index of first character
|
|
231
|
-
* @returns {number} - Index of the character after this
|
|
232
|
-
*/
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
parse(context, start) {
|
|
236
|
-
context.root = this;
|
|
237
|
-
this.context = context;
|
|
238
|
-
const {
|
|
239
|
-
src
|
|
240
|
-
} = context;
|
|
241
|
-
let offset = src.charCodeAt(start) === 0xfeff ? start + 1 : start; // skip BOM
|
|
242
|
-
|
|
243
|
-
offset = this.parseDirectives(offset);
|
|
244
|
-
offset = this.parseContents(offset);
|
|
245
|
-
return offset;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
setOrigRanges(cr, offset) {
|
|
249
|
-
offset = super.setOrigRanges(cr, offset);
|
|
250
|
-
this.directives.forEach(node => {
|
|
251
|
-
offset = node.setOrigRanges(cr, offset);
|
|
252
|
-
});
|
|
253
|
-
if (this.directivesEndMarker) offset = this.directivesEndMarker.setOrigRange(cr, offset);
|
|
254
|
-
this.contents.forEach(node => {
|
|
255
|
-
offset = node.setOrigRanges(cr, offset);
|
|
256
|
-
});
|
|
257
|
-
if (this.documentEndMarker) offset = this.documentEndMarker.setOrigRange(cr, offset);
|
|
258
|
-
return offset;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
toString() {
|
|
262
|
-
const {
|
|
263
|
-
contents,
|
|
264
|
-
directives,
|
|
265
|
-
value
|
|
266
|
-
} = this;
|
|
267
|
-
if (value != null) return value;
|
|
268
|
-
let str = directives.join('');
|
|
269
|
-
|
|
270
|
-
if (contents.length > 0) {
|
|
271
|
-
if (directives.length > 0 || contents[0].type === _constants.Type.COMMENT) str += '---\n';
|
|
272
|
-
str += contents.join('');
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
if (str[str.length - 1] !== '\n') str += '\n';
|
|
276
|
-
return str;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
exports.default = Document;
|