import {generate, LineArg} from "./generator"; export function generateCheckArrayOf (name : string, generated : boolean|undefined) { generate({ checkName : name, generated : generated, imports : [ { alias : "GenericArrayCheck", path : "../sync/check/generic/array" }, { alias : "check", path : generated ? `../generated/sync/check/${name}` : `../sync/check/${name}` } ], writeDirectory : "sync/check/array-of", lineCallback : (args : LineArg) : string[] => { const resultLines : string[] = []; resultLines.push(`export type ArrayOf${args.functionName}Result = GenericArrayCheck.IsArrayOfResult<${args.functionRet.replace("undefined|", "").replace("|undefined", "")}>;`); resultLines.push(`export function checkArrayOf${args.functionName}${args.genericArg} (${args.functionArg.trim()}) : undefined|ArrayOf${args.functionName}Result {`); resultLines.push(` return GenericArrayCheck.checkArrayOf(`); resultLines.push(` mixed,`); if (args.functionArgNames.length == 1) { resultLines.push(` check.check${args.functionName}`); } else { resultLines.push(` () => {`); resultLines.push(` return check.check${args.functionName}(${args.functionArgNames.join(", ")})`); resultLines.push(` }`); } resultLines.push(` );`); resultLines.push(`}`); return resultLines; }, }) }