@@ -16,13 +16,15 @@ package codegen
1616import (
1717 "bytes"
1818 "fmt"
19+ "maps"
1920 "os"
2021 "strings"
2122 "text/template"
2223
2324 "golang.org/x/text/cases"
2425 "golang.org/x/text/language"
2526
27+ "github.com/Masterminds/sprig/v3"
2628 "github.com/getkin/kin-openapi/openapi3"
2729 "github.com/oapi-codegen/oapi-codegen/v2/pkg/util"
2830)
@@ -318,32 +320,41 @@ func genServerURLWithVariablesFunctionParams(goTypePrefix string, variables map[
318320
319321// TemplateFunctions is passed to the template engine, and we can call each
320322// function here by keyName from the template code.
321- var TemplateFunctions = template.FuncMap {
322- "genParamArgs" : genParamArgs ,
323- "genParamTypes" : genParamTypes ,
324- "genParamNames" : genParamNames ,
325- "genParamFmtString" : ReplacePathParamsWithStr ,
326- "swaggerUriToIrisUri" : SwaggerUriToIrisUri ,
327- "swaggerUriToEchoUri" : SwaggerUriToEchoUri ,
328- "swaggerUriToFiberUri" : SwaggerUriToFiberUri ,
329- "swaggerUriToChiUri" : SwaggerUriToChiUri ,
330- "swaggerUriToGinUri" : SwaggerUriToGinUri ,
331- "swaggerUriToGorillaUri" : SwaggerUriToGorillaUri ,
332- "swaggerUriToStdHttpUri" : SwaggerUriToStdHttpUri ,
333- "lcFirst" : LowercaseFirstCharacter ,
334- "ucFirst" : UppercaseFirstCharacter ,
335- "ucFirstWithPkgName" : UppercaseFirstCharacterWithPkgName ,
336- "camelCase" : ToCamelCase ,
337- "genResponsePayload" : genResponsePayload ,
338- "genResponseTypeName" : genResponseTypeName ,
339- "genResponseUnmarshal" : genResponseUnmarshal ,
340- "getResponseTypeDefinitions" : getResponseTypeDefinitions ,
341- "toStringArray" : toStringArray ,
342- "lower" : strings .ToLower ,
343- "title" : titleCaser .String ,
344- "stripNewLines" : stripNewLines ,
345- "sanitizeGoIdentity" : SanitizeGoIdentity ,
346- "toGoComment" : StringWithTypeNameToGoComment ,
347-
348- "genServerURLWithVariablesFunctionParams" : genServerURLWithVariablesFunctionParams ,
323+ var templateFunctions template.FuncMap
324+
325+ func GetTemplateFunctions () template.FuncMap {
326+ if templateFunctions == nil {
327+ templateFunctions = template.FuncMap {
328+ "genParamArgs" : genParamArgs ,
329+ "genParamTypes" : genParamTypes ,
330+ "genParamNames" : genParamNames ,
331+ "genParamFmtString" : ReplacePathParamsWithStr ,
332+ "swaggerUriToIrisUri" : SwaggerUriToIrisUri ,
333+ "swaggerUriToEchoUri" : SwaggerUriToEchoUri ,
334+ "swaggerUriToFiberUri" : SwaggerUriToFiberUri ,
335+ "swaggerUriToChiUri" : SwaggerUriToChiUri ,
336+ "swaggerUriToGinUri" : SwaggerUriToGinUri ,
337+ "swaggerUriToGorillaUri" : SwaggerUriToGorillaUri ,
338+ "swaggerUriToStdHttpUri" : SwaggerUriToStdHttpUri ,
339+ "lcFirst" : LowercaseFirstCharacter ,
340+ "ucFirst" : UppercaseFirstCharacter ,
341+ "ucFirstWithPkgName" : UppercaseFirstCharacterWithPkgName ,
342+ "camelCase" : ToCamelCase ,
343+ "genResponsePayload" : genResponsePayload ,
344+ "genResponseTypeName" : genResponseTypeName ,
345+ "genResponseUnmarshal" : genResponseUnmarshal ,
346+ "getResponseTypeDefinitions" : getResponseTypeDefinitions ,
347+ "toStringArray" : toStringArray ,
348+ "lower" : strings .ToLower ,
349+ "title" : titleCaser .String ,
350+ "stripNewLines" : stripNewLines ,
351+ "sanitizeGoIdentity" : SanitizeGoIdentity ,
352+ "toGoComment" : StringWithTypeNameToGoComment ,
353+
354+ "genServerURLWithVariablesFunctionParams" : genServerURLWithVariablesFunctionParams ,
355+ }
356+ maps .Copy (templateFunctions , sprig .FuncMap ())
357+ }
358+
359+ return templateFunctions
349360}
0 commit comments