mirror of https://github.com/ollama/ollama
31 lines
633 B
Go
31 lines
633 B
Go
//go:build windows || darwin
|
|
|
|
package format
|
|
|
|
import (
|
|
"strings"
|
|
"unicode"
|
|
)
|
|
|
|
// KebabCase converts a string from camelCase or PascalCase to kebab-case.
|
|
// (e.g. "camelCase" -> "camel-case")
|
|
func KebabCase(str string) string {
|
|
var result strings.Builder
|
|
|
|
for i, char := range str {
|
|
if i > 0 {
|
|
prevChar := rune(str[i-1])
|
|
|
|
// Add hyphen before uppercase letters
|
|
if unicode.IsUpper(char) &&
|
|
(unicode.IsLower(prevChar) || unicode.IsDigit(prevChar) ||
|
|
(i < len(str)-1 && unicode.IsLower(rune(str[i+1])))) {
|
|
result.WriteRune('-')
|
|
}
|
|
}
|
|
result.WriteRune(unicode.ToLower(char))
|
|
}
|
|
|
|
return result.String()
|
|
}
|