view pygments_lexer_pseudocode2/uniprops.py @ 123:4d96ace53ba1

Make it work on Python2 too with all tests by explicitely declaring some strings to be Unicode strings. No tests need to be skipped on Python2 now.
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 06 May 2026 15:53:24 +0200
parents cec52d83869a
children
line wrap: on
line source

# -*- coding: utf-8 -*-
# :-
# SPDX-FileCopyrightText: © 2026 Franz Glasner
# SPDX-License-Identifier: MIT
# :-
r"""A somewhat changed variant of :mod:`pygments.unistring`.

We handle ASCII characters mostly ourself.

"""

__all__ = []


import pygments.unistring


def _remove_ascii(s):
    """Remove the characters in the ASCII range from `s` and return the
    adjusted string.

    Assumes that in `s` the ASCII chars are sorted before the Unicode
    codepoints as in :mod:`pygments.unistring`.

    """
    idx = 0
    while ord(s[idx]) < 0x80:
        idx += 1
    if idx > 0:
        return s[idx:]
    else:
        # nothing changed
        return s


Pc = _remove_ascii(pygments.unistring.Pc)
Pd = _remove_ascii(pygments.unistring.Pd)
Pe = _remove_ascii(pygments.unistring.Pe)
Ps = _remove_ascii(pygments.unistring.Ps)
Pi = _remove_ascii(pygments.unistring.Pi)
Pf = _remove_ascii(pygments.unistring.Pf)
Po = _remove_ascii(pygments.unistring.Po)
Sc = _remove_ascii(pygments.unistring.Sc)
So = _remove_ascii(pygments.unistring.So)
Sm = _remove_ascii(pygments.unistring.Sm)
Zl = _remove_ascii(pygments.unistring.Zl)
Zp = _remove_ascii(pygments.unistring.Zp)
Zs = _remove_ascii(pygments.unistring.Zs)