<% func methodDeclaration(_ method: SourceryRuntime.Method, newName: String) -> String { var result = newName if method.throws { result = result + " throws" } else if method.rethrows { result = result + " rethrows" } if method.returnTypeName.isVoid { return result } return result + " -> \(method.returnTypeName)" } -%> <% for type in types.implementing["AutoGenerateProtocolDelegate"] { guard let replaceOf = type.annotations["replaceOf"] as? String else { continue } guard let replaceWith = type.annotations["replaceWith"] as? String else { continue } guard let protocolToGenerate = type.annotations["protocolName"] as? String else { continue } guard let aProtocol = types.protocols.first(where: { $0.name == protocolToGenerate }) else { continue } -%> // sourcery:inline:<%= type.name %>.AutoGenerateProtocolDelegate <% for method in aProtocol.methods { -%> <%= methodDeclaration(method, newName: method.name.replacingOccurrences(of: replaceOf, with: replaceWith)) %> <% } -%> // sourcery:end <% } %>