func applyClosureTemplate()

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)
        """
    }