yaml 2.0.0-2 → 2.0.0-6

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 (347) 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 +72 -0
  6. package/browser/dist/compose/compose-scalar.js +74 -0
  7. package/browser/dist/compose/composer.js +218 -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 +211 -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 +71 -55
  22. package/browser/dist/doc/directives.js +161 -0
  23. package/browser/dist/errors.js +50 -72
  24. package/browser/dist/index.js +17 -73
  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 +656 -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 +146 -0
  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 +75 -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 +222 -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 +213 -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 +71 -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 +40 -71
  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 +658 -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 +148 -0
  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/ast/visit.js +0 -83
  233. package/browser/dist/constants.js +0 -40
  234. package/browser/dist/cst/Alias.js +0 -26
  235. package/browser/dist/cst/BlankLine.js +0 -34
  236. package/browser/dist/cst/BlockValue.js +0 -240
  237. package/browser/dist/cst/Collection.js +0 -259
  238. package/browser/dist/cst/CollectionItem.js +0 -123
  239. package/browser/dist/cst/Comment.js +0 -27
  240. package/browser/dist/cst/Directive.js +0 -53
  241. package/browser/dist/cst/Document.js +0 -262
  242. package/browser/dist/cst/FlowCollection.js +0 -201
  243. package/browser/dist/cst/Node.js +0 -355
  244. package/browser/dist/cst/ParseContext.js +0 -234
  245. package/browser/dist/cst/PlainValue.js +0 -171
  246. package/browser/dist/cst/QuoteDouble.js +0 -224
  247. package/browser/dist/cst/QuoteSingle.js +0 -100
  248. package/browser/dist/cst/Range.js +0 -56
  249. package/browser/dist/cst/parse.js +0 -46
  250. package/browser/dist/cst/source-utils.js +0 -169
  251. package/browser/dist/doc/Anchors.js +0 -115
  252. package/browser/dist/doc/Schema.js +0 -34
  253. package/browser/dist/doc/getSchemaTags.js +0 -33
  254. package/browser/dist/doc/listTagNames.js +0 -27
  255. package/browser/dist/doc/parseContents.js +0 -60
  256. package/browser/dist/doc/parseDirectives.js +0 -107
  257. package/browser/dist/resolve/collection-utils.js +0 -86
  258. package/browser/dist/resolve/resolveMap.js +0 -315
  259. package/browser/dist/resolve/resolveNode.js +0 -173
  260. package/browser/dist/resolve/resolveScalar.js +0 -20
  261. package/browser/dist/resolve/resolveSeq.js +0 -170
  262. package/browser/dist/resolve/resolveTag.js +0 -107
  263. package/browser/dist/resolve/resolveTagName.js +0 -87
  264. package/browser/dist/stringify/addComment.js +0 -10
  265. package/browser/dist/stringify/stringifyTag.js +0 -28
  266. package/browser/dist/tags/core.js +0 -128
  267. package/browser/dist/tags/failsafe/index.js +0 -7
  268. package/browser/dist/tags/failsafe/map.js +0 -37
  269. package/browser/dist/tags/failsafe/seq.js +0 -34
  270. package/browser/dist/tags/failsafe/string.js +0 -20
  271. package/browser/dist/tags/index.js +0 -39
  272. package/browser/dist/tags/json.js +0 -62
  273. package/browser/dist/tags/options.js +0 -31
  274. package/browser/dist/tags/yaml-1.1/binary.js +0 -83
  275. package/browser/dist/tags/yaml-1.1/index.js +0 -174
  276. package/browser/dist/tags/yaml-1.1/omap.js +0 -86
  277. package/browser/dist/tags/yaml-1.1/pairs.js +0 -62
  278. package/browser/dist/tags/yaml-1.1/set.js +0 -78
  279. package/browser/dist/tags/yaml-1.1/timestamp.js +0 -101
  280. package/browser/dist/types.js +0 -10
  281. package/cst.d.ts +0 -185
  282. package/dist/_virtual/_rollupPluginBabelHelpers.js +0 -18
  283. package/dist/ast/Alias.js +0 -97
  284. package/dist/ast/Collection.js +0 -196
  285. package/dist/ast/Merge.js +0 -74
  286. package/dist/ast/Node.js +0 -5
  287. package/dist/ast/Pair.js +0 -203
  288. package/dist/ast/Scalar.js +0 -24
  289. package/dist/ast/YAMLMap.js +0 -94
  290. package/dist/ast/YAMLSeq.js +0 -69
  291. package/dist/ast/toJS.js +0 -31
  292. package/dist/ast/visit.js +0 -85
  293. package/dist/constants.js +0 -46
  294. package/dist/cst/Alias.js +0 -28
  295. package/dist/cst/BlankLine.js +0 -36
  296. package/dist/cst/BlockValue.js +0 -243
  297. package/dist/cst/Collection.js +0 -262
  298. package/dist/cst/CollectionItem.js +0 -125
  299. package/dist/cst/Comment.js +0 -29
  300. package/dist/cst/Directive.js +0 -55
  301. package/dist/cst/Document.js +0 -264
  302. package/dist/cst/FlowCollection.js +0 -203
  303. package/dist/cst/Node.js +0 -357
  304. package/dist/cst/ParseContext.js +0 -236
  305. package/dist/cst/PlainValue.js +0 -173
  306. package/dist/cst/QuoteDouble.js +0 -226
  307. package/dist/cst/QuoteSingle.js +0 -102
  308. package/dist/cst/Range.js +0 -58
  309. package/dist/cst/parse.js +0 -48
  310. package/dist/cst/source-utils.js +0 -173
  311. package/dist/doc/Anchors.js +0 -117
  312. package/dist/doc/Schema.js +0 -36
  313. package/dist/doc/getSchemaTags.js +0 -35
  314. package/dist/doc/listTagNames.js +0 -29
  315. package/dist/doc/parseContents.js +0 -62
  316. package/dist/doc/parseDirectives.js +0 -109
  317. package/dist/resolve/collection-utils.js +0 -91
  318. package/dist/resolve/resolveMap.js +0 -317
  319. package/dist/resolve/resolveNode.js +0 -175
  320. package/dist/resolve/resolveScalar.js +0 -22
  321. package/dist/resolve/resolveSeq.js +0 -172
  322. package/dist/resolve/resolveTag.js +0 -109
  323. package/dist/resolve/resolveTagName.js +0 -89
  324. package/dist/stringify/addComment.js +0 -13
  325. package/dist/stringify/stringifyTag.js +0 -30
  326. package/dist/tags/core.js +0 -138
  327. package/dist/tags/failsafe/index.js +0 -9
  328. package/dist/tags/failsafe/map.js +0 -39
  329. package/dist/tags/failsafe/seq.js +0 -36
  330. package/dist/tags/failsafe/string.js +0 -22
  331. package/dist/tags/index.js +0 -42
  332. package/dist/tags/json.js +0 -64
  333. package/dist/tags/options.js +0 -37
  334. package/dist/tags/yaml-1.1/binary.js +0 -85
  335. package/dist/tags/yaml-1.1/index.js +0 -176
  336. package/dist/tags/yaml-1.1/omap.js +0 -89
  337. package/dist/tags/yaml-1.1/pairs.js +0 -66
  338. package/dist/tags/yaml-1.1/set.js +0 -81
  339. package/dist/tags/yaml-1.1/timestamp.js +0 -105
  340. package/dist/types.js +0 -29
  341. package/index.d.ts +0 -519
  342. package/index.js +0 -1
  343. package/types.d.ts +0 -379
  344. package/types.js +0 -17
  345. package/types.mjs +0 -17
  346. package/util.d.ts +0 -76
  347. 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;