Some checks failed
CI Workflow / Check GoReleaser config (pull_request) Successful in 4s
CI Workflow / Test readiness for publishing provider (pull_request) Failing after 14s
CI Workflow / CI run build and linting (pull_request) Failing after 10s
CI Workflow / Code coverage report (pull_request) Has been skipped
CI Workflow / CI run tests (pull_request) Failing after 57s
53 lines
1 KiB
Go
53 lines
1 KiB
Go
package build
|
|
|
|
import (
|
|
"regexp"
|
|
"strings"
|
|
"unicode"
|
|
"unicode/utf8"
|
|
)
|
|
|
|
// snakeLetters will match to the first letter and an underscore followed by a letter
|
|
var snakeLetters = regexp.MustCompile("(^[a-z])|_[a-z0-9]")
|
|
|
|
func ToPascalCase(in string) string {
|
|
inputSplit := strings.Split(in, ".")
|
|
|
|
var ucName string
|
|
|
|
for _, v := range inputSplit {
|
|
if len(v) < 1 {
|
|
continue
|
|
}
|
|
|
|
firstChar := v[0:1]
|
|
ucFirstChar := strings.ToUpper(firstChar)
|
|
|
|
if len(v) < 2 {
|
|
ucName += ucFirstChar
|
|
continue
|
|
}
|
|
|
|
ucName += ucFirstChar + v[1:]
|
|
}
|
|
|
|
return snakeLetters.ReplaceAllStringFunc(ucName, func(s string) string {
|
|
return strings.ToUpper(strings.ReplaceAll(s, "_", ""))
|
|
})
|
|
}
|
|
|
|
func ToCamelCase(in string) string {
|
|
pascal := ToPascalCase(in)
|
|
|
|
// Grab first rune and lower case it
|
|
firstLetter, size := utf8.DecodeRuneInString(pascal)
|
|
if firstLetter == utf8.RuneError && size <= 1 {
|
|
return pascal
|
|
}
|
|
|
|
return string(unicode.ToLower(firstLetter)) + pascal[size:]
|
|
}
|
|
|
|
func ValidateSnakeCase(in string) bool {
|
|
return snakeLetters.MatchString(string(in))
|
|
}
|