| 123456789101112131415161718192021222324252627282930313233343536373839 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.Doc = void 0;
- class Doc {
- constructor(args = []) {
- this.content = [];
- this.indent = 0;
- if (this)
- this.args = args;
- }
- indented(fn) {
- this.indent += 1;
- fn(this);
- this.indent -= 1;
- }
- write(arg) {
- if (typeof arg === "function") {
- arg(this, { execution: "sync" });
- arg(this, { execution: "async" });
- return;
- }
- const content = arg;
- const lines = content.split("\n").filter((x) => x);
- const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));
- const dedented = lines.map((x) => x.slice(minIndent)).map((x) => " ".repeat(this.indent * 2) + x);
- for (const line of dedented) {
- this.content.push(line);
- }
- }
- compile() {
- const F = Function;
- const args = this?.args;
- const content = this?.content ?? [``];
- const lines = [...content.map((x) => ` ${x}`)];
- // console.log(lines.join("\n"));
- return new F(...args, lines.join("\n"));
- }
- }
- exports.Doc = Doc;
|