コード例 #1
0
ファイル: gen_struct.py プロジェクト: cheadaq/tabugen
    def run(self, descriptors, filepath, args):
        content = '// This file is auto-generated by Tabugen v%s, DO NOT EDIT!\n\n' % version.VER_STRING
        content += 'using System;\n'
        content += 'using System.Collections.Generic;\n'

        if args.package is not None:
            content += '\nnamespace %s\n{\n' % args.package

        if self.load_gen is not None:
            (array_delim,
             map_delims) = strutil.to_sep_delimiters(args.array_delim,
                                                     args.map_delims)
            self.load_gen.setup(array_delim, map_delims,
                                args.config_manager_class)

        for struct in descriptors:
            content += self.generate_class(struct, args)

        if self.load_gen is not None:
            content += self.load_gen.gen_global_class(descriptors, args)

        if args.package is not None:
            content += '\n}\n'  # namespace

        filename = os.path.abspath(filepath)
        strutil.save_content_if_not_same(filename, content, 'utf-8')
        print('wrote C# source file to', filename)
コード例 #2
0
ファイル: gen_struct.py プロジェクト: cheadaq/tabugen
    def run(self, descriptors, filepath, args):
        content = ''
        content += go_template.GO_HEAD_TEMPLATE % (version.VER_STRING,
                                                   args.package)

        if args.json_snake_case:
            self.json_snake_case = True

        if self.load_gen is not None:
            (array_delim,
             map_delims) = strutil.to_sep_delimiters(args.array_delim,
                                                     args.map_delims)
            self.load_gen.setup(array_delim, map_delims)

        for struct in descriptors:
            content += self.generate(struct, args)

        filename = os.path.abspath(filepath)
        if self.load_gen is not None:
            self.load_gen.gen_helper_file(filename, version.VER_STRING, args)

        strutil.save_content_if_not_same(filename, content, 'utf-8')
        print('wrote Go source to %s' % filename)

        if args.go_fmt:
            cmd = 'go fmt ' + filename
            goroot = os.getenv('GOROOT')
            if goroot is not None:
                cmd = goroot + '/bin/' + cmd
            print(cmd)
            os.system(cmd)
コード例 #3
0
    def run(self, descriptors, filepath, args):
        outname = os.path.split(filepath)[-1]

        cpp_content = ''
        if self.load_gen is not None:
            (array_delim,
             map_delims) = strutil.to_sep_delimiters(args.array_delim,
                                                     args.map_delims)
            self.load_gen.setup(array_delim, map_delims, args.out_csv_delim,
                                args.config_manager_class)
            filename = outname + '.h'
            cpp_content = self.load_gen.gen_source_method(
                descriptors, args, filename)

        header_content = self.gen_header_content(descriptors, args)

        header_filepath = filepath + '.h'
        filename = os.path.abspath(header_filepath)
        strutil.save_content_if_not_same(filename, header_content,
                                         args.source_file_encoding)
        print('wrote C++ header file to', filename)

        if len(cpp_content) > 0:
            source_filepath = filepath + '.cpp'
            filename = os.path.abspath(source_filepath)
            modified = strutil.save_content_if_not_same(
                filename, cpp_content, args.source_file_encoding)
            if modified:
                print('wrote C++ source file to', filename)
            else:
                print('file content not modified', filename)
コード例 #4
0
 def gen_helper_file(main_filepath, ver, args):
     (array_delim,
      map_delims) = strutil.to_sep_delimiters(args.array_delim,
                                              args.map_delims)
     const_def = go_template.GO_CONST_TEMPLATE % (
         args.out_csv_delim, '"', array_delim, map_delims[0], map_delims[1])
     filepath = os.path.abspath(os.path.dirname(main_filepath))
     filename = filepath + os.path.sep + 'helper.go'
     content = go_template.GO_HELP_FILE_HEAD_TEMPLATE % (ver, args.package)
     content += go_template.GO_HELP_FILE_TEMPLATE + const_def
     strutil.save_content_if_not_same(filename, content, 'utf-8')
コード例 #5
0
ファイル: json.py プロジェクト: cheadaq/tabugen
    def write_file(self, struct, filepath, encoding, json_indent, obj):
        filename = "%s/%s.json" % (filepath, strutil.camel_to_snake(struct['camel_case_name']))
        filename = os.path.abspath(filename)
        if json_indent:
            content = json.dumps(obj, ensure_ascii=False, allow_nan=False, sort_keys=True, indent=2)
        else:
            content = json.dumps(obj, ensure_ascii=False, allow_nan=False, sort_keys=True)

        if strutil.save_content_if_not_same(filename, content, encoding):
            print("wrote JSON data to", filename)
コード例 #6
0
ファイル: gen_struct.py プロジェクト: cheadaq/tabugen
    def run(self, descriptors, filepath, args):
        mgr_content = '// This file is auto-generated by taxi v%s, DO NOT EDIT!\n\n' % version.VER_STRING

        mgr_filename = ''
        if args.config_manager_class != '':
            mgr_filename = '%s.java' % args.config_manager_class

        try:
            os.mkdir(filepath)
        except OSError as e:
            pass

        if args.package is not None:
            pkgname = args.package
            names = [filepath] + pkgname.split('.')
            basedir = '/'.join(names)
            filepath = basedir
            mgr_content += 'package %s;' % pkgname
            mgr_filename = '%s/%s' % (basedir, mgr_filename)
            try:
                print('make dir', basedir)
                os.makedirs(basedir)
            except OSError as e:
                pass

        if self.load_gen:
            (array_delim,
             map_delims) = strutil.to_sep_delimiters(args.array_delim,
                                                     args.map_delims)
            self.load_gen.setup(array_delim, map_delims,
                                args.config_manager_class)
            sep_delim = strutil.escape_delimiter(args.out_csv_delim)
            quote_delim = strutil.escape_delimiter('"')
            if args.config_manager_class != "":
                mgr_content += java_template.JAVA_MGR_CLASS_TEMPLATE % (
                    args.config_manager_class, sep_delim, quote_delim,
                    array_delim, map_delims[0], map_delims[1])

        class_dict = {}

        pkg_imports = [
            'import java.util.*;',
        ]

        if self.load_gen is not None:
            csv_imports = [
                'import java.io.IOException;',
                'import org.apache.commons.csv.*;',
            ]
            pkg_imports += csv_imports

        for struct in descriptors:
            content = '// This file is auto-generated by Tabugen v%s, DO NOT EDIT!\n\n' % version.VER_STRING
            filename = '%s.java' % struct['camel_case_name']
            # print(filename)
            if args.package:
                filename = '%s/%s' % (filepath, filename)
                content += 'package %s;\n\n' % args.package
            content += '\n'.join(pkg_imports)
            content += '\n'
            content += self.generate_class(struct, args)
            class_dict[filename] = content

        mgr_content += '}\n'

        if self.load_gen is not None and args.config_manager_class != '':
            class_dict[mgr_filename] = mgr_content

        for filename in class_dict:
            content = class_dict[filename]
            filename = os.path.abspath(filename)
            strutil.save_content_if_not_same(filename, content,
                                             args.source_file_encoding)
            print('wrote Java source file to', filename)