mirror of
https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git
synced 2025-08-14 00:25:46 +02:00
Все подряд
This commit is contained in:
150
.venv2/Lib/site-packages/mako/ext/pygmentplugin.py
Normal file
150
.venv2/Lib/site-packages/mako/ext/pygmentplugin.py
Normal file
@@ -0,0 +1,150 @@
|
||||
# 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
|
||||
)
|
Reference in New Issue
Block a user