Пример #1
0
    def __init__(
        self,
        indent_type: str = INDENT_TYPE_SPACE,
        indent_width: int = 4,
        code_generator_file: Optional[str] = None,
        template_file: Optional[str] = None,
        workspace_dir: Optional[str] = None,
        lang: str = "cpp",
    ):
        from atcodertools.common.language import Language, LanguageNotFoundError, ALL_LANGUAGE_NAMES

        code_generator_file = normalize_path(code_generator_file)
        template_file = normalize_path(template_file)

        try:
            lang = Language.from_name(lang)
        except LanguageNotFoundError:
            raise CodeStyleConfigInitError(
                "language must be one of {}".format(ALL_LANGUAGE_NAMES))

        if indent_type not in [INDENT_TYPE_SPACE, INDENT_TYPE_TAB]:
            raise CodeStyleConfigInitError(
                "indent_type must be 'space' or 'tab'")

        if indent_width < 0:
            raise CodeStyleConfigInitError(
                "indent_width must be a positive integer")

        if code_generator_file is not None and not os.path.exists(
                code_generator_file):
            raise CodeStyleConfigInitError(
                "Module file {} is not found".format(code_generator_file))

        if template_file is not None and not os.path.exists(template_file):
            raise CodeStyleConfigInitError(
                "The specified template file '{}' is not found".format(
                    template_file))

        self.indent_type = indent_type
        self.indent_width = indent_width

        if code_generator_file is not None:
            try:
                module = imm.SourceFileLoader(
                    'code_generator', code_generator_file).load_module()
                self.code_generator = getattr(module, 'main')
            except AttributeError as e:
                raise CodeStyleConfigInitError(
                    e, "Error while loading {}".format(code_generator_file))
        else:
            self.code_generator = lang.default_code_generator

        self.template_file = normalize_path(template_file
                                            or lang.default_template_path)
        self.workspace_dir = normalize_path(workspace_dir
                                            or DEFAULT_WORKSPACE_DIR_PATH)
        self.lang = lang
    def __init__(self,
                 indent_type: str = INDENT_TYPE_SPACE,
                 indent_width: int = 4,
                 code_generator_file: Optional[str] = None,
                 template_file: Optional[str] = None,
                 workspace_dir: Optional[str] = None,
                 lang: str = "cpp",
                 ):
        from atcodertools.common.language import Language, LanguageNotFoundError, ALL_LANGUAGE_NAMES

        code_generator_file = normalize_path(code_generator_file)
        template_file = normalize_path(template_file)

        try:
            lang = Language.from_name(lang)
        except LanguageNotFoundError:
            raise CodeStyleConfigInitError(
                "language must be one of {}".format(ALL_LANGUAGE_NAMES))

        if indent_type not in [INDENT_TYPE_SPACE, INDENT_TYPE_TAB]:
            raise CodeStyleConfigInitError(
                "indent_type must be 'space' or 'tab'")

        if indent_width < 0:
            raise CodeStyleConfigInitError(
                "indent_width must be a positive integer")

        if code_generator_file is not None and not os.path.exists(code_generator_file):
            raise CodeStyleConfigInitError(
                "Module file {} is not found".format(code_generator_file))

        if template_file is not None and not os.path.exists(template_file):
            raise CodeStyleConfigInitError(
                "The specified template file '{}' is not found".format(
                    template_file)
            )

        self.indent_type = indent_type
        self.indent_width = indent_width

        if code_generator_file is not None:
            try:
                module = imm.SourceFileLoader(
                    'code_generator', code_generator_file).load_module()
                self.code_generator = getattr(module, 'main')
            except AttributeError as e:
                raise CodeStyleConfigInitError(e, "Error while loading {}".format(
                    code_generator_file))
        else:
            self.code_generator = lang.default_code_generator

        self.template_file = normalize_path(
            template_file or lang.default_template_path)
        self.workspace_dir = normalize_path(
            workspace_dir or DEFAULT_WORKSPACE_DIR_PATH)
        self.lang = lang