Пример #1
0
func (x *Json_generator) Generate() {
	if false == tool.Exist(&x.M_json_dir) {
		tool.EchoErr("错误: <%s>路径不存在", x.M_json_dir)
		return
	}

	x.save_as_json()
}
Пример #2
0
func (x *Xml_generator) Generate() {
	if false == tool.Exist(&x.M_xml_dir) {
		tool.EchoErr("错误: <%s>路径不存在", x.M_xml_dir)
		return
	}

	x.save_as_xml()
}
Пример #3
0
func (c *Cpp_generator) Generate() {
	if false == tool.Exist(&c.M_to_dir) {
		tool.EchoErr("参数错误: 找不到指定的生成源文件的路径<%s>,请确认路径是否存在!", c.M_to_dir)
		return
	}

	if false == tool.Exist(&c.M_h_templet_path) {
		tool.EchoErr("参数错误: 找不到.h模板头文件<%s>", c.M_h_templet_path)
		return
	}

	if false == tool.Exist(&c.M_cpp_templet_path) {
		tool.EchoErr("参数错误: 找不到cpp模板源文件<%s>", c.M_cpp_templet_path)
		return
	}

	var filename string = tool.Strip_ext(tool.Strip_dir(c.M_cfgbase.Filename))

	var h_file string = c.M_to_dir + "\\" + filename + ".h"
	var cpp_file string = c.M_to_dir + "\\" + filename + ".cpp"

	// 开始生成
	// 1. c++的h头文件
	if !c.gen_h_file(&h_file) {
		tool.EchoErr("生成h头文件<%s>失败", h_file)
		return
	}

	tool.EchoOk("生成h头文件<%s>成功", h_file)

	// 2. c++的cpp头文件
	if !c.gen_cpp_file(&cpp_file) {
		tool.EchoErr("生成cpp源文件<%s>失败", cpp_file)
		return
	}

	tool.EchoOk("生成cpp源文件<%s>成功", cpp_file)
}
Пример #4
0
// 解析出excel中的各个工作表,将解析结果存入结构体
func parse_excel(excel *string, cfgbase *Cfgbase_t, errmsgs *tool.Errvec_t, parse_option Enum_parse_option) bool {
	var parse_clock tool.Clock
	parse_clock.Start_tick()

	if false == tool.Exist(excel) {
		*errmsgs = append(*errmsgs, *excel+"文件不存在!")
		return false
	}

	// 1. 载入excel文件
	xlFile, err := xlsx.OpenFile(*excel)
	if err != nil {
		*errmsgs = append(*errmsgs, tool.GetErrMsg("错误:解析<%s>文件失败,请确保该文件存在且未被打开!", *excel))
		return false
	}

	var succ bool = true

	// 2. 依次解析各个工作表
	for _, sheet := range xlFile.Sheets {
		var cfg Cfg_t

		// 2.1 解析出工作表的内容,并将结果存放到cfg中
		var ok bool = parse_sheet(sheet, &cfg, errmsgs, parse_option)
		if false == ok {
			succ = false
			continue
		}

		var conflict_by_prop *Cfg_t = cfgbase.find_by_en_name(&cfg.En_name)
		if nil != conflict_by_prop {
			*errmsgs = append(*errmsgs, tool.GetErrMsg("错误:定义了两个同样地文件<%s>", cfg.Cn_name))
			*errmsgs = append(*errmsgs, tool.GetErrMsg("       <%s = %s>", conflict_by_prop.Cn_name, conflict_by_prop.En_name))
			*errmsgs = append(*errmsgs, tool.GetErrMsg("       <%s = %s>", cfg.Cn_name, cfg.En_name))

			succ = false
			continue
		}

		cfgbase.Cfgs = append(cfgbase.Cfgs, cfg)
	}

	// 将第一个工作表名作为文件名(比如,excel中有2个工作表item、hero,则将item作为文件名)
	if len(cfgbase.Cfgs) > 0 {
		cfgbase.Filename = cfgbase.Cfgs[0].En_name
	}

	tool.EchoWarn("执行完毕, 共耗时<%f>秒", parse_clock.End_tick())
	return succ
}
Пример #5
0
// 解析excel文件
func ParseExcel(excel *string, parse_option Enum_parse_option, cfgbase *Cfgbase_t) bool {
	if false == tool.Exist(excel) {
		tool.EchoErr("错误: 找不到excel文件<%s>", *excel)
		return false
	}

	var errvec tool.Errvec_t
	if false == parse_excel(excel, cfgbase, &errvec, parse_option) {
		// tool.EchoErr("错误:解析<%s>文件失败,请确保该文件存在且未被打开", *excel)
		tool.Echo_errvec(&errvec)
		return false
	}

	return true
}