// warning! This code was generated by @b08/razor // manual changes to this file will be overwritten next time the code is regenerated. import { Generator, GeneratorOptions } from "@b08/generator"; import { ConstructorModel } from "../types"; import { makeFieldInputLine, makeFieldInput } from "../makeFieldInputLine"; function generateContent(type: ConstructorModel, gen: Generator): Generator { gen = gen.append(`// constructor for `); gen = gen.append((type.name).toString()); gen = gen.eol(); const inputLine = makeFieldInputLine(type.fields); if (inputLine.length + (type.constructorName.length * 2) < 110) { gen = gen.append(`export function `); gen = gen.append((type.constructorName).toString()); gen = gen.append(`(`); gen = gen.append((inputLine).toString()); gen = gen.append(`): `); gen = gen.append((type.name).toString()); gen = gen.append(` {`); gen = gen.eol(); } else { gen = gen.append(`export function `); gen = gen.append((type.constructorName).toString()); gen = gen.append(`(`); gen = gen.eol(); for (let field of type.fields) { gen = gen.append(` `); gen = gen.append((makeFieldInput(field)).toString()); gen = gen.append(`,`); gen = gen.eol(); } gen = gen.append(` ): `); gen = gen.append((type.name).toString()); gen = gen.append(` {`); gen = gen.eol(); } gen = gen.append(` return {`); gen = gen.eol(); for (let field of type.fields) { gen = gen.append(` `); gen = gen.append((field.name).toString()); gen = gen.append(`,`); gen = gen.eol(); } gen = gen.append(` };`); gen = gen.eol(); gen = gen.append(`}`); gen = gen.eol(); return gen; } function generate(type: ConstructorModel, options: GeneratorOptions): string { return generateContent(type, new Generator(options)).toString(); } export const constructor = { generate, generateContent };