pygments.rb 0.5.2 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +2 -0
- data/lexers +0 -0
- data/lib/pygments/version.rb +1 -1
- data/test/test_pygments.rb +1 -1
- data/vendor/custom_lexers/github.py +15 -9
- data/vendor/pygments-main/AUTHORS +12 -2
- data/vendor/pygments-main/CHANGES +52 -2
- data/vendor/pygments-main/REVISION +1 -1
- data/vendor/pygments-main/docs/src/lexerdevelopment.txt +52 -0
- data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +67 -44
- data/vendor/pygments-main/pygmentize +1 -1
- data/vendor/pygments-main/pygments/filters/__init__.py +2 -2
- data/vendor/pygments-main/pygments/formatter.py +3 -0
- data/vendor/pygments-main/pygments/lexers/__init__.py +11 -0
- data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +2880 -3124
- data/vendor/pygments-main/pygments/lexers/_mapping.py +30 -20
- data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +206 -20
- data/vendor/pygments-main/pygments/lexers/agile.py +378 -5
- data/vendor/pygments-main/pygments/lexers/asm.py +2 -2
- data/vendor/pygments-main/pygments/lexers/compiled.py +235 -8
- data/vendor/pygments-main/pygments/lexers/dotnet.py +88 -47
- data/vendor/pygments-main/pygments/lexers/functional.py +195 -62
- data/vendor/pygments-main/pygments/lexers/github.py +15 -9
- data/vendor/pygments-main/pygments/lexers/jvm.py +14 -11
- data/vendor/pygments-main/pygments/lexers/math.py +284 -18
- data/vendor/pygments-main/pygments/lexers/other.py +132 -21
- data/vendor/pygments-main/pygments/lexers/shell.py +29 -15
- data/vendor/pygments-main/pygments/lexers/sql.py +1 -1
- data/vendor/pygments-main/pygments/lexers/templates.py +8 -8
- data/vendor/pygments-main/pygments/lexers/text.py +59 -9
- data/vendor/pygments-main/pygments/lexers/web.py +832 -210
- data/vendor/pygments-main/pygments/modeline.py +40 -0
- data/vendor/pygments-main/tests/examplefiles/Deflate.fs +578 -0
- data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +66 -0
- data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +104 -0
- data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +671 -0
- data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +23 -0
- data/vendor/pygments-main/tests/examplefiles/example.ceylon +29 -10
- data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
- data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
- data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
- data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
- data/vendor/pygments-main/tests/examplefiles/example.stan +86 -75
- data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +40 -30
- data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
- data/vendor/pygments-main/tests/examplefiles/objc_example.m +7 -0
- data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
- data/vendor/pygments-main/tests/examplefiles/swig_java.swg +1329 -0
- data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +225 -0
- data/vendor/pygments-main/tests/examplefiles/test.agda +102 -0
- data/vendor/pygments-main/tests/examplefiles/test.bb +95 -0
- data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
- data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
- data/vendor/pygments-main/tests/examplefiles/type.lisp +16 -0
- data/vendor/pygments-main/tests/test_basic_api.py +3 -3
- data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
- metadata +21 -2
@@ -14,7 +14,8 @@ import re
|
|
14
14
|
from pygments.lexer import RegexLexer, include, bygroups, using, \
|
15
15
|
this, combined, ExtendedRegexLexer
|
16
16
|
from pygments.token import Error, Punctuation, Literal, Token, \
|
17
|
-
Text, Comment, Operator, Keyword, Name, String, Number, Generic
|
17
|
+
Text, Comment, Operator, Keyword, Name, String, Number, Generic, \
|
18
|
+
Whitespace
|
18
19
|
from pygments.util import get_bool_opt
|
19
20
|
from pygments.lexers.web import HtmlLexer
|
20
21
|
|
@@ -35,7 +36,7 @@ __all__ = ['BrainfuckLexer', 'BefungeLexer', 'RedcodeLexer', 'MOOCodeLexer',
|
|
35
36
|
'ECLLexer', 'UrbiscriptLexer', 'OpenEdgeLexer', 'BroLexer',
|
36
37
|
'MscgenLexer', 'KconfigLexer', 'VGLLexer', 'SourcePawnLexer',
|
37
38
|
'RobotFrameworkLexer', 'PuppetLexer', 'NSISLexer', 'RPMSpecLexer',
|
38
|
-
'CbmBasicV2Lexer', 'AutoItLexer']
|
39
|
+
'CbmBasicV2Lexer', 'AutoItLexer', 'RexxLexer']
|
39
40
|
|
40
41
|
|
41
42
|
class ECLLexer(RegexLexer):
|
@@ -245,7 +246,7 @@ class MOOCodeLexer(RegexLexer):
|
|
245
246
|
"""
|
246
247
|
name = 'MOOCode'
|
247
248
|
filenames = ['*.moo']
|
248
|
-
aliases = ['moocode']
|
249
|
+
aliases = ['moocode', 'moo']
|
249
250
|
mimetypes = ['text/x-moocode']
|
250
251
|
|
251
252
|
tokens = {
|
@@ -289,7 +290,7 @@ class SmalltalkLexer(RegexLexer):
|
|
289
290
|
"""
|
290
291
|
name = 'Smalltalk'
|
291
292
|
filenames = ['*.st']
|
292
|
-
aliases = ['smalltalk', 'squeak']
|
293
|
+
aliases = ['smalltalk', 'squeak', 'st']
|
293
294
|
mimetypes = ['text/x-smalltalk']
|
294
295
|
|
295
296
|
tokens = {
|
@@ -363,7 +364,7 @@ class SmalltalkLexer(RegexLexer):
|
|
363
364
|
include('literals'),
|
364
365
|
],
|
365
366
|
'afterobject' : [
|
366
|
-
(r'! !$', Keyword , '#pop'), # squeak chunk
|
367
|
+
(r'! !$', Keyword , '#pop'), # squeak chunk delimiter
|
367
368
|
include('whitespaces'),
|
368
369
|
(r'\b(ifTrue:|ifFalse:|whileTrue:|whileFalse:|timesRepeat:)',
|
369
370
|
Name.Builtin, '#pop'),
|
@@ -1397,8 +1398,6 @@ class RebolLexer(RegexLexer):
|
|
1397
1398
|
(r';.*\n', Comment),
|
1398
1399
|
(r'%"', Name.Decorator, 'stringFile'),
|
1399
1400
|
(r'%[^(\^{^")\s\[\]]+', Name.Decorator),
|
1400
|
-
(r'<[a-zA-Z0-9:._-]*>', Name.Tag),
|
1401
|
-
(r'<[^(<>\s")]+', Name.Tag, 'tag'),
|
1402
1401
|
(r'[+-]?([a-zA-Z]{1,3})?\$\d+(\.\d+)?', Number.Float), # money
|
1403
1402
|
(r'[+-]?\d+\:\d+(\:\d+)?(\.\d+)?', String.Other), # time
|
1404
1403
|
(r'\d+\-[0-9a-zA-Z]+\-\d+(\/\d+\:\d+(\:\d+)?'
|
@@ -1415,6 +1414,8 @@ class RebolLexer(RegexLexer):
|
|
1415
1414
|
(r'comment\s', Comment, 'comment'),
|
1416
1415
|
(r'/[^(\^{^")\s/[\]]*', Name.Attribute),
|
1417
1416
|
(r'([^(\^{^")\s/[\]]+)(?=[:({"\s/\[\]])', word_callback),
|
1417
|
+
(r'<[a-zA-Z0-9:._-]*>', Name.Tag),
|
1418
|
+
(r'<[^(<>\s")]+', Name.Tag, 'tag'),
|
1418
1419
|
(r'([^(\^{^")\s]+)', Text),
|
1419
1420
|
],
|
1420
1421
|
'string': [
|
@@ -1961,11 +1962,11 @@ class AsymptoteLexer(RegexLexer):
|
|
1961
1962
|
from pygments.lexers._asybuiltins import ASYFUNCNAME, ASYVARNAME
|
1962
1963
|
for index, token, value in \
|
1963
1964
|
RegexLexer.get_tokens_unprocessed(self, text):
|
1964
|
-
|
1965
|
-
|
1966
|
-
|
1967
|
-
|
1968
|
-
|
1965
|
+
if token is Name and value in ASYFUNCNAME:
|
1966
|
+
token = Name.Function
|
1967
|
+
elif token is Name and value in ASYVARNAME:
|
1968
|
+
token = Name.Variable
|
1969
|
+
yield index, token, value
|
1969
1970
|
|
1970
1971
|
|
1971
1972
|
class PostScriptLexer(RegexLexer):
|
@@ -1979,7 +1980,7 @@ class PostScriptLexer(RegexLexer):
|
|
1979
1980
|
*New in Pygments 1.4.*
|
1980
1981
|
"""
|
1981
1982
|
name = 'PostScript'
|
1982
|
-
aliases = ['postscript']
|
1983
|
+
aliases = ['postscript', 'postscr']
|
1983
1984
|
filenames = ['*.ps', '*.eps']
|
1984
1985
|
mimetypes = ['application/postscript']
|
1985
1986
|
|
@@ -2067,7 +2068,7 @@ class AutohotkeyLexer(RegexLexer):
|
|
2067
2068
|
*New in Pygments 1.4.*
|
2068
2069
|
"""
|
2069
2070
|
name = 'autohotkey'
|
2070
|
-
aliases = ['ahk']
|
2071
|
+
aliases = ['ahk', 'autohotkey']
|
2071
2072
|
filenames = ['*.ahk', '*.ahkl']
|
2072
2073
|
mimetypes = ['text/x-autohotkey']
|
2073
2074
|
|
@@ -2352,7 +2353,7 @@ class ProtoBufLexer(RegexLexer):
|
|
2352
2353
|
"""
|
2353
2354
|
|
2354
2355
|
name = 'Protocol Buffer'
|
2355
|
-
aliases = ['protobuf']
|
2356
|
+
aliases = ['protobuf', 'proto']
|
2356
2357
|
filenames = ['*.proto']
|
2357
2358
|
|
2358
2359
|
tokens = {
|
@@ -2839,8 +2840,8 @@ class BroLexer(RegexLexer):
|
|
2839
2840
|
(r'\\\n', Text),
|
2840
2841
|
# Keywords
|
2841
2842
|
(r'(add|alarm|break|case|const|continue|delete|do|else|enum|event'
|
2842
|
-
r'|export|for|function|if|global|local|module|next'
|
2843
|
-
r'|of|print|redef|return|schedule|type|when|while)\b', Keyword),
|
2843
|
+
r'|export|for|function|if|global|hook|local|module|next'
|
2844
|
+
r'|of|print|redef|return|schedule|switch|type|when|while)\b', Keyword),
|
2844
2845
|
(r'(addr|any|bool|count|counter|double|file|int|interval|net'
|
2845
2846
|
r'|pattern|port|record|set|string|subnet|table|time|timer'
|
2846
2847
|
r'|vector)\b', Keyword.Type),
|
@@ -3306,7 +3307,7 @@ class NSISLexer(RegexLexer):
|
|
3306
3307
|
tokens = {
|
3307
3308
|
'root': [
|
3308
3309
|
(r'[;\#].*\n', Comment),
|
3309
|
-
(r"'
|
3310
|
+
(r"'.*?'", String.Single),
|
3310
3311
|
(r'"', String.Double, 'str_double'),
|
3311
3312
|
(r'`', String.Backtick, 'str_backtick'),
|
3312
3313
|
include('macro'),
|
@@ -3457,7 +3458,7 @@ class RPMSpecLexer(RegexLexer):
|
|
3457
3458
|
include('macro'),
|
3458
3459
|
(r'(?i)^(Name|Version|Release|Epoch|Summary|Group|License|Packager|'
|
3459
3460
|
r'Vendor|Icon|URL|Distribution|Prefix|Patch[0-9]*|Source[0-9]*|'
|
3460
|
-
r'Requires\(?[a-z]*\)?|[a-z]+Req|Obsoletes|Provides|Conflicts|'
|
3461
|
+
r'Requires\(?[a-z]*\)?|[a-z]+Req|Obsoletes|Suggests|Provides|Conflicts|'
|
3461
3462
|
r'Build[a-z]+|[a-z]+Arch|Auto[a-z]+)(:)(.*)$',
|
3462
3463
|
bygroups(Generic.Heading, Punctuation, using(this))),
|
3463
3464
|
(r'^%description', Name.Decorator, 'description'),
|
@@ -3467,7 +3468,7 @@ class RPMSpecLexer(RegexLexer):
|
|
3467
3468
|
r'make(?:install)|ghost|patch[0-9]+|find_lang|exclude|verify)',
|
3468
3469
|
Keyword),
|
3469
3470
|
include('interpol'),
|
3470
|
-
(r"'
|
3471
|
+
(r"'.*?'", String.Single),
|
3471
3472
|
(r'"', String.Double, 'string'),
|
3472
3473
|
(r'.', Text),
|
3473
3474
|
],
|
@@ -3624,7 +3625,7 @@ class AutoItLexer(RegexLexer):
|
|
3624
3625
|
(r'[a-zA-Z_#@$][a-zA-Z0-9_#@$]*', Name),
|
3625
3626
|
(r'\\|\'', Text),
|
3626
3627
|
(r'\`([\,\%\`abfnrtv\-\+;])', String.Escape),
|
3627
|
-
(r'_\n', Text),
|
3628
|
+
(r'_\n', Text), # Line continuation
|
3628
3629
|
include('garbage'),
|
3629
3630
|
],
|
3630
3631
|
'commands': [
|
@@ -3665,3 +3666,113 @@ class AutoItLexer(RegexLexer):
|
|
3665
3666
|
(r'[^\S\n]', Text),
|
3666
3667
|
],
|
3667
3668
|
}
|
3669
|
+
|
3670
|
+
|
3671
|
+
class RexxLexer(RegexLexer):
|
3672
|
+
"""
|
3673
|
+
`Rexx <http://www.rexxinfo.org/>`_ is a scripting language available for
|
3674
|
+
a wide range of different platforms with its roots found on mainframe
|
3675
|
+
systems. It is popular for I/O- and data based tasks and can act as glue
|
3676
|
+
language to bind different applications together.
|
3677
|
+
|
3678
|
+
*New in Pygments 1.7.*
|
3679
|
+
"""
|
3680
|
+
name = 'Rexx'
|
3681
|
+
aliases = ['rexx', 'ARexx', 'arexx']
|
3682
|
+
filenames = ['*.rexx', '*.rex', '*.rx', '*.arexx']
|
3683
|
+
mimetypes = ['text/x-rexx']
|
3684
|
+
flags = re.IGNORECASE
|
3685
|
+
|
3686
|
+
tokens = {
|
3687
|
+
'root': [
|
3688
|
+
(r'\s', Whitespace),
|
3689
|
+
(r'/\*', Comment.Multiline, 'comment'),
|
3690
|
+
(r'"', String, 'string_double'),
|
3691
|
+
(r"'", String, 'string_single'),
|
3692
|
+
(r'[0-9]+(\.[0-9]+)?(e[+-]?[0-9])?', Number),
|
3693
|
+
(r'([a-z_][a-z0-9_]*)(\s*)(:)(\s*)(procedure)\b',
|
3694
|
+
bygroups(Name.Function, Whitespace, Operator, Whitespace,
|
3695
|
+
Keyword.Declaration)),
|
3696
|
+
(r'([a-z_][a-z0-9_]*)(\s*)(:)',
|
3697
|
+
bygroups(Name.Label, Whitespace, Operator)),
|
3698
|
+
include('function'),
|
3699
|
+
include('keyword'),
|
3700
|
+
include('operator'),
|
3701
|
+
(r'[a-z_][a-z0-9_]*', Text),
|
3702
|
+
],
|
3703
|
+
'function': [
|
3704
|
+
(r'(abbrev|abs|address|arg|b2x|bitand|bitor|bitxor|c2d|c2x|'
|
3705
|
+
r'center|charin|charout|chars|compare|condition|copies|d2c|'
|
3706
|
+
r'd2x|datatype|date|delstr|delword|digits|errortext|form|'
|
3707
|
+
r'format|fuzz|insert|lastpos|left|length|linein|lineout|lines|'
|
3708
|
+
r'max|min|overlay|pos|queued|random|reverse|right|sign|'
|
3709
|
+
r'sourceline|space|stream|strip|substr|subword|symbol|time|'
|
3710
|
+
r'trace|translate|trunc|value|verify|word|wordindex|'
|
3711
|
+
r'wordlength|wordpos|words|x2b|x2c|x2d|xrange)(\s*)(\()',
|
3712
|
+
bygroups(Name.Builtin, Whitespace, Operator)),
|
3713
|
+
],
|
3714
|
+
'keyword': [
|
3715
|
+
(r'(address|arg|by|call|do|drop|else|end|exit|for|forever|if|'
|
3716
|
+
r'interpret|iterate|leave|nop|numeric|off|on|options|parse|'
|
3717
|
+
r'pull|push|queue|return|say|select|signal|to|then|trace|until|'
|
3718
|
+
r'while)\b', Keyword.Reserved),
|
3719
|
+
],
|
3720
|
+
'operator': [
|
3721
|
+
(ur'(-|//|/|\(|\)|\*\*|\*|\\<<|\\<|\\==|\\=|\\>>|\\>|\\|\|\||\||'
|
3722
|
+
ur'&&|&|%|\+|<<=|<<|<=|<>|<|==|=|><|>=|>>=|>>|>|¬<<|¬<|¬==|¬=|'
|
3723
|
+
ur'¬>>|¬>|¬|\.|,)', Operator),
|
3724
|
+
],
|
3725
|
+
'string_double': [
|
3726
|
+
(r'[^"\n]+', String),
|
3727
|
+
(r'""', String),
|
3728
|
+
(r'"', String, '#pop'),
|
3729
|
+
(r'\n', Text, '#pop'), # Stray linefeed also terminates strings.
|
3730
|
+
],
|
3731
|
+
'string_single': [
|
3732
|
+
(r'[^\'\n]', String),
|
3733
|
+
(r'\'\'', String),
|
3734
|
+
(r'\'', String, '#pop'),
|
3735
|
+
(r'\n', Text, '#pop'), # Stray linefeed also terminates strings.
|
3736
|
+
],
|
3737
|
+
'comment': [
|
3738
|
+
(r'[^*]+', Comment.Multiline),
|
3739
|
+
(r'\*/', Comment.Multiline, '#pop'),
|
3740
|
+
(r'\*', Comment.Multiline),
|
3741
|
+
]
|
3742
|
+
}
|
3743
|
+
|
3744
|
+
_c = lambda s: re.compile(s, re.MULTILINE)
|
3745
|
+
_ADDRESS_COMMAND_PATTERN = _c(r'^\s*address\s+command\b')
|
3746
|
+
_ADDRESS_PATTERN = _c(r'^\s*address\s+')
|
3747
|
+
_DO_WHILE_PATTERN = _c(r'^\s*do\s+while\b')
|
3748
|
+
_IF_THEN_DO_PATTERN = _c(r'^\s*if\b.+\bthen\s+do\s*$')
|
3749
|
+
_PROCEDURE_PATTERN = _c(r'^\s*([a-z_][a-z0-9_]*)(\s*)(:)(\s*)(procedure)\b')
|
3750
|
+
_ELSE_DO_PATTERN = _c(r'\belse\s+do\s*$')
|
3751
|
+
_PARSE_ARG_PATTERN = _c(r'^\s*parse\s+(upper\s+)?(arg|value)\b')
|
3752
|
+
PATTERNS_AND_WEIGHTS = (
|
3753
|
+
(_ADDRESS_COMMAND_PATTERN, 0.2),
|
3754
|
+
(_ADDRESS_PATTERN, 0.05),
|
3755
|
+
(_DO_WHILE_PATTERN, 0.1),
|
3756
|
+
(_ELSE_DO_PATTERN, 0.1),
|
3757
|
+
(_IF_THEN_DO_PATTERN, 0.1),
|
3758
|
+
(_PROCEDURE_PATTERN, 0.5),
|
3759
|
+
(_PARSE_ARG_PATTERN, 0.2),
|
3760
|
+
)
|
3761
|
+
|
3762
|
+
def analyse_text(text):
|
3763
|
+
"""
|
3764
|
+
Check for inital comment and patterns that distinguish Rexx from other
|
3765
|
+
C-like languages.
|
3766
|
+
"""
|
3767
|
+
if re.search(r'/\*\**\s*rexx', text, re.IGNORECASE):
|
3768
|
+
# Header matches MVS Rexx requirements, this is certainly a Rexx
|
3769
|
+
# script.
|
3770
|
+
return 1.0
|
3771
|
+
elif text.startswith('/*'):
|
3772
|
+
# Header matches general Rexx requirements; the source code might
|
3773
|
+
# still be any language using C comments such as C++, C# or Java.
|
3774
|
+
lowerText = text.lower()
|
3775
|
+
result = sum(weight
|
3776
|
+
for (pattern, weight) in RexxLexer.PATTERNS_AND_WEIGHTS
|
3777
|
+
if pattern.search(lowerText)) + 0.01
|
3778
|
+
return min(result, 1.0)
|
@@ -67,9 +67,11 @@ class BashLexer(RegexLexer):
|
|
67
67
|
'data': [
|
68
68
|
(r'(?s)\$?"(\\\\|\\[0-7]+|\\.|[^"\\])*"', String.Double),
|
69
69
|
(r"(?s)\$?'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
|
70
|
-
(r';',
|
70
|
+
(r';', Punctuation),
|
71
|
+
(r'&', Punctuation),
|
72
|
+
(r'\|', Punctuation),
|
71
73
|
(r'\s+', Text),
|
72
|
-
(r'[^=\s\[\]{}()$"\'
|
74
|
+
(r'[^=\s\[\]{}()$"\'`\\<&|;]+', Text),
|
73
75
|
(r'\d+(?= |\Z)', Number),
|
74
76
|
(r'\$#?(\w+|.)', Name.Variable),
|
75
77
|
(r'<', Text),
|
@@ -99,7 +101,10 @@ class BashLexer(RegexLexer):
|
|
99
101
|
}
|
100
102
|
|
101
103
|
def analyse_text(text):
|
102
|
-
|
104
|
+
if shebang_matches(text, r'(ba|z|)sh'):
|
105
|
+
return 1
|
106
|
+
if text.startswith('$ '):
|
107
|
+
return 0.2
|
103
108
|
|
104
109
|
|
105
110
|
class BashSessionLexer(Lexer):
|
@@ -206,7 +211,7 @@ class BatchLexer(RegexLexer):
|
|
206
211
|
*New in Pygments 0.7.*
|
207
212
|
"""
|
208
213
|
name = 'Batchfile'
|
209
|
-
aliases = ['bat']
|
214
|
+
aliases = ['bat', 'dosbatch', 'winbatch']
|
210
215
|
filenames = ['*.bat', '*.cmd']
|
211
216
|
mimetypes = ['application/x-dos-batch']
|
212
217
|
|
@@ -329,8 +334,8 @@ class PowerShellLexer(RegexLexer):
|
|
329
334
|
*New in Pygments 1.5.*
|
330
335
|
"""
|
331
336
|
name = 'PowerShell'
|
332
|
-
aliases = ['powershell', 'posh', 'ps1']
|
333
|
-
filenames = ['*.ps1']
|
337
|
+
aliases = ['powershell', 'posh', 'ps1', 'psm1']
|
338
|
+
filenames = ['*.ps1','*.psm1']
|
334
339
|
mimetypes = ['text/x-powershell']
|
335
340
|
|
336
341
|
flags = re.DOTALL | re.IGNORECASE | re.MULTILINE
|
@@ -342,7 +347,7 @@ class PowerShellLexer(RegexLexer):
|
|
342
347
|
'dynamicparam do default continue cmdletbinding break begin alias \\? '
|
343
348
|
'% #script #private #local #global mandatory parametersetname position '
|
344
349
|
'valuefrompipeline valuefrompipelinebypropertyname '
|
345
|
-
'valuefromremainingarguments helpmessage try catch').split()
|
350
|
+
'valuefromremainingarguments helpmessage try catch throw').split()
|
346
351
|
|
347
352
|
operators = (
|
348
353
|
'and as band bnot bor bxor casesensitive ccontains ceq cge cgt cle '
|
@@ -368,12 +373,15 @@ class PowerShellLexer(RegexLexer):
|
|
368
373
|
|
369
374
|
tokens = {
|
370
375
|
'root': [
|
376
|
+
# we need to count pairs of parentheses for correct highlight
|
377
|
+
# of '$(...)' blocks in strings
|
378
|
+
(r'\(', Punctuation, 'child'),
|
371
379
|
(r'\s+', Text),
|
372
380
|
(r'^(\s*#[#\s]*)(\.(?:%s))([^\n]*$)' % '|'.join(commenthelp),
|
373
381
|
bygroups(Comment, String.Doc, Comment)),
|
374
382
|
(r'#[^\n]*?$', Comment),
|
375
383
|
(r'(<|<)#', Comment.Multiline, 'multline'),
|
376
|
-
(r'@"\n
|
384
|
+
(r'@"\n', String.Heredoc, 'heredoc-double'),
|
377
385
|
(r"@'\n.*?\n'@", String.Heredoc),
|
378
386
|
# escaped syntax
|
379
387
|
(r'`[\'"$@-]', Punctuation),
|
@@ -387,7 +395,11 @@ class PowerShellLexer(RegexLexer):
|
|
387
395
|
(r'\[[a-z_\[][a-z0-9_. `,\[\]]*\]', Name.Constant), # .net [type]s
|
388
396
|
(r'-[a-z_][a-z0-9_]*', Name),
|
389
397
|
(r'\w+', Name),
|
390
|
-
(r'[
|
398
|
+
(r'[.,;@{}\[\]$()=+*/\\&%!~?^`|<>-]|::', Punctuation),
|
399
|
+
],
|
400
|
+
'child': [
|
401
|
+
(r'\)', Punctuation, '#pop'),
|
402
|
+
include('root'),
|
391
403
|
],
|
392
404
|
'multline': [
|
393
405
|
(r'[^#&.]+', Comment.Multiline),
|
@@ -396,15 +408,17 @@ class PowerShellLexer(RegexLexer):
|
|
396
408
|
(r'[#&.]', Comment.Multiline),
|
397
409
|
],
|
398
410
|
'string': [
|
411
|
+
(r"`[0abfnrtv'\"\$]", String.Escape),
|
399
412
|
(r'[^$`"]+', String.Double),
|
400
|
-
(r'\$\(',
|
401
|
-
(r'
|
413
|
+
(r'\$\(', Punctuation, 'child'),
|
414
|
+
(r'""', String.Double),
|
402
415
|
(r'[`$]', String.Double),
|
403
416
|
(r'"', String.Double, '#pop'),
|
404
417
|
],
|
405
|
-
'
|
406
|
-
(r'
|
407
|
-
(r'\$\(',
|
408
|
-
(r'
|
418
|
+
'heredoc-double': [
|
419
|
+
(r'\n"@', String.Heredoc, '#pop'),
|
420
|
+
(r'\$\(', Punctuation, 'child'),
|
421
|
+
(r'[^@\n]+"]', String.Heredoc),
|
422
|
+
(r".", String.Heredoc),
|
409
423
|
]
|
410
424
|
}
|
@@ -375,7 +375,7 @@ class SqlLexer(RegexLexer):
|
|
375
375
|
r'DIAGNOSTICS|DICTIONARY|DISCONNECT|DISPATCH|DISTINCT|DO|'
|
376
376
|
r'DOMAIN|DROP|DYNAMIC|DYNAMIC_FUNCTION|DYNAMIC_FUNCTION_CODE|'
|
377
377
|
r'EACH|ELSE|ENCODING|ENCRYPTED|END|END-EXEC|EQUALS|ESCAPE|EVERY|'
|
378
|
-
r'EXCEPT|
|
378
|
+
r'EXCEPTION|EXCEPT|EXCLUDING|EXCLUSIVE|EXEC|EXECUTE|EXISTING|'
|
379
379
|
r'EXISTS|EXPLAIN|EXTERNAL|EXTRACT|FALSE|FETCH|FINAL|FIRST|FOR|'
|
380
380
|
r'FORCE|FOREIGN|FORTRAN|FORWARD|FOUND|FREE|FREEZE|FROM|FULL|'
|
381
381
|
r'FUNCTION|G|GENERAL|GENERATED|GET|GLOBAL|GO|GOTO|GRANT|GRANTED|'
|
@@ -766,7 +766,7 @@ class CheetahHtmlLexer(DelegatingLexer):
|
|
766
766
|
"""
|
767
767
|
|
768
768
|
name = 'HTML+Cheetah'
|
769
|
-
aliases = ['html+cheetah', 'html+spitfire']
|
769
|
+
aliases = ['html+cheetah', 'html+spitfire', 'htmlcheetah']
|
770
770
|
mimetypes = ['text/html+cheetah', 'text/html+spitfire']
|
771
771
|
|
772
772
|
def __init__(self, **options):
|
@@ -1258,7 +1258,7 @@ class HtmlDjangoLexer(DelegatingLexer):
|
|
1258
1258
|
"""
|
1259
1259
|
|
1260
1260
|
name = 'HTML+Django/Jinja'
|
1261
|
-
aliases = ['html+django', 'html+jinja']
|
1261
|
+
aliases = ['html+django', 'html+jinja', 'htmldjango']
|
1262
1262
|
alias_filenames = ['*.html', '*.htm', '*.xhtml']
|
1263
1263
|
mimetypes = ['text/html+django', 'text/html+jinja']
|
1264
1264
|
|
@@ -1657,7 +1657,7 @@ class LassoHtmlLexer(DelegatingLexer):
|
|
1657
1657
|
super(LassoHtmlLexer, self).__init__(HtmlLexer, LassoLexer, **options)
|
1658
1658
|
|
1659
1659
|
def analyse_text(text):
|
1660
|
-
rv = LassoLexer.analyse_text(text)
|
1660
|
+
rv = LassoLexer.analyse_text(text) - 0.01
|
1661
1661
|
if re.search(r'<\w+>', text, re.I):
|
1662
1662
|
rv += 0.2
|
1663
1663
|
if html_doctype_matches(text):
|
@@ -1683,9 +1683,9 @@ class LassoXmlLexer(DelegatingLexer):
|
|
1683
1683
|
super(LassoXmlLexer, self).__init__(XmlLexer, LassoLexer, **options)
|
1684
1684
|
|
1685
1685
|
def analyse_text(text):
|
1686
|
-
rv = LassoLexer.analyse_text(text)
|
1686
|
+
rv = LassoLexer.analyse_text(text) - 0.01
|
1687
1687
|
if looks_like_xml(text):
|
1688
|
-
rv += 0.
|
1688
|
+
rv += 0.4
|
1689
1689
|
return rv
|
1690
1690
|
|
1691
1691
|
|
@@ -1707,8 +1707,8 @@ class LassoCssLexer(DelegatingLexer):
|
|
1707
1707
|
super(LassoCssLexer, self).__init__(CssLexer, LassoLexer, **options)
|
1708
1708
|
|
1709
1709
|
def analyse_text(text):
|
1710
|
-
rv = LassoLexer.analyse_text(text)
|
1711
|
-
if re.search(r'\w
|
1710
|
+
rv = LassoLexer.analyse_text(text) - 0.05
|
1711
|
+
if re.search(r'\w+:.+?;', text):
|
1712
1712
|
rv += 0.1
|
1713
1713
|
if 'padding:' in text:
|
1714
1714
|
rv += 0.1
|
@@ -1736,7 +1736,7 @@ class LassoJavascriptLexer(DelegatingLexer):
|
|
1736
1736
|
**options)
|
1737
1737
|
|
1738
1738
|
def analyse_text(text):
|
1739
|
-
rv = LassoLexer.analyse_text(text)
|
1739
|
+
rv = LassoLexer.analyse_text(text) - 0.05
|
1740
1740
|
if 'function' in text:
|
1741
1741
|
rv += 0.2
|
1742
1742
|
return rv
|
@@ -25,7 +25,7 @@ __all__ = ['IniLexer', 'PropertiesLexer', 'SourcesListLexer', 'BaseMakefileLexer
|
|
25
25
|
'RstLexer', 'VimLexer', 'GettextLexer', 'SquidConfLexer',
|
26
26
|
'DebianControlLexer', 'DarcsPatchLexer', 'YamlLexer',
|
27
27
|
'LighttpdConfLexer', 'NginxConfLexer', 'CMakeLexer', 'HttpLexer',
|
28
|
-
'PyPyLogLexer', 'RegeditLexer', 'HxmlLexer']
|
28
|
+
'PyPyLogLexer', 'RegeditLexer', 'HxmlLexer', 'EbnfLexer']
|
29
29
|
|
30
30
|
|
31
31
|
class IniLexer(RegexLexer):
|
@@ -34,7 +34,7 @@ class IniLexer(RegexLexer):
|
|
34
34
|
"""
|
35
35
|
|
36
36
|
name = 'INI'
|
37
|
-
aliases = ['ini', 'cfg']
|
37
|
+
aliases = ['ini', 'cfg', 'dosini']
|
38
38
|
filenames = ['*.ini', '*.cfg']
|
39
39
|
mimetypes = ['text/x-ini']
|
40
40
|
|
@@ -106,7 +106,7 @@ class PropertiesLexer(RegexLexer):
|
|
106
106
|
"""
|
107
107
|
|
108
108
|
name = 'Properties'
|
109
|
-
aliases = ['properties']
|
109
|
+
aliases = ['properties', 'jproperties']
|
110
110
|
filenames = ['*.properties']
|
111
111
|
mimetypes = ['text/x-java-properties']
|
112
112
|
|
@@ -128,7 +128,7 @@ class SourcesListLexer(RegexLexer):
|
|
128
128
|
"""
|
129
129
|
|
130
130
|
name = 'Debian Sourcelist'
|
131
|
-
aliases = ['sourceslist', 'sources.list']
|
131
|
+
aliases = ['sourceslist', 'sources.list', 'debsources']
|
132
132
|
filenames = ['sources.list']
|
133
133
|
mimetype = ['application/x-debian-sourceslist']
|
134
134
|
|
@@ -1053,7 +1053,7 @@ class DebianControlLexer(RegexLexer):
|
|
1053
1053
|
*New in Pygments 0.9.*
|
1054
1054
|
"""
|
1055
1055
|
name = 'Debian Control file'
|
1056
|
-
aliases = ['control']
|
1056
|
+
aliases = ['control', 'debcontrol']
|
1057
1057
|
filenames = ['control']
|
1058
1058
|
|
1059
1059
|
tokens = {
|
@@ -1631,7 +1631,7 @@ class CMakeLexer(RegexLexer):
|
|
1631
1631
|
# r'VTK_MAKE_INSTANTIATOR|VTK_WRAP_JAVA|VTK_WRAP_PYTHON|'
|
1632
1632
|
# r'VTK_WRAP_TCL|WHILE|WRITE_FILE|'
|
1633
1633
|
# r'COUNTARGS)\b', Name.Builtin, 'args'),
|
1634
|
-
(r'\b(
|
1634
|
+
(r'\b(\w+)([ \t]*)(\()', bygroups(Name.Builtin, Text,
|
1635
1635
|
Punctuation), 'args'),
|
1636
1636
|
include('keywords'),
|
1637
1637
|
include('ws')
|
@@ -1709,12 +1709,12 @@ class HttpLexer(RegexLexer):
|
|
1709
1709
|
|
1710
1710
|
tokens = {
|
1711
1711
|
'root': [
|
1712
|
-
(r'(GET|POST|PUT|DELETE|HEAD|OPTIONS|TRACE)( +)([^ ]+)( +)'
|
1713
|
-
r'(
|
1712
|
+
(r'(GET|POST|PUT|DELETE|HEAD|OPTIONS|TRACE|PATCH)( +)([^ ]+)( +)'
|
1713
|
+
r'(HTTP)(/)(1\.[01])(\r?\n|$)',
|
1714
1714
|
bygroups(Name.Function, Text, Name.Namespace, Text,
|
1715
1715
|
Keyword.Reserved, Operator, Number, Text),
|
1716
1716
|
'headers'),
|
1717
|
-
(r'(
|
1717
|
+
(r'(HTTP)(/)(1\.[01])( +)(\d{3})( +)([^\r\n]+)(\r?\n|$)',
|
1718
1718
|
bygroups(Keyword.Reserved, Operator, Number, Text, Number,
|
1719
1719
|
Text, Name.Exception, Text),
|
1720
1720
|
'headers'),
|
@@ -1841,3 +1841,53 @@ class HxmlLexer(RegexLexer):
|
|
1841
1841
|
(r'#.*', Comment.Single)
|
1842
1842
|
]
|
1843
1843
|
}
|
1844
|
+
|
1845
|
+
|
1846
|
+
class EbnfLexer(RegexLexer):
|
1847
|
+
"""
|
1848
|
+
Lexer for `ISO/IEC 14977 EBNF
|
1849
|
+
<http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form>`_
|
1850
|
+
grammars.
|
1851
|
+
|
1852
|
+
*New in Pygments 1.7.*
|
1853
|
+
"""
|
1854
|
+
|
1855
|
+
name = 'EBNF'
|
1856
|
+
aliases = ['ebnf']
|
1857
|
+
filenames = ['*.ebnf']
|
1858
|
+
mimetypes = ['text/x-ebnf']
|
1859
|
+
|
1860
|
+
tokens = {
|
1861
|
+
'root': [
|
1862
|
+
include('whitespace'),
|
1863
|
+
include('comment_start'),
|
1864
|
+
include('identifier'),
|
1865
|
+
(r'=', Operator, 'production'),
|
1866
|
+
],
|
1867
|
+
'production': [
|
1868
|
+
include('whitespace'),
|
1869
|
+
include('comment_start'),
|
1870
|
+
include('identifier'),
|
1871
|
+
(r'"[^"]*"', String.Double),
|
1872
|
+
(r"'[^']*'", String.Single),
|
1873
|
+
(r'(\?[^?]*\?)', Name.Entity),
|
1874
|
+
(r'[\[\]{}(),|]', Punctuation),
|
1875
|
+
(r'-', Operator),
|
1876
|
+
(r';', Punctuation, '#pop'),
|
1877
|
+
],
|
1878
|
+
'whitespace': [
|
1879
|
+
(r'\s+', Text),
|
1880
|
+
],
|
1881
|
+
'comment_start': [
|
1882
|
+
(r'\(\*', Comment.Multiline, 'comment'),
|
1883
|
+
],
|
1884
|
+
'comment': [
|
1885
|
+
(r'[^*)]', Comment.Multiline),
|
1886
|
+
include('comment_start'),
|
1887
|
+
(r'\*\)', Comment.Multiline, '#pop'),
|
1888
|
+
(r'[*)]', Comment.Multiline),
|
1889
|
+
],
|
1890
|
+
'identifier': [
|
1891
|
+
(r'([a-zA-Z][a-zA-Z0-9 \-]*)', Keyword),
|
1892
|
+
],
|
1893
|
+
}
|