root/galaxy-central/eggs/Mako-0.2.5-py2.6.egg/mako/ext/pygmentplugin.py @ 3

リビジョン 3, 3.6 KB (コミッタ: kohda, 14 年 前)

Install Unix tools  http://hannonlab.cshl.edu/galaxy_unix_tools/galaxy.html

行番号 
1import re
2try:
3    set
4except NameError:
5    from sets import Set as set
6
7from pygments.lexers.web import \
8     HtmlLexer, XmlLexer, JavascriptLexer, CssLexer
9from pygments.lexers.agile import PythonLexer
10from pygments.lexer import Lexer, DelegatingLexer, RegexLexer, bygroups, \
11     include, using, this
12from pygments.token import Error, Punctuation, \
13     Text, Comment, Operator, Keyword, Name, String, Number, Other, Literal
14from pygments.util import html_doctype_matches, looks_like_xml
15
16class MakoLexer(RegexLexer):
17    name = 'Mako'
18    aliases = ['mako']
19    filenames = ['*.mao']
20
21    tokens = {
22        'root': [
23            (r'(\s*)(\%)(\s*end(?:\w+))(\n|\Z)',
24             bygroups(Text, Comment.Preproc, Keyword, Other)),
25            (r'(\s*)(\%)([^\n]*)(\n|\Z)',
26             bygroups(Text, Comment.Preproc, using(PythonLexer), Other)),
27             (r'(\s*)(##[^\n]*)(\n|\Z)',
28              bygroups(Text, Comment.Preproc, Other)),
29              (r'''(?s)<%doc>.*?</%doc>''', Comment.Preproc),
30            (r'(<%)([\w\.\:]+)', bygroups(Comment.Preproc, Name.Builtin), 'tag'),
31            (r'(</%)([\w\.\:]+)(>)', bygroups(Comment.Preproc, Name.Builtin, Comment.Preproc)),
32            (r'<%(?=([\w\.\:]+))', Comment.Preproc, 'ondeftags'),
33            (r'(<%(?:!?))(.*?)(%>)(?s)', bygroups(Comment.Preproc, using(PythonLexer), Comment.Preproc)),
34            (r'(\$\{)(.*?)(\})',
35             bygroups(Comment.Preproc, using(PythonLexer), Comment.Preproc)),
36            (r'''(?sx)
37                (.+?)               # anything, followed by:
38                (?:
39                 (?<=\n)(?=%|\#\#) |  # an eval or comment line
40                 (?=\#\*) |          # multiline comment
41                 (?=</?%) |         # a python block
42                                    # call start or end
43                 (?=\$\{) |         # a substitution
44                 (?<=\n)(?=\s*%) |
45                                    # - don't consume
46                 (\\\n) |           # an escaped newline
47                 \Z                 # end of string
48                )
49            ''', bygroups(Other, Operator)),
50            (r'\s+', Text),
51        ],
52        'ondeftags': [
53            (r'<%', Comment.Preproc),
54            (r'(?<=<%)(include|inherit|namespace|page)', Name.Builtin),
55            include('tag'),
56        ],
57        'tag': [
58            (r'((?:\w+)\s*=)\s*(".*?")',
59             bygroups(Name.Attribute, String)),
60            (r'/?\s*>', Comment.Preproc, '#pop'),
61            (r'\s+', Text),
62        ],
63        'attr': [
64            ('".*?"', String, '#pop'),
65            ("'.*?'", String, '#pop'),
66            (r'[^\s>]+', String, '#pop'),
67        ],
68    }
69
70
71class MakoHtmlLexer(DelegatingLexer):
72    name = 'HTML+Mako'
73    aliases = ['html+mako']
74
75    def __init__(self, **options):
76        super(MakoHtmlLexer, self).__init__(HtmlLexer, MakoLexer,
77                                              **options)
78
79class MakoXmlLexer(DelegatingLexer):
80    name = 'XML+Mako'
81    aliases = ['xml+mako']
82
83    def __init__(self, **options):
84        super(MakoXmlLexer, self).__init__(XmlLexer, MakoLexer,
85                                             **options)
86
87class MakoJavascriptLexer(DelegatingLexer):
88    name = 'JavaScript+Mako'
89    aliases = ['js+mako', 'javascript+mako']
90
91    def __init__(self, **options):
92        super(MakoJavascriptLexer, self).__init__(JavascriptLexer,
93                                                    MakoLexer, **options)
94
95class MakoCssLexer(DelegatingLexer):
96    name = 'CSS+Mako'
97    aliases = ['css+mako']
98
99    def __init__(self, **options):
100        super(MakoCssLexer, self).__init__(CssLexer, MakoLexer,
101                                             **options)
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。