| export 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")); | |
| } | |
| } | |
Xet Storage Details
- Size:
- 1.09 kB
- Xet hash:
- 2ce204971ca742b05a31f9e9ec6250e59ca82ca2809acbaf354bbae66fe8d236
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.