parse.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. "use strict";
  2. exports.__esModule = true;
  3. var lines_and_columns_1 = require("lines-and-columns");
  4. var attach_1 = require("./attach");
  5. var root_1 = require("./factories/root");
  6. var preprocess_1 = require("./preprocess");
  7. var transform_1 = require("./transform");
  8. var content_1 = require("./transforms/content");
  9. var error_1 = require("./transforms/error");
  10. var offset_1 = require("./transforms/offset");
  11. var range_1 = require("./transforms/range");
  12. var add_orig_range_1 = require("./utils/add-orig-range");
  13. var remove_fake_nodes_1 = require("./utils/remove-fake-nodes");
  14. var update_positions_1 = require("./utils/update-positions");
  15. var YAML = require("./yaml");
  16. function parse(text) {
  17. var cst = YAML.parseCST(text);
  18. add_orig_range_1.addOrigRange(cst);
  19. var documents = cst.map(function (cstDocument) {
  20. return new YAML.Document({
  21. merge: false,
  22. keepCstNodes: true
  23. }).parse(cstDocument);
  24. });
  25. var locator = new lines_and_columns_1["default"](text);
  26. var comments = [];
  27. var context = {
  28. text: text,
  29. locator: locator,
  30. comments: comments,
  31. transformOffset: function (offset) { return offset_1.transformOffset(offset, context); },
  32. transformRange: function (range) { return range_1.transformRange(range, context); },
  33. transformNode: function (node) { return transform_1.transformNode(node, context); },
  34. transformContent: function (node) { return content_1.transformContent(node, context); }
  35. };
  36. for (var _i = 0, documents_1 = documents; _i < documents_1.length; _i++) {
  37. var document = documents_1[_i];
  38. for (var _a = 0, _b = document.errors; _a < _b.length; _a++) {
  39. var error = _b[_a];
  40. if (error instanceof YAML.YAMLSemanticError &&
  41. error.message === 'Map keys must be unique; "<<" is repeated') {
  42. continue;
  43. }
  44. throw error_1.transformError(error, context);
  45. }
  46. }
  47. documents.forEach(function (document) { return preprocess_1.removeCstBlankLine(document.cstNode); });
  48. var root = root_1.createRoot(context.transformRange({ origStart: 0, origEnd: context.text.length }), documents.map(context.transformNode), comments);
  49. attach_1.attachComments(root);
  50. update_positions_1.updatePositions(root);
  51. remove_fake_nodes_1.removeFakeNodes(root);
  52. return root;
  53. }
  54. exports.parse = parse;