github.com/rohankumardubey/go-enry@v1.7.3/internal/code-generator/generator/types.go (about) 1 package generator 2 3 import ( 4 "bytes" 5 "gopkg.in/yaml.v2" 6 "io" 7 "io/ioutil" 8 ) 9 10 var typeToTypeConst = map[string]int{ 11 "data": 1, 12 "programming": 2, 13 "markup": 3, 14 "prose": 4, 15 } 16 17 // Types reads from fileToParse and builds source file from tmplPath. It complies with type File signature. 18 func Types(fileToParse, samplesDir, outPath, tmplPath, tmplName, commit string) error { 19 data, err := ioutil.ReadFile(fileToParse) 20 if err != nil { 21 return err 22 } 23 24 languages := make(map[string]*languageInfo) 25 if err := yaml.Unmarshal(data, &languages); err != nil { 26 return err 27 } 28 29 langTypeMap := buildLanguageTypeMap(languages) 30 31 buf := &bytes.Buffer{} 32 if err := executeTypesTemplate(buf, langTypeMap, tmplPath, tmplName, commit); err != nil { 33 return err 34 } 35 36 return formatedWrite(outPath, buf.Bytes()) 37 } 38 39 func buildLanguageTypeMap(languages map[string]*languageInfo) map[string]int { 40 langTypeMap := make(map[string]int) 41 for lang, info := range languages { 42 langTypeMap[lang] = typeToTypeConst[info.Type] 43 } 44 45 return langTypeMap 46 } 47 48 func executeTypesTemplate(out io.Writer, langTypeMap map[string]int, tmplPath, tmplName, commit string) error { 49 return executeTemplate(out, tmplName, tmplPath, commit, nil, langTypeMap) 50 }