import {generate, LineArg} from "./generator"; import * as sources from "./Source"; export function generatePromise (src : sources.Source) { generate({ checkName : src.name, generated : src.generated, imports : [ { alias : "assert", path : `main/generated/sync/assert/${src.name}` } ], writeDirectory : "promise", lineCallback : (args : LineArg) : string[] => { const resultLines : string[] = []; resultLines.push(`export function promise${args.functionName}${args.genericArg} (name : string, ${args.functionArg.trim()}) : Promise<${src.type}> {`); resultLines.push(` return new Promise<${src.type}>((resolve) => {`); resultLines.push(` resolve(assert.assert${args.functionName}(name, ${args.functionArgNames.join(", ")}));`); resultLines.push(` });`); resultLines.push(`}`); resultLines.push(""); if (args.functionArgNames.length > 1) { resultLines.push(`export function promise${args.functionName}Handler${args.genericArg} (${args.functionArg.replace(/mixed\s*:\s*any\s*\,/, "").trim()}) : (name : string, mixed : any) => Promise<${src.type}> {`); resultLines.push(` return (name : string, mixed : any) : Promise<${src.type}> => {`); resultLines.push(` return promise${args.functionName}(name, ${args.functionArgNames.join(", ")});`); resultLines.push(` };`); resultLines.push(`}`); resultLines.push(""); } return resultLines; } }); }