diff options
Diffstat (limited to 'venv/lib/python3.11/site-packages/pygments/lexers/wowtoc.py')
-rw-r--r-- | venv/lib/python3.11/site-packages/pygments/lexers/wowtoc.py | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/venv/lib/python3.11/site-packages/pygments/lexers/wowtoc.py b/venv/lib/python3.11/site-packages/pygments/lexers/wowtoc.py deleted file mode 100644 index 6b96e65..0000000 --- a/venv/lib/python3.11/site-packages/pygments/lexers/wowtoc.py +++ /dev/null @@ -1,120 +0,0 @@ -""" - pygments.lexers.wowtoc - ~~~~~~~~~~~~~~~~~~~~~~ - - Lexer for World of Warcraft TOC files - - TOC files describe game addons. - - :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -import re - -from pygments.lexer import RegexLexer, bygroups -from pygments.token import Comment, Name, Text, Punctuation, String, Keyword - -__all__ = ["WoWTocLexer"] - -def _create_tag_line_pattern(inner_pattern, ignore_case=False): - return ((r"(?i)" if ignore_case else r"") - + r"^(##)( *)" # groups 1, 2 - + inner_pattern # group 3 - + r"( *)(:)( *)(.*?)( *)$") # groups 4, 5, 6, 7, 8 - - -def _create_tag_line_token(inner_pattern, inner_token, ignore_case=False): - # this function template-izes the tag line for a specific type of tag, which will - # have a different pattern and different token. otherwise, everything about a tag - # line is the same - return ( - _create_tag_line_pattern(inner_pattern, ignore_case=ignore_case), - bygroups( - Keyword.Declaration, - Text.Whitespace, - inner_token, - Text.Whitespace, - Punctuation, - Text.Whitespace, - String, - Text.Whitespace, - ), - ) - - -class WoWTocLexer(RegexLexer): - """ - Lexer for World of Warcraft TOC files. - - .. versionadded:: 2.14 - """ - - name = "World of Warcraft TOC" - aliases = ["wowtoc"] - filenames = ["*.toc"] - - tokens = { - "root": [ - # official localized tags, Notes and Title - # (normal part is insensitive, locale part is sensitive) - _create_tag_line_token( - r"((?:[nN][oO][tT][eE][sS]|[tT][iI][tT][lL][eE])-(?:ptBR|zhCN|" - r"enCN|frFR|deDE|itIT|esMX|ptPT|koKR|ruRU|esES|zhTW|enTW|enGB|enUS))", - Name.Builtin, - ), - # other official tags - _create_tag_line_token( - r"(Interface|Title|Notes|RequiredDeps|Dep[^: ]*|OptionalDeps|" - r"LoadOnDemand|LoadWith|LoadManagers|SavedVariablesPerCharacter|" - r"SavedVariables|DefaultState|Secure|Author|Version)", - Name.Builtin, - ignore_case=True, - ), - # user-defined tags - _create_tag_line_token( - r"(X-[^: ]*)", - Name.Variable, - ignore_case=True, - ), - # non-conforming tags, but still valid - _create_tag_line_token( - r"([^: ]*)", - Name.Other, - ), - - # Comments - (r"^#.*$", Comment), - - # Addon Files - (r"^.+$", Name), - ] - } - - def analyse_text(text): - # at time of writing, this file suffix conflict's with one of Tex's in - # markup.py. Tex's anaylse_text() appears to be definitive (binary) and does not - # share any likeness to WoW TOCs, which means we wont have to compete with it by - # abitrary increments in score. - - result = 0 - - # while not required, an almost certain marker of WoW TOC's is the interface tag - # if this tag is omitted, players will need to opt-in to loading the addon with - # an options change ("Load out of date addons"). the value is also standardized: - # `<major><minor><patch>`, with minor and patch being two-digit zero-padded. - interface_pattern = _create_tag_line_pattern(r"(Interface)", ignore_case=True) - match = re.search(interface_pattern, text) - if match and re.match(r"(\d+)(\d{2})(\d{2})", match.group(7)): - result += 0.8 - - casefolded = text.casefold() - # Lua file listing is good marker too, but probably conflicts with many other - # lexers - if ".lua" in casefolded: - result += 0.1 - # ditto for XML files, but they're less used in WoW TOCs - if ".xml" in casefolded: - result += 0.05 - - return result |