From 6a55f6fea3f5901a9ed10d8bad26ae7aae64974d Mon Sep 17 00:00:00 2001 From: Kanai Masumi Date: Mon, 12 Sep 2022 17:03:24 +0900 Subject: [PATCH] feat: fix broken pkg name --- .../gen/spec_base/issue.gen.go | 2 +- pkg/codegen/template_helpers.go | 1 + .../templates/strict/strict-interface.tmpl | 2 +- pkg/codegen/utils.go | 18 ++++++++++++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/internal/test/issues/issue-removed-external-ref/gen/spec_base/issue.gen.go b/internal/test/issues/issue-removed-external-ref/gen/spec_base/issue.gen.go index ac246d3bf..1a4f2a01c 100644 --- a/internal/test/issues/issue-removed-external-ref/gen/spec_base/issue.gen.go +++ b/internal/test/issues/issue-removed-external-ref/gen/spec_base/issue.gen.go @@ -202,7 +202,7 @@ type PostInvalidExtRefTroubleResponseObject interface { VisitPostInvalidExtRefTroubleResponse(w http.ResponseWriter) error } -type PostInvalidExtRefTrouble300JSONResponse = ExternalRef0.PascalJSONResponse +type PostInvalidExtRefTrouble300JSONResponse = externalRef0.PascalJSONResponse func (response PostInvalidExtRefTrouble300JSONResponse) VisitPostInvalidExtRefTroubleResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") diff --git a/pkg/codegen/template_helpers.go b/pkg/codegen/template_helpers.go index a67740430..0cc27c714 100644 --- a/pkg/codegen/template_helpers.go +++ b/pkg/codegen/template_helpers.go @@ -277,6 +277,7 @@ var TemplateFunctions = template.FuncMap{ "swaggerUriToGorillaUri": SwaggerUriToGorillaUri, "lcFirst": LowercaseFirstCharacter, "ucFirst": UppercaseFirstCharacter, + "ucFirstWithPkgName": UppercaseFirstCharacterWithPkgName, "camelCase": ToCamelCase, "genResponsePayload": genResponsePayload, "genResponseTypeName": genResponseTypeName, diff --git a/pkg/codegen/templates/strict/strict-interface.tmpl b/pkg/codegen/templates/strict/strict-interface.tmpl index 8a435babe..9f116de1b 100644 --- a/pkg/codegen/templates/strict/strict-interface.tmpl +++ b/pkg/codegen/templates/strict/strict-interface.tmpl @@ -25,7 +25,7 @@ {{$hasHeaders := ne 0 (len .Headers) -}} {{$fixedStatusCode := .HasFixedStatusCode -}} {{$isRef := .IsRef -}} - {{$ref := .Ref | ucFirst -}} + {{$ref := .Ref | ucFirstWithPkgName -}} {{$headers := .Headers -}} {{if (and $hasHeaders (not $isRef)) -}} diff --git a/pkg/codegen/utils.go b/pkg/codegen/utils.go index fe2535316..28310b40a 100644 --- a/pkg/codegen/utils.go +++ b/pkg/codegen/utils.go @@ -43,6 +43,24 @@ func UppercaseFirstCharacter(str string) string { return string(runes) } +// Uppercase the first character in a identifier with pkg name. This assumes UTF-8, so we have +// to be careful with unicode, don't treat it as a byte array. +func UppercaseFirstCharacterWithPkgName(str string) string { + if str == "" { + return "" + } + + segs := strings.Split(str, ".") + var prefix string + if len(segs) == 2 { + prefix = segs[0] + "." + str = segs[1] + } + runes := []rune(str) + runes[0] = unicode.ToUpper(runes[0]) + return prefix + string(runes) +} + // Same as above, except lower case func LowercaseFirstCharacter(str string) string { if str == "" {