How to use the soupsieve.css_lang.__init__.InvalidSubtagError function in soupsieve

To help you get started, we’ve selected a few soupsieve examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github facelessuser / soupsieve / soupsieve / css_lang / __init__.py View on Github external
def _canonicalize_variant(self):
        """Canonicalize variant tags."""

        variant = self.parts['variant'].lstrip('-')

        if variant:
            ordered = sorted(variant.split('-'))
            variants = set(ordered)
            if len(variants) != len(ordered):
                raise InvalidSubtagError('Duplicate variants were found')

            subtags = set(self.parts['language'].split('-'))
            if self.parts['script']:
                subtags.add(self.parts['script'].lstrip('-'))
            if self.parts['region']:
                subtags.add(self.parts['region'].lstrip('-'))

            for v in ordered[:]:
                index = ordered.index(v)
                if v not in registry['variant']:
                    raise InvalidSubtagError("'{}' is not a registered variant".format(variant))
                value = registry['variant'][v]['preferred']
                if value is not None:
                    v = value
                prefixes = [p.split('-') for p in registry['variant'][v]['prefix']]
github facelessuser / soupsieve / soupsieve / css_lang / __init__.py View on Github external
def _canonicalize_language(self):
        """Canonicalize language tags."""

        language = self.parts['language']

        extlang = None
        primary = None

        values = language.split('-')

        if values[0] == '*':
            if len(values) > 1:
                if values[1] not in registry['extlang']:
                    raise InvalidSubtagError("'{}' is not a registered extlang.".format(extlang))
            return

        if values[0] not in registry['language']:
            raise InvalidSubtagError("'{}' is not a registered language.".format(values[0]))
        if registry['extlang'].get(values[0]):
            extlang = values[0]
        else:
            value = registry['language'][values[0]]['preferred']
            primary = values[0] if value is None else value

        if len(values) == 2:
            if extlang:
                raise InvalidSubtagError("Unexpected extlang following extlang: '{}'".format(values[1]))
            extlang = values[1]

        if extlang:
github facelessuser / soupsieve / soupsieve / css_lang / __init__.py View on Github external
if variant:
            ordered = sorted(variant.split('-'))
            variants = set(ordered)
            if len(variants) != len(ordered):
                raise InvalidSubtagError('Duplicate variants were found')

            subtags = set(self.parts['language'].split('-'))
            if self.parts['script']:
                subtags.add(self.parts['script'].lstrip('-'))
            if self.parts['region']:
                subtags.add(self.parts['region'].lstrip('-'))

            for v in ordered[:]:
                index = ordered.index(v)
                if v not in registry['variant']:
                    raise InvalidSubtagError("'{}' is not a registered variant".format(variant))
                value = registry['variant'][v]['preferred']
                if value is not None:
                    v = value
                prefixes = [p.split('-') for p in registry['variant'][v]['prefix']]

                matched = True if not prefixes else False
                if matched:
                    # No prefixes required, so lets move to the end
                    del ordered[index]
                    ordered.insert(len(ordered), v)
                    index = len(ordered) - 1

                for prefix in prefixes:
                    match = True
                    for subtag in prefix:
                        if subtag not in subtags and subtag not in variants:
github facelessuser / soupsieve / soupsieve / css_lang / __init__.py View on Github external
def _canonicalize_script(self):
        """Canonicalize script tags."""

        script = self.parts['script'].lstrip('-')

        if script and not RE_PRIVATE_SCRIPT.match(script):
            if script not in registry['script']:
                raise InvalidSubtagError("'{}' is not a registered script".format(script))

            value = registry['script'][script]['preferred']
            if value:
                self.parts['script'] = '-' + value
github facelessuser / soupsieve / soupsieve / css_lang / __init__.py View on Github external
def _canonicalize_region(self):
        """Canonicalize region tags."""

        region = self.parts['region'].lstrip('-')

        if region and not RE_PRIVATE_REGION.match(region):
            if region not in registry['region']:
                raise InvalidSubtagError("'{}' is not a registered region".format(region))

            value = registry['region'][region]['preferred']

            if value:
                self.parts['region'] = '-' + value
github facelessuser / soupsieve / soupsieve / css_lang / __init__.py View on Github external
if values[0] not in registry['language']:
            raise InvalidSubtagError("'{}' is not a registered language.".format(values[0]))
        if registry['extlang'].get(values[0]):
            extlang = values[0]
        else:
            value = registry['language'][values[0]]['preferred']
            primary = values[0] if value is None else value

        if len(values) == 2:
            if extlang:
                raise InvalidSubtagError("Unexpected extlang following extlang: '{}'".format(values[1]))
            extlang = values[1]

        if extlang:
            if extlang not in registry['extlang']:
                raise InvalidSubtagError("'{}' is not a registered extlang.".format(extlang))
            if primary and primary not in registry['extlang'][extlang]['prefix']:
                raise InvalidSubtagError("'{}' is an invalid prefix for '{}'".format(primary, extlang))
            primary = None

        # Do not allow extlang in canonical form
        if not primary:
            self.parts['language'] = extlang
            self.parts['extlang'] = ''
        elif not extlang:
            self.parts['language'] = primary
            self.parts['extlang'] = ''