formatters.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.program = exports.expression = exports.statement = exports.statements = exports.smart = void 0;
  6. function makeStatementFormatter(fn) {
  7. return {
  8. code: function code(str) {
  9. return "/* @babel/template */;\n" + str;
  10. },
  11. validate: function validate() {},
  12. unwrap: function unwrap(ast) {
  13. return fn(ast.program.body.slice(1));
  14. }
  15. };
  16. }
  17. var smart = makeStatementFormatter(function (body) {
  18. if (body.length > 1) {
  19. return body;
  20. } else {
  21. return body[0];
  22. }
  23. });
  24. exports.smart = smart;
  25. var statements = makeStatementFormatter(function (body) {
  26. return body;
  27. });
  28. exports.statements = statements;
  29. var statement = makeStatementFormatter(function (body) {
  30. if (body.length === 0) {
  31. throw new Error("Found nothing to return.");
  32. }
  33. if (body.length > 1) {
  34. throw new Error("Found multiple statements but wanted one");
  35. }
  36. return body[0];
  37. });
  38. exports.statement = statement;
  39. var expression = {
  40. code: function code(str) {
  41. return "(\n" + str + "\n)";
  42. },
  43. validate: function validate(_ref) {
  44. var program = _ref.program;
  45. if (program.body.length > 1) {
  46. throw new Error("Found multiple statements but wanted one");
  47. }
  48. var expression = program.body[0].expression;
  49. if (expression.start === 0) {
  50. throw new Error("Parse result included parens.");
  51. }
  52. },
  53. unwrap: function unwrap(ast) {
  54. return ast.program.body[0].expression;
  55. }
  56. };
  57. exports.expression = expression;
  58. var program = {
  59. code: function code(str) {
  60. return str;
  61. },
  62. validate: function validate() {},
  63. unwrap: function unwrap(ast) {
  64. return ast.program;
  65. }
  66. };
  67. exports.program = program;