@udraft/cursor
Version:
uDraft Cursor enables you to declarative write code generators!
82 lines • 2.19 kB
JavaScript
;
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