Thu, 14 Jan 2021 18:14:15 +0100
Third Party packages
- updated Pygments to 2.7.4
7983
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
2 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
3 | pygments.lexers.markup |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
4 | ~~~~~~~~~~~~~~~~~~~~~~ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
5 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
6 | Lexers for non-HTML markup languages. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
7 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
8 | :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
9 | :license: BSD, see LICENSE for details. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
10 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
11 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
12 | import re |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
13 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
14 | from pygments.lexers.html import HtmlLexer, XmlLexer |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
15 | from pygments.lexers.javascript import JavascriptLexer |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
16 | from pygments.lexers.css import CssLexer |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
17 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
18 | from pygments.lexer import RegexLexer, DelegatingLexer, include, bygroups, \ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
19 | using, this, do_insertions, default, words |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
20 | from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
21 | Number, Punctuation, Generic, Other |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
22 | from pygments.util import get_bool_opt, ClassNotFound |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
23 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
24 | __all__ = ['BBCodeLexer', 'MoinWikiLexer', 'RstLexer', 'TexLexer', 'GroffLexer', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
25 | 'MozPreprocHashLexer', 'MozPreprocPercentLexer', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
26 | 'MozPreprocXulLexer', 'MozPreprocJavascriptLexer', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
27 | 'MozPreprocCssLexer', 'MarkdownLexer', 'TiddlyWiki5Lexer'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
28 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
29 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
30 | class BBCodeLexer(RegexLexer): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
31 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
32 | A lexer that highlights BBCode(-like) syntax. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
33 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
34 | .. versionadded:: 0.6 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
35 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
36 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
37 | name = 'BBCode' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
38 | aliases = ['bbcode'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
39 | mimetypes = ['text/x-bbcode'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
40 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
41 | tokens = { |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
42 | 'root': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
43 | (r'[^[]+', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
44 | # tag/end tag begin |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
45 | (r'\[/?\w+', Keyword, 'tag'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
46 | # stray bracket |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
47 | (r'\[', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
48 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
49 | 'tag': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
50 | (r'\s+', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
51 | # attribute with value |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
52 | (r'(\w+)(=)("?[^\s"\]]+"?)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
53 | bygroups(Name.Attribute, Operator, String)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
54 | # tag argument (a la [color=green]) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
55 | (r'(=)("?[^\s"\]]+"?)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
56 | bygroups(Operator, String)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
57 | # tag end |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
58 | (r'\]', Keyword, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
59 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
60 | } |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
61 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
62 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
63 | class MoinWikiLexer(RegexLexer): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
64 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
65 | For MoinMoin (and Trac) Wiki markup. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
66 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
67 | .. versionadded:: 0.7 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
68 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
69 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
70 | name = 'MoinMoin/Trac Wiki markup' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
71 | aliases = ['trac-wiki', 'moin'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
72 | filenames = [] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
73 | mimetypes = ['text/x-trac-wiki'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
74 | flags = re.MULTILINE | re.IGNORECASE |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
75 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
76 | tokens = { |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
77 | 'root': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
78 | (r'^#.*$', Comment), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
79 | (r'(!)(\S+)', bygroups(Keyword, Text)), # Ignore-next |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
80 | # Titles |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
81 | (r'^(=+)([^=]+)(=+)(\s*#.+)?$', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
82 | bygroups(Generic.Heading, using(this), Generic.Heading, String)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
83 | # Literal code blocks, with optional shebang |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
84 | (r'(\{\{\{)(\n#!.+)?', bygroups(Name.Builtin, Name.Namespace), 'codeblock'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
85 | (r'(\'\'\'?|\|\||`|__|~~|\^|,,|::)', Comment), # Formatting |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
86 | # Lists |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
87 | (r'^( +)([.*-])( )', bygroups(Text, Name.Builtin, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
88 | (r'^( +)([a-z]{1,5}\.)( )', bygroups(Text, Name.Builtin, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
89 | # Other Formatting |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
90 | (r'\[\[\w+.*?\]\]', Keyword), # Macro |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
91 | (r'(\[[^\s\]]+)(\s+[^\]]+?)?(\])', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
92 | bygroups(Keyword, String, Keyword)), # Link |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
93 | (r'^----+$', Keyword), # Horizontal rules |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
94 | (r'[^\n\'\[{!_~^,|]+', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
95 | (r'\n', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
96 | (r'.', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
97 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
98 | 'codeblock': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
99 | (r'\}\}\}', Name.Builtin, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
100 | # these blocks are allowed to be nested in Trac, but not MoinMoin |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
101 | (r'\{\{\{', Text, '#push'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
102 | (r'[^{}]+', Comment.Preproc), # slurp boring text |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
103 | (r'.', Comment.Preproc), # allow loose { or } |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
104 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
105 | } |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
106 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
107 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
108 | class RstLexer(RegexLexer): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
109 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
110 | For `reStructuredText <http://docutils.sf.net/rst.html>`_ markup. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
111 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
112 | .. versionadded:: 0.7 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
113 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
114 | Additional options accepted: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
115 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
116 | `handlecodeblocks` |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
117 | Highlight the contents of ``.. sourcecode:: language``, |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
118 | ``.. code:: language`` and ``.. code-block:: language`` |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
119 | directives with a lexer for the given language (default: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
120 | ``True``). |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
121 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
122 | .. versionadded:: 0.8 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
123 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
124 | name = 'reStructuredText' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
125 | aliases = ['rst', 'rest', 'restructuredtext'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
126 | filenames = ['*.rst', '*.rest'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
127 | mimetypes = ["text/x-rst", "text/prs.fallenstein.rst"] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
128 | flags = re.MULTILINE |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
129 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
130 | def _handle_sourcecode(self, match): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
131 | from pygments.lexers import get_lexer_by_name |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
132 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
133 | # section header |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
134 | yield match.start(1), Punctuation, match.group(1) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
135 | yield match.start(2), Text, match.group(2) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
136 | yield match.start(3), Operator.Word, match.group(3) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
137 | yield match.start(4), Punctuation, match.group(4) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
138 | yield match.start(5), Text, match.group(5) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
139 | yield match.start(6), Keyword, match.group(6) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
140 | yield match.start(7), Text, match.group(7) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
141 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
142 | # lookup lexer if wanted and existing |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
143 | lexer = None |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
144 | if self.handlecodeblocks: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
145 | try: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
146 | lexer = get_lexer_by_name(match.group(6).strip()) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
147 | except ClassNotFound: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
148 | pass |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
149 | indention = match.group(8) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
150 | indention_size = len(indention) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
151 | code = (indention + match.group(9) + match.group(10) + match.group(11)) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
152 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
153 | # no lexer for this language. handle it like it was a code block |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
154 | if lexer is None: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
155 | yield match.start(8), String, code |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
156 | return |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
157 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
158 | # highlight the lines with the lexer. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
159 | ins = [] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
160 | codelines = code.splitlines(True) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
161 | code = '' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
162 | for line in codelines: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
163 | if len(line) > indention_size: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
164 | ins.append((len(code), [(0, Text, line[:indention_size])])) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
165 | code += line[indention_size:] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
166 | else: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
167 | code += line |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
168 | yield from do_insertions(ins, lexer.get_tokens_unprocessed(code)) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
169 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
170 | # from docutils.parsers.rst.states |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
171 | closers = '\'")]}>\u2019\u201d\xbb!?' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
172 | unicode_delimiters = '\u2010\u2011\u2012\u2013\u2014\u00a0' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
173 | end_string_suffix = (r'((?=$)|(?=[-/:.,; \n\x00%s%s]))' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
174 | % (re.escape(unicode_delimiters), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
175 | re.escape(closers))) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
176 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
177 | tokens = { |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
178 | 'root': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
179 | # Heading with overline |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
180 | (r'^(=+|-+|`+|:+|\.+|\'+|"+|~+|\^+|_+|\*+|\++|#+)([ \t]*\n)' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
181 | r'(.+)(\n)(\1)(\n)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
182 | bygroups(Generic.Heading, Text, Generic.Heading, |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
183 | Text, Generic.Heading, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
184 | # Plain heading |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
185 | (r'^(\S.*)(\n)(={3,}|-{3,}|`{3,}|:{3,}|\.{3,}|\'{3,}|"{3,}|' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
186 | r'~{3,}|\^{3,}|_{3,}|\*{3,}|\+{3,}|#{3,})(\n)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
187 | bygroups(Generic.Heading, Text, Generic.Heading, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
188 | # Bulleted lists |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
189 | (r'^(\s*)([-*+])( .+\n(?:\1 .+\n)*)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
190 | bygroups(Text, Number, using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
191 | # Numbered lists |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
192 | (r'^(\s*)([0-9#ivxlcmIVXLCM]+\.)( .+\n(?:\1 .+\n)*)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
193 | bygroups(Text, Number, using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
194 | (r'^(\s*)(\(?[0-9#ivxlcmIVXLCM]+\))( .+\n(?:\1 .+\n)*)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
195 | bygroups(Text, Number, using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
196 | # Numbered, but keep words at BOL from becoming lists |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
197 | (r'^(\s*)([A-Z]+\.)( .+\n(?:\1 .+\n)+)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
198 | bygroups(Text, Number, using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
199 | (r'^(\s*)(\(?[A-Za-z]+\))( .+\n(?:\1 .+\n)+)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
200 | bygroups(Text, Number, using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
201 | # Line blocks |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
202 | (r'^(\s*)(\|)( .+\n(?:\| .+\n)*)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
203 | bygroups(Text, Operator, using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
204 | # Sourcecode directives |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
205 | (r'^( *\.\.)(\s*)((?:source)?code(?:-block)?)(::)([ \t]*)([^\n]+)' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
206 | r'(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\8.*)?\n)+)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
207 | _handle_sourcecode), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
208 | # A directive |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
209 | (r'^( *\.\.)(\s*)([\w:-]+?)(::)(?:([ \t]*)(.*))', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
210 | bygroups(Punctuation, Text, Operator.Word, Punctuation, Text, |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
211 | using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
212 | # A reference target |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
213 | (r'^( *\.\.)(\s*)(_(?:[^:\\]|\\.)+:)(.*?)$', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
214 | bygroups(Punctuation, Text, Name.Tag, using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
215 | # A footnote/citation target |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
216 | (r'^( *\.\.)(\s*)(\[.+\])(.*?)$', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
217 | bygroups(Punctuation, Text, Name.Tag, using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
218 | # A substitution def |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
219 | (r'^( *\.\.)(\s*)(\|.+\|)(\s*)([\w:-]+?)(::)(?:([ \t]*)(.*))', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
220 | bygroups(Punctuation, Text, Name.Tag, Text, Operator.Word, |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
221 | Punctuation, Text, using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
222 | # Comments |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
223 | (r'^ *\.\..*(\n( +.*\n|\n)+)?', Comment.Preproc), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
224 | # Field list marker |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
225 | (r'^( *)(:(?:\\\\|\\:|[^:\n])+:(?=\s))([ \t]*)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
226 | bygroups(Text, Name.Class, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
227 | # Definition list |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
228 | (r'^(\S.*(?<!::)\n)((?:(?: +.*)\n)+)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
229 | bygroups(using(this, state='inline'), using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
230 | # Code blocks |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
231 | (r'(::)(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\3.*)?\n)+)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
232 | bygroups(String.Escape, Text, String, String, Text, String)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
233 | include('inline'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
234 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
235 | 'inline': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
236 | (r'\\.', Text), # escape |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
237 | (r'``', String, 'literal'), # code |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
238 | (r'(`.+?)(<.+?>)(`__?)', # reference with inline target |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
239 | bygroups(String, String.Interpol, String)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
240 | (r'`.+?`__?', String), # reference |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
241 | (r'(`.+?`)(:[a-zA-Z0-9:-]+?:)?', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
242 | bygroups(Name.Variable, Name.Attribute)), # role |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
243 | (r'(:[a-zA-Z0-9:-]+?:)(`.+?`)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
244 | bygroups(Name.Attribute, Name.Variable)), # role (content first) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
245 | (r'\*\*.+?\*\*', Generic.Strong), # Strong emphasis |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
246 | (r'\*.+?\*', Generic.Emph), # Emphasis |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
247 | (r'\[.*?\]_', String), # Footnote or citation |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
248 | (r'<.+?>', Name.Tag), # Hyperlink |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
249 | (r'[^\\\n\[*`:]+', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
250 | (r'.', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
251 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
252 | 'literal': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
253 | (r'[^`]+', String), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
254 | (r'``' + end_string_suffix, String, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
255 | (r'`', String), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
256 | ] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
257 | } |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
258 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
259 | def __init__(self, **options): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
260 | self.handlecodeblocks = get_bool_opt(options, 'handlecodeblocks', True) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
261 | RegexLexer.__init__(self, **options) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
262 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
263 | def analyse_text(text): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
264 | if text[:2] == '..' and text[2:3] != '.': |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
265 | return 0.3 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
266 | p1 = text.find("\n") |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
267 | p2 = text.find("\n", p1 + 1) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
268 | if (p2 > -1 and # has two lines |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
269 | p1 * 2 + 1 == p2 and # they are the same length |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
270 | text[p1+1] in '-=' and # the next line both starts and ends with |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
271 | text[p1+1] == text[p2-1]): # ...a sufficiently high header |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
272 | return 0.5 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
273 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
274 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
275 | class TexLexer(RegexLexer): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
276 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
277 | Lexer for the TeX and LaTeX typesetting languages. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
278 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
279 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
280 | name = 'TeX' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
281 | aliases = ['tex', 'latex'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
282 | filenames = ['*.tex', '*.aux', '*.toc'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
283 | mimetypes = ['text/x-tex', 'text/x-latex'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
284 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
285 | tokens = { |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
286 | 'general': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
287 | (r'%.*?\n', Comment), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
288 | (r'[{}]', Name.Builtin), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
289 | (r'[&_^]', Name.Builtin), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
290 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
291 | 'root': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
292 | (r'\\\[', String.Backtick, 'displaymath'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
293 | (r'\\\(', String, 'inlinemath'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
294 | (r'\$\$', String.Backtick, 'displaymath'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
295 | (r'\$', String, 'inlinemath'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
296 | (r'\\([a-zA-Z]+|.)', Keyword, 'command'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
297 | (r'\\$', Keyword), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
298 | include('general'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
299 | (r'[^\\$%&_^{}]+', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
300 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
301 | 'math': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
302 | (r'\\([a-zA-Z]+|.)', Name.Variable), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
303 | include('general'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
304 | (r'[0-9]+', Number), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
305 | (r'[-=!+*/()\[\]]', Operator), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
306 | (r'[^=!+*/()\[\]\\$%&_^{}0-9-]+', Name.Builtin), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
307 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
308 | 'inlinemath': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
309 | (r'\\\)', String, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
310 | (r'\$', String, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
311 | include('math'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
312 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
313 | 'displaymath': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
314 | (r'\\\]', String, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
315 | (r'\$\$', String, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
316 | (r'\$', Name.Builtin), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
317 | include('math'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
318 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
319 | 'command': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
320 | (r'\[.*?\]', Name.Attribute), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
321 | (r'\*', Keyword), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
322 | default('#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
323 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
324 | } |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
325 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
326 | def analyse_text(text): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
327 | for start in ("\\documentclass", "\\input", "\\documentstyle", |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
328 | "\\relax"): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
329 | if text[:len(start)] == start: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
330 | return True |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
331 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
332 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
333 | class GroffLexer(RegexLexer): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
334 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
335 | Lexer for the (g)roff typesetting language, supporting groff |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
336 | extensions. Mainly useful for highlighting manpage sources. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
337 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
338 | .. versionadded:: 0.6 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
339 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
340 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
341 | name = 'Groff' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
342 | aliases = ['groff', 'nroff', 'man'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
343 | filenames = ['*.[1234567]', '*.man'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
344 | mimetypes = ['application/x-troff', 'text/troff'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
345 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
346 | tokens = { |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
347 | 'root': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
348 | (r'(\.)(\w+)', bygroups(Text, Keyword), 'request'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
349 | (r'\.', Punctuation, 'request'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
350 | # Regular characters, slurp till we find a backslash or newline |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
351 | (r'[^\\\n]+', Text, 'textline'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
352 | default('textline'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
353 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
354 | 'textline': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
355 | include('escapes'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
356 | (r'[^\\\n]+', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
357 | (r'\n', Text, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
358 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
359 | 'escapes': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
360 | # groff has many ways to write escapes. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
361 | (r'\\"[^\n]*', Comment), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
362 | (r'\\[fn]\w', String.Escape), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
363 | (r'\\\(.{2}', String.Escape), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
364 | (r'\\.\[.*\]', String.Escape), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
365 | (r'\\.', String.Escape), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
366 | (r'\\\n', Text, 'request'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
367 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
368 | 'request': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
369 | (r'\n', Text, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
370 | include('escapes'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
371 | (r'"[^\n"]+"', String.Double), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
372 | (r'\d+', Number), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
373 | (r'\S+', String), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
374 | (r'\s+', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
375 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
376 | } |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
377 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
378 | def analyse_text(text): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
379 | if text[:1] != '.': |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
380 | return False |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
381 | if text[:3] == '.\\"': |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
382 | return True |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
383 | if text[:4] == '.TH ': |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
384 | return True |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
385 | if text[1:3].isalnum() and text[3].isspace(): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
386 | return 0.9 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
387 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
388 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
389 | class MozPreprocHashLexer(RegexLexer): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
390 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
391 | Lexer for Mozilla Preprocessor files (with '#' as the marker). |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
392 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
393 | Other data is left untouched. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
394 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
395 | .. versionadded:: 2.0 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
396 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
397 | name = 'mozhashpreproc' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
398 | aliases = [name] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
399 | filenames = [] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
400 | mimetypes = [] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
401 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
402 | tokens = { |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
403 | 'root': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
404 | (r'^#', Comment.Preproc, ('expr', 'exprstart')), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
405 | (r'.+', Other), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
406 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
407 | 'exprstart': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
408 | (r'(literal)(.*)', bygroups(Comment.Preproc, Text), '#pop:2'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
409 | (words(( |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
410 | 'define', 'undef', 'if', 'ifdef', 'ifndef', 'else', 'elif', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
411 | 'elifdef', 'elifndef', 'endif', 'expand', 'filter', 'unfilter', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
412 | 'include', 'includesubst', 'error')), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
413 | Comment.Preproc, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
414 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
415 | 'expr': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
416 | (words(('!', '!=', '==', '&&', '||')), Operator), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
417 | (r'(defined)(\()', bygroups(Keyword, Punctuation)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
418 | (r'\)', Punctuation), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
419 | (r'[0-9]+', Number.Decimal), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
420 | (r'__\w+?__', Name.Variable), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
421 | (r'@\w+?@', Name.Class), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
422 | (r'\w+', Name), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
423 | (r'\n', Text, '#pop'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
424 | (r'\s+', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
425 | (r'\S', Punctuation), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
426 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
427 | } |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
428 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
429 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
430 | class MozPreprocPercentLexer(MozPreprocHashLexer): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
431 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
432 | Lexer for Mozilla Preprocessor files (with '%' as the marker). |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
433 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
434 | Other data is left untouched. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
435 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
436 | .. versionadded:: 2.0 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
437 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
438 | name = 'mozpercentpreproc' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
439 | aliases = [name] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
440 | filenames = [] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
441 | mimetypes = [] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
442 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
443 | tokens = { |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
444 | 'root': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
445 | (r'^%', Comment.Preproc, ('expr', 'exprstart')), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
446 | (r'.+', Other), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
447 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
448 | } |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
449 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
450 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
451 | class MozPreprocXulLexer(DelegatingLexer): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
452 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
453 | Subclass of the `MozPreprocHashLexer` that highlights unlexed data with the |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
454 | `XmlLexer`. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
455 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
456 | .. versionadded:: 2.0 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
457 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
458 | name = "XUL+mozpreproc" |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
459 | aliases = ['xul+mozpreproc'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
460 | filenames = ['*.xul.in'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
461 | mimetypes = [] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
462 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
463 | def __init__(self, **options): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
464 | super().__init__(XmlLexer, MozPreprocHashLexer, **options) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
465 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
466 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
467 | class MozPreprocJavascriptLexer(DelegatingLexer): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
468 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
469 | Subclass of the `MozPreprocHashLexer` that highlights unlexed data with the |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
470 | `JavascriptLexer`. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
471 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
472 | .. versionadded:: 2.0 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
473 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
474 | name = "Javascript+mozpreproc" |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
475 | aliases = ['javascript+mozpreproc'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
476 | filenames = ['*.js.in'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
477 | mimetypes = [] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
478 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
479 | def __init__(self, **options): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
480 | super().__init__(JavascriptLexer, MozPreprocHashLexer, **options) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
481 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
482 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
483 | class MozPreprocCssLexer(DelegatingLexer): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
484 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
485 | Subclass of the `MozPreprocHashLexer` that highlights unlexed data with the |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
486 | `CssLexer`. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
487 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
488 | .. versionadded:: 2.0 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
489 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
490 | name = "CSS+mozpreproc" |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
491 | aliases = ['css+mozpreproc'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
492 | filenames = ['*.css.in'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
493 | mimetypes = [] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
494 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
495 | def __init__(self, **options): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
496 | super().__init__(CssLexer, MozPreprocPercentLexer, **options) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
497 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
498 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
499 | class MarkdownLexer(RegexLexer): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
500 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
501 | For `Markdown <https://help.github.com/categories/writing-on-github/>`_ markup. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
502 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
503 | .. versionadded:: 2.2 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
504 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
505 | name = 'markdown' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
506 | aliases = ['md'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
507 | filenames = ['*.md', '*.markdown'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
508 | mimetypes = ["text/x-markdown"] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
509 | flags = re.MULTILINE |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
510 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
511 | def _handle_codeblock(self, match): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
512 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
513 | match args: 1:backticks, 2:lang_name, 3:newline, 4:code, 5:backticks |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
514 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
515 | from pygments.lexers import get_lexer_by_name |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
516 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
517 | # section header |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
518 | yield match.start(1), String.Backtick, match.group(1) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
519 | yield match.start(2), String.Backtick, match.group(2) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
520 | yield match.start(3), Text , match.group(3) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
521 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
522 | # lookup lexer if wanted and existing |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
523 | lexer = None |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
524 | if self.handlecodeblocks: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
525 | try: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
526 | lexer = get_lexer_by_name( match.group(2).strip() ) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
527 | except ClassNotFound: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
528 | pass |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
529 | code = match.group(4) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
530 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
531 | # no lexer for this language. handle it like it was a code block |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
532 | if lexer is None: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
533 | yield match.start(4), String, code |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
534 | else: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
535 | yield from do_insertions([], lexer.get_tokens_unprocessed(code)) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
536 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
537 | yield match.start(5), String.Backtick, match.group(5) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
538 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
539 | tokens = { |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
540 | 'root': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
541 | # heading with '#' prefix (atx-style) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
542 | (r'(^#[^#].+)(\n)', bygroups(Generic.Heading, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
543 | # subheading with '#' prefix (atx-style) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
544 | (r'(^#{2,6}[^#].+)(\n)', bygroups(Generic.Subheading, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
545 | # heading with '=' underlines (Setext-style) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
546 | (r'^(.+)(\n)(=+)(\n)', bygroups(Generic.Heading, Text, Generic.Heading, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
547 | # subheading with '-' underlines (Setext-style) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
548 | (r'^(.+)(\n)(-+)(\n)', bygroups(Generic.Subheading, Text, Generic.Subheading, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
549 | # task list |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
550 | (r'^(\s*)([*-] )(\[[ xX]\])( .+\n)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
551 | bygroups(Text, Keyword, Keyword, using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
552 | # bulleted list |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
553 | (r'^(\s*)([*-])(\s)(.+\n)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
554 | bygroups(Text, Keyword, Text, using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
555 | # numbered list |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
556 | (r'^(\s*)([0-9]+\.)( .+\n)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
557 | bygroups(Text, Keyword, using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
558 | # quote |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
559 | (r'^(\s*>\s)(.+\n)', bygroups(Keyword, Generic.Emph)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
560 | # code block fenced by 3 backticks |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
561 | (r'^(\s*```\n[\w\W]*?^\s*```$\n)', String.Backtick), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
562 | # code block with language |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
563 | (r'^(\s*```)(\w+)(\n)([\w\W]*?)(^\s*```$\n)', _handle_codeblock), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
564 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
565 | include('inline'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
566 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
567 | 'inline': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
568 | # escape |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
569 | (r'\\.', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
570 | # inline code |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
571 | (r'([^`]?)(`[^`\n]+`)', bygroups(Text, String.Backtick)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
572 | # warning: the following rules eat outer tags. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
573 | # eg. **foo _bar_ baz** => foo and baz are not recognized as bold |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
574 | # bold fenced by '**' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
575 | (r'([^\*]?)(\*\*[^* \n][^*\n]*\*\*)', bygroups(Text, Generic.Strong)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
576 | # bold fenced by '__' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
577 | (r'([^_]?)(__[^_ \n][^_\n]*__)', bygroups(Text, Generic.Strong)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
578 | # italics fenced by '*' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
579 | (r'([^\*]?)(\*[^* \n][^*\n]*\*)', bygroups(Text, Generic.Emph)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
580 | # italics fenced by '_' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
581 | (r'([^_]?)(_[^_ \n][^_\n]*_)', bygroups(Text, Generic.Emph)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
582 | # strikethrough |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
583 | (r'([^~]?)(~~[^~ \n][^~\n]*~~)', bygroups(Text, Generic.Deleted)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
584 | # mentions and topics (twitter and github stuff) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
585 | (r'[@#][\w/:]+', Name.Entity), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
586 | # (image?) links eg:  |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
587 | (r'(!?\[)([^]]+)(\])(\()([^)]+)(\))', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
588 | bygroups(Text, Name.Tag, Text, Text, Name.Attribute, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
589 | # reference-style links, e.g.: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
590 | # [an example][id] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
591 | # [id]: http://example.com/ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
592 | (r'(\[)([^]]+)(\])(\[)([^]]*)(\])', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
593 | bygroups(Text, Name.Tag, Text, Text, Name.Label, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
594 | (r'^(\s*\[)([^]]*)(\]:\s*)(.+)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
595 | bygroups(Text, Name.Label, Text, Name.Attribute)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
596 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
597 | # general text, must come last! |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
598 | (r'[^\\\s]+', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
599 | (r'.', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
600 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
601 | } |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
602 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
603 | def __init__(self, **options): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
604 | self.handlecodeblocks = get_bool_opt(options, 'handlecodeblocks', True) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
605 | RegexLexer.__init__(self, **options) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
606 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
607 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
608 | class TiddlyWiki5Lexer(RegexLexer): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
609 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
610 | For `TiddlyWiki5 <https://tiddlywiki.com/#TiddlerFiles>`_ markup. |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
611 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
612 | .. versionadded:: 2.7 |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
613 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
614 | name = 'tiddler' |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
615 | aliases = ['tid'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
616 | filenames = ['*.tid'] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
617 | mimetypes = ["text/vnd.tiddlywiki"] |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
618 | flags = re.MULTILINE |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
619 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
620 | def _handle_codeblock(self, match): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
621 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
622 | match args: 1:backticks, 2:lang_name, 3:newline, 4:code, 5:backticks |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
623 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
624 | from pygments.lexers import get_lexer_by_name |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
625 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
626 | # section header |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
627 | yield match.start(1), String, match.group(1) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
628 | yield match.start(2), String, match.group(2) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
629 | yield match.start(3), Text, match.group(3) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
630 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
631 | # lookup lexer if wanted and existing |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
632 | lexer = None |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
633 | if self.handlecodeblocks: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
634 | try: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
635 | lexer = get_lexer_by_name(match.group(2).strip()) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
636 | except ClassNotFound: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
637 | pass |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
638 | code = match.group(4) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
639 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
640 | # no lexer for this language. handle it like it was a code block |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
641 | if lexer is None: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
642 | yield match.start(4), String, code |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
643 | return |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
644 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
645 | yield from do_insertions([], lexer.get_tokens_unprocessed(code)) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
646 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
647 | yield match.start(5), String, match.group(5) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
648 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
649 | def _handle_cssblock(self, match): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
650 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
651 | match args: 1:style tag 2:newline, 3:code, 4:closing style tag |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
652 | """ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
653 | from pygments.lexers import get_lexer_by_name |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
654 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
655 | # section header |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
656 | yield match.start(1), String, match.group(1) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
657 | yield match.start(2), String, match.group(2) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
658 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
659 | lexer = None |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
660 | if self.handlecodeblocks: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
661 | try: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
662 | lexer = get_lexer_by_name('css') |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
663 | except ClassNotFound: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
664 | pass |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
665 | code = match.group(3) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
666 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
667 | # no lexer for this language. handle it like it was a code block |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
668 | if lexer is None: |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
669 | yield match.start(3), String, code |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
670 | return |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
671 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
672 | yield from do_insertions([], lexer.get_tokens_unprocessed(code)) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
673 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
674 | yield match.start(4), String, match.group(4) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
675 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
676 | tokens = { |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
677 | 'root': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
678 | # title in metadata section |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
679 | (r'^(title)(:\s)(.+\n)', bygroups(Keyword, Text, Generic.Heading)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
680 | # headings |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
681 | (r'^(!)([^!].+\n)', bygroups(Generic.Heading, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
682 | (r'^(!{2,6})(.+\n)', bygroups(Generic.Subheading, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
683 | # bulleted or numbered lists or single-line block quotes |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
684 | # (can be mixed) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
685 | (r'^(\s*)([*#>]+)(\s*)(.+\n)', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
686 | bygroups(Text, Keyword, Text, using(this, state='inline'))), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
687 | # multi-line block quotes |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
688 | (r'^(<<<.*\n)([\w\W]*?)(^<<<.*$)', bygroups(String, Text, String)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
689 | # table header |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
690 | (r'^(\|.*?\|h)$', bygroups(Generic.Strong)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
691 | # table footer or caption |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
692 | (r'^(\|.*?\|[cf])$', bygroups(Generic.Emph)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
693 | # table class |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
694 | (r'^(\|.*?\|k)$', bygroups(Name.Tag)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
695 | # definitions |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
696 | (r'^(;.*)$', bygroups(Generic.Strong)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
697 | # text block |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
698 | (r'^(```\n)([\w\W]*?)(^```$)', bygroups(String, Text, String)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
699 | # code block with language |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
700 | (r'^(```)(\w+)(\n)([\w\W]*?)(^```$)', _handle_codeblock), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
701 | # CSS style block |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
702 | (r'^(<style>)(\n)([\w\W]*?)(^</style>$)', _handle_cssblock), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
703 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
704 | include('keywords'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
705 | include('inline'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
706 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
707 | 'keywords': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
708 | (words(( |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
709 | '\\define', '\\end', 'caption', 'created', 'modified', 'tags', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
710 | 'title', 'type'), prefix=r'^', suffix=r'\b'), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
711 | Keyword), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
712 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
713 | 'inline': [ |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
714 | # escape |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
715 | (r'\\.', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
716 | # created or modified date |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
717 | (r'\d{17}', Number.Integer), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
718 | # italics |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
719 | (r'(\s)(//[^/]+//)((?=\W|\n))', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
720 | bygroups(Text, Generic.Emph, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
721 | # superscript |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
722 | (r'(\s)(\^\^[^\^]+\^\^)', bygroups(Text, Generic.Emph)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
723 | # subscript |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
724 | (r'(\s)(,,[^,]+,,)', bygroups(Text, Generic.Emph)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
725 | # underscore |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
726 | (r'(\s)(__[^_]+__)', bygroups(Text, Generic.Strong)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
727 | # bold |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
728 | (r"(\s)(''[^']+'')((?=\W|\n))", |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
729 | bygroups(Text, Generic.Strong, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
730 | # strikethrough |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
731 | (r'(\s)(~~[^~]+~~)((?=\W|\n))', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
732 | bygroups(Text, Generic.Deleted, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
733 | # TiddlyWiki variables |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
734 | (r'<<[^>]+>>', Name.Tag), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
735 | (r'\$\$[^$]+\$\$', Name.Tag), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
736 | (r'\$\([^)]+\)\$', Name.Tag), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
737 | # TiddlyWiki style or class |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
738 | (r'^@@.*$', Name.Tag), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
739 | # HTML tags |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
740 | (r'</?[^>]+>', Name.Tag), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
741 | # inline code |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
742 | (r'`[^`]+`', String.Backtick), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
743 | # HTML escaped symbols |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
744 | (r'&\S*?;', String.Regex), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
745 | # Wiki links |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
746 | (r'(\[{2})([^]\|]+)(\]{2})', bygroups(Text, Name.Tag, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
747 | # External links |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
748 | (r'(\[{2})([^]\|]+)(\|)([^]\|]+)(\]{2})', |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
749 | bygroups(Text, Name.Tag, Text, Name.Attribute, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
750 | # Transclusion |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
751 | (r'(\{{2})([^}]+)(\}{2})', bygroups(Text, Name.Tag, Text)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
752 | # URLs |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
753 | (r'(\b.?.?tps?://[^\s"]+)', bygroups(Name.Attribute)), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
754 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
755 | # general text, must come last! |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
756 | (r'[\w]+', Text), |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
757 | (r'.', Text) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
758 | ], |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
759 | } |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
760 | |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
761 | def __init__(self, **options): |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
762 | self.handlecodeblocks = get_bool_opt(options, 'handlecodeblocks', True) |
54c5cfbb1e29
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7701
diff
changeset
|
763 | RegexLexer.__init__(self, **options) |