UNPKG

@gent-js/gent

Version:

template-based data generator.

40 lines (39 loc) 1.82 kB
import { assertNever } from "../utils.js"; import { ArrayJsonable } from "./jsonableClasses/arrayJsonable.js"; import { BooleanJsonable } from "./jsonableClasses/booleanJsonable.js"; import { JsonStringJsonable } from "./jsonableClasses/jsonStringJsonable.js"; import { NullJsonable } from "./jsonableClasses/nullJsonable.js"; import { NumberJsonable } from "./jsonableClasses/numberJsonable.js"; import { ObjectJsonable } from "./jsonableClasses/objectJsonable.js"; import { StringJsonable } from "./jsonableClasses/stringJsonable.js"; export function createJsonable(parameters) { if (parameters.type === "object") { return new ObjectJsonable(parameters.content, parameters.probability, parameters.weight); } else if (parameters.type === "array") { return new ArrayJsonable(parameters.content, parameters.length, parameters.probability, parameters.weight); } else if (parameters.type === "string") { if (parameters.subType === "string") { return new StringJsonable(parameters.content, parameters.probability, parameters.weight); } else if (parameters.subType === "json") { return new JsonStringJsonable(parameters.content, parameters.probability, parameters.weight); } else { return assertNever(parameters); } } else if (parameters.type === "number") { return new NumberJsonable(parameters.content, parameters.probability, parameters.weight); } else if (parameters.type === "boolean") { return new BooleanJsonable(parameters.content, parameters.probability, parameters.weight); } else if (parameters.type === "null") { return new NullJsonable(parameters.probability, parameters.weight); } else { return assertNever(parameters); } }