55 "fmt"
66 "regexp"
77 "strings"
8+ "unicode/utf8"
89)
910
1011const _replacementCharacter = "-"
@@ -14,7 +15,7 @@ var _regexp = regexp.MustCompile("[^A-Za-z0-9.]+")
1415// GenerateName generates a new branch name off of the identifier and title specified.
1516// Both the identifier and title must not be blank.
1617// Leading hyphens (prefix and suffix) are removed from the name returned.
17- func GenerateName (id string , title string ) (string , error ) {
18+ func GenerateName (id string , title string , maxLen int ) (string , error ) {
1819 if id == "" || strings .TrimSpace (id ) == "" {
1920 return "" , errors .New ("id must not be blank" )
2021 }
@@ -29,5 +30,13 @@ func GenerateName(id string, title string) (string, error) {
2930 _regexp .ReplaceAllString (
3031 fmt .Sprintf ("%s-%s" , id , titleWithoutDotSuffix ),
3132 _replacementCharacter ))
32- return strings .TrimPrefix (strings .TrimSuffix (generatedName , _replacementCharacter ), _replacementCharacter ), nil
33+ generatedName = strings .TrimSuffix (generatedName , _replacementCharacter )
34+ generatedName = strings .TrimPrefix (generatedName , _replacementCharacter )
35+ if maxLen <= 0 {
36+ return generatedName , nil
37+ }
38+ if utf8 .RuneCountInString (generatedName ) < maxLen {
39+ return generatedName , nil
40+ }
41+ return string ([]rune (generatedName )[:maxLen ]), nil
3342}
0 commit comments