content.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. "use strict";
  2. exports.__esModule = true;
  3. var constants_1 = require("../constants");
  4. var anchor_1 = require("../factories/anchor");
  5. var comment_1 = require("../factories/comment");
  6. var content_1 = require("../factories/content");
  7. var tag_1 = require("../factories/tag");
  8. function transformContent(node, context, isNotMiddleComment) {
  9. if (isNotMiddleComment === void 0) { isNotMiddleComment = function () { return false; }; }
  10. var cstNode = node.cstNode;
  11. var middleComments = [];
  12. var firstTagOrAnchorRange = null;
  13. var tag = null;
  14. var anchor = null;
  15. for (var _i = 0, _a = cstNode.props; _i < _a.length; _i++) {
  16. var propRange = _a[_i];
  17. var leadingChar = context.text[propRange.origStart];
  18. switch (leadingChar) {
  19. case constants_1.PropLeadingCharacter.Tag:
  20. firstTagOrAnchorRange = firstTagOrAnchorRange || propRange;
  21. tag = tag_1.createTag(context.transformRange(propRange), node.tag);
  22. break;
  23. case constants_1.PropLeadingCharacter.Anchor:
  24. firstTagOrAnchorRange = firstTagOrAnchorRange || propRange;
  25. anchor = anchor_1.createAnchor(context.transformRange(propRange), cstNode.anchor);
  26. break;
  27. case constants_1.PropLeadingCharacter.Comment: {
  28. var comment = comment_1.createComment(context.transformRange(propRange), context.text.slice(propRange.origStart + 1, propRange.origEnd));
  29. context.comments.push(comment);
  30. if (!isNotMiddleComment(comment) &&
  31. firstTagOrAnchorRange &&
  32. firstTagOrAnchorRange.origEnd <= propRange.origStart &&
  33. propRange.origEnd <= cstNode.valueRange.origStart) {
  34. middleComments.push(comment);
  35. }
  36. break;
  37. }
  38. // istanbul ignore next
  39. default:
  40. throw new Error("Unexpected leading character " + JSON.stringify(leadingChar));
  41. }
  42. }
  43. return content_1.createContent(tag, anchor, middleComments);
  44. }
  45. exports.transformContent = transformContent;