// main.go package main import ( "complie-erlang/config" "complie-erlang/parser" tm "complie-erlang/template" "fmt" "log" "os" "strings" "text/template" ) func main() { cfg := config.DefaultErlConfig() templates := tm.NewTemplate() if err := templates.Load(cfg.TemplateDir); err != nil { log.Fatalf("loading templates: %v", err) return } erlangFile, _ := parser.ParseErlangFile("E:\\gopackage2\\2025.7\\complie-erl\\examples\\peak_arena_port.erl") // fmt.Printf("ParseErlangFile: %v, %v\n", erlangFile, err) for _, function := range erlangFile.Functions { if len(function.KeyMap) > 0 { fmt.Printf("Function: %v %v \n", function.Name, function.KeyMap) } } } func main1() { erlangFile, _ := parser.ParseErlangFile("E:\\gopackage2\\2025.7\\complie-erl\\examples\\peak_arena_port.erl") // fmt.Printf("ParseErlangFile: %v, %v\n", erlangFile, err) for _, function := range erlangFile.Functions { if len(function.KeyMap) > 0 { fmt.Printf("Function: %v %v \n", function.Name, function.KeyMap) } } bytes, _ := os.ReadFile("E:\\gopackage2\\2025.7\\complie-erl\\examples\\templates\\port.tpl") // 解析模板 t := template.Must(template.New("test").Funcs(template.FuncMap{ "hd": hd, "title": strings.Title, "join": strings.Join, "list": func(strs []string) string { return strings.Join(strs, ",") }, }).Parse(string(bytes))) // 执行模板,填充数据 var args = map[string]interface{}{ "cmd": []string{"\\game\\role_port\\get_info"}, "desc": []string{"获取数据1", "获取数据2"}, "module": []string{"peak_arena_port"}, "func": []string{"get_info"}, //"args": []string{"game", "1", "2"}, "reconnect": []string{"1"}, "fun_id": []string{"98"}, "pre_proto": []string{"pub_proto"}, "pre_message": []string{"single_int"}, } err := t.Execute(os.Stdout, args) fmt.Println(err) } func hd(str []string) string { return str[0] }