gitee.com/haifengat/gotap_dipper@v0.0.4-0.20231212021028-041a6fa876e5/generate/utils.go (about) 1 package generate 2 3 import ( 4 "bytes" 5 "os" 6 "path" 7 "text/template" 8 ) 9 10 // var srcPath = "../v9.3.7.5_20220228" 11 var srcPath = []string{"../v9.3.8.7_20230117", "quote_v9.3.1.4_20190925"} 12 13 // readFile 文件先手动转为 UTF8 14 // 15 // @param fileNames 16 // @return string 17 func readFile(fileNames ...string) string { 18 var str string 19 for _, fileName := range fileNames { 20 var fileFullPath string 21 for _, v := range srcPath { 22 if _, err := os.Stat(path.Join(v, fileName)); err == nil { 23 fileFullPath = path.Join(v, fileName) 24 break 25 } 26 } 27 bs, err := os.ReadFile(fileFullPath) 28 if err != nil { 29 panic(err) 30 } 31 str += string(bs) 32 } 33 return str 34 } 35 36 func writeTmpl(tplFile string, writeToFile string, data any, funcMaps ...template.FuncMap) { 37 var err error 38 t := template.New(tplFile).Delims("[[", "]]") 39 // funcMap 加入 Funcs 40 for _, fm := range funcMaps { 41 t = t.Funcs(fm) 42 } 43 if t, err = t.ParseFiles(tplFile); err != nil { 44 panic(err) 45 } 46 47 buf := bytes.Buffer{} 48 if err = t.Execute(&buf, data); err != nil { 49 panic(err) 50 } 51 // 解决 & 生成tmp 后多出的 amp; 52 // 用 text/template 替代 html/template 解决 53 // bs := buf.Bytes() 54 // bs = bytes.ReplaceAll(bs, []byte("amp;"), []byte("")) 55 if err = os.WriteFile(writeToFile, buf.Bytes(), os.ModePerm); err != nil { 56 panic(err) 57 } 58 }