Exemple #1
0
    def _keys_from_definition(cls, definition, template_name, keys):
        """Extracts Template Keys from a definition.

        :param definition: Template definition as string
        :param template_name: Name of template.
        :param keys: Mapping of key names to keys as dict

        :returns: Mapping of key names to keys and collection of keys ordered as they appear in the definition.
        :rtype: List of Dictionaries, List of lists
        """
        names_keys = {}
        ordered_keys = []
        # regular expression to find key names
        regex = r"(?<={)%s(?=})" % constants.TEMPLATE_KEY_NAME_REGEX
        key_names = re.findall(regex, definition)
        for key_name in key_names:
            key = keys.get(key_name)
            if key is None:
                msg = "Template definition for template %s refers to key {%s}, which does not appear in supplied keys."
                raise TankError(msg % (template_name, key_name))
            else:
                if names_keys.get(key.name, key) != key:
                    # Different keys using same name
                    msg = (
                        "Template definition for template %s uses two keys" +
                        " which use the name '%s'.")
                    raise TankError(msg % (template_name, key.name))
                names_keys[key.name] = key
                ordered_keys.append(key)
        return names_keys, ordered_keys
Exemple #2
0
    def test_unicode_override(self):
        """
        Ensure that the unicode flag overrides the flag insertion behavior.
        """
        char = u"a漢字"
        expr = r"a\w+"

        # test all wrapped methods
        self.assertTrue(bool(sgre.compile(expr, flags=re.U).match(char)))
        self.assertEqual(len(sgre.findall(expr, char, flags=re.U)), 1)
        self.assertTrue(bool(sgre.match(expr, char, flags=re.U)))
        self.assertTrue(bool(sgre.search(expr, char, flags=re.U)))
        self.assertEqual(len(sgre.split(expr, "$ %s @" % char, flags=re.U)), 2)
        self.assertEqual(sgre.sub(expr, "@", char, flags=re.U), "@")
Exemple #3
0
    def test_wrap(self):
        r"""
        Ensure that sgre injects the re.ASCII flag appropriately, and that
        unicode characters do not match `\w` in Python 2 or 3.
        """
        char = u"漢字"
        expr = r"\w+"

        # test all wrapped methods
        self.assertFalse(bool(sgre.compile(expr).match(char)))
        self.assertEqual(len(sgre.findall(expr, char)), 0)
        self.assertFalse(bool(sgre.match(expr, char)))
        self.assertFalse(bool(sgre.search(expr, char)))
        self.assertEqual(len(sgre.split(expr, "$ %s @" % char)), 1)
        self.assertEqual(sgre.sub(expr, "@", char), char)
Exemple #4
0
    def test_wrap_kwarg(self):
        r"""
        Ensure that sgre injects the re.ASCII flag appropriately when flags are
        also passed as keyword arguments, and that unicode characters do not
        match `\w` in Python 2 or 3.
        """
        char = u"a漢字"
        expr = r"a\w+"

        # test all wrapped methods
        self.assertFalse(bool(sgre.compile(expr, flags=re.I).match(char)))
        self.assertEqual(len(sgre.findall(expr, char, flags=re.I)), 0)
        self.assertFalse(bool(sgre.match(expr, char, flags=re.I)))
        self.assertFalse(bool(sgre.search(expr, char, flags=re.I)))
        self.assertEqual(len(sgre.split(expr, "$ %s @" % char, flags=re.I)), 1)
        self.assertEqual(sgre.sub(expr, "@", char, flags=re.I), char)