From 9f9f2840f568fcb720809739d7418fc5533031af Mon Sep 17 00:00:00 2001 From: Johan de Klerk <jdeklerk00@gmail.com> Date: Wed, 11 May 2022 14:00:22 +0200 Subject: [PATCH] docs - added summary --- api_documentation/api_documentation.go | 29 ++++++++++++++++++++++++-- string_utils/string_utils.go | 21 +++++++++++++++++-- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/api_documentation/api_documentation.go b/api_documentation/api_documentation.go index 68cc626..ad413d4 100644 --- a/api_documentation/api_documentation.go +++ b/api_documentation/api_documentation.go @@ -3,6 +3,7 @@ package api_documentation import ( "fmt" "gitlab.com/uafrica/go-utils/logs" + "gitlab.com/uafrica/go-utils/string_utils" "go/doc" "go/parser" "go/token" @@ -30,6 +31,7 @@ type DocSchemas struct { type DocMethodInfo struct { Description string `json:"description"` + Summary string `json:"summary"` Tags []string `json:"tags"` RequestBody *DocRequestBody `json:"requestBody,omitempty"` Parameters []DocParam `json:"parameters,omitempty"` @@ -92,6 +94,7 @@ func GetDocs(endpointHandlers map[string]map[string]interface{}, corePath string // Meta data functionName := GetFunctionName(handler.FuncValue.Interface()) docMethod.Description = functionDocs[functionName] + docMethod.Summary = functionNameToSummary(functionName, method) docMethod.Tags = []string{path} // Parameters @@ -138,6 +141,29 @@ func GetDocs(endpointHandlers map[string]map[string]interface{}, corePath string return docs, nil } +func functionNameToSummary(name string, method string) string { + + name = string_utils.ReplaceCaseInsensitive(name, "GET", "") + name = string_utils.ReplaceCaseInsensitive(name, "POST", "") + name = string_utils.ReplaceCaseInsensitive(name, "PATCH", "") + name = string_utils.ReplaceCaseInsensitive(name, "DELETE", "") + + var cleanMethod string + if method == "GET" { + cleanMethod = "Fetch" + } else if method == "POST" { + cleanMethod = "Create" + } else if method == "DELETE" { + cleanMethod = "Delete" + } else if method == "PATCH" { + cleanMethod = "Update" + } + + summary := string_utils.PascalCaseToSentence(name) + summary = cleanMethod + " " + strings.ToLower(summary) + return summary +} + func addDefaultSchemas(docs Docs) { docs.Components.Schemas["error"] = map[string]string{ "type": "string", @@ -365,8 +391,7 @@ func GetStructDocs(corePath string) map[string]string { return nil } - for k, f := range d { - fmt.Println("package", k) + for _, f := range d { p := doc.New(f, "./", 2) for _, objectTypes := range p.Types { diff --git a/string_utils/string_utils.go b/string_utils/string_utils.go index 14d7bcf..b939521 100644 --- a/string_utils/string_utils.go +++ b/string_utils/string_utils.go @@ -234,10 +234,10 @@ func KeyToHumanReadable(s string) string { re := regexp.MustCompile("(_|-)") s = re.ReplaceAllString(s, " ") - return sentenceCase(string(s)) + return SentenceCase(string(s)) } -func sentenceCase(str string) string { +func SentenceCase(str string) string { for i, v := range str { return string(unicode.ToUpper(v)) + str[i+1:] } @@ -311,3 +311,20 @@ func IsValidEmail(email string) bool { isValidEmail := regex.MatchString(email) return isValidEmail } + +func PascalCaseToSentence(pascal string) string { + var parts []string + start := 0 + for end, r := range pascal { + if end != 0 && unicode.IsUpper(r) { + parts = append(parts, pascal[start:end]) + start = end + } + } + if start != len(pascal) { + parts = append(parts, pascal[start:]) + } + sentence := strings.Join(parts, " ") + return sentence + +} -- GitLab