flow-seq.js 2.0 KB

123456789101112131415161718192021222324252627282930313233
  1. "use strict";
  2. exports.__esModule = true;
  3. var flow_mapping_item_1 = require("../factories/flow-mapping-item");
  4. var flow_sequence_1 = require("../factories/flow-sequence");
  5. var flow_sequence_item_1 = require("../factories/flow-sequence-item");
  6. var position_1 = require("../factories/position");
  7. var extract_comments_1 = require("../utils/extract-comments");
  8. var get_flow_map_item_additional_ranges_1 = require("../utils/get-flow-map-item-additional-ranges");
  9. var get_last_1 = require("../utils/get-last");
  10. var group_cst_flow_collection_items_1 = require("../utils/group-cst-flow-collection-items");
  11. var pair_1 = require("./pair");
  12. function transformFlowSeq(flowSeq, context) {
  13. var cstItemsWithoutComments = extract_comments_1.extractComments(flowSeq.cstNode.items, context);
  14. var groupedCstItems = group_cst_flow_collection_items_1.groupCstFlowCollectionItems(cstItemsWithoutComments);
  15. var flowSequenceItems = flowSeq.items.map(function (item, index) {
  16. if (item.type !== "PAIR") {
  17. var node = context.transformNode(item);
  18. return flow_sequence_item_1.createFlowSequenceItem(position_1.createPosition(node.position.start, node.position.end), node);
  19. }
  20. else {
  21. var cstNodes = groupedCstItems[index];
  22. var _a = get_flow_map_item_additional_ranges_1.getFlowMapItemAdditionalRanges(cstNodes), additionalKeyRange = _a.additionalKeyRange, additionalValueRange = _a.additionalValueRange;
  23. return pair_1.transformAstPair(item, context, flow_mapping_item_1.createFlowMappingItem, additionalKeyRange, additionalValueRange);
  24. }
  25. });
  26. var openMarker = cstItemsWithoutComments[0];
  27. var closeMarker = get_last_1.getLast(cstItemsWithoutComments);
  28. return flow_sequence_1.createFlowSequence(context.transformRange({
  29. origStart: openMarker.origOffset,
  30. origEnd: closeMarker.origOffset + 1
  31. }), context.transformContent(flowSeq), flowSequenceItems);
  32. }
  33. exports.transformFlowSeq = transformFlowSeq;