template-literals.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.TaggedTemplateExpression = TaggedTemplateExpression;
  6. exports.TemplateElement = TemplateElement;
  7. exports.TemplateLiteral = TemplateLiteral;
  8. exports._printTemplate = _printTemplate;
  9. function TaggedTemplateExpression(node) {
  10. this.print(node.tag);
  11. {
  12. this.print(node.typeParameters);
  13. }
  14. this.print(node.quasi);
  15. }
  16. function TemplateElement() {
  17. throw new Error("TemplateElement printing is handled in TemplateLiteral");
  18. }
  19. function _printTemplate(node, substitutions) {
  20. const quasis = node.quasis;
  21. let partRaw = "`";
  22. for (let i = 0; i < quasis.length - 1; i++) {
  23. partRaw += quasis[i].value.raw;
  24. this.token(partRaw + "${", true);
  25. this.print(substitutions[i]);
  26. partRaw = "}";
  27. if (this.tokenMap) {
  28. const token = this.tokenMap.findMatching(node, "}", i);
  29. if (token) this._catchUpTo(token.loc.start);
  30. }
  31. }
  32. partRaw += quasis[quasis.length - 1].value.raw;
  33. this.token(partRaw + "`", true);
  34. }
  35. function TemplateLiteral(node) {
  36. this._printTemplate(node, node.expressions);
  37. }
  38. //# sourceMappingURL=template-literals.js.map