@gent-js/gent
Version:
template-based data generator.
40 lines (39 loc) • 1.82 kB
JavaScript
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);
}
}