# -*- coding: utf-8 -*-
# :-
# SPDX-FileCopyrightText: © 2026 Franz Glasner
# SPDX-License-Identifier: MIT
# :-
r"""A pseudocode lexer along the lines of CTAN's algpseudocode or
algpseudocodex.

"""

__all__ = ["PseudocodeLexer"]


import re

from pygments.lexer import include
from pygments.token import (Text, Whitespace)

#
# Relative imports do not work with pygments.lexers.load_lexer_from_file()
# in all of our supported Python releases.
#
from pygments_lexer_pseudocode2.bases import LexBase


class PseudocodeLexer(LexBase):

    """A pseudocode lexer along the lines of CTAN's algpseudocode or
    algpseudocodex.

    Some ideas (e.g. strings) are borrowed from Pygment's Python lexer.

    """

    name = "Pseudocode"
    aliases = ["pseudocode", "pseudo", "algorithm", "algo"]
    filenames = ["*.algo", "*.pseudocode"]
    mimetypes = []
    flags = re.MULTILINE

    tokens = {
        "root": [
            (r"\n", Whitespace),
            (r"\\\n", Text),
            include("expr"),
        ],
        "expr": [
            include("py-strings"),
            include("py-numbers"),
        ]
    }
