"""
    pygments.lexers.rita
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for RITA language

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
"""

from pygments.lexer import RegexLexer
from pygments.token import Comment, Operator, Keyword, Name, Literal, Punctuation, Whitespace

__all__ = ["RitaLexer"]


class RitaLexer(RegexLexer):
    """
    Lexer for RITA.

    .. versionadded:: 2.11
    """

    name = "Rita"
    url = "https://github.com/zaibacu/rita-dsl"
    filenames = ["*.rita"]
    aliases = ["rita"]
    mimetypes = ["text/rita"]

    tokens = {
        "root": [
            (r"\n", Whitespace),
            (r"\s+", Whitespace),
            (r"#(.*?)\n", Comment.Single),
            (r"@(.*?)\n", Operator),  # Yes, whole line as an operator
            (r'"(\w|\d|\s|(\\")|[\'_\-./,\?\!])+?"', Literal),
            (r'\'(\w|\d|\s|(\\\')|["_\-./,\?\!])+?\'', Literal),
            (r"([A-Z_]+)", Keyword),
            (r"([a-z0-9_]+)", Name),
            (r"((->)|[!?+*|=])", Operator),
            (r"[\(\),\{\}]", Punctuation),
        ]
    }
