示例#1
0
文件: exportor.go 项目: davyxu/tabtoy
func Run(param Parameter) bool {
	// 输入协议二进制描述文件,通过protoc配合github.com/davyxu/pbmeta/protoc-gen-meta插件导出
	// 创建描述文件池
	pool, err := pbmeta.CreatePoolByFile(param.PBFile)
	if err != nil {
		fmt.Println(err)
		return false
	}

	var patchFile *PatchFile

	if param.PatchFile != "" {

		patchFile = NewPatchFile(pool)

		if !patchFile.Load(param.PatchFile) {
			return false
		}

		log.Infof("patch file loaded: %s", param.PatchFile)
	}

	return util.ParallelWorker(param.InputFileList, param.ParaMode, func(in interface{}) bool {

		input := in.(string)

		var ext string
		var writer printer.IPrinter

		switch param.Format {
		case "pbt":
			ext = ".pbt"
			writer = printer.NewPBTWriter()
		case "json":
			ext = ".json"
			writer = printer.NewJsonWriter()

		case "lua":
			ext = ".lua"
			writer = printer.NewLuaWriter()

		default:
			log.Errorf("unknown format '%s'", param.Format)
			return false
		}

		// 使用指定的导出文件夹,并更换电子表格输入文件的后缀名为pbt作为输出文件
		outputFile := path.Join(param.OutDir, util.ChangeExtension(input, ext))

		// 显示电子表格到导出文件

		sheetDataArray := exportSheetMsg(pool, input)

		if sheetDataArray == nil {
			return false
		}

		if patchFile != nil {
			patchFile.Patch(sheetDataArray)
		}

		return printFile(sheetDataArray, outputFile, writer)

	})

}
示例#2
0
文件: exportor.go 项目: davyxu/tabtoy
func Run(g *printer.Globals) bool {

	if !g.PreExport() {
		return false
	}

	fileObjList := make([]interface{}, 0)

	log.Infof("==========%s==========", i18n.String(i18n.Run_CollectTypeInfo))

	// 合并类型
	for _, in := range g.InputFileList {

		inputFile := in.(string)

		file := NewFile(inputFile)

		if file == nil {
			return false
		}

		log.Infoln(filepath.Base(inputFile))

		file.GlobalFD = g.FileDescriptor

		// 电子表格数据导出到Table对象
		if !file.ExportLocalType() {
			return false
		}

		// 整合类型信息和数据
		if !g.AddTypes(file.LocalFD) {
			return false
		}

		// 没有
		if file.Header != nil {
			fileObjList = append(fileObjList, file)
		}

	}

	log.Infof("==========%s==========", i18n.String(i18n.Run_ExportSheetData))
	// 导出表格
	if !util.ParallelWorker(fileObjList, false, func(in interface{}) bool {

		file := in.(*File)

		log.Infoln(filepath.Base(file.FileName))

		// 电子表格数据导出到Table对象
		tab := file.ExportData()
		if tab == nil {
			return false
		}

		// 整合类型信息和数据
		return g.AddContent(tab)

	}) {
		return false
	}

	// 根据各种导出类型, 调用各导出器导出
	return g.Print()
}