UNPKG

@udraft/cursor

Version:

uDraft Cursor enables you to declarative write code generators!

82 lines 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const entities_1 = require("./shortcuts/entities"); const data = { className: "Person", extends: "Human", info: { version: "1.0.0", }, props: [ { name: "name", type: "string", }, { name: "age", type: "string", }, { name: "gender", type: "Gender" }, ], methods: [ { name: "fromJson", type: "Person", params: [ { name: "json", type: "any", }, ], }, { name: "concat", type: "string", params: [ { name: "a", type: "string", }, { name: "b", type: "string", }, ], }, ], }; const cursor = (0, entities_1.uCursor)() .prefix("export class ") .block(" {", "}") .ident({ char: " ", size: 2, }) .writeFrom("className", (name) => name) .writeFrom("extends", (name) => (name ? ` extends ${name}` : "")) .in("info", (info) => info.writeFrom("version", (version) => `// Version: ${version}\n\n`)) .each("props", (prop) => prop .write(({ name, type }) => `${name}: ${type};`) .join("\n") .clean()) .linebreak() .each("props", (propsCursor) => propsCursor .prefix("props: [") .write((prop) => `"${prop.name}"`) .join(", ") .suffix("],\n")) .linebreak(2) .expand((expandedCursor) => expandedCursor .write(() => "utils: ") .block("{", "}") .each("methods", (method) => method .writeFrom("name", (name) => name + "(") .writeFromEach("params", ({ name, type }, _, { isLast }) => `${name}: ${type}${!isLast ? ", " : ""}`) .write(() => ")") .writeFrom("type", (type) => ": " + type + " ") .block("{", "}") .join("\n\n")) .prefix("// Start Util\n") .suffix("\n// End Util")); console.log(cursor.render(data)); //# sourceMappingURL=example.js.map