示例#1
0
	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
示例#2
0
    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
示例#3
0
    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()
示例#6
0
    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)