Mon, 12 Mar 2012 19:03:42 +0100
Update to Pygments 1.5.
1705
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | """ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | pygments.lexers.shell |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | ~~~~~~~~~~~~~~~~~~~~~ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | Lexers for various shells. |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | :copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS. |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | :license: BSD, see LICENSE for details. |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | """ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | import re |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | from pygments.lexer import Lexer, RegexLexer, do_insertions, bygroups, include |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | from pygments.token import Punctuation, \ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | Text, Comment, Operator, Keyword, Name, String, Number, Generic |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | from pygments.util import shebang_matches |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | __all__ = ['BashLexer', 'BashSessionLexer', 'TcshLexer', 'BatchLexer', |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | 'PowerShellLexer'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | line_re = re.compile('.*?\n') |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | class BashLexer(RegexLexer): |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | """ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | Lexer for (ba|k|)sh shell scripts. |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | *New in Pygments 0.6.* |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | """ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | name = 'Bash' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | aliases = ['bash', 'sh', 'ksh'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | filenames = ['*.sh', '*.ksh', '*.bash', '*.ebuild', '*.eclass', |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | '.bashrc', 'bashrc', '.bash_*', 'bash_*'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | mimetypes = ['application/x-sh', 'application/x-shellscript'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | tokens = { |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | 'root': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | include('basic'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | (r'\$\(\(', Keyword, 'math'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | (r'\$\(', Keyword, 'paren'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | (r'\${#?', Keyword, 'curly'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | (r'`', String.Backtick, 'backticks'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | include('data'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | 'basic': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | (r'\b(if|fi|else|while|do|done|for|then|return|function|case|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | r'select|continue|until|esac|elif)\s*\b', |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | Keyword), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | (r'\b(alias|bg|bind|break|builtin|caller|cd|command|compgen|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | r'complete|declare|dirs|disown|echo|enable|eval|exec|exit|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | r'export|false|fc|fg|getopts|hash|help|history|jobs|kill|let|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | r'local|logout|popd|printf|pushd|pwd|read|readonly|set|shift|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | r'shopt|source|suspend|test|time|times|trap|true|type|typeset|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | r'ulimit|umask|unalias|unset|wait)\s*\b(?!\.)', |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | Name.Builtin), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | (r'#.*\n', Comment), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | (r'\\[\w\W]', String.Escape), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | (r'(\b\w+)(\s*)(=)', bygroups(Name.Variable, Text, Operator)), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | (r'[\[\]{}()=]', Operator), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | (r'<<-?\s*(\'?)\\?(\w+)[\w\W]+?\2', String), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | (r'&&|\|\|', Operator), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | 'data': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | (r'(?s)\$?"(\\\\|\\[0-7]+|\\.|[^"\\])*"', String.Double), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | (r"(?s)\$?'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | (r';', Text), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | (r'\s+', Text), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | (r'[^=\s\[\]{}()$"\'`\\<]+', Text), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | (r'\d+(?= |\Z)', Number), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | (r'\$#?(\w+|.)', Name.Variable), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | (r'<', Text), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | 'curly': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | (r'}', Keyword, '#pop'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | (r':-', Keyword), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | (r'[a-zA-Z0-9_]+', Name.Variable), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | (r'[^}:"\'`$]+', Punctuation), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | (r':', Punctuation), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | include('root'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | 'paren': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | (r'\)', Keyword, '#pop'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | include('root'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | 'math': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | (r'\)\)', Keyword, '#pop'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | (r'[-+*/%^|&]|\*\*|\|\|', Operator), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | (r'\d+', Number), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | include('root'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | 'backticks': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | (r'`', String.Backtick, '#pop'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | include('root'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | } |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | def analyse_text(text): |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | return shebang_matches(text, r'(ba|z|)sh') |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | class BashSessionLexer(Lexer): |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | """ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | Lexer for simplistic shell sessions. |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | *New in Pygments 1.1.* |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | """ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | name = 'Bash Session' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | aliases = ['console'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | filenames = ['*.sh-session'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | mimetypes = ['application/x-shell-session'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | def get_tokens_unprocessed(self, text): |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | bashlexer = BashLexer(**self.options) |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | pos = 0 |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | curcode = '' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | insertions = [] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | for match in line_re.finditer(text): |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | line = match.group() |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | m = re.match(r'^((?:\(\S+\))?(?:|sh\S*?|\w+\S+[@:]\S+(?:\s+\S+)' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | r'?|\[\S+[@:][^\n]+\].+)[$#%])(.*\n?)' , line) |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | if m: |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | # To support output lexers (say diff output), the output |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | # needs to be broken by prompts whenever the output lexer |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | # changes. |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | if not insertions: |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | pos = match.start() |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | insertions.append((len(curcode), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | [(0, Generic.Prompt, m.group(1))])) |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | curcode += m.group(2) |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | elif line.startswith('>'): |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | insertions.append((len(curcode), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | [(0, Generic.Prompt, line[:1])])) |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | curcode += line[1:] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | else: |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | if insertions: |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | toks = bashlexer.get_tokens_unprocessed(curcode) |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | for i, t, v in do_insertions(insertions, toks): |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | yield pos+i, t, v |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | yield match.start(), Generic.Output, line |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | insertions = [] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | curcode = '' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | if insertions: |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | for i, t, v in do_insertions(insertions, |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | bashlexer.get_tokens_unprocessed(curcode)): |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | yield pos+i, t, v |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | class BatchLexer(RegexLexer): |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | """ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | Lexer for the DOS/Windows Batch file format. |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | *New in Pygments 0.7.* |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | """ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | name = 'Batchfile' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | aliases = ['bat'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | filenames = ['*.bat', '*.cmd'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | mimetypes = ['application/x-dos-batch'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | flags = re.MULTILINE | re.IGNORECASE |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | tokens = { |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | 'root': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | # Lines can start with @ to prevent echo |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | (r'^\s*@', Punctuation), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | (r'^(\s*)(rem\s.*)$', bygroups(Text, Comment)), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | (r'".*?"', String.Double), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | (r"'.*?'", String.Single), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | # If made more specific, make sure you still allow expansions |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | # like %~$VAR:zlt |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | (r'%%?[~$:\w]+%?', Name.Variable), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | (r'::.*', Comment), # Technically :: only works at BOL |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | (r'(set)(\s+)(\w+)', bygroups(Keyword, Text, Name.Variable)), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | (r'(call)(\s+)(:\w+)', bygroups(Keyword, Text, Name.Label)), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | (r'(goto)(\s+)(\w+)', bygroups(Keyword, Text, Name.Label)), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | (r'\b(set|call|echo|on|off|endlocal|for|do|goto|if|pause|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | r'setlocal|shift|errorlevel|exist|defined|cmdextversion|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | r'errorlevel|else|cd|md|del|deltree|cls|choice)\b', Keyword), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | (r'\b(equ|neq|lss|leq|gtr|geq)\b', Operator), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | include('basic'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | (r'.', Text), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | 'echo': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | # Escapes only valid within echo args? |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | (r'\^\^|\^<|\^>|\^\|', String.Escape), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | (r'\n', Text, '#pop'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | include('basic'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | (r'[^\'"^]+', Text), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | 'basic': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | (r'".*?"', String.Double), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | (r"'.*?'", String.Single), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | (r'`.*?`', String.Backtick), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | (r'-?\d+', Number), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | (r',', Punctuation), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | (r'=', Operator), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | (r'/\S+', Name), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | (r':\w+', Name.Label), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | (r'\w:\w+', Text), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | (r'([<>|])(\s*)(\w+)', bygroups(Punctuation, Text, Name)), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | } |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | class TcshLexer(RegexLexer): |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | """ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | Lexer for tcsh scripts. |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | *New in Pygments 0.10.* |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | """ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | name = 'Tcsh' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | aliases = ['tcsh', 'csh'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | filenames = ['*.tcsh', '*.csh'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | mimetypes = ['application/x-csh'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | tokens = { |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | 'root': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | include('basic'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | (r'\$\(', Keyword, 'paren'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | (r'\${#?', Keyword, 'curly'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | (r'`', String.Backtick, 'backticks'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | include('data'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | 'basic': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | (r'\b(if|endif|else|while|then|foreach|case|default|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | r'continue|goto|breaksw|end|switch|endsw)\s*\b', |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | Keyword), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | (r'\b(alias|alloc|bg|bindkey|break|builtins|bye|caller|cd|chdir|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236 | r'complete|dirs|echo|echotc|eval|exec|exit|fg|filetest|getxvers|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | r'glob|getspath|hashstat|history|hup|inlib|jobs|kill|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | r'limit|log|login|logout|ls-F|migrate|newgrp|nice|nohup|notify|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | r'onintr|popd|printenv|pushd|rehash|repeat|rootnode|popd|pushd|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | r'set|shift|sched|setenv|setpath|settc|setty|setxvers|shift|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | r'source|stop|suspend|source|suspend|telltc|time|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | r'umask|unalias|uncomplete|unhash|universe|unlimit|unset|unsetenv|' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | r'ver|wait|warp|watchlog|where|which)\s*\b', |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | Name.Builtin), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | (r'#.*\n', Comment), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | (r'\\[\w\W]', String.Escape), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | (r'(\b\w+)(\s*)(=)', bygroups(Name.Variable, Text, Operator)), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | (r'[\[\]{}()=]+', Operator), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | (r'<<\s*(\'?)\\?(\w+)[\w\W]+?\2', String), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | 'data': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | (r'(?s)"(\\\\|\\[0-7]+|\\.|[^"\\])*"', String.Double), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | (r"(?s)'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | (r'\s+', Text), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255 | (r'[^=\s\[\]{}()$"\'`\\]+', Text), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256 | (r'\d+(?= |\Z)', Number), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | (r'\$#?(\w+|.)', Name.Variable), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | 'curly': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | (r'}', Keyword, '#pop'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | (r':-', Keyword), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262 | (r'[a-zA-Z0-9_]+', Name.Variable), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | (r'[^}:"\'`$]+', Punctuation), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | (r':', Punctuation), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | include('root'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267 | 'paren': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | (r'\)', Keyword, '#pop'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269 | include('root'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | 'backticks': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
272 | (r'`', String.Backtick, '#pop'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
273 | include('root'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | } |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
277 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278 | class PowerShellLexer(RegexLexer): |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | """ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | For Windows PowerShell code. |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282 | *New in Pygments 1.5.* |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
283 | """ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284 | name = 'PowerShell' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285 | aliases = ['powershell', 'posh', 'ps1'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | filenames = ['*.ps1'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287 | mimetypes = ['text/x-powershell'] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | flags = re.DOTALL | re.IGNORECASE | re.MULTILINE |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | keywords = ( |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | 'while validateset validaterange validatepattern validatelength ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | 'validatecount until trap switch return ref process param parameter in ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | 'if global: function foreach for finally filter end elseif else ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
295 | 'dynamicparam do default continue cmdletbinding break begin alias \\? ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
296 | '% #script #private #local #global mandatory parametersetname position ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297 | 'valuefrompipeline valuefrompipelinebypropertyname ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
298 | 'valuefromremainingarguments helpmessage try catch').split() |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300 | operators = ( |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301 | 'and as band bnot bor bxor casesensitive ccontains ceq cge cgt cle ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | 'clike clt cmatch cne cnotcontains cnotlike cnotmatch contains ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | 'creplace eq exact f file ge gt icontains ieq ige igt ile ilike ilt ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | 'imatch ine inotcontains inotlike inotmatch ireplace is isnot le like ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | 'lt match ne not notcontains notlike notmatch or regex replace ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306 | 'wildcard').split() |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
308 | verbs = ( |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
309 | 'write where wait use update unregister undo trace test tee take ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
310 | 'suspend stop start split sort skip show set send select scroll resume ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
311 | 'restore restart resolve resize reset rename remove register receive ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
312 | 'read push pop ping out new move measure limit join invoke import ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
313 | 'group get format foreach export expand exit enter enable disconnect ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
314 | 'disable debug cxnew copy convertto convertfrom convert connect ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
315 | 'complete compare clear checkpoint aggregate add').split() |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
316 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
317 | commenthelp = ( |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
318 | 'component description example externalhelp forwardhelpcategory ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
319 | 'forwardhelptargetname functionality inputs link ' |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
320 | 'notes outputs parameter remotehelprunspace role synopsis').split() |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
321 | |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322 | tokens = { |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
323 | 'root': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
324 | (r'\s+', Text), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
325 | (r'^(\s*#[#\s]*)(\.(?:%s))([^\n]*$)' % '|'.join(commenthelp), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
326 | bygroups(Comment, String.Doc, Comment)), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
327 | (r'#[^\n]*?$', Comment), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
328 | (r'(<|<)#', Comment.Multiline, 'multline'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
329 | (r'@"\n.*?\n"@', String.Heredoc), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
330 | (r"@'\n.*?\n'@", String.Heredoc), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
331 | (r'"', String.Double, 'string'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
332 | (r"'([^']|'')*'", String.Single), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
333 | (r'(\$|@@|@)((global|script|private|env):)?[a-z0-9_]+', |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
334 | Name.Variable), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
335 | (r'(%s)\b' % '|'.join(keywords), Keyword), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
336 | (r'-(%s)\b' % '|'.join(operators), Operator), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
337 | (r'(%s)-[a-z_][a-z0-9_]*\b' % '|'.join(verbs), Name.Builtin), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
338 | (r'\[[a-z_\[][a-z0-9_. `,\[\]]*\]', Name.Constant), # .net [type]s |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
339 | (r'-[a-z_][a-z0-9_]*', Name), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340 | (r'\w+', Name), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | (r'[.,{}\[\]$()=+*/\\&%!~?^`|<>-]', Punctuation), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
342 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
343 | 'multline': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
344 | (r'[^#&.]+', Comment.Multiline), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
345 | (r'#(>|>)', Comment.Multiline, '#pop'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
346 | (r'\.(%s)' % '|'.join(commenthelp), String.Doc), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
347 | (r'[#&.]', Comment.Multiline), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
348 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | 'string': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | (r'[^$`"]+', String.Double), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
351 | (r'\$\(', String.Interpol, 'interpol'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
352 | (r'`"|""', String.Double), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
353 | (r'[`$]', String.Double), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
354 | (r'"', String.Double, '#pop'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355 | ], |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
356 | 'interpol': [ |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357 | (r'[^$)]+', String.Interpol), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358 | (r'\$\(', String.Interpol, '#push'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
359 | (r'\)', String.Interpol, '#pop'), |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360 | ] |
b0fbc9300f2b
Update to Pygments 1.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
361 | } |