mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-01-22 10:53:03 -08:00
4468c3e4af
* Bump mako from 1.2.4 to 1.3.2 Bumps [mako](https://github.com/sqlalchemy/mako) from 1.2.4 to 1.3.2. - [Release notes](https://github.com/sqlalchemy/mako/releases) - [Changelog](https://github.com/sqlalchemy/mako/blob/main/CHANGES) - [Commits](https://github.com/sqlalchemy/mako/commits) --- updated-dependencies: - dependency-name: mako dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * Update mako==1.3.2 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com> [skip ci]
151 lines
4.6 KiB
Python
151 lines
4.6 KiB
Python
# ext/pygmentplugin.py
|
|
# Copyright 2006-2024 the Mako authors and contributors <see AUTHORS file>
|
|
#
|
|
# This module is part of Mako and is released under
|
|
# the MIT License: http://www.opensource.org/licenses/mit-license.php
|
|
|
|
from pygments import highlight
|
|
from pygments.formatters.html import HtmlFormatter
|
|
from pygments.lexer import bygroups
|
|
from pygments.lexer import DelegatingLexer
|
|
from pygments.lexer import include
|
|
from pygments.lexer import RegexLexer
|
|
from pygments.lexer import using
|
|
from pygments.lexers.agile import Python3Lexer
|
|
from pygments.lexers.agile import PythonLexer
|
|
from pygments.lexers.web import CssLexer
|
|
from pygments.lexers.web import HtmlLexer
|
|
from pygments.lexers.web import JavascriptLexer
|
|
from pygments.lexers.web import XmlLexer
|
|
from pygments.token import Comment
|
|
from pygments.token import Keyword
|
|
from pygments.token import Name
|
|
from pygments.token import Operator
|
|
from pygments.token import Other
|
|
from pygments.token import String
|
|
from pygments.token import Text
|
|
|
|
|
|
class MakoLexer(RegexLexer):
|
|
name = "Mako"
|
|
aliases = ["mako"]
|
|
filenames = ["*.mao"]
|
|
|
|
tokens = {
|
|
"root": [
|
|
(
|
|
r"(\s*)(\%)(\s*end(?:\w+))(\n|\Z)",
|
|
bygroups(Text, Comment.Preproc, Keyword, Other),
|
|
),
|
|
(
|
|
r"(\s*)(\%(?!%))([^\n]*)(\n|\Z)",
|
|
bygroups(Text, Comment.Preproc, using(PythonLexer), Other),
|
|
),
|
|
(
|
|
r"(\s*)(##[^\n]*)(\n|\Z)",
|
|
bygroups(Text, Comment.Preproc, Other),
|
|
),
|
|
(r"""(?s)<%doc>.*?</%doc>""", Comment.Preproc),
|
|
(
|
|
r"(<%)([\w\.\:]+)",
|
|
bygroups(Comment.Preproc, Name.Builtin),
|
|
"tag",
|
|
),
|
|
(
|
|
r"(</%)([\w\.\:]+)(>)",
|
|
bygroups(Comment.Preproc, Name.Builtin, Comment.Preproc),
|
|
),
|
|
(r"<%(?=([\w\.\:]+))", Comment.Preproc, "ondeftags"),
|
|
(
|
|
r"(?s)(<%(?:!?))(.*?)(%>)",
|
|
bygroups(Comment.Preproc, using(PythonLexer), Comment.Preproc),
|
|
),
|
|
(
|
|
r"(\$\{)(.*?)(\})",
|
|
bygroups(Comment.Preproc, using(PythonLexer), Comment.Preproc),
|
|
),
|
|
(
|
|
r"""(?sx)
|
|
(.+?) # anything, followed by:
|
|
(?:
|
|
(?<=\n)(?=%(?!%)|\#\#) | # an eval or comment line
|
|
(?=\#\*) | # multiline comment
|
|
(?=</?%) | # a python block
|
|
# call start or end
|
|
(?=\$\{) | # a substitution
|
|
(?<=\n)(?=\s*%) |
|
|
# - don't consume
|
|
(\\\n) | # an escaped newline
|
|
\Z # end of string
|
|
)
|
|
""",
|
|
bygroups(Other, Operator),
|
|
),
|
|
(r"\s+", Text),
|
|
],
|
|
"ondeftags": [
|
|
(r"<%", Comment.Preproc),
|
|
(r"(?<=<%)(include|inherit|namespace|page)", Name.Builtin),
|
|
include("tag"),
|
|
],
|
|
"tag": [
|
|
(r'((?:\w+)\s*=)\s*(".*?")', bygroups(Name.Attribute, String)),
|
|
(r"/?\s*>", Comment.Preproc, "#pop"),
|
|
(r"\s+", Text),
|
|
],
|
|
"attr": [
|
|
('".*?"', String, "#pop"),
|
|
("'.*?'", String, "#pop"),
|
|
(r"[^\s>]+", String, "#pop"),
|
|
],
|
|
}
|
|
|
|
|
|
class MakoHtmlLexer(DelegatingLexer):
|
|
name = "HTML+Mako"
|
|
aliases = ["html+mako"]
|
|
|
|
def __init__(self, **options):
|
|
super().__init__(HtmlLexer, MakoLexer, **options)
|
|
|
|
|
|
class MakoXmlLexer(DelegatingLexer):
|
|
name = "XML+Mako"
|
|
aliases = ["xml+mako"]
|
|
|
|
def __init__(self, **options):
|
|
super().__init__(XmlLexer, MakoLexer, **options)
|
|
|
|
|
|
class MakoJavascriptLexer(DelegatingLexer):
|
|
name = "JavaScript+Mako"
|
|
aliases = ["js+mako", "javascript+mako"]
|
|
|
|
def __init__(self, **options):
|
|
super().__init__(JavascriptLexer, MakoLexer, **options)
|
|
|
|
|
|
class MakoCssLexer(DelegatingLexer):
|
|
name = "CSS+Mako"
|
|
aliases = ["css+mako"]
|
|
|
|
def __init__(self, **options):
|
|
super().__init__(CssLexer, MakoLexer, **options)
|
|
|
|
|
|
pygments_html_formatter = HtmlFormatter(
|
|
cssclass="syntax-highlighted", linenos=True
|
|
)
|
|
|
|
|
|
def syntax_highlight(filename="", language=None):
|
|
mako_lexer = MakoLexer()
|
|
python_lexer = Python3Lexer()
|
|
if filename.startswith("memory:") or language == "mako":
|
|
return lambda string: highlight(
|
|
string, mako_lexer, pygments_html_formatter
|
|
)
|
|
return lambda string: highlight(
|
|
string, python_lexer, pygments_html_formatter
|
|
)
|