in Sources/MockoloFramework/Templates/ClosureTemplate.swift [20:53]
func applyClosureTemplate(type: SwiftType,
cast: String?,
name: String,
params: [(String, SwiftType)],
returnDefaultType: SwiftType) -> String {
let handlerParamValsStr = params.map { (argName, argType) -> String in
if argType.isAutoclosure {
return argName.safeName + "()"
}
if argType.isInOut {
return "&" + argName.safeName
}
if argType.hasClosure && argType.isOptional,
let renderedClosure = renderOptionalGenericClosure(argType: argType, argName: argName) {
return renderedClosure
}
return argName.safeName
}.joined(separator: ", ")
let handlerReturnDefault = renderReturnDefaultStatement(name: name, type: returnDefaultType)
let prefix = [
throwing.hasError ? String.try + " " : nil,
isAsync ? String.await + " " : nil,
].compactMap { $0 }.joined()
let returnStr = returnDefaultType.isVoid ? "" : "return "
return """
\(2.tab)if let \(name) = \(name) {
\(3.tab)\(returnStr)\(prefix)\(name)(\(handlerParamValsStr))\(cast ?? "")
\(2.tab)}
\(2.tab)\(handlerReturnDefault)
"""
}