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  }