github.com/loggregator/cli@v6.33.1-0.20180224010324-82334f081791+incompatible/util/codegen/template_input.go (about) 1 package codegen 2 3 import ( 4 "strings" 5 "unicode" 6 ) 7 8 type TemplateInput struct { 9 EntityName string 10 EntityNameSnake string 11 EntityNameDashes string 12 EntityNameVar string 13 } 14 15 func NewTemplateInput(entityName string) TemplateInput { 16 return TemplateInput{ 17 EntityName: entityName, 18 EntityNameSnake: toSnakeCase(entityName), 19 EntityNameDashes: toDashes(entityName), 20 EntityNameVar: toVarName(entityName), 21 } 22 } 23 24 func toSnakeCase(s string) string { 25 var result []rune 26 27 for i, roon := range s { 28 if i > 0 && unicode.IsUpper(roon) { 29 result = append(result, '_') 30 } 31 result = append(result, unicode.ToLower(roon)) 32 } 33 34 return string(result) 35 } 36 37 func toDashes(s string) string { 38 return strings.Replace(toSnakeCase(s), "_", "-", -1) 39 } 40 41 func toVarName(s string) string { 42 var runes []rune 43 44 runes = append(runes, unicode.ToLower(rune(s[0]))) 45 runes = append(runes, []rune(s[1:len(s)])...) 46 47 return string(runes) 48 }