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,262 +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 CollectionItem = require('./CollectionItem.js');
7
- var Comment = require('./Comment.js');
8
- var Node = require('./Node.js');
9
- var Range = require('./Range.js');
10
-
11
- function grabCollectionEndComments(node) {
12
- let cnode = node;
13
-
14
- while (cnode instanceof CollectionItem.CollectionItem) cnode = cnode.node;
15
-
16
- if (!(cnode instanceof Collection)) return null;
17
- const len = cnode.items.length;
18
- let ci = -1;
19
-
20
- for (let i = len - 1; i >= 0; --i) {
21
- const n = cnode.items[i];
22
-
23
- if (n.type === constants.Type.COMMENT) {
24
- // Keep sufficiently indented comments with preceding node
25
- const {
26
- indent,
27
- lineStart
28
- } = n.context;
29
- if (indent > 0 && n.range.start >= lineStart + indent) break;
30
- ci = i;
31
- } else if (n.type === constants.Type.BLANK_LINE) ci = i;else break;
32
- }
33
-
34
- if (ci === -1) return null;
35
- const ca = cnode.items.splice(ci, len - ci);
36
- const prevEnd = ca[0].range.start;
37
-
38
- while (true) {
39
- cnode.range.end = prevEnd;
40
- if (cnode.valueRange && cnode.valueRange.end > prevEnd) cnode.valueRange.end = prevEnd;
41
- if (cnode === node) break;
42
- cnode = cnode.context.parent;
43
- }
44
-
45
- return ca;
46
- }
47
- class Collection extends Node.Node {
48
- static nextContentHasIndent(src, offset, indent) {
49
- const lineStart = Node.Node.endOfLine(src, offset) + 1;
50
- offset = Node.Node.endOfWhiteSpace(src, lineStart);
51
- const ch = src[offset];
52
- if (!ch) return false;
53
- if (offset >= lineStart + indent) return true;
54
- if (ch !== '#' && ch !== '\n') return false;
55
- return Collection.nextContentHasIndent(src, offset, indent);
56
- }
57
-
58
- constructor(firstItem) {
59
- super(firstItem.type === constants.Type.SEQ_ITEM ? constants.Type.SEQ : constants.Type.MAP);
60
-
61
- for (let i = firstItem.props.length - 1; i >= 0; --i) {
62
- if (firstItem.props[i].start < firstItem.context.lineStart) {
63
- // props on previous line are assumed by the collection
64
- this.props = firstItem.props.slice(0, i + 1);
65
- firstItem.props = firstItem.props.slice(i + 1);
66
- const itemRange = firstItem.props[0] || firstItem.valueRange;
67
- firstItem.range.start = itemRange.start;
68
- break;
69
- }
70
- }
71
-
72
- this.items = [firstItem];
73
- const ec = grabCollectionEndComments(firstItem);
74
- if (ec) Array.prototype.push.apply(this.items, ec);
75
- }
76
-
77
- get includesTrailingLines() {
78
- return this.items.length > 0;
79
- }
80
- /**
81
- * @param {ParseContext} context
82
- * @param {number} start - Index of first character
83
- * @returns {number} - Index of the character after this
84
- */
85
-
86
-
87
- parse(context, start) {
88
- this.context = context;
89
- const {
90
- parseNode,
91
- src
92
- } = context; // It's easier to recalculate lineStart here rather than tracking down the
93
- // last context from which to read it -- eemeli/yaml#2
94
-
95
- let lineStart = Node.Node.startOfLine(src, start);
96
- const firstItem = this.items[0]; // First-item context needs to be correct for later comment handling
97
- // -- eemeli/yaml#17
98
-
99
- firstItem.context.parent = this;
100
- this.valueRange = Range.Range.copy(firstItem.valueRange);
101
- const indent = firstItem.range.start - firstItem.context.lineStart;
102
- let offset = start;
103
- offset = Node.Node.normalizeOffset(src, offset);
104
- let ch = src[offset];
105
- let atLineStart = Node.Node.endOfWhiteSpace(src, lineStart) === offset;
106
- let prevIncludesTrailingLines = false;
107
-
108
- while (ch) {
109
- while (ch === '\n' || ch === '#') {
110
- if (atLineStart && ch === '\n' && !prevIncludesTrailingLines) {
111
- const blankLine = new BlankLine.BlankLine();
112
- offset = blankLine.parse({
113
- src
114
- }, offset);
115
- this.valueRange.end = offset;
116
-
117
- if (offset >= src.length) {
118
- ch = null;
119
- break;
120
- }
121
-
122
- this.items.push(blankLine);
123
- offset -= 1; // blankLine.parse() consumes terminal newline
124
- } else if (ch === '#') {
125
- if (offset < lineStart + indent && !Collection.nextContentHasIndent(src, offset, indent)) {
126
- return offset;
127
- }
128
-
129
- const comment = new Comment.Comment();
130
- offset = comment.parse({
131
- indent,
132
- lineStart,
133
- src
134
- }, offset);
135
- this.items.push(comment);
136
- this.valueRange.end = offset;
137
-
138
- if (offset >= src.length) {
139
- ch = null;
140
- break;
141
- }
142
- }
143
-
144
- lineStart = offset + 1;
145
- offset = Node.Node.endOfIndent(src, lineStart);
146
-
147
- if (Node.Node.atBlank(src, offset)) {
148
- const wsEnd = Node.Node.endOfWhiteSpace(src, offset);
149
- const next = src[wsEnd];
150
-
151
- if (!next || next === '\n' || next === '#') {
152
- offset = wsEnd;
153
- }
154
- }
155
-
156
- ch = src[offset];
157
- atLineStart = true;
158
- }
159
-
160
- if (!ch) {
161
- break;
162
- }
163
-
164
- if (offset !== lineStart + indent && (atLineStart || ch !== ':')) {
165
- if (offset < lineStart + indent) {
166
- if (lineStart > start) offset = lineStart;
167
- break;
168
- } else if (!this.error) {
169
- const msg = 'All collection items must start at the same column';
170
- this.error = new errors.YAMLSyntaxError(this, msg);
171
- }
172
- }
173
-
174
- if (firstItem.type === constants.Type.SEQ_ITEM) {
175
- if (ch !== '-') {
176
- if (lineStart > start) offset = lineStart;
177
- break;
178
- }
179
- } else if (ch === '-' && !this.error) {
180
- // map key may start with -, as long as it's followed by a non-whitespace char
181
- const next = src[offset + 1];
182
-
183
- if (!next || next === '\n' || next === '\t' || next === ' ') {
184
- const msg = 'A collection cannot be both a mapping and a sequence';
185
- this.error = new errors.YAMLSyntaxError(this, msg);
186
- }
187
- }
188
-
189
- const node = parseNode({
190
- atLineStart,
191
- inCollection: true,
192
- indent,
193
- lineStart,
194
- parent: this
195
- }, offset);
196
- if (!node) return offset; // at next document start
197
-
198
- this.items.push(node);
199
- this.valueRange.end = node.valueRange.end;
200
- offset = Node.Node.normalizeOffset(src, node.range.end);
201
- ch = src[offset];
202
- atLineStart = false;
203
- prevIncludesTrailingLines = node.includesTrailingLines; // Need to reset lineStart and atLineStart here if preceding node's range
204
- // has advanced to check the current line's indentation level
205
- // -- eemeli/yaml#10 & eemeli/yaml#38
206
-
207
- if (ch) {
208
- let ls = offset - 1;
209
- let prev = src[ls];
210
-
211
- while (prev === ' ' || prev === '\t') prev = src[--ls];
212
-
213
- if (prev === '\n') {
214
- lineStart = ls + 1;
215
- atLineStart = true;
216
- }
217
- }
218
-
219
- const ec = grabCollectionEndComments(node);
220
- if (ec) Array.prototype.push.apply(this.items, ec);
221
- }
222
-
223
- return offset;
224
- }
225
-
226
- setOrigRanges(cr, offset) {
227
- offset = super.setOrigRanges(cr, offset);
228
- this.items.forEach(node => {
229
- offset = node.setOrigRanges(cr, offset);
230
- });
231
- return offset;
232
- }
233
-
234
- toString() {
235
- const {
236
- context: {
237
- src
238
- },
239
- items,
240
- range,
241
- value
242
- } = this;
243
- if (value != null) return value;
244
- let str = src.slice(range.start, items[0].range.start) + String(items[0]);
245
-
246
- for (let i = 1; i < items.length; ++i) {
247
- const item = items[i];
248
- const {
249
- atLineStart,
250
- indent
251
- } = item.context;
252
- if (atLineStart) for (let i = 0; i < indent; ++i) str += ' ';
253
- str += String(item);
254
- }
255
-
256
- return Node.Node.addStringTerminator(src, range.end, str);
257
- }
258
-
259
- }
260
-
261
- exports.Collection = Collection;
262
- exports.grabCollectionEndComments = grabCollectionEndComments;
@@ -1,125 +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 Node = require('./Node.js');
7
- var Range = require('./Range.js');
8
-
9
- class CollectionItem extends Node.Node {
10
- constructor(type, props) {
11
- super(type, props);
12
- this.node = null;
13
- }
14
-
15
- get includesTrailingLines() {
16
- return !!this.node && this.node.includesTrailingLines;
17
- }
18
- /**
19
- * @param {ParseContext} context
20
- * @param {number} start - Index of first character
21
- * @returns {number} - Index of the character after this
22
- */
23
-
24
-
25
- parse(context, start) {
26
- this.context = context;
27
- const {
28
- parseNode,
29
- src
30
- } = context;
31
- let {
32
- atLineStart,
33
- lineStart
34
- } = context;
35
- 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');
36
- const indent = atLineStart ? start - lineStart : context.indent;
37
- let offset = Node.Node.endOfWhiteSpace(src, start + 1);
38
- let ch = src[offset];
39
- const inlineComment = ch === '#';
40
- const comments = [];
41
- let blankLine = null;
42
-
43
- while (ch === '\n' || ch === '#') {
44
- if (ch === '#') {
45
- const end = Node.Node.endOfLine(src, offset + 1);
46
- comments.push(new Range.Range(offset, end));
47
- offset = end;
48
- } else {
49
- atLineStart = true;
50
- lineStart = offset + 1;
51
- const wsEnd = Node.Node.endOfWhiteSpace(src, lineStart);
52
-
53
- if (src[wsEnd] === '\n' && comments.length === 0) {
54
- blankLine = new BlankLine.BlankLine();
55
- lineStart = blankLine.parse({
56
- src
57
- }, lineStart);
58
- }
59
-
60
- offset = Node.Node.endOfIndent(src, lineStart);
61
- }
62
-
63
- ch = src[offset];
64
- }
65
-
66
- if (Node.Node.nextNodeIsIndented(ch, offset - (lineStart + indent), this.type !== constants.Type.SEQ_ITEM)) {
67
- this.node = parseNode({
68
- atLineStart,
69
- inCollection: false,
70
- indent,
71
- lineStart,
72
- parent: this
73
- }, offset);
74
- } else if (ch && lineStart > start + 1) {
75
- offset = lineStart - 1;
76
- }
77
-
78
- if (this.node) {
79
- if (blankLine) {
80
- // Only blank lines preceding non-empty nodes are captured. Note that
81
- // this means that collection item range start indices do not always
82
- // increase monotonically. -- eemeli/yaml#126
83
- const items = context.parent.items || context.parent.contents;
84
- if (items) items.push(blankLine);
85
- }
86
-
87
- if (comments.length) Array.prototype.push.apply(this.props, comments);
88
- offset = this.node.range.end;
89
- } else {
90
- if (inlineComment) {
91
- const c = comments[0];
92
- this.props.push(c);
93
- offset = c.end;
94
- } else {
95
- offset = Node.Node.endOfLine(src, start + 1);
96
- }
97
- }
98
-
99
- const end = this.node ? this.node.valueRange.end : offset;
100
- this.valueRange = new Range.Range(start, end);
101
- return offset;
102
- }
103
-
104
- setOrigRanges(cr, offset) {
105
- offset = super.setOrigRanges(cr, offset);
106
- return this.node ? this.node.setOrigRanges(cr, offset) : offset;
107
- }
108
-
109
- toString() {
110
- const {
111
- context: {
112
- src
113
- },
114
- node,
115
- range,
116
- value
117
- } = this;
118
- if (value != null) return value;
119
- const str = node ? src.slice(range.start, node.range.start) + String(node) : src.slice(range.start, range.end);
120
- return Node.Node.addStringTerminator(src, range.end, str);
121
- }
122
-
123
- }
124
-
125
- exports.CollectionItem = CollectionItem;
@@ -1,29 +0,0 @@
1
- 'use strict';
2
-
3
- var constants = require('../constants.js');
4
- var Node = require('./Node.js');
5
- var Range = require('./Range.js');
6
-
7
- class Comment extends Node.Node {
8
- constructor() {
9
- super(constants.Type.COMMENT);
10
- }
11
- /**
12
- * Parses a comment line from the source
13
- *
14
- * @param {ParseContext} context
15
- * @param {number} start - Index of first character
16
- * @returns {number} - Index of the character after this scalar
17
- */
18
-
19
-
20
- parse(context, start) {
21
- this.context = context;
22
- const offset = this.parseComment(start);
23
- this.range = new Range.Range(start, offset);
24
- return offset;
25
- }
26
-
27
- }
28
-
29
- exports.Comment = Comment;
@@ -1,55 +0,0 @@
1
- 'use strict';
2
-
3
- var constants = require('../constants.js');
4
- var Node = require('./Node.js');
5
- var Range = require('./Range.js');
6
-
7
- class Directive extends Node.Node {
8
- constructor() {
9
- super(constants.Type.DIRECTIVE);
10
- this.name = null;
11
- }
12
-
13
- get parameters() {
14
- const raw = this.rawValue;
15
- return raw ? raw.trim().split(/[ \t]+/) : [];
16
- }
17
-
18
- parseName(start) {
19
- const {
20
- src
21
- } = this.context;
22
- let offset = start;
23
- let ch = src[offset];
24
-
25
- while (ch && ch !== '\n' && ch !== '\t' && ch !== ' ') ch = src[offset += 1];
26
-
27
- this.name = src.slice(start, offset);
28
- return offset;
29
- }
30
-
31
- parseParameters(start) {
32
- const {
33
- src
34
- } = this.context;
35
- let offset = start;
36
- let ch = src[offset];
37
-
38
- while (ch && ch !== '\n' && ch !== '#') ch = src[offset += 1];
39
-
40
- this.valueRange = new Range.Range(start, offset);
41
- return offset;
42
- }
43
-
44
- parse(context, start) {
45
- this.context = context;
46
- let offset = this.parseName(start + 1);
47
- offset = this.parseParameters(offset);
48
- offset = this.parseComment(offset);
49
- this.range = new Range.Range(start, offset);
50
- return offset;
51
- }
52
-
53
- }
54
-
55
- exports.Directive = Directive;