def write_one_sheet(self, writer_info, outfile, data_module): writer_name = writer_info["class"] ns = { "FILE_PATH" : outfile, "FILE_DIR" : os.path.dirname(outfile), "FILE_NAME" : os.path.basename(outfile), } full_path = util.resolve_path(writer_info["file_path"], (ns, xlsconfig, )) util.ensure_folder_exist(full_path) writer_class = getattr(writers, writer_name) wt = writer_class(full_path, data_module, writer_info) wt.write_comment("此文件由导表工具自动生成,禁止手动修改。") wt.write_comment("from " + data_module.info["infile"]) wt.begin_write() wt.write_sheet("main_sheet", data_module.main_sheet) extra_sheets = getattr(data_module, "extra_sheets", None) if extra_sheets is not None: assert(isinstance(extra_sheets, dict)) wt.write_module(extra_sheets) wt.end_write() wt.close() return
def write_one_sheet(self, writer_info, outfile, data_module): writer_name = writer_info["class"] full_path = os.path.join(writer_info["file_path"], outfile + writer_info["file_posfix"]) util.ensure_folder_exist(full_path) writer_class = getattr(writers, writer_name) wt = writer_class(full_path, data_module, writer_info) wt.write_comment("此文件由导表工具自动生成,禁止手动修改。") wt.write_comment("from " + data_module.info["infile"]) wt.output("\n") wt.begin_write() wt.write_sheet("main_sheet", data_module.main_sheet) extra_sheets = getattr(data_module, "extra_sheets", None) if extra_sheets is not None: assert (isinstance(extra_sheets, dict)) wt.write_module(extra_sheets) wt.end_write() wt.close() return
def write_file_list(self): print "=== 写入文件列表 ..." sheet = {} for k, v in self.data_modules.iteritems(): sheet[k] = v.info["parser"] full_path = os.path.join(xlsconfig.TEMP_PATH, "files.py") util.ensure_folder_exist(full_path) wt = writers.PyWriter(full_path, None) wt.begin_write() wt.write_sheet("main_sheet", sheet) wt.end_write() wt.close() return
def run(self): file_path = util.resolve_path(self.generator_info["file_path"]) util.ensure_folder_exist(file_path) print "生成文件列表", file_path only_name = os.path.splitext(os.path.basename(file_path))[0] wt = JsonWriter(file_path, None) wt.begin_write() package = to_utf8( self.generator_info.get("package", xlsconfig.DEFAULT_JAVA_PACKAGE)) wt.write_value("package", to_utf8(package)) class_name_format = to_utf8( self.generator_info.get("class_name_format")) enum_name_format = to_utf8(self.generator_info.get("enum_name_format")) keys = self.exporter.data_modules.keys() keys.sort() ret = [] for key in keys: data_module = self.exporter.data_modules[key] converter_name = data_module.info["parser"] file_name = os.path.splitext(key)[0] enum_name = file_name.replace('\\', '_').replace('/', '_').upper() if enum_name_format: enum_name = enum_name_format % enum_name fpath, fname = os.path.split(file_name) file_name = os.path.join(only_name, fpath, "%s.wg" % fname) file_name = format_slash(file_name) class_name = to_class_name(converter_name.split('.')[-1]) if class_name_format: class_name = class_name_format % class_name ret.append([enum_name, file_name, class_name]) wt.write_value(only_name, ret) wt.end_write() wt.close()
def run(self): file_path = util.resolve_path(self.generator_info["file_path"]) util.ensure_folder_exist(file_path) print "生成枚举类", file_path wt = BaseWriter(file_path, None) indent = 0 wt._output_line(indent, "// 此文件由导表工具自动生成,禁止手动修改。") wt._output_line() package = util.to_utf8( self.generator_info.get("package", xlsconfig.DEFAULT_JAVA_PACKAGE)) wt._output_line(indent, "package %s;" % package) wt._output_line() class_name = os.path.splitext(os.path.basename(file_path))[0] wt._output_line(indent, "public enum %s {" % class_name) indent += 1 value_pairs = [] for outfile, data_module in self.exporter.data_modules.iteritems(): enume_name = to_enum_name(outfile) comment = data_module.info["arguments"].get("describe") value_pairs.append((enume_name, comment)) value_pairs.sort(key=lambda v: v[0]) for enum_name, comment in value_pairs: if comment: wt._output_line(indent, "%-20s // %s" % (enum_name + ",", comment)) else: wt._output_line(indent, enum_name, ",") indent -= 1 wt._output_line(indent, "};") wt.close()
def run(self): src_name = self.module_name.split('.')[-1] self.class_name = util.to_class_name(src_name) generator_info = self.generator_info name_format = util.to_utf8(generator_info.get("name_format")) if name_format: self.class_name = name_format % self.class_name ns = { "FILE_PATH": self.class_name, } self.file_path = util.resolve_path(generator_info["file_path"], ( ns, xlsconfig, )) util.ensure_folder_exist(self.file_path) self.write_line(0, "// 此文件由导表工具自动生成,禁止手动修改。") self.write_line() package = util.to_utf8( generator_info.get("package", xlsconfig.DEFAULT_JAVA_PACKAGE)) self.write_line(0, "package %s;" % package) self.write_line() imports = generator_info.get("imports") if imports: for imp in imports: self.write_line(0, "import %s;" % imp.encode("utf-8")) self.write_line() items = self.collect_members(self.module) self.gen_class(items, 0) self.save_to_file(self.file_path)