yaml 2.0.0-3 → 2.0.0-7

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.
Files changed (345) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +46 -26
  3. package/browser/dist/compose/compose-collection.js +59 -0
  4. package/browser/dist/compose/compose-doc.js +39 -0
  5. package/browser/dist/compose/compose-node.js +79 -0
  6. package/browser/dist/compose/compose-scalar.js +74 -0
  7. package/browser/dist/compose/composer.js +219 -0
  8. package/browser/dist/compose/resolve-block-map.js +93 -0
  9. package/browser/dist/compose/resolve-block-scalar.js +185 -0
  10. package/browser/dist/compose/resolve-block-seq.js +40 -0
  11. package/browser/dist/compose/resolve-end.js +37 -0
  12. package/browser/dist/compose/resolve-flow-collection.js +189 -0
  13. package/browser/dist/compose/resolve-flow-scalar.js +217 -0
  14. package/browser/dist/compose/resolve-props.js +126 -0
  15. package/browser/dist/compose/util-contains-newline.js +34 -0
  16. package/browser/dist/compose/util-empty-scalar-position.js +27 -0
  17. package/browser/dist/compose/util-map-includes.js +17 -0
  18. package/browser/dist/doc/Document.js +251 -348
  19. package/browser/dist/doc/anchors.js +72 -0
  20. package/browser/dist/doc/applyReviver.js +41 -28
  21. package/browser/dist/doc/createNode.js +75 -55
  22. package/browser/dist/doc/directives.js +161 -0
  23. package/browser/dist/errors.js +50 -72
  24. package/browser/dist/index.js +16 -72
  25. package/browser/dist/log.js +11 -7
  26. package/browser/dist/nodes/Alias.js +94 -0
  27. package/browser/dist/nodes/Collection.js +133 -0
  28. package/browser/dist/nodes/Node.js +41 -0
  29. package/browser/dist/nodes/Pair.js +28 -0
  30. package/browser/dist/nodes/Scalar.js +23 -0
  31. package/browser/dist/nodes/YAMLMap.js +116 -0
  32. package/browser/dist/nodes/YAMLSeq.js +105 -0
  33. package/browser/dist/nodes/addPairToJSMap.js +103 -0
  34. package/browser/dist/nodes/toJS.js +35 -0
  35. package/browser/dist/options.js +14 -95
  36. package/browser/dist/parse/cst-scalar.js +219 -0
  37. package/browser/dist/parse/cst-stringify.js +61 -0
  38. package/browser/dist/parse/cst-visit.js +97 -0
  39. package/browser/dist/parse/cst.js +98 -0
  40. package/browser/dist/parse/lexer.js +674 -0
  41. package/browser/dist/parse/line-counter.js +39 -0
  42. package/browser/dist/parse/parser.js +876 -0
  43. package/browser/dist/public-api.js +101 -0
  44. package/browser/dist/schema/Schema.js +23 -0
  45. package/browser/dist/schema/common/map.js +42 -0
  46. package/browser/dist/schema/common/null.js +13 -0
  47. package/browser/dist/schema/common/seq.js +33 -0
  48. package/browser/dist/schema/common/string.js +14 -0
  49. package/browser/dist/schema/core/bool.js +19 -0
  50. package/browser/dist/schema/core/float.js +40 -0
  51. package/browser/dist/schema/core/int.js +38 -0
  52. package/browser/dist/schema/core/schema.js +23 -0
  53. package/browser/dist/schema/json/schema.js +62 -0
  54. package/browser/dist/schema/tags.js +79 -0
  55. package/browser/dist/schema/yaml-1.1/binary.js +66 -0
  56. package/browser/dist/schema/yaml-1.1/bool.js +26 -0
  57. package/browser/dist/schema/yaml-1.1/float.js +43 -0
  58. package/browser/dist/schema/yaml-1.1/int.js +71 -0
  59. package/browser/dist/schema/yaml-1.1/omap.js +73 -0
  60. package/browser/dist/schema/yaml-1.1/pairs.js +77 -0
  61. package/browser/dist/schema/yaml-1.1/schema.js +37 -0
  62. package/browser/dist/schema/yaml-1.1/set.js +87 -0
  63. package/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
  64. package/browser/dist/stringify/foldFlowLines.js +121 -139
  65. package/browser/dist/stringify/stringify.js +87 -72
  66. package/browser/dist/stringify/stringifyCollection.js +122 -0
  67. package/browser/dist/stringify/stringifyComment.js +14 -0
  68. package/browser/dist/stringify/stringifyDocument.js +64 -0
  69. package/browser/dist/stringify/stringifyNumber.js +20 -23
  70. package/browser/dist/stringify/stringifyPair.js +111 -0
  71. package/browser/dist/stringify/stringifyString.js +295 -322
  72. package/browser/dist/util.js +4 -4
  73. package/browser/dist/visit.js +134 -71
  74. package/browser/index.js +4 -1
  75. package/dist/compose/compose-collection.d.ts +5 -0
  76. package/dist/compose/compose-collection.js +61 -0
  77. package/dist/compose/compose-doc.d.ts +6 -0
  78. package/dist/compose/compose-doc.js +41 -0
  79. package/dist/compose/compose-node.d.ts +25 -0
  80. package/dist/compose/compose-node.js +82 -0
  81. package/dist/compose/compose-scalar.d.ts +5 -0
  82. package/dist/compose/compose-scalar.js +76 -0
  83. package/dist/compose/composer.d.ts +62 -0
  84. package/dist/compose/composer.js +223 -0
  85. package/dist/compose/resolve-block-map.d.ts +6 -0
  86. package/dist/compose/resolve-block-map.js +95 -0
  87. package/dist/compose/resolve-block-scalar.d.ts +10 -0
  88. package/dist/compose/resolve-block-scalar.js +187 -0
  89. package/dist/compose/resolve-block-seq.d.ts +5 -0
  90. package/dist/compose/resolve-block-seq.js +42 -0
  91. package/dist/compose/resolve-end.d.ts +6 -0
  92. package/dist/compose/resolve-end.js +39 -0
  93. package/dist/compose/resolve-flow-collection.d.ts +6 -0
  94. package/dist/compose/resolve-flow-collection.js +191 -0
  95. package/dist/compose/resolve-flow-scalar.d.ts +10 -0
  96. package/dist/compose/resolve-flow-scalar.js +219 -0
  97. package/dist/compose/resolve-props.d.ts +21 -0
  98. package/dist/compose/resolve-props.js +128 -0
  99. package/dist/compose/util-contains-newline.d.ts +2 -0
  100. package/dist/compose/util-contains-newline.js +36 -0
  101. package/dist/compose/util-empty-scalar-position.d.ts +2 -0
  102. package/dist/compose/util-empty-scalar-position.js +29 -0
  103. package/dist/compose/util-map-includes.d.ts +4 -0
  104. package/dist/compose/util-map-includes.js +19 -0
  105. package/dist/doc/Document.d.ts +130 -0
  106. package/dist/doc/Document.js +250 -347
  107. package/dist/doc/anchors.d.ts +24 -0
  108. package/dist/doc/anchors.js +77 -0
  109. package/dist/doc/applyReviver.d.ts +9 -0
  110. package/dist/doc/applyReviver.js +41 -28
  111. package/dist/doc/createNode.d.ts +16 -0
  112. package/dist/doc/createNode.js +75 -55
  113. package/dist/doc/directives.d.ts +46 -0
  114. package/dist/doc/directives.js +163 -0
  115. package/dist/errors.d.ts +21 -0
  116. package/dist/errors.js +51 -74
  117. package/dist/index.d.ts +19 -0
  118. package/dist/index.js +39 -70
  119. package/dist/log.d.ts +3 -0
  120. package/dist/log.js +11 -6
  121. package/dist/nodes/Alias.d.ts +24 -0
  122. package/dist/nodes/Alias.js +96 -0
  123. package/dist/nodes/Collection.d.ts +67 -0
  124. package/dist/nodes/Collection.js +137 -0
  125. package/dist/nodes/Node.d.ts +48 -0
  126. package/dist/nodes/Node.js +59 -0
  127. package/dist/nodes/Pair.d.ts +16 -0
  128. package/dist/nodes/Pair.js +31 -0
  129. package/dist/nodes/Scalar.d.ts +40 -0
  130. package/dist/nodes/Scalar.js +26 -0
  131. package/dist/nodes/YAMLMap.d.ts +39 -0
  132. package/dist/nodes/YAMLMap.js +119 -0
  133. package/dist/nodes/YAMLSeq.d.ts +53 -0
  134. package/dist/nodes/YAMLSeq.js +107 -0
  135. package/dist/nodes/addPairToJSMap.d.ts +3 -0
  136. package/dist/nodes/addPairToJSMap.js +105 -0
  137. package/dist/nodes/toJS.d.ts +30 -0
  138. package/dist/nodes/toJS.js +37 -0
  139. package/dist/options.d.ts +278 -0
  140. package/dist/options.js +13 -96
  141. package/dist/parse/cst-scalar.d.ts +58 -0
  142. package/dist/parse/cst-scalar.js +223 -0
  143. package/dist/parse/cst-stringify.d.ts +8 -0
  144. package/dist/parse/cst-stringify.js +63 -0
  145. package/dist/parse/cst-visit.d.ts +39 -0
  146. package/dist/parse/cst-visit.js +99 -0
  147. package/dist/parse/cst.d.ts +106 -0
  148. package/dist/parse/cst.js +112 -0
  149. package/dist/parse/lexer.d.ts +85 -0
  150. package/dist/parse/lexer.js +676 -0
  151. package/dist/parse/line-counter.d.ts +22 -0
  152. package/dist/parse/line-counter.js +41 -0
  153. package/dist/parse/parser.d.ts +84 -0
  154. package/dist/parse/parser.js +880 -0
  155. package/dist/public-api.d.ts +43 -0
  156. package/dist/public-api.js +106 -0
  157. package/dist/schema/Schema.d.ts +16 -0
  158. package/dist/schema/Schema.js +25 -0
  159. package/dist/schema/common/map.d.ts +2 -0
  160. package/dist/schema/common/map.js +44 -0
  161. package/dist/schema/common/null.d.ts +4 -0
  162. package/dist/schema/common/null.js +15 -0
  163. package/dist/schema/common/seq.d.ts +2 -0
  164. package/dist/schema/common/seq.js +35 -0
  165. package/dist/schema/common/string.d.ts +2 -0
  166. package/dist/schema/common/string.js +16 -0
  167. package/dist/schema/core/bool.d.ts +4 -0
  168. package/dist/schema/core/bool.js +21 -0
  169. package/dist/schema/core/float.d.ts +4 -0
  170. package/dist/schema/core/float.js +44 -0
  171. package/dist/schema/core/int.d.ts +4 -0
  172. package/dist/schema/core/int.js +42 -0
  173. package/dist/schema/core/schema.d.ts +1 -0
  174. package/dist/schema/core/schema.js +25 -0
  175. package/dist/schema/json/schema.d.ts +2 -0
  176. package/dist/schema/json/schema.js +64 -0
  177. package/dist/schema/tags.d.ts +41 -0
  178. package/dist/schema/tags.js +82 -0
  179. package/dist/schema/types.d.ts +82 -0
  180. package/dist/schema/yaml-1.1/binary.d.ts +2 -0
  181. package/dist/schema/yaml-1.1/binary.js +68 -0
  182. package/dist/schema/yaml-1.1/bool.d.ts +7 -0
  183. package/dist/schema/yaml-1.1/bool.js +29 -0
  184. package/dist/schema/yaml-1.1/float.d.ts +4 -0
  185. package/dist/schema/yaml-1.1/float.js +47 -0
  186. package/dist/schema/yaml-1.1/int.d.ts +5 -0
  187. package/dist/schema/yaml-1.1/int.js +76 -0
  188. package/dist/schema/yaml-1.1/omap.d.ts +21 -0
  189. package/dist/schema/yaml-1.1/omap.js +76 -0
  190. package/dist/schema/yaml-1.1/pairs.d.ts +10 -0
  191. package/dist/schema/yaml-1.1/pairs.js +81 -0
  192. package/dist/schema/yaml-1.1/schema.d.ts +1 -0
  193. package/dist/schema/yaml-1.1/schema.js +39 -0
  194. package/dist/schema/yaml-1.1/set.d.ts +22 -0
  195. package/dist/schema/yaml-1.1/set.js +90 -0
  196. package/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
  197. package/dist/schema/yaml-1.1/timestamp.js +105 -0
  198. package/dist/stringify/foldFlowLines.d.ts +34 -0
  199. package/dist/stringify/foldFlowLines.js +121 -139
  200. package/dist/stringify/stringify.d.ts +18 -0
  201. package/dist/stringify/stringify.js +87 -71
  202. package/dist/stringify/stringifyCollection.d.ts +21 -0
  203. package/dist/stringify/stringifyCollection.js +124 -0
  204. package/dist/stringify/stringifyComment.d.ts +2 -0
  205. package/dist/stringify/stringifyComment.js +17 -0
  206. package/dist/stringify/stringifyDocument.d.ts +3 -0
  207. package/dist/stringify/stringifyDocument.js +66 -0
  208. package/dist/stringify/stringifyNumber.d.ts +2 -0
  209. package/dist/stringify/stringifyNumber.js +20 -23
  210. package/dist/stringify/stringifyPair.d.ts +3 -0
  211. package/dist/stringify/stringifyPair.js +113 -0
  212. package/dist/stringify/stringifyString.d.ts +3 -0
  213. package/dist/stringify/stringifyString.js +295 -322
  214. package/dist/test-events.d.ts +4 -0
  215. package/dist/test-events.js +124 -148
  216. package/dist/util.d.ts +6 -0
  217. package/dist/util.js +9 -12
  218. package/dist/visit.d.ts +63 -0
  219. package/dist/visit.js +134 -71
  220. package/package.json +31 -39
  221. package/util.js +2 -14
  222. package/browser/dist/_virtual/_rollupPluginBabelHelpers.js +0 -16
  223. package/browser/dist/ast/Alias.js +0 -95
  224. package/browser/dist/ast/Collection.js +0 -192
  225. package/browser/dist/ast/Merge.js +0 -71
  226. package/browser/dist/ast/Node.js +0 -3
  227. package/browser/dist/ast/Pair.js +0 -200
  228. package/browser/dist/ast/Scalar.js +0 -21
  229. package/browser/dist/ast/YAMLMap.js +0 -91
  230. package/browser/dist/ast/YAMLSeq.js +0 -67
  231. package/browser/dist/ast/toJS.js +0 -29
  232. package/browser/dist/constants.js +0 -40
  233. package/browser/dist/cst/Alias.js +0 -26
  234. package/browser/dist/cst/BlankLine.js +0 -34
  235. package/browser/dist/cst/BlockValue.js +0 -240
  236. package/browser/dist/cst/Collection.js +0 -259
  237. package/browser/dist/cst/CollectionItem.js +0 -123
  238. package/browser/dist/cst/Comment.js +0 -27
  239. package/browser/dist/cst/Directive.js +0 -53
  240. package/browser/dist/cst/Document.js +0 -262
  241. package/browser/dist/cst/FlowCollection.js +0 -201
  242. package/browser/dist/cst/Node.js +0 -355
  243. package/browser/dist/cst/ParseContext.js +0 -234
  244. package/browser/dist/cst/PlainValue.js +0 -171
  245. package/browser/dist/cst/QuoteDouble.js +0 -224
  246. package/browser/dist/cst/QuoteSingle.js +0 -100
  247. package/browser/dist/cst/Range.js +0 -56
  248. package/browser/dist/cst/parse.js +0 -46
  249. package/browser/dist/cst/source-utils.js +0 -169
  250. package/browser/dist/doc/Anchors.js +0 -115
  251. package/browser/dist/doc/Schema.js +0 -34
  252. package/browser/dist/doc/getSchemaTags.js +0 -33
  253. package/browser/dist/doc/listTagNames.js +0 -27
  254. package/browser/dist/doc/parseContents.js +0 -60
  255. package/browser/dist/doc/parseDirectives.js +0 -107
  256. package/browser/dist/resolve/collection-utils.js +0 -86
  257. package/browser/dist/resolve/resolveMap.js +0 -315
  258. package/browser/dist/resolve/resolveNode.js +0 -173
  259. package/browser/dist/resolve/resolveScalar.js +0 -20
  260. package/browser/dist/resolve/resolveSeq.js +0 -170
  261. package/browser/dist/resolve/resolveTag.js +0 -107
  262. package/browser/dist/resolve/resolveTagName.js +0 -87
  263. package/browser/dist/stringify/addComment.js +0 -10
  264. package/browser/dist/stringify/stringifyTag.js +0 -28
  265. package/browser/dist/tags/core.js +0 -128
  266. package/browser/dist/tags/failsafe/index.js +0 -7
  267. package/browser/dist/tags/failsafe/map.js +0 -37
  268. package/browser/dist/tags/failsafe/seq.js +0 -34
  269. package/browser/dist/tags/failsafe/string.js +0 -20
  270. package/browser/dist/tags/index.js +0 -39
  271. package/browser/dist/tags/json.js +0 -62
  272. package/browser/dist/tags/options.js +0 -31
  273. package/browser/dist/tags/yaml-1.1/binary.js +0 -83
  274. package/browser/dist/tags/yaml-1.1/index.js +0 -174
  275. package/browser/dist/tags/yaml-1.1/omap.js +0 -86
  276. package/browser/dist/tags/yaml-1.1/pairs.js +0 -62
  277. package/browser/dist/tags/yaml-1.1/set.js +0 -78
  278. package/browser/dist/tags/yaml-1.1/timestamp.js +0 -101
  279. package/browser/dist/types.js +0 -10
  280. package/cst.d.ts +0 -185
  281. package/dist/_virtual/_rollupPluginBabelHelpers.js +0 -18
  282. package/dist/ast/Alias.js +0 -97
  283. package/dist/ast/Collection.js +0 -196
  284. package/dist/ast/Merge.js +0 -74
  285. package/dist/ast/Node.js +0 -5
  286. package/dist/ast/Pair.js +0 -203
  287. package/dist/ast/Scalar.js +0 -24
  288. package/dist/ast/YAMLMap.js +0 -94
  289. package/dist/ast/YAMLSeq.js +0 -69
  290. package/dist/ast/toJS.js +0 -31
  291. package/dist/constants.js +0 -46
  292. package/dist/cst/Alias.js +0 -28
  293. package/dist/cst/BlankLine.js +0 -36
  294. package/dist/cst/BlockValue.js +0 -243
  295. package/dist/cst/Collection.js +0 -262
  296. package/dist/cst/CollectionItem.js +0 -125
  297. package/dist/cst/Comment.js +0 -29
  298. package/dist/cst/Directive.js +0 -55
  299. package/dist/cst/Document.js +0 -264
  300. package/dist/cst/FlowCollection.js +0 -203
  301. package/dist/cst/Node.js +0 -357
  302. package/dist/cst/ParseContext.js +0 -236
  303. package/dist/cst/PlainValue.js +0 -173
  304. package/dist/cst/QuoteDouble.js +0 -226
  305. package/dist/cst/QuoteSingle.js +0 -102
  306. package/dist/cst/Range.js +0 -58
  307. package/dist/cst/parse.js +0 -48
  308. package/dist/cst/source-utils.js +0 -173
  309. package/dist/doc/Anchors.js +0 -117
  310. package/dist/doc/Schema.js +0 -36
  311. package/dist/doc/getSchemaTags.js +0 -35
  312. package/dist/doc/listTagNames.js +0 -29
  313. package/dist/doc/parseContents.js +0 -62
  314. package/dist/doc/parseDirectives.js +0 -109
  315. package/dist/resolve/collection-utils.js +0 -91
  316. package/dist/resolve/resolveMap.js +0 -317
  317. package/dist/resolve/resolveNode.js +0 -175
  318. package/dist/resolve/resolveScalar.js +0 -22
  319. package/dist/resolve/resolveSeq.js +0 -172
  320. package/dist/resolve/resolveTag.js +0 -109
  321. package/dist/resolve/resolveTagName.js +0 -89
  322. package/dist/stringify/addComment.js +0 -13
  323. package/dist/stringify/stringifyTag.js +0 -30
  324. package/dist/tags/core.js +0 -138
  325. package/dist/tags/failsafe/index.js +0 -9
  326. package/dist/tags/failsafe/map.js +0 -39
  327. package/dist/tags/failsafe/seq.js +0 -36
  328. package/dist/tags/failsafe/string.js +0 -22
  329. package/dist/tags/index.js +0 -42
  330. package/dist/tags/json.js +0 -64
  331. package/dist/tags/options.js +0 -37
  332. package/dist/tags/yaml-1.1/binary.js +0 -85
  333. package/dist/tags/yaml-1.1/index.js +0 -176
  334. package/dist/tags/yaml-1.1/omap.js +0 -89
  335. package/dist/tags/yaml-1.1/pairs.js +0 -66
  336. package/dist/tags/yaml-1.1/set.js +0 -81
  337. package/dist/tags/yaml-1.1/timestamp.js +0 -105
  338. package/dist/types.js +0 -29
  339. package/index.d.ts +0 -519
  340. package/index.js +0 -1
  341. package/types.d.ts +0 -379
  342. package/types.js +0 -17
  343. package/types.mjs +0 -17
  344. package/util.d.ts +0 -76
  345. package/util.mjs +0 -15
@@ -1,264 +0,0 @@
1
- 'use strict';
2
-
3
- var constants = require('../constants.js');
4
- var errors = require('../errors.js');
5
- var BlankLine = require('./BlankLine.js');
6
- var Collection = require('./Collection.js');
7
- var Comment = require('./Comment.js');
8
- var Directive = require('./Directive.js');
9
- var Node = require('./Node.js');
10
- var Range = require('./Range.js');
11
-
12
- class Document extends Node.Node {
13
- static startCommentOrEndBlankLine(src, start) {
14
- const offset = Node.Node.endOfWhiteSpace(src, start);
15
- const ch = src[offset];
16
- return ch === '#' || ch === '\n' ? offset : start;
17
- }
18
-
19
- constructor() {
20
- super(constants.Type.DOCUMENT);
21
- this.directives = null;
22
- this.contents = null;
23
- this.directivesEndMarker = null;
24
- this.documentEndMarker = null;
25
- }
26
-
27
- parseDirectives(start) {
28
- const {
29
- src
30
- } = this.context;
31
- this.directives = [];
32
- let atLineStart = true;
33
- let hasDirectives = false;
34
- let offset = start;
35
-
36
- while (!Node.Node.atDocumentBoundary(src, offset, constants.Char.DIRECTIVES_END)) {
37
- offset = Document.startCommentOrEndBlankLine(src, offset);
38
-
39
- switch (src[offset]) {
40
- case '\n':
41
- if (atLineStart) {
42
- const blankLine = new BlankLine.BlankLine();
43
- offset = blankLine.parse({
44
- src
45
- }, offset);
46
-
47
- if (offset < src.length) {
48
- this.directives.push(blankLine);
49
- }
50
- } else {
51
- offset += 1;
52
- atLineStart = true;
53
- }
54
-
55
- break;
56
-
57
- case '#':
58
- {
59
- const comment = new Comment.Comment();
60
- offset = comment.parse({
61
- src
62
- }, offset);
63
- this.directives.push(comment);
64
- atLineStart = false;
65
- }
66
- break;
67
-
68
- case '%':
69
- {
70
- const directive = new Directive.Directive();
71
- offset = directive.parse({
72
- parent: this,
73
- src
74
- }, offset);
75
- this.directives.push(directive);
76
- hasDirectives = true;
77
- atLineStart = false;
78
- }
79
- break;
80
-
81
- default:
82
- if (hasDirectives) {
83
- this.error = new errors.YAMLSemanticError(this, 'Missing directives-end indicator line');
84
- } else if (this.directives.length > 0) {
85
- this.contents = this.directives;
86
- this.directives = [];
87
- }
88
-
89
- return offset;
90
- }
91
- }
92
-
93
- if (src[offset]) {
94
- this.directivesEndMarker = new Range.Range(offset, offset + 3);
95
- return offset + 3;
96
- }
97
-
98
- if (hasDirectives) {
99
- this.error = new errors.YAMLSemanticError(this, 'Missing directives-end indicator line');
100
- } else if (this.directives.length > 0) {
101
- this.contents = this.directives;
102
- this.directives = [];
103
- }
104
-
105
- return offset;
106
- }
107
-
108
- parseContents(start) {
109
- const {
110
- parseNode,
111
- src
112
- } = this.context;
113
- if (!this.contents) this.contents = [];
114
- let lineStart = start;
115
-
116
- while (src[lineStart - 1] === '-') lineStart -= 1;
117
-
118
- let offset = Node.Node.endOfWhiteSpace(src, start);
119
- let atLineStart = lineStart === start;
120
- this.valueRange = new Range.Range(offset);
121
-
122
- while (!Node.Node.atDocumentBoundary(src, offset, constants.Char.DOCUMENT_END)) {
123
- switch (src[offset]) {
124
- case '\n':
125
- if (atLineStart) {
126
- const blankLine = new BlankLine.BlankLine();
127
- offset = blankLine.parse({
128
- src
129
- }, offset);
130
-
131
- if (offset < src.length) {
132
- this.contents.push(blankLine);
133
- }
134
- } else {
135
- offset += 1;
136
- atLineStart = true;
137
- }
138
-
139
- lineStart = offset;
140
- break;
141
-
142
- case '#':
143
- {
144
- const comment = new Comment.Comment();
145
- offset = comment.parse({
146
- src
147
- }, offset);
148
- this.contents.push(comment);
149
- atLineStart = false;
150
- }
151
- break;
152
-
153
- default:
154
- {
155
- const iEnd = Node.Node.endOfIndent(src, offset);
156
- const context = {
157
- atLineStart,
158
- indent: -1,
159
- inFlow: false,
160
- inCollection: false,
161
- lineStart,
162
- parent: this
163
- };
164
- const node = parseNode(context, iEnd);
165
- if (!node) return this.valueRange.end = iEnd; // at next document start
166
-
167
- this.contents.push(node);
168
- offset = node.range.end;
169
- atLineStart = false;
170
- const ec = Collection.grabCollectionEndComments(node);
171
- if (ec) Array.prototype.push.apply(this.contents, ec);
172
- }
173
- }
174
-
175
- offset = Document.startCommentOrEndBlankLine(src, offset);
176
- }
177
-
178
- this.valueRange.end = offset;
179
-
180
- if (src[offset]) {
181
- this.documentEndMarker = new Range.Range(offset, offset + 3);
182
- offset += 3;
183
-
184
- if (src[offset]) {
185
- offset = Node.Node.endOfWhiteSpace(src, offset);
186
-
187
- if (src[offset] === '#') {
188
- const comment = new Comment.Comment();
189
- offset = comment.parse({
190
- src
191
- }, offset);
192
- this.contents.push(comment);
193
- }
194
-
195
- switch (src[offset]) {
196
- case '\n':
197
- offset += 1;
198
- break;
199
-
200
- case undefined:
201
- break;
202
-
203
- default:
204
- this.error = new errors.YAMLSyntaxError(this, 'Document end marker line cannot have a non-comment suffix');
205
- }
206
- }
207
- }
208
-
209
- return offset;
210
- }
211
- /**
212
- * @param {ParseContext} context
213
- * @param {number} start - Index of first character
214
- * @returns {number} - Index of the character after this
215
- */
216
-
217
-
218
- parse(context, start) {
219
- context.root = this;
220
- this.context = context;
221
- const {
222
- src
223
- } = context;
224
- let offset = src.charCodeAt(start) === 0xfeff ? start + 1 : start; // skip BOM
225
-
226
- offset = this.parseDirectives(offset);
227
- offset = this.parseContents(offset);
228
- return offset;
229
- }
230
-
231
- setOrigRanges(cr, offset) {
232
- offset = super.setOrigRanges(cr, offset);
233
- this.directives.forEach(node => {
234
- offset = node.setOrigRanges(cr, offset);
235
- });
236
- if (this.directivesEndMarker) offset = this.directivesEndMarker.setOrigRange(cr, offset);
237
- this.contents.forEach(node => {
238
- offset = node.setOrigRanges(cr, offset);
239
- });
240
- if (this.documentEndMarker) offset = this.documentEndMarker.setOrigRange(cr, offset);
241
- return offset;
242
- }
243
-
244
- toString() {
245
- const {
246
- contents,
247
- directives,
248
- value
249
- } = this;
250
- if (value != null) return value;
251
- let str = directives.join('');
252
-
253
- if (contents.length > 0) {
254
- if (directives.length > 0 || contents[0].type === constants.Type.COMMENT) str += '---\n';
255
- str += contents.join('');
256
- }
257
-
258
- if (str[str.length - 1] !== '\n') str += '\n';
259
- return str;
260
- }
261
-
262
- }
263
-
264
- exports.Document = Document;
@@ -1,203 +0,0 @@
1
- 'use strict';
2
-
3
- var constants = require('../constants.js');
4
- var errors = require('../errors.js');
5
- var BlankLine = require('./BlankLine.js');
6
- var Comment = require('./Comment.js');
7
- var Node = require('./Node.js');
8
- var Range = require('./Range.js');
9
-
10
- class FlowCollection extends Node.Node {
11
- constructor(type, props) {
12
- super(type, props);
13
- this.items = null;
14
- }
15
-
16
- prevNodeIsJsonLike(idx = this.items.length) {
17
- const node = this.items[idx - 1];
18
- return !!node && (node.jsonLike || node.type === constants.Type.COMMENT && this.prevNodeIsJsonLike(idx - 1));
19
- }
20
- /**
21
- * @param {ParseContext} context
22
- * @param {number} start - Index of first character
23
- * @returns {number} - Index of the character after this
24
- */
25
-
26
-
27
- parse(context, start) {
28
- this.context = context;
29
- const {
30
- parseNode,
31
- src
32
- } = context;
33
- let {
34
- indent,
35
- lineStart
36
- } = context;
37
- let char = src[start]; // { or [
38
-
39
- this.items = [{
40
- char,
41
- offset: start
42
- }];
43
- let offset = Node.Node.endOfWhiteSpace(src, start + 1);
44
- char = src[offset];
45
-
46
- while (char && char !== ']' && char !== '}') {
47
- switch (char) {
48
- case '\n':
49
- {
50
- lineStart = offset + 1;
51
- const wsEnd = Node.Node.endOfWhiteSpace(src, lineStart);
52
-
53
- if (src[wsEnd] === '\n') {
54
- const blankLine = new BlankLine.BlankLine();
55
- lineStart = blankLine.parse({
56
- src
57
- }, lineStart);
58
- this.items.push(blankLine);
59
- }
60
-
61
- offset = Node.Node.endOfIndent(src, lineStart);
62
-
63
- if (offset <= lineStart + indent) {
64
- char = src[offset];
65
-
66
- if (offset < lineStart + indent || char !== ']' && char !== '}') {
67
- const msg = 'Insufficient indentation in flow collection';
68
- this.error = new errors.YAMLSemanticError(this, msg);
69
- }
70
- }
71
- }
72
- break;
73
-
74
- case ',':
75
- {
76
- this.items.push({
77
- char,
78
- offset
79
- });
80
- offset += 1;
81
- }
82
- break;
83
-
84
- case '#':
85
- {
86
- const comment = new Comment.Comment();
87
- offset = comment.parse({
88
- src
89
- }, offset);
90
- this.items.push(comment);
91
- }
92
- break;
93
-
94
- case '?':
95
- case ':':
96
- {
97
- const next = src[offset + 1];
98
-
99
- if (next === '\n' || next === '\t' || next === ' ' || next === ',' || // in-flow : after JSON-like key does not need to be followed by whitespace
100
- char === ':' && this.prevNodeIsJsonLike()) {
101
- this.items.push({
102
- char,
103
- offset
104
- });
105
- offset += 1;
106
- break;
107
- }
108
- }
109
- // fallthrough
110
-
111
- default:
112
- {
113
- const node = parseNode({
114
- atLineStart: false,
115
- inCollection: false,
116
- inFlow: true,
117
- indent: -1,
118
- lineStart,
119
- parent: this
120
- }, offset);
121
-
122
- if (!node) {
123
- // at next document start
124
- this.valueRange = new Range.Range(start, offset);
125
- return offset;
126
- }
127
-
128
- this.items.push(node);
129
- offset = Node.Node.normalizeOffset(src, node.range.end);
130
- }
131
- }
132
-
133
- offset = Node.Node.endOfWhiteSpace(src, offset);
134
- char = src[offset];
135
- }
136
-
137
- this.valueRange = new Range.Range(start, offset + 1);
138
-
139
- if (char) {
140
- this.items.push({
141
- char,
142
- offset
143
- });
144
- offset = Node.Node.endOfWhiteSpace(src, offset + 1);
145
- offset = this.parseComment(offset);
146
- }
147
-
148
- return offset;
149
- }
150
-
151
- setOrigRanges(cr, offset) {
152
- offset = super.setOrigRanges(cr, offset);
153
- this.items.forEach(node => {
154
- if (node instanceof Node.Node) {
155
- offset = node.setOrigRanges(cr, offset);
156
- } else if (cr.length === 0) {
157
- node.origOffset = node.offset;
158
- } else {
159
- let i = offset;
160
-
161
- while (i < cr.length) {
162
- if (cr[i] > node.offset) break;else ++i;
163
- }
164
-
165
- node.origOffset = node.offset + i;
166
- offset = i;
167
- }
168
- });
169
- return offset;
170
- }
171
-
172
- toString() {
173
- const {
174
- context: {
175
- src
176
- },
177
- items,
178
- range,
179
- value
180
- } = this;
181
- if (value != null) return value;
182
- const nodes = items.filter(item => item instanceof Node.Node);
183
- let str = '';
184
- let prevEnd = range.start;
185
- nodes.forEach(node => {
186
- const prefix = src.slice(prevEnd, node.range.start);
187
- prevEnd = node.range.end;
188
- str += prefix + String(node);
189
-
190
- if (str[str.length - 1] === '\n' && src[prevEnd - 1] !== '\n' && src[prevEnd] === '\n') {
191
- // Comment range does not include the terminal newline, but its
192
- // stringified value does. Without this fix, newlines at comment ends
193
- // get duplicated.
194
- prevEnd += 1;
195
- }
196
- });
197
- str += src.slice(prevEnd, range.end);
198
- return Node.Node.addStringTerminator(src, range.end, str);
199
- }
200
-
201
- }
202
-
203
- exports.FlowCollection = FlowCollection;