Пример #1
0
    def _handle_environment(self, elem):
        """Parse and handle mintmod environments."""
        match = REGEX_PATTERNS["ENV"].search(elem.text)
        if match is None:
            raise ParseError("Could not parse LaTeX environment: %s..." %
                             elem.text[:50])

        env_name = match.group("env_name")
        inner_code = match.groups()[1]

        if (bool(environ.get("INNOCONV_REMOVE_EXERCISES", False))
                and env_name in EXERCISE_CMDS_ENVS):
            return []

        # Parse optional arguments
        env_args, rest = parse_nested_args(inner_code)

        function_name = "handle_%s" % slugify(env_name)
        func = getattr(self._environments, function_name, None)
        if callable(func):
            return func(rest, env_args, elem)

        if (not bool(environ.get("INNOCONV_IGNORE_EXERCISES", False))
                or env_name not in EXERCISE_CMDS_ENVS):
            log("Could not handle environment %s." % env_name, level="WARNING")

        if self._debug:
            return self._unknown_environment_debug(env_name, elem)
        return None
Пример #2
0
    def test_parse_nested_args_rest(self):
        """It should parse nested arguments with rest"""
        ret = parse_nested_args(r"""{word\bar{two}bbb}{baz}
there is more
stuff here""")
        rest = """
there is more
stuff here"""
        self.assertEqual(ret, ([r"word\bar{two}bbb", "baz"], rest))
Пример #3
0
 def test_parse_nested_args_2(self):
     """It should parse nested arguments: nested 2"""
     ret = parse_nested_args(r"{cont}{}{\foo{\bla{\stop}}}{\baz{}{}{}}")
     self.assertEqual(
         ret, (["cont", "", r"\foo{\bla{\stop}}", r"\baz{}{}{}"], None))
Пример #4
0
 def test_parse_nested_args_1(self):
     """It should parse nested arguments: nested 1"""
     ret = parse_nested_args(r"{word\bar{two}bbb}{baz}")
     self.assertEqual(ret, ([r"word\bar{two}bbb", "baz"], None))
Пример #5
0
 def test_parse_nested_args_simple(self):
     """It should parse nested arguments: simple"""
     ret = parse_nested_args("{bbb}{baz}{foo}")
     self.assertEqual(ret, (["bbb", "baz", "foo"], None))
Пример #6
0
 def test_parse_nested_args_empty(self):
     """It should parse nested arguments: empty"""
     ret = parse_nested_args("")
     self.assertEqual(ret, ([], None))