import {generate, LineArg} from "./generator"; export function generateCheckDictionaryOf (name : string, generated : boolean|undefined) { generate({ checkName : name, generated : generated, imports : [ { alias : "GenericDictionaryCheck", path : "../sync/check/generic/dictionary" }, { alias : "check", path : generated ? `../generated/sync/check/${name}` : `../sync/check/${name}` } ], writeDirectory : "sync/check/dictionary-of", lineCallback : (args : LineArg) : string[] => { const resultLines : string[] = []; resultLines.push(`export type DictionaryOf${args.functionName}Result = GenericDictionaryCheck.IsDictionaryOfResult<${args.functionRet.replace("undefined|", "").replace("|undefined", "")}>;`); resultLines.push(`export function checkDictionaryOf${args.functionName}${args.genericArg} (${args.functionArg.trim()}) : undefined|DictionaryOf${args.functionName}Result {`); resultLines.push(` return GenericDictionaryCheck.checkDictionaryOf(`); 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; }, }) }