pygments.rb 0.5.4 → 0.6.0
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +40 -0
- data/README.md +3 -0
- data/lexers +0 -0
- data/lib/pygments/popen.rb +3 -2
- data/lib/pygments/version.rb +1 -1
- data/pygments.rb.gemspec +2 -1
- data/vendor/pygments-main/AUTHORS +20 -1
- data/vendor/pygments-main/CHANGES +55 -3
- data/vendor/pygments-main/LICENSE +1 -1
- data/vendor/pygments-main/MANIFEST.in +1 -1
- data/vendor/pygments-main/Makefile +5 -8
- data/vendor/pygments-main/REVISION +1 -1
- data/vendor/pygments-main/doc/Makefile +153 -0
- data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
- data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
- data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
- data/vendor/pygments-main/doc/_templates/docssidebar.html +3 -0
- data/vendor/pygments-main/doc/_templates/indexsidebar.html +25 -0
- data/vendor/pygments-main/doc/_themes/pygments14/layout.html +98 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +401 -0
- data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +15 -0
- data/vendor/pygments-main/doc/conf.py +249 -0
- data/vendor/pygments-main/doc/docs/api.rst +316 -0
- data/vendor/pygments-main/doc/docs/authors.rst +4 -0
- data/vendor/pygments-main/doc/docs/changelog.rst +1 -0
- data/vendor/pygments-main/{docs/src/cmdline.txt → doc/docs/cmdline.rst} +9 -11
- data/vendor/pygments-main/{docs/src/filterdevelopment.txt → doc/docs/filterdevelopment.rst} +1 -1
- data/vendor/pygments-main/{docs/src/filters.txt → doc/docs/filters.rst} +4 -5
- data/vendor/pygments-main/{docs/src/formatterdevelopment.txt → doc/docs/formatterdevelopment.rst} +1 -1
- data/vendor/pygments-main/{docs/src/formatters.txt → doc/docs/formatters.rst} +6 -6
- data/vendor/pygments-main/doc/docs/index.rst +66 -0
- data/vendor/pygments-main/{docs/src/integrate.txt → doc/docs/integrate.rst} +3 -7
- data/vendor/pygments-main/{docs/src/java.txt → doc/docs/java.rst} +0 -0
- data/vendor/pygments-main/{docs/src/lexerdevelopment.txt → doc/docs/lexerdevelopment.rst} +13 -14
- data/vendor/pygments-main/{docs/src/lexers.txt → doc/docs/lexers.rst} +7 -5
- data/vendor/pygments-main/{docs/src/moinmoin.txt → doc/docs/moinmoin.rst} +0 -0
- data/vendor/pygments-main/{docs/src/plugins.txt → doc/docs/plugins.rst} +0 -0
- data/vendor/pygments-main/{docs/src/quickstart.txt → doc/docs/quickstart.rst} +22 -19
- data/vendor/pygments-main/{docs/src/rstdirective.txt → doc/docs/rstdirective.rst} +0 -0
- data/vendor/pygments-main/{docs/src/styles.txt → doc/docs/styles.rst} +2 -2
- data/vendor/pygments-main/{docs/src/tokens.txt → doc/docs/tokens.rst} +10 -7
- data/vendor/pygments-main/{docs/src/unicode.txt → doc/docs/unicode.rst} +8 -7
- data/vendor/pygments-main/doc/download.rst +41 -0
- data/vendor/pygments-main/doc/faq.rst +143 -0
- data/vendor/pygments-main/doc/index.rst +53 -0
- data/vendor/pygments-main/doc/languages.rst +151 -0
- data/vendor/pygments-main/doc/make.bat +190 -0
- data/vendor/pygments-main/{docs → doc}/pygmentize.1 +0 -0
- data/vendor/pygments-main/external/autopygmentize +65 -48
- data/vendor/pygments-main/external/markdown-processor.py +15 -15
- data/vendor/pygments-main/external/moin-parser.py +1 -1
- data/vendor/pygments-main/external/rst-directive.py +2 -3
- data/vendor/pygments-main/ez_setup.py +340 -234
- data/vendor/pygments-main/pygments/__init__.py +4 -4
- data/vendor/pygments-main/pygments/cmdline.py +81 -68
- data/vendor/pygments-main/pygments/console.py +1 -1
- data/vendor/pygments-main/pygments/filter.py +1 -1
- data/vendor/pygments-main/pygments/filters/__init__.py +11 -9
- data/vendor/pygments-main/pygments/formatter.py +3 -3
- data/vendor/pygments-main/pygments/formatters/__init__.py +5 -3
- data/vendor/pygments-main/pygments/formatters/_mapping.py +16 -5
- data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
- data/vendor/pygments-main/pygments/formatters/html.py +44 -26
- data/vendor/pygments-main/pygments/formatters/img.py +21 -14
- data/vendor/pygments-main/pygments/formatters/latex.py +104 -12
- data/vendor/pygments-main/pygments/formatters/other.py +53 -6
- data/vendor/pygments-main/pygments/formatters/rtf.py +30 -16
- data/vendor/pygments-main/pygments/formatters/svg.py +2 -2
- data/vendor/pygments-main/pygments/formatters/terminal.py +41 -1
- data/vendor/pygments-main/pygments/formatters/terminal256.py +2 -2
- data/vendor/pygments-main/pygments/lexer.py +59 -39
- data/vendor/pygments-main/pygments/lexers/__init__.py +38 -15
- data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +15 -15
- data/vendor/pygments-main/pygments/lexers/_cocoabuiltins.py +73 -0
- data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +11 -1
- data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +14 -8
- data/vendor/pygments-main/pygments/lexers/_mapping.py +81 -30
- data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +1067 -95
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +7 -7
- data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +5 -4
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +12 -7
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +112 -18
- data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/agile.py +644 -382
- data/vendor/pygments-main/pygments/lexers/asm.py +66 -29
- data/vendor/pygments-main/pygments/lexers/compiled.py +1643 -174
- data/vendor/pygments-main/pygments/lexers/dalvik.py +27 -6
- data/vendor/pygments-main/pygments/lexers/dotnet.py +45 -33
- data/vendor/pygments-main/pygments/lexers/foxpro.py +3 -3
- data/vendor/pygments-main/pygments/lexers/functional.py +1510 -570
- data/vendor/pygments-main/pygments/lexers/graph.py +81 -0
- data/vendor/pygments-main/pygments/lexers/hdl.py +29 -30
- data/vendor/pygments-main/pygments/lexers/inferno.py +96 -0
- data/vendor/pygments-main/pygments/lexers/jvm.py +622 -207
- data/vendor/pygments-main/pygments/lexers/math.py +438 -70
- data/vendor/pygments-main/pygments/lexers/other.py +885 -171
- data/vendor/pygments-main/pygments/lexers/parsers.py +24 -24
- data/vendor/pygments-main/pygments/lexers/qbasic.py +157 -0
- data/vendor/pygments-main/pygments/lexers/rdf.py +99 -0
- data/vendor/pygments-main/pygments/lexers/shell.py +28 -25
- data/vendor/pygments-main/pygments/lexers/special.py +7 -8
- data/vendor/pygments-main/pygments/lexers/sql.py +56 -23
- data/vendor/pygments-main/pygments/lexers/templates.py +377 -59
- data/vendor/pygments-main/pygments/lexers/text.py +208 -46
- data/vendor/pygments-main/pygments/lexers/web.py +729 -264
- data/vendor/pygments-main/pygments/modeline.py +1 -1
- data/vendor/pygments-main/pygments/plugin.py +1 -1
- data/vendor/pygments-main/pygments/scanner.py +1 -1
- data/vendor/pygments-main/pygments/sphinxext.py +153 -0
- data/vendor/pygments-main/pygments/style.py +3 -2
- data/vendor/pygments-main/pygments/styles/__init__.py +5 -1
- data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
- data/vendor/pygments-main/pygments/styles/borland.py +1 -1
- data/vendor/pygments-main/pygments/styles/bw.py +1 -1
- data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
- data/vendor/pygments-main/pygments/styles/default.py +1 -1
- data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
- data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
- data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
- data/vendor/pygments-main/pygments/styles/igor.py +29 -0
- data/vendor/pygments-main/pygments/styles/manni.py +1 -1
- data/vendor/pygments-main/pygments/styles/monokai.py +4 -4
- data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
- data/vendor/pygments-main/pygments/styles/native.py +1 -1
- data/vendor/pygments-main/pygments/styles/paraiso_dark.py +125 -0
- data/vendor/pygments-main/pygments/styles/paraiso_light.py +125 -0
- data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
- data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
- data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
- data/vendor/pygments-main/pygments/styles/tango.py +1 -1
- data/vendor/pygments-main/pygments/styles/trac.py +1 -1
- data/vendor/pygments-main/pygments/styles/vim.py +1 -1
- data/vendor/pygments-main/pygments/styles/vs.py +1 -1
- data/vendor/pygments-main/pygments/styles/xcode.py +51 -0
- data/vendor/pygments-main/pygments/token.py +4 -1
- data/vendor/pygments-main/pygments/unistring.py +6 -5
- data/vendor/pygments-main/pygments/util.py +35 -21
- data/vendor/pygments-main/scripts/check_sources.py +28 -44
- data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +5 -4
- data/vendor/pygments-main/scripts/find_codetags.py +27 -19
- data/vendor/pygments-main/scripts/find_error.py +16 -13
- data/vendor/pygments-main/scripts/get_vimkw.py +3 -3
- data/vendor/pygments-main/scripts/vim2pygments.py +9 -7
- data/vendor/pygments-main/setup.py +19 -19
- data/vendor/pygments-main/tests/examplefiles/99_bottles_of_beer.chpl +118 -0
- data/vendor/pygments-main/tests/examplefiles/Error.pmod +38 -0
- data/vendor/pygments-main/tests/examplefiles/FakeFile.pike +360 -0
- data/vendor/pygments-main/tests/examplefiles/{ANTLRv3.g → antlr_ANTLRv3.g} +0 -0
- data/vendor/pygments-main/tests/examplefiles/clojure-weird-keywords.clj +5 -0
- data/vendor/pygments-main/tests/examplefiles/core.cljs +52 -0
- data/vendor/pygments-main/tests/examplefiles/demo.cfm +13 -1
- data/vendor/pygments-main/tests/examplefiles/demo.hbs +12 -0
- data/vendor/pygments-main/tests/examplefiles/ember.handlebars +33 -0
- data/vendor/pygments-main/tests/examplefiles/example.als +217 -0
- data/vendor/pygments-main/tests/examplefiles/example.c +1 -1
- data/vendor/pygments-main/tests/examplefiles/example.chai +6 -0
- data/vendor/pygments-main/tests/examplefiles/example.coffee +27 -0
- data/vendor/pygments-main/tests/examplefiles/example.e +124 -0
- data/vendor/pygments-main/tests/examplefiles/example.f90 +8 -0
- data/vendor/pygments-main/tests/examplefiles/example.feature +16 -0
- data/vendor/pygments-main/tests/examplefiles/example.gd +23 -0
- data/vendor/pygments-main/tests/examplefiles/example.gi +64 -0
- data/vendor/pygments-main/tests/examplefiles/example.groovy +2 -0
- data/vendor/pygments-main/tests/examplefiles/example.hs +27 -0
- data/vendor/pygments-main/tests/examplefiles/example.hx +44 -1
- data/vendor/pygments-main/tests/examplefiles/example.i6t +32 -0
- data/vendor/pygments-main/tests/examplefiles/example.i7x +45 -0
- data/vendor/pygments-main/tests/examplefiles/example.inf +374 -0
- data/vendor/pygments-main/tests/examplefiles/example.j +564 -0
- data/vendor/pygments-main/tests/examplefiles/example.java +16 -0
- data/vendor/pygments-main/tests/examplefiles/example.kal +75 -0
- data/vendor/pygments-main/tests/examplefiles/example.liquid +42 -0
- data/vendor/pygments-main/tests/examplefiles/example.ma +8 -0
- data/vendor/pygments-main/tests/examplefiles/example.mq4 +187 -0
- data/vendor/pygments-main/tests/examplefiles/example.mqh +123 -0
- data/vendor/pygments-main/tests/examplefiles/example.ni +57 -0
- data/vendor/pygments-main/tests/examplefiles/example.nix +80 -0
- data/vendor/pygments-main/tests/examplefiles/example.pp +8 -0
- data/vendor/pygments-main/tests/examplefiles/example.red +257 -0
- data/vendor/pygments-main/tests/examplefiles/example.reds +150 -0
- data/vendor/pygments-main/tests/examplefiles/example.rkt +677 -29
- data/vendor/pygments-main/tests/examplefiles/example.sh +22 -0
- data/vendor/pygments-main/tests/examplefiles/example.slim +31 -0
- data/vendor/pygments-main/tests/examplefiles/example.sls +51 -0
- data/vendor/pygments-main/tests/examplefiles/example.stan +2 -0
- data/vendor/pygments-main/tests/examplefiles/example.todotxt +9 -0
- data/vendor/pygments-main/tests/examplefiles/exampleScript.cfc +241 -0
- data/vendor/pygments-main/tests/examplefiles/exampleTag.cfc +18 -0
- data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +192 -350
- data/vendor/pygments-main/tests/examplefiles/hash_syntax.rb +5 -0
- data/vendor/pygments-main/tests/examplefiles/hello.at +6 -0
- data/vendor/pygments-main/tests/examplefiles/hello.golo +5 -0
- data/vendor/pygments-main/tests/examplefiles/hello.lsl +12 -0
- data/vendor/pygments-main/tests/examplefiles/{File.hy → hybris_File.hy} +0 -0
- data/vendor/pygments-main/tests/examplefiles/{mg_sample.pro → idl_sample.pro} +0 -0
- data/vendor/pygments-main/tests/examplefiles/iex_example +23 -0
- data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +24 -24
- data/vendor/pygments-main/tests/examplefiles/language.hy +165 -0
- data/vendor/pygments-main/tests/examplefiles/limbo.b +456 -0
- data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +3 -1
- data/vendor/pygments-main/tests/examplefiles/main.cmake +2 -0
- data/vendor/pygments-main/tests/examplefiles/objc_example.m +163 -16
- data/vendor/pygments-main/tests/examplefiles/{example.p → openedge_example} +0 -0
- data/vendor/pygments-main/tests/examplefiles/pawn_example +25 -0
- data/vendor/pygments-main/tests/examplefiles/qbasic_example +2 -0
- data/vendor/pygments-main/tests/examplefiles/r6rs-comments.scm +23 -0
- data/vendor/pygments-main/tests/examplefiles/{robotframework.txt → robotframework_test.txt} +0 -0
- data/vendor/pygments-main/tests/examplefiles/rql-queries.rql +34 -0
- data/vendor/pygments-main/tests/examplefiles/scope.cirru +43 -0
- data/vendor/pygments-main/tests/examplefiles/sparql.rq +23 -0
- data/vendor/pygments-main/tests/examplefiles/test.R +37 -5
- data/vendor/pygments-main/tests/examplefiles/test.apl +26 -0
- data/vendor/pygments-main/tests/examplefiles/test.cyp +123 -0
- data/vendor/pygments-main/tests/examplefiles/test.idr +93 -0
- data/vendor/pygments-main/tests/examplefiles/test.mask +41 -0
- data/vendor/pygments-main/tests/examplefiles/test.pan +54 -0
- data/vendor/pygments-main/tests/examplefiles/test.php +3 -1
- data/vendor/pygments-main/tests/examplefiles/test.pig +148 -0
- data/vendor/pygments-main/tests/examplefiles/test.pwn +253 -0
- data/vendor/pygments-main/tests/examplefiles/test.r3 +27 -7
- data/vendor/pygments-main/tests/examplefiles/test.rsl +111 -0
- data/vendor/pygments-main/tests/examplefiles/test.swift +65 -0
- data/vendor/pygments-main/tests/examplefiles/test.zep +33 -0
- data/vendor/pygments-main/tests/examplefiles/unicode.go +10 -0
- data/vendor/pygments-main/tests/examplefiles/{test.bas → vbnet_test.bas} +0 -0
- data/vendor/pygments-main/tests/examplefiles/vctreestatus_hg +4 -0
- data/vendor/pygments-main/tests/examplefiles/vimrc +21 -0
- data/vendor/pygments-main/tests/run.py +14 -19
- data/vendor/pygments-main/tests/string_asserts.py +22 -0
- data/vendor/pygments-main/tests/test_basic_api.py +28 -14
- data/vendor/pygments-main/tests/test_cfm.py +46 -0
- data/vendor/pygments-main/tests/test_clexer.py +208 -3
- data/vendor/pygments-main/tests/test_cmdline.py +6 -5
- data/vendor/pygments-main/tests/test_examplefiles.py +30 -19
- data/vendor/pygments-main/tests/test_html_formatter.py +15 -13
- data/vendor/pygments-main/tests/test_latex_formatter.py +4 -2
- data/vendor/pygments-main/tests/test_lexers_other.py +11 -11
- data/vendor/pygments-main/tests/test_objectiveclexer.py +81 -0
- data/vendor/pygments-main/tests/test_perllexer.py +1 -1
- data/vendor/pygments-main/tests/test_qbasiclexer.py +43 -0
- data/vendor/pygments-main/tests/test_regexlexer.py +8 -1
- data/vendor/pygments-main/tests/test_rtf_formatter.py +109 -0
- data/vendor/pygments-main/tests/test_string_asserts.py +39 -0
- data/vendor/pygments-main/tests/test_token.py +3 -3
- data/vendor/pygments-main/tests/test_using_api.py +1 -1
- data/vendor/pygments-main/tests/test_util.py +1 -1
- metadata +138 -51
- data/vendor/pygments-main/docs/generate.py +0 -472
- data/vendor/pygments-main/docs/src/api.txt +0 -270
- data/vendor/pygments-main/docs/src/authors.txt +0 -5
- data/vendor/pygments-main/docs/src/changelog.txt +0 -5
- data/vendor/pygments-main/docs/src/index.txt +0 -69
- data/vendor/pygments-main/docs/src/installation.txt +0 -71
- data/vendor/pygments-main/external/rst-directive-old.py +0 -77
- data/vendor/pygments-main/scripts/reindent.py +0 -291
- data/vendor/pygments-main/tests/examplefiles/import.hs +0 -4
- data/vendor/pygments-main/tests/examplefiles/objc_example2.m +0 -24
- data/vendor/pygments-main/tests/old_run.py +0 -138
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
Lexers for various shells.
|
|
7
7
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
8
|
+
:copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS.
|
|
9
9
|
:license: BSD, see LICENSE for details.
|
|
10
10
|
"""
|
|
11
11
|
|
|
@@ -27,13 +27,13 @@ class BashLexer(RegexLexer):
|
|
|
27
27
|
"""
|
|
28
28
|
Lexer for (ba|k|)sh shell scripts.
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
.. versionadded:: 0.6
|
|
31
31
|
"""
|
|
32
32
|
|
|
33
33
|
name = 'Bash'
|
|
34
34
|
aliases = ['bash', 'sh', 'ksh']
|
|
35
35
|
filenames = ['*.sh', '*.ksh', '*.bash', '*.ebuild', '*.eclass',
|
|
36
|
-
'.bashrc', 'bashrc', '.bash_*', 'bash_*']
|
|
36
|
+
'.bashrc', 'bashrc', '.bash_*', 'bash_*', 'PKGBUILD']
|
|
37
37
|
mimetypes = ['application/x-sh', 'application/x-shellscript']
|
|
38
38
|
|
|
39
39
|
tokens = {
|
|
@@ -47,8 +47,8 @@ class BashLexer(RegexLexer):
|
|
|
47
47
|
],
|
|
48
48
|
'basic': [
|
|
49
49
|
(r'\b(if|fi|else|while|do|done|for|then|return|function|case|'
|
|
50
|
-
r'select|continue|until|esac|elif)\s
|
|
51
|
-
Keyword),
|
|
50
|
+
r'select|continue|until|esac|elif)(\s*)\b',
|
|
51
|
+
bygroups(Keyword, Text)),
|
|
52
52
|
(r'\b(alias|bg|bind|break|builtin|caller|cd|command|compgen|'
|
|
53
53
|
r'complete|declare|dirs|disown|echo|enable|eval|exec|exit|'
|
|
54
54
|
r'export|false|fc|fg|getopts|hash|help|history|jobs|kill|let|'
|
|
@@ -71,15 +71,15 @@ class BashLexer(RegexLexer):
|
|
|
71
71
|
(r'&', Punctuation),
|
|
72
72
|
(r'\|', Punctuation),
|
|
73
73
|
(r'\s+', Text),
|
|
74
|
-
(r'[^=\s\[\]{}()$"\'`\\<&|;]+', Text),
|
|
75
74
|
(r'\d+(?= |\Z)', Number),
|
|
75
|
+
(r'[^=\s\[\]{}()$"\'`\\<&|;]+', Text),
|
|
76
76
|
(r'\$#?(\w+|.)', Name.Variable),
|
|
77
77
|
(r'<', Text),
|
|
78
78
|
],
|
|
79
79
|
'curly': [
|
|
80
80
|
(r'}', Keyword, '#pop'),
|
|
81
81
|
(r':-', Keyword),
|
|
82
|
-
(r'
|
|
82
|
+
(r'\w+', Name.Variable),
|
|
83
83
|
(r'[^}:"\'`$]+', Punctuation),
|
|
84
84
|
(r':', Punctuation),
|
|
85
85
|
include('root'),
|
|
@@ -91,6 +91,8 @@ class BashLexer(RegexLexer):
|
|
|
91
91
|
'math': [
|
|
92
92
|
(r'\)\)', Keyword, '#pop'),
|
|
93
93
|
(r'[-+*/%^|&]|\*\*|\|\|', Operator),
|
|
94
|
+
(r'\d+#\d+', Number),
|
|
95
|
+
(r'\d+#(?! )', Number),
|
|
94
96
|
(r'\d+', Number),
|
|
95
97
|
include('root'),
|
|
96
98
|
],
|
|
@@ -111,7 +113,7 @@ class BashSessionLexer(Lexer):
|
|
|
111
113
|
"""
|
|
112
114
|
Lexer for simplistic shell sessions.
|
|
113
115
|
|
|
114
|
-
|
|
116
|
+
.. versionadded:: 1.1
|
|
115
117
|
"""
|
|
116
118
|
|
|
117
119
|
name = 'Bash Session'
|
|
@@ -162,7 +164,7 @@ class ShellSessionLexer(Lexer):
|
|
|
162
164
|
"""
|
|
163
165
|
Lexer for shell sessions that works with different command prompts
|
|
164
166
|
|
|
165
|
-
|
|
167
|
+
.. versionadded:: 1.6
|
|
166
168
|
"""
|
|
167
169
|
|
|
168
170
|
name = 'Shell Session'
|
|
@@ -179,7 +181,7 @@ class ShellSessionLexer(Lexer):
|
|
|
179
181
|
|
|
180
182
|
for match in line_re.finditer(text):
|
|
181
183
|
line = match.group()
|
|
182
|
-
m = re.match(r'^((?:\[?\S+@[^$#%]
|
|
184
|
+
m = re.match(r'^((?:\[?\S+@[^$#%]+\]?\s*)[$#%])(.*\n?)', line)
|
|
183
185
|
if m:
|
|
184
186
|
# To support output lexers (say diff output), the output
|
|
185
187
|
# needs to be broken by prompts whenever the output lexer
|
|
@@ -208,10 +210,10 @@ class BatchLexer(RegexLexer):
|
|
|
208
210
|
"""
|
|
209
211
|
Lexer for the DOS/Windows Batch file format.
|
|
210
212
|
|
|
211
|
-
|
|
213
|
+
.. versionadded:: 0.7
|
|
212
214
|
"""
|
|
213
215
|
name = 'Batchfile'
|
|
214
|
-
aliases = ['bat', 'dosbatch', 'winbatch']
|
|
216
|
+
aliases = ['bat', 'batch', 'dosbatch', 'winbatch']
|
|
215
217
|
filenames = ['*.bat', '*.cmd']
|
|
216
218
|
mimetypes = ['application/x-dos-batch']
|
|
217
219
|
|
|
@@ -228,9 +230,9 @@ class BatchLexer(RegexLexer):
|
|
|
228
230
|
# like %~$VAR:zlt
|
|
229
231
|
(r'%%?[~$:\w]+%?', Name.Variable),
|
|
230
232
|
(r'::.*', Comment), # Technically :: only works at BOL
|
|
231
|
-
(r'(set)(\s+)(\w+)', bygroups(Keyword, Text, Name.Variable)),
|
|
232
|
-
(r'(call)(\s+)(:\w+)', bygroups(Keyword, Text, Name.Label)),
|
|
233
|
-
(r'(goto)(\s+)(\w+)', bygroups(Keyword, Text, Name.Label)),
|
|
233
|
+
(r'\b(set)(\s+)(\w+)', bygroups(Keyword, Text, Name.Variable)),
|
|
234
|
+
(r'\b(call)(\s+)(:\w+)', bygroups(Keyword, Text, Name.Label)),
|
|
235
|
+
(r'\b(goto)(\s+)(\w+)', bygroups(Keyword, Text, Name.Label)),
|
|
234
236
|
(r'\b(set|call|echo|on|off|endlocal|for|do|goto|if|pause|'
|
|
235
237
|
r'setlocal|shift|errorlevel|exist|defined|cmdextversion|'
|
|
236
238
|
r'errorlevel|else|cd|md|del|deltree|cls|choice)\b', Keyword),
|
|
@@ -264,7 +266,7 @@ class TcshLexer(RegexLexer):
|
|
|
264
266
|
"""
|
|
265
267
|
Lexer for tcsh scripts.
|
|
266
268
|
|
|
267
|
-
|
|
269
|
+
.. versionadded:: 0.10
|
|
268
270
|
"""
|
|
269
271
|
|
|
270
272
|
name = 'Tcsh'
|
|
@@ -294,24 +296,25 @@ class TcshLexer(RegexLexer):
|
|
|
294
296
|
r'umask|unalias|uncomplete|unhash|universe|unlimit|unset|unsetenv|'
|
|
295
297
|
r'ver|wait|warp|watchlog|where|which)\s*\b',
|
|
296
298
|
Name.Builtin),
|
|
297
|
-
(r'
|
|
299
|
+
(r'#.*', Comment),
|
|
298
300
|
(r'\\[\w\W]', String.Escape),
|
|
299
301
|
(r'(\b\w+)(\s*)(=)', bygroups(Name.Variable, Text, Operator)),
|
|
300
302
|
(r'[\[\]{}()=]+', Operator),
|
|
301
303
|
(r'<<\s*(\'?)\\?(\w+)[\w\W]+?\2', String),
|
|
304
|
+
(r';', Punctuation),
|
|
302
305
|
],
|
|
303
306
|
'data': [
|
|
304
307
|
(r'(?s)"(\\\\|\\[0-7]+|\\.|[^"\\])*"', String.Double),
|
|
305
308
|
(r"(?s)'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
|
|
306
309
|
(r'\s+', Text),
|
|
307
|
-
(r'[^=\s\[\]{}()$"\'
|
|
310
|
+
(r'[^=\s\[\]{}()$"\'`\\;#]+', Text),
|
|
308
311
|
(r'\d+(?= |\Z)', Number),
|
|
309
312
|
(r'\$#?(\w+|.)', Name.Variable),
|
|
310
313
|
],
|
|
311
314
|
'curly': [
|
|
312
315
|
(r'}', Keyword, '#pop'),
|
|
313
316
|
(r':-', Keyword),
|
|
314
|
-
(r'
|
|
317
|
+
(r'\w+', Name.Variable),
|
|
315
318
|
(r'[^}:"\'`$]+', Punctuation),
|
|
316
319
|
(r':', Punctuation),
|
|
317
320
|
include('root'),
|
|
@@ -331,7 +334,7 @@ class PowerShellLexer(RegexLexer):
|
|
|
331
334
|
"""
|
|
332
335
|
For Windows PowerShell code.
|
|
333
336
|
|
|
334
|
-
|
|
337
|
+
.. versionadded:: 1.5
|
|
335
338
|
"""
|
|
336
339
|
name = 'PowerShell'
|
|
337
340
|
aliases = ['powershell', 'posh', 'ps1', 'psm1']
|
|
@@ -387,13 +390,13 @@ class PowerShellLexer(RegexLexer):
|
|
|
387
390
|
(r'`[\'"$@-]', Punctuation),
|
|
388
391
|
(r'"', String.Double, 'string'),
|
|
389
392
|
(r"'([^']|'')*'", String.Single),
|
|
390
|
-
(r'(\$|@@|@)((global|script|private|env):)
|
|
393
|
+
(r'(\$|@@|@)((global|script|private|env):)?\w+',
|
|
391
394
|
Name.Variable),
|
|
392
395
|
(r'(%s)\b' % '|'.join(keywords), Keyword),
|
|
393
396
|
(r'-(%s)\b' % '|'.join(operators), Operator),
|
|
394
|
-
(r'(%s)-[a-z_]
|
|
395
|
-
(r'\[[a-z_\[][
|
|
396
|
-
(r'-[a-z_]
|
|
397
|
+
(r'(%s)-[a-z_]\w*\b' % '|'.join(verbs), Name.Builtin),
|
|
398
|
+
(r'\[[a-z_\[][\w. `,\[\]]*\]', Name.Constant), # .net [type]s
|
|
399
|
+
(r'-[a-z_]\w*', Name),
|
|
397
400
|
(r'\w+', Name),
|
|
398
401
|
(r'[.,;@{}\[\]$()=+*/\\&%!~?^`|<>-]|::', Punctuation),
|
|
399
402
|
],
|
|
@@ -408,7 +411,7 @@ class PowerShellLexer(RegexLexer):
|
|
|
408
411
|
(r'[#&.]', Comment.Multiline),
|
|
409
412
|
],
|
|
410
413
|
'string': [
|
|
411
|
-
(r"`[0abfnrtv'\"
|
|
414
|
+
(r"`[0abfnrtv'\"\$`]", String.Escape),
|
|
412
415
|
(r'[^$`"]+', String.Double),
|
|
413
416
|
(r'\$\(', Punctuation, 'child'),
|
|
414
417
|
(r'""', String.Double),
|
|
@@ -5,16 +5,15 @@
|
|
|
5
5
|
|
|
6
6
|
Special lexers.
|
|
7
7
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
8
|
+
:copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS.
|
|
9
9
|
:license: BSD, see LICENSE for details.
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
12
|
import re
|
|
13
|
-
import cStringIO
|
|
14
13
|
|
|
15
14
|
from pygments.lexer import Lexer
|
|
16
15
|
from pygments.token import Token, Error, Text
|
|
17
|
-
from pygments.util import get_choice_opt,
|
|
16
|
+
from pygments.util import get_choice_opt, text_type, BytesIO
|
|
18
17
|
|
|
19
18
|
|
|
20
19
|
__all__ = ['TextLexer', 'RawTokenLexer']
|
|
@@ -35,7 +34,7 @@ class TextLexer(Lexer):
|
|
|
35
34
|
|
|
36
35
|
_ttype_cache = {}
|
|
37
36
|
|
|
38
|
-
line_re = re.compile(b
|
|
37
|
+
line_re = re.compile(b'.*?\n')
|
|
39
38
|
|
|
40
39
|
class RawTokenLexer(Lexer):
|
|
41
40
|
"""
|
|
@@ -60,12 +59,12 @@ class RawTokenLexer(Lexer):
|
|
|
60
59
|
Lexer.__init__(self, **options)
|
|
61
60
|
|
|
62
61
|
def get_tokens(self, text):
|
|
63
|
-
if isinstance(text,
|
|
62
|
+
if isinstance(text, text_type):
|
|
64
63
|
# raw token stream never has any non-ASCII characters
|
|
65
64
|
text = text.encode('ascii')
|
|
66
65
|
if self.compress == 'gz':
|
|
67
66
|
import gzip
|
|
68
|
-
gzipfile = gzip.GzipFile('', 'rb', 9,
|
|
67
|
+
gzipfile = gzip.GzipFile('', 'rb', 9, BytesIO(text))
|
|
69
68
|
text = gzipfile.read()
|
|
70
69
|
elif self.compress == 'bz2':
|
|
71
70
|
import bz2
|
|
@@ -73,7 +72,7 @@ class RawTokenLexer(Lexer):
|
|
|
73
72
|
|
|
74
73
|
# do not call Lexer.get_tokens() because we do not want Unicode
|
|
75
74
|
# decoding to occur, and stripping is not optional.
|
|
76
|
-
text = text.strip(b
|
|
75
|
+
text = text.strip(b'\n') + b'\n'
|
|
77
76
|
for i, t, v in self.get_tokens_unprocessed(text):
|
|
78
77
|
yield t, v
|
|
79
78
|
|
|
@@ -81,7 +80,7 @@ class RawTokenLexer(Lexer):
|
|
|
81
80
|
length = 0
|
|
82
81
|
for match in line_re.finditer(text):
|
|
83
82
|
try:
|
|
84
|
-
ttypestr, val = match.group().split(b
|
|
83
|
+
ttypestr, val = match.group().split(b'\t', 1)
|
|
85
84
|
except ValueError:
|
|
86
85
|
val = match.group().decode(self.encoding)
|
|
87
86
|
ttype = Error
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
The ``tests/examplefiles`` contains a few test files with data to be
|
|
35
35
|
parsed by these lexers.
|
|
36
36
|
|
|
37
|
-
:copyright: Copyright 2006-
|
|
37
|
+
:copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS.
|
|
38
38
|
:license: BSD, see LICENSE for details.
|
|
39
39
|
"""
|
|
40
40
|
|
|
@@ -42,15 +42,16 @@ import re
|
|
|
42
42
|
|
|
43
43
|
from pygments.lexer import Lexer, RegexLexer, do_insertions, bygroups
|
|
44
44
|
from pygments.token import Punctuation, \
|
|
45
|
-
|
|
45
|
+
Text, Comment, Operator, Keyword, Name, String, Number, Generic
|
|
46
46
|
from pygments.lexers import get_lexer_by_name, ClassNotFound
|
|
47
|
+
from pygments.util import iteritems
|
|
47
48
|
|
|
48
49
|
from pygments.lexers._postgres_builtins import KEYWORDS, DATATYPES, \
|
|
49
50
|
PSEUDO_TYPES, PLPGSQL_KEYWORDS
|
|
50
51
|
|
|
51
52
|
|
|
52
53
|
__all__ = ['PostgresLexer', 'PlPgsqlLexer', 'PostgresConsoleLexer',
|
|
53
|
-
'SqlLexer', 'MySqlLexer', 'SqliteConsoleLexer']
|
|
54
|
+
'SqlLexer', 'MySqlLexer', 'SqliteConsoleLexer', 'RqlLexer']
|
|
54
55
|
|
|
55
56
|
line_re = re.compile('.*?\n')
|
|
56
57
|
|
|
@@ -124,7 +125,7 @@ class PostgresLexer(PostgresBase, RegexLexer):
|
|
|
124
125
|
"""
|
|
125
126
|
Lexer for the PostgreSQL dialect of SQL.
|
|
126
127
|
|
|
127
|
-
|
|
128
|
+
.. versionadded:: 1.5
|
|
128
129
|
"""
|
|
129
130
|
|
|
130
131
|
name = 'PostgreSQL SQL dialect'
|
|
@@ -149,10 +150,10 @@ class PostgresLexer(PostgresBase, RegexLexer):
|
|
|
149
150
|
(r"(E|U&)?'(''|[^'])*'", String.Single),
|
|
150
151
|
(r'(U&)?"(""|[^"])*"', String.Name), # quoted identifier
|
|
151
152
|
(r'(?s)(\$[^\$]*\$)(.*?)(\1)', language_callback),
|
|
152
|
-
(r'[a-
|
|
153
|
+
(r'[a-z_]\w*', Name),
|
|
153
154
|
|
|
154
155
|
# psql variable in SQL
|
|
155
|
-
(r""":(['"]?)[a-z]
|
|
156
|
+
(r""":(['"]?)[a-z]\w*\b\1""", Name.Variable),
|
|
156
157
|
|
|
157
158
|
(r'[;:()\[\]\{\},\.]', Punctuation),
|
|
158
159
|
],
|
|
@@ -169,14 +170,14 @@ class PlPgsqlLexer(PostgresBase, RegexLexer):
|
|
|
169
170
|
"""
|
|
170
171
|
Handle the extra syntax in Pl/pgSQL language.
|
|
171
172
|
|
|
172
|
-
|
|
173
|
+
.. versionadded:: 1.5
|
|
173
174
|
"""
|
|
174
175
|
name = 'PL/pgSQL'
|
|
175
176
|
aliases = ['plpgsql']
|
|
176
177
|
mimetypes = ['text/x-plpgsql']
|
|
177
178
|
|
|
178
179
|
flags = re.IGNORECASE
|
|
179
|
-
tokens = dict((k, l[:]) for (k, l) in PostgresLexer.tokens
|
|
180
|
+
tokens = dict((k, l[:]) for (k, l) in iteritems(PostgresLexer.tokens))
|
|
180
181
|
|
|
181
182
|
# extend the keywords list
|
|
182
183
|
for i, pattern in enumerate(tokens['root']):
|
|
@@ -191,10 +192,10 @@ class PlPgsqlLexer(PostgresBase, RegexLexer):
|
|
|
191
192
|
|
|
192
193
|
# Add specific PL/pgSQL rules (before the SQL ones)
|
|
193
194
|
tokens['root'][:0] = [
|
|
194
|
-
(r'\%[a-z]
|
|
195
|
+
(r'\%[a-z]\w*\b', Name.Builtin), # actually, a datatype
|
|
195
196
|
(r':=', Operator),
|
|
196
|
-
(r'\<\<[a-z]
|
|
197
|
-
(r'\#[a-z]
|
|
197
|
+
(r'\<\<[a-z]\w*\>\>', Name.Label),
|
|
198
|
+
(r'\#[a-z]\w*\b', Keyword.Pseudo), # #variable_conflict
|
|
198
199
|
]
|
|
199
200
|
|
|
200
201
|
|
|
@@ -210,7 +211,7 @@ class PsqlRegexLexer(PostgresBase, RegexLexer):
|
|
|
210
211
|
aliases = [] # not public
|
|
211
212
|
|
|
212
213
|
flags = re.IGNORECASE
|
|
213
|
-
tokens = dict((k, l[:]) for (k, l) in PostgresLexer.tokens
|
|
214
|
+
tokens = dict((k, l[:]) for (k, l) in iteritems(PostgresLexer.tokens))
|
|
214
215
|
|
|
215
216
|
tokens['root'].append(
|
|
216
217
|
(r'\\[^\s]+', Keyword.Pseudo, 'psql-command'))
|
|
@@ -218,7 +219,7 @@ class PsqlRegexLexer(PostgresBase, RegexLexer):
|
|
|
218
219
|
(r'\n', Text, 'root'),
|
|
219
220
|
(r'\s+', Text),
|
|
220
221
|
(r'\\[^\s]+', Keyword.Pseudo),
|
|
221
|
-
(r""":(['"]?)[a-z]
|
|
222
|
+
(r""":(['"]?)[a-z]\w*\b\1""", Name.Variable),
|
|
222
223
|
(r"'(''|[^'])*'", String.Single),
|
|
223
224
|
(r"`([^`])*`", String.Backtick),
|
|
224
225
|
(r"[^\s]+", String.Symbol),
|
|
@@ -244,19 +245,20 @@ class lookahead(object):
|
|
|
244
245
|
def send(self, i):
|
|
245
246
|
self._nextitem = i
|
|
246
247
|
return i
|
|
247
|
-
def
|
|
248
|
+
def __next__(self):
|
|
248
249
|
if self._nextitem is not None:
|
|
249
250
|
ni = self._nextitem
|
|
250
251
|
self._nextitem = None
|
|
251
252
|
return ni
|
|
252
|
-
return self.iter
|
|
253
|
+
return next(self.iter)
|
|
254
|
+
next = __next__
|
|
253
255
|
|
|
254
256
|
|
|
255
257
|
class PostgresConsoleLexer(Lexer):
|
|
256
258
|
"""
|
|
257
259
|
Lexer for psql sessions.
|
|
258
260
|
|
|
259
|
-
|
|
261
|
+
.. versionadded:: 1.5
|
|
260
262
|
"""
|
|
261
263
|
|
|
262
264
|
name = 'PostgreSQL console (psql)'
|
|
@@ -277,7 +279,7 @@ class PostgresConsoleLexer(Lexer):
|
|
|
277
279
|
insertions = []
|
|
278
280
|
while 1:
|
|
279
281
|
try:
|
|
280
|
-
line =
|
|
282
|
+
line = next(lines)
|
|
281
283
|
except StopIteration:
|
|
282
284
|
# allow the emission of partially collected items
|
|
283
285
|
# the repl loop will be broken below
|
|
@@ -314,7 +316,7 @@ class PostgresConsoleLexer(Lexer):
|
|
|
314
316
|
# Emit the output lines
|
|
315
317
|
out_token = Generic.Output
|
|
316
318
|
while 1:
|
|
317
|
-
line =
|
|
319
|
+
line = next(lines)
|
|
318
320
|
mprompt = re_prompt.match(line)
|
|
319
321
|
if mprompt is not None:
|
|
320
322
|
# push the line back to have it processed by the prompt
|
|
@@ -433,7 +435,7 @@ class SqlLexer(RegexLexer):
|
|
|
433
435
|
# TODO: Backslash escapes?
|
|
434
436
|
(r"'(''|[^'])*'", String.Single),
|
|
435
437
|
(r'"(""|[^"])*"', String.Symbol), # not a real string literal in ANSI SQL
|
|
436
|
-
(r'[a-
|
|
438
|
+
(r'[a-z_]\w*', Name),
|
|
437
439
|
(r'[;:()\[\],\.]', Punctuation)
|
|
438
440
|
],
|
|
439
441
|
'multiline-comments': [
|
|
@@ -504,10 +506,10 @@ class MySqlLexer(RegexLexer):
|
|
|
504
506
|
# TODO: this list is not complete
|
|
505
507
|
(r'\b(auto_increment|engine|charset|tables)\b', Keyword.Pseudo),
|
|
506
508
|
(r'(true|false|null)', Name.Constant),
|
|
507
|
-
(r'([a-
|
|
509
|
+
(r'([a-z_]\w*)(\s*)(\()',
|
|
508
510
|
bygroups(Name.Function, Text, Punctuation)),
|
|
509
|
-
(r'[a-
|
|
510
|
-
(r'@[
|
|
511
|
+
(r'[a-z_]\w*', Name),
|
|
512
|
+
(r'@[a-z0-9]*[._]*[a-z0-9]*', Name.Variable),
|
|
511
513
|
(r'[;:()\[\],\.]', Punctuation)
|
|
512
514
|
],
|
|
513
515
|
'multiline-comments': [
|
|
@@ -523,7 +525,7 @@ class SqliteConsoleLexer(Lexer):
|
|
|
523
525
|
"""
|
|
524
526
|
Lexer for example sessions using sqlite3.
|
|
525
527
|
|
|
526
|
-
|
|
528
|
+
.. versionadded:: 0.11
|
|
527
529
|
"""
|
|
528
530
|
|
|
529
531
|
name = 'sqlite3con'
|
|
@@ -557,3 +559,34 @@ class SqliteConsoleLexer(Lexer):
|
|
|
557
559
|
for item in do_insertions(insertions,
|
|
558
560
|
sql.get_tokens_unprocessed(curcode)):
|
|
559
561
|
yield item
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
class RqlLexer(RegexLexer):
|
|
565
|
+
"""
|
|
566
|
+
Lexer for Relation Query Language.
|
|
567
|
+
|
|
568
|
+
`RQL <http://www.logilab.org/project/rql>`_
|
|
569
|
+
|
|
570
|
+
.. versionadded:: 2.0
|
|
571
|
+
"""
|
|
572
|
+
name = 'RQL'
|
|
573
|
+
aliases = ['rql']
|
|
574
|
+
filenames = ['*.rql']
|
|
575
|
+
mimetypes = ['text/x-rql']
|
|
576
|
+
|
|
577
|
+
flags = re.IGNORECASE
|
|
578
|
+
tokens = {
|
|
579
|
+
'root': [
|
|
580
|
+
(r'\s+', Text),
|
|
581
|
+
(r'(DELETE|SET|INSERT|UNION|DISTINCT|WITH|WHERE|BEING|OR'
|
|
582
|
+
r'|AND|NOT|GROUPBY|HAVING|ORDERBY|ASC|DESC|LIMIT|OFFSET'
|
|
583
|
+
r'|TODAY|NOW|TRUE|FALSE|NULL|EXISTS)\b', Keyword),
|
|
584
|
+
(r'[+*/<>=%-]', Operator),
|
|
585
|
+
(r'(Any|is|instance_of|CWEType|CWRelation)\b', Name.Builtin),
|
|
586
|
+
(r'[0-9]+', Number.Integer),
|
|
587
|
+
(r'[A-Z_]\w*\??', Name),
|
|
588
|
+
(r"'(''|[^'])*'", String.Single),
|
|
589
|
+
(r'"(""|[^"])*"', String.Single),
|
|
590
|
+
(r'[;:()\[\],\.]', Punctuation)
|
|
591
|
+
],
|
|
592
|
+
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
Lexers for various template engines' markup.
|
|
7
7
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
8
|
+
:copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS.
|
|
9
9
|
:license: BSD, see LICENSE for details.
|
|
10
10
|
"""
|
|
11
11
|
|
|
@@ -16,10 +16,12 @@ from pygments.lexers.web import \
|
|
|
16
16
|
from pygments.lexers.agile import PythonLexer, PerlLexer
|
|
17
17
|
from pygments.lexers.compiled import JavaLexer
|
|
18
18
|
from pygments.lexers.jvm import TeaLangLexer
|
|
19
|
+
from pygments.lexers.text import YamlLexer
|
|
19
20
|
from pygments.lexer import Lexer, DelegatingLexer, RegexLexer, bygroups, \
|
|
20
|
-
include, using, this
|
|
21
|
+
include, using, this, default, combined
|
|
21
22
|
from pygments.token import Error, Punctuation, \
|
|
22
|
-
Text, Comment, Operator, Keyword, Name, String, Number, Other, Token
|
|
23
|
+
Text, Comment, Operator, Keyword, Name, String, Number, Other, Token, \
|
|
24
|
+
Whitespace
|
|
23
25
|
from pygments.util import html_doctype_matches, looks_like_xml
|
|
24
26
|
|
|
25
27
|
__all__ = ['HtmlPhpLexer', 'XmlPhpLexer', 'CssPhpLexer',
|
|
@@ -36,9 +38,11 @@ __all__ = ['HtmlPhpLexer', 'XmlPhpLexer', 'CssPhpLexer',
|
|
|
36
38
|
'MakoCssLexer', 'JspLexer', 'CheetahLexer', 'CheetahHtmlLexer',
|
|
37
39
|
'CheetahXmlLexer', 'CheetahJavascriptLexer', 'EvoqueLexer',
|
|
38
40
|
'EvoqueHtmlLexer', 'EvoqueXmlLexer', 'ColdfusionLexer',
|
|
39
|
-
'ColdfusionHtmlLexer', '
|
|
40
|
-
'
|
|
41
|
-
'
|
|
41
|
+
'ColdfusionHtmlLexer', 'ColdfusionCFCLexer', 'VelocityLexer',
|
|
42
|
+
'VelocityHtmlLexer', 'VelocityXmlLexer', 'SspLexer',
|
|
43
|
+
'TeaTemplateLexer', 'LassoHtmlLexer', 'LassoXmlLexer',
|
|
44
|
+
'LassoCssLexer', 'LassoJavascriptLexer', 'HandlebarsLexer',
|
|
45
|
+
'HandlebarsHtmlLexer', 'YamlJinjaLexer', 'LiquidLexer']
|
|
42
46
|
|
|
43
47
|
|
|
44
48
|
class ErbLexer(Lexer):
|
|
@@ -159,22 +163,22 @@ class SmartyLexer(RegexLexer):
|
|
|
159
163
|
(r'(\{php\})(.*?)(\{/php\})',
|
|
160
164
|
bygroups(Comment.Preproc, using(PhpLexer, startinline=True),
|
|
161
165
|
Comment.Preproc)),
|
|
162
|
-
(r'(\{)(/?[a-zA-Z_]
|
|
166
|
+
(r'(\{)(/?[a-zA-Z_]\w*)(\s*)',
|
|
163
167
|
bygroups(Comment.Preproc, Name.Function, Text), 'smarty'),
|
|
164
168
|
(r'\{', Comment.Preproc, 'smarty')
|
|
165
169
|
],
|
|
166
170
|
'smarty': [
|
|
167
171
|
(r'\s+', Text),
|
|
168
172
|
(r'\}', Comment.Preproc, '#pop'),
|
|
169
|
-
(r'#[a-zA-Z_]
|
|
170
|
-
(r'\$[a-zA-Z_]
|
|
173
|
+
(r'#[a-zA-Z_]\w*#', Name.Variable),
|
|
174
|
+
(r'\$[a-zA-Z_]\w*(\.\w+)*', Name.Variable),
|
|
171
175
|
(r'[~!%^&*()+=|\[\]:;,.<>/?{}@-]', Operator),
|
|
172
176
|
(r'(true|false|null)\b', Keyword.Constant),
|
|
173
177
|
(r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|"
|
|
174
178
|
r"0[xX][0-9a-fA-F]+[Ll]?", Number),
|
|
175
179
|
(r'"(\\\\|\\"|[^"])*"', String.Double),
|
|
176
180
|
(r"'(\\\\|\\'|[^'])*'", String.Single),
|
|
177
|
-
(r'[a-zA-Z_]
|
|
181
|
+
(r'[a-zA-Z_]\w*', Name.Attribute)
|
|
178
182
|
]
|
|
179
183
|
}
|
|
180
184
|
|
|
@@ -205,7 +209,7 @@ class VelocityLexer(RegexLexer):
|
|
|
205
209
|
|
|
206
210
|
flags = re.MULTILINE | re.DOTALL
|
|
207
211
|
|
|
208
|
-
identifier = r'[a-zA-Z_]
|
|
212
|
+
identifier = r'[a-zA-Z_]\w*'
|
|
209
213
|
|
|
210
214
|
tokens = {
|
|
211
215
|
'root': [
|
|
@@ -227,7 +231,7 @@ class VelocityLexer(RegexLexer):
|
|
|
227
231
|
(r'(\.)(' + identifier + r')',
|
|
228
232
|
bygroups(Punctuation, Name.Variable), '#push'),
|
|
229
233
|
(r'\}', Punctuation, '#pop'),
|
|
230
|
-
(
|
|
234
|
+
default('#pop')
|
|
231
235
|
],
|
|
232
236
|
'directiveparams': [
|
|
233
237
|
(r'(&&|\|\||==?|!=?|[-<>+*%&\|\^/])|\b(eq|ne|gt|lt|ge|le|not|in)\b',
|
|
@@ -251,7 +255,9 @@ class VelocityLexer(RegexLexer):
|
|
|
251
255
|
(r"\b[0-9]+\b", Number),
|
|
252
256
|
(r'(true|false|null)\b', Keyword.Constant),
|
|
253
257
|
(r'\(', Punctuation, '#push'),
|
|
254
|
-
(r'\)', Punctuation, '#pop')
|
|
258
|
+
(r'\)', Punctuation, '#pop'),
|
|
259
|
+
(r'\[', Punctuation, '#push'),
|
|
260
|
+
(r'\]', Punctuation, '#pop'),
|
|
255
261
|
]
|
|
256
262
|
}
|
|
257
263
|
|
|
@@ -263,8 +269,8 @@ class VelocityLexer(RegexLexer):
|
|
|
263
269
|
rv += 0.15
|
|
264
270
|
if re.search(r'#\{?foreach\}?\(.+?\).*?#\{?end\}?', text):
|
|
265
271
|
rv += 0.15
|
|
266
|
-
if re.search(r'\$\{?[a-zA-Z_]
|
|
267
|
-
r'(
|
|
272
|
+
if re.search(r'\$\{?[a-zA-Z_]\w*(\([^)]*\))?'
|
|
273
|
+
r'(\.\w+(\([^)]*\))?)*\}?', text):
|
|
268
274
|
rv += 0.01
|
|
269
275
|
return rv
|
|
270
276
|
|
|
@@ -343,25 +349,25 @@ class DjangoLexer(RegexLexer):
|
|
|
343
349
|
Text, Comment.Preproc, Text, Keyword, Text,
|
|
344
350
|
Comment.Preproc)),
|
|
345
351
|
# filter blocks
|
|
346
|
-
(r'(\{%)(-?\s*)(filter)(\s+)([a-zA-Z_]
|
|
352
|
+
(r'(\{%)(-?\s*)(filter)(\s+)([a-zA-Z_]\w*)',
|
|
347
353
|
bygroups(Comment.Preproc, Text, Keyword, Text, Name.Function),
|
|
348
354
|
'block'),
|
|
349
|
-
(r'(\{%)(-?\s*)([a-zA-Z_]
|
|
355
|
+
(r'(\{%)(-?\s*)([a-zA-Z_]\w*)',
|
|
350
356
|
bygroups(Comment.Preproc, Text, Keyword), 'block'),
|
|
351
357
|
(r'\{', Other)
|
|
352
358
|
],
|
|
353
359
|
'varnames': [
|
|
354
|
-
(r'(\|)(\s*)([a-zA-Z_]
|
|
360
|
+
(r'(\|)(\s*)([a-zA-Z_]\w*)',
|
|
355
361
|
bygroups(Operator, Text, Name.Function)),
|
|
356
|
-
(r'(is)(\s+)(not)?(\s+)?([a-zA-Z_]
|
|
362
|
+
(r'(is)(\s+)(not)?(\s+)?([a-zA-Z_]\w*)',
|
|
357
363
|
bygroups(Keyword, Text, Keyword, Text, Name.Function)),
|
|
358
364
|
(r'(_|true|false|none|True|False|None)\b', Keyword.Pseudo),
|
|
359
365
|
(r'(in|as|reversed|recursive|not|and|or|is|if|else|import|'
|
|
360
366
|
r'with(?:(?:out)?\s*context)?|scoped|ignore\s+missing)\b',
|
|
361
367
|
Keyword),
|
|
362
368
|
(r'(loop|block|super|forloop)\b', Name.Builtin),
|
|
363
|
-
(r'[a-zA-Z][
|
|
364
|
-
(r'
|
|
369
|
+
(r'[a-zA-Z][\w-]*', Name.Variable),
|
|
370
|
+
(r'\.\w+', Name.Variable),
|
|
365
371
|
(r':?"(\\\\|\\"|[^"])*"', String.Double),
|
|
366
372
|
(r":?'(\\\\|\\'|[^'])*'", String.Single),
|
|
367
373
|
(r'([{}()\[\]+\-*/,:~]|[><=]=?)', Operator),
|
|
@@ -397,7 +403,7 @@ class MyghtyLexer(RegexLexer):
|
|
|
397
403
|
Generic `myghty templates`_ lexer. Code that isn't Myghty
|
|
398
404
|
markup is yielded as `Token.Other`.
|
|
399
405
|
|
|
400
|
-
|
|
406
|
+
.. versionadded:: 0.6
|
|
401
407
|
|
|
402
408
|
.. _myghty templates: http://www.myghty.org/
|
|
403
409
|
"""
|
|
@@ -445,7 +451,7 @@ class MyghtyHtmlLexer(DelegatingLexer):
|
|
|
445
451
|
Subclass of the `MyghtyLexer` that highlights unlexer data
|
|
446
452
|
with the `HtmlLexer`.
|
|
447
453
|
|
|
448
|
-
|
|
454
|
+
.. versionadded:: 0.6
|
|
449
455
|
"""
|
|
450
456
|
|
|
451
457
|
name = 'HTML+Myghty'
|
|
@@ -462,7 +468,7 @@ class MyghtyXmlLexer(DelegatingLexer):
|
|
|
462
468
|
Subclass of the `MyghtyLexer` that highlights unlexer data
|
|
463
469
|
with the `XmlLexer`.
|
|
464
470
|
|
|
465
|
-
|
|
471
|
+
.. versionadded:: 0.6
|
|
466
472
|
"""
|
|
467
473
|
|
|
468
474
|
name = 'XML+Myghty'
|
|
@@ -479,7 +485,7 @@ class MyghtyJavascriptLexer(DelegatingLexer):
|
|
|
479
485
|
Subclass of the `MyghtyLexer` that highlights unlexer data
|
|
480
486
|
with the `JavascriptLexer`.
|
|
481
487
|
|
|
482
|
-
|
|
488
|
+
.. versionadded:: 0.6
|
|
483
489
|
"""
|
|
484
490
|
|
|
485
491
|
name = 'JavaScript+Myghty'
|
|
@@ -498,7 +504,7 @@ class MyghtyCssLexer(DelegatingLexer):
|
|
|
498
504
|
Subclass of the `MyghtyLexer` that highlights unlexer data
|
|
499
505
|
with the `CssLexer`.
|
|
500
506
|
|
|
501
|
-
|
|
507
|
+
.. versionadded:: 0.6
|
|
502
508
|
"""
|
|
503
509
|
|
|
504
510
|
name = 'CSS+Myghty'
|
|
@@ -517,7 +523,7 @@ class MasonLexer(RegexLexer):
|
|
|
517
523
|
|
|
518
524
|
.. _mason templates: http://www.masonhq.com/
|
|
519
525
|
|
|
520
|
-
|
|
526
|
+
.. versionadded:: 1.4
|
|
521
527
|
"""
|
|
522
528
|
name = 'Mason'
|
|
523
529
|
aliases = ['mason']
|
|
@@ -570,7 +576,7 @@ class MakoLexer(RegexLexer):
|
|
|
570
576
|
Generic `mako templates`_ lexer. Code that isn't Mako
|
|
571
577
|
markup is yielded as `Token.Other`.
|
|
572
578
|
|
|
573
|
-
|
|
579
|
+
.. versionadded:: 0.7
|
|
574
580
|
|
|
575
581
|
.. _mako templates: http://www.makotemplates.org/
|
|
576
582
|
"""
|
|
@@ -638,7 +644,7 @@ class MakoHtmlLexer(DelegatingLexer):
|
|
|
638
644
|
Subclass of the `MakoLexer` that highlights unlexed data
|
|
639
645
|
with the `HtmlLexer`.
|
|
640
646
|
|
|
641
|
-
|
|
647
|
+
.. versionadded:: 0.7
|
|
642
648
|
"""
|
|
643
649
|
|
|
644
650
|
name = 'HTML+Mako'
|
|
@@ -654,7 +660,7 @@ class MakoXmlLexer(DelegatingLexer):
|
|
|
654
660
|
Subclass of the `MakoLexer` that highlights unlexer data
|
|
655
661
|
with the `XmlLexer`.
|
|
656
662
|
|
|
657
|
-
|
|
663
|
+
.. versionadded:: 0.7
|
|
658
664
|
"""
|
|
659
665
|
|
|
660
666
|
name = 'XML+Mako'
|
|
@@ -670,7 +676,7 @@ class MakoJavascriptLexer(DelegatingLexer):
|
|
|
670
676
|
Subclass of the `MakoLexer` that highlights unlexer data
|
|
671
677
|
with the `JavascriptLexer`.
|
|
672
678
|
|
|
673
|
-
|
|
679
|
+
.. versionadded:: 0.7
|
|
674
680
|
"""
|
|
675
681
|
|
|
676
682
|
name = 'JavaScript+Mako'
|
|
@@ -688,7 +694,7 @@ class MakoCssLexer(DelegatingLexer):
|
|
|
688
694
|
Subclass of the `MakoLexer` that highlights unlexer data
|
|
689
695
|
with the `CssLexer`.
|
|
690
696
|
|
|
691
|
-
|
|
697
|
+
.. versionadded:: 0.7
|
|
692
698
|
"""
|
|
693
699
|
|
|
694
700
|
name = 'CSS+Mako'
|
|
@@ -741,7 +747,7 @@ class CheetahLexer(RegexLexer):
|
|
|
741
747
|
(bygroups(Comment.Preproc, using(CheetahPythonLexer),
|
|
742
748
|
Comment.Preproc))),
|
|
743
749
|
# TODO support other Python syntax like $foo['bar']
|
|
744
|
-
(r'(\$)([a-zA-Z_][
|
|
750
|
+
(r'(\$)([a-zA-Z_][\w\.]*\w)',
|
|
745
751
|
bygroups(Comment.Preproc, using(CheetahPythonLexer))),
|
|
746
752
|
(r'(\$\{!?)(.*?)(\})(?s)',
|
|
747
753
|
bygroups(Comment.Preproc, using(CheetahPythonLexer),
|
|
@@ -749,7 +755,7 @@ class CheetahLexer(RegexLexer):
|
|
|
749
755
|
(r'''(?sx)
|
|
750
756
|
(.+?) # anything, followed by:
|
|
751
757
|
(?:
|
|
752
|
-
(
|
|
758
|
+
(?=\#[#a-zA-Z]*) | # an eval comment
|
|
753
759
|
(?=\$[a-zA-Z_{]) | # a substitution
|
|
754
760
|
\Z # end of string
|
|
755
761
|
)
|
|
@@ -839,7 +845,7 @@ class GenshiTextLexer(RegexLexer):
|
|
|
839
845
|
'variable': [
|
|
840
846
|
(r'(?<!\$)(\$\{)(.+?)(\})',
|
|
841
847
|
bygroups(Comment.Preproc, using(PythonLexer), Comment.Preproc)),
|
|
842
|
-
(r'(?<!\$)(\$)([a-zA-Z_][
|
|
848
|
+
(r'(?<!\$)(\$)([a-zA-Z_][\w\.]*)',
|
|
843
849
|
Name.Variable),
|
|
844
850
|
]
|
|
845
851
|
}
|
|
@@ -867,7 +873,7 @@ class GenshiMarkupLexer(RegexLexer):
|
|
|
867
873
|
],
|
|
868
874
|
'pytag': [
|
|
869
875
|
(r'\s+', Text),
|
|
870
|
-
(r'[
|
|
876
|
+
(r'[\w:-]+\s*=', Name.Attribute, 'pyattr'),
|
|
871
877
|
(r'/?\s*>', Name.Tag, '#pop'),
|
|
872
878
|
],
|
|
873
879
|
'pyattr': [
|
|
@@ -877,8 +883,8 @@ class GenshiMarkupLexer(RegexLexer):
|
|
|
877
883
|
],
|
|
878
884
|
'tag': [
|
|
879
885
|
(r'\s+', Text),
|
|
880
|
-
(r'py:[
|
|
881
|
-
(r'[
|
|
886
|
+
(r'py:[\w-]+\s*=', Name.Attribute, 'pyattr'),
|
|
887
|
+
(r'[\w:-]+\s*=', Name.Attribute, 'attr'),
|
|
882
888
|
(r'/?\s*>', Name.Tag, '#pop'),
|
|
883
889
|
],
|
|
884
890
|
'attr': [
|
|
@@ -903,7 +909,7 @@ class GenshiMarkupLexer(RegexLexer):
|
|
|
903
909
|
'variable': [
|
|
904
910
|
(r'(?<!\$)(\$\{)(.+?)(\})',
|
|
905
911
|
bygroups(Comment.Preproc, using(PythonLexer), Comment.Preproc)),
|
|
906
|
-
(r'(?<!\$)(\$)([a-zA-Z_][
|
|
912
|
+
(r'(?<!\$)(\$)([a-zA-Z_][\w\.]*)',
|
|
907
913
|
Name.Variable),
|
|
908
914
|
]
|
|
909
915
|
}
|
|
@@ -1341,7 +1347,7 @@ class JspRootLexer(RegexLexer):
|
|
|
1341
1347
|
Base for the `JspLexer`. Yields `Token.Other` for area outside of
|
|
1342
1348
|
JSP tags.
|
|
1343
1349
|
|
|
1344
|
-
|
|
1350
|
+
.. versionadded:: 0.7
|
|
1345
1351
|
"""
|
|
1346
1352
|
|
|
1347
1353
|
tokens = {
|
|
@@ -1365,7 +1371,7 @@ class JspLexer(DelegatingLexer):
|
|
|
1365
1371
|
"""
|
|
1366
1372
|
Lexer for Java Server Pages.
|
|
1367
1373
|
|
|
1368
|
-
|
|
1374
|
+
.. versionadded:: 0.7
|
|
1369
1375
|
"""
|
|
1370
1376
|
name = 'Java Server Page'
|
|
1371
1377
|
aliases = ['jsp']
|
|
@@ -1388,7 +1394,7 @@ class EvoqueLexer(RegexLexer):
|
|
|
1388
1394
|
"""
|
|
1389
1395
|
For files using the Evoque templating system.
|
|
1390
1396
|
|
|
1391
|
-
|
|
1397
|
+
.. versionadded:: 1.1
|
|
1392
1398
|
"""
|
|
1393
1399
|
name = 'Evoque'
|
|
1394
1400
|
aliases = ['evoque']
|
|
@@ -1441,7 +1447,7 @@ class EvoqueHtmlLexer(DelegatingLexer):
|
|
|
1441
1447
|
Subclass of the `EvoqueLexer` that highlights unlexed data with the
|
|
1442
1448
|
`HtmlLexer`.
|
|
1443
1449
|
|
|
1444
|
-
|
|
1450
|
+
.. versionadded:: 1.1
|
|
1445
1451
|
"""
|
|
1446
1452
|
name = 'HTML+Evoque'
|
|
1447
1453
|
aliases = ['html+evoque']
|
|
@@ -1457,7 +1463,7 @@ class EvoqueXmlLexer(DelegatingLexer):
|
|
|
1457
1463
|
Subclass of the `EvoqueLexer` that highlights unlexed data with the
|
|
1458
1464
|
`XmlLexer`.
|
|
1459
1465
|
|
|
1460
|
-
|
|
1466
|
+
.. versionadded:: 1.1
|
|
1461
1467
|
"""
|
|
1462
1468
|
name = 'XML+Evoque'
|
|
1463
1469
|
aliases = ['xml+evoque']
|
|
@@ -1476,26 +1482,33 @@ class ColdfusionLexer(RegexLexer):
|
|
|
1476
1482
|
aliases = ['cfs']
|
|
1477
1483
|
filenames = []
|
|
1478
1484
|
mimetypes = []
|
|
1479
|
-
flags = re.IGNORECASE
|
|
1485
|
+
flags = re.IGNORECASE
|
|
1480
1486
|
|
|
1481
1487
|
tokens = {
|
|
1482
1488
|
'root': [
|
|
1483
|
-
(r'
|
|
1489
|
+
(r'//.*?\n', Comment.Single),
|
|
1490
|
+
(r'/\*(?:.|\n)*?\*/', Comment.Multiline),
|
|
1484
1491
|
(r'\+\+|--', Operator),
|
|
1485
1492
|
(r'[-+*/^&=!]', Operator),
|
|
1486
|
-
(r'
|
|
1493
|
+
(r'<=|>=|<|>|==', Operator),
|
|
1487
1494
|
(r'mod\b', Operator),
|
|
1488
1495
|
(r'(eq|lt|gt|lte|gte|not|is|and|or)\b', Operator),
|
|
1489
1496
|
(r'\|\||&&', Operator),
|
|
1497
|
+
(r'\?', Operator),
|
|
1490
1498
|
(r'"', String.Double, 'string'),
|
|
1491
1499
|
# There is a special rule for allowing html in single quoted
|
|
1492
1500
|
# strings, evidently.
|
|
1493
1501
|
(r"'.*?'", String.Single),
|
|
1494
1502
|
(r'\d+', Number),
|
|
1495
|
-
(r'(if|else|len|var|
|
|
1496
|
-
|
|
1503
|
+
(r'(if|else|len|var|xml|default|break|switch|component|property|function|do|'
|
|
1504
|
+
r'try|catch|in|continue|for|return|while|required|any|array|binary|boolean|'
|
|
1505
|
+
r'component|date|guid|numeric|query|string|struct|uuid|case)\b', Keyword),
|
|
1506
|
+
(r'(true|false|null)\b', Keyword.Constant),
|
|
1507
|
+
(r'(application|session|client|cookie|super|this|variables|arguments)\b',
|
|
1508
|
+
Name.Constant),
|
|
1509
|
+
(r'([a-z_$][\w.]*)(\s*)(\()',
|
|
1497
1510
|
bygroups(Name.Function, Text, Punctuation)),
|
|
1498
|
-
(r'[
|
|
1511
|
+
(r'[a-z_$][\w.]*', Name.Variable),
|
|
1499
1512
|
(r'[()\[\]{};:,.\\]', Punctuation),
|
|
1500
1513
|
(r'\s+', Text),
|
|
1501
1514
|
],
|
|
@@ -1525,7 +1538,7 @@ class ColdfusionMarkupLexer(RegexLexer):
|
|
|
1525
1538
|
(r'<[^<>]*', Other),
|
|
1526
1539
|
],
|
|
1527
1540
|
'tags': [
|
|
1528
|
-
(r'
|
|
1541
|
+
(r'<!---', Comment.Multiline, 'cfcomment'),
|
|
1529
1542
|
(r'(?s)<!--.*?-->', Comment),
|
|
1530
1543
|
(r'<cfoutput.*?>', Name.Builtin, 'cfoutput'),
|
|
1531
1544
|
(r'(?s)(<cfscript.*?>)(.+?)(</cfscript.*?>)',
|
|
@@ -1547,6 +1560,11 @@ class ColdfusionMarkupLexer(RegexLexer):
|
|
|
1547
1560
|
(r'(?s)<[^<>]*', Other),
|
|
1548
1561
|
(r'#', Other),
|
|
1549
1562
|
],
|
|
1563
|
+
'cfcomment': [
|
|
1564
|
+
(r'<!---', Comment.Multiline, '#push'),
|
|
1565
|
+
(r'--->', Comment.Multiline, '#pop'),
|
|
1566
|
+
(r'([^<-]|<(?!!---)|-(?!-->))+', Comment.Multiline),
|
|
1567
|
+
],
|
|
1550
1568
|
}
|
|
1551
1569
|
|
|
1552
1570
|
|
|
@@ -1556,7 +1574,7 @@ class ColdfusionHtmlLexer(DelegatingLexer):
|
|
|
1556
1574
|
"""
|
|
1557
1575
|
name = 'Coldfusion HTML'
|
|
1558
1576
|
aliases = ['cfm']
|
|
1559
|
-
filenames = ['*.cfm', '*.cfml'
|
|
1577
|
+
filenames = ['*.cfm', '*.cfml']
|
|
1560
1578
|
mimetypes = ['application/x-coldfusion']
|
|
1561
1579
|
|
|
1562
1580
|
def __init__(self, **options):
|
|
@@ -1564,11 +1582,25 @@ class ColdfusionHtmlLexer(DelegatingLexer):
|
|
|
1564
1582
|
**options)
|
|
1565
1583
|
|
|
1566
1584
|
|
|
1585
|
+
class ColdfusionCFCLexer(DelegatingLexer):
|
|
1586
|
+
"""
|
|
1587
|
+
Coldfusion markup/script components
|
|
1588
|
+
"""
|
|
1589
|
+
name = 'Coldfusion CFC'
|
|
1590
|
+
aliases = ['cfc']
|
|
1591
|
+
filenames = ['*.cfc']
|
|
1592
|
+
mimetypes = []
|
|
1593
|
+
|
|
1594
|
+
def __init__(self, **options):
|
|
1595
|
+
super(ColdfusionCFCLexer, self).__init__(ColdfusionHtmlLexer, ColdfusionLexer,
|
|
1596
|
+
**options)
|
|
1597
|
+
|
|
1598
|
+
|
|
1567
1599
|
class SspLexer(DelegatingLexer):
|
|
1568
1600
|
"""
|
|
1569
1601
|
Lexer for Scalate Server Pages.
|
|
1570
1602
|
|
|
1571
|
-
|
|
1603
|
+
.. versionadded:: 1.4
|
|
1572
1604
|
"""
|
|
1573
1605
|
name = 'Scalate Server Page'
|
|
1574
1606
|
aliases = ['ssp']
|
|
@@ -1594,7 +1626,7 @@ class TeaTemplateRootLexer(RegexLexer):
|
|
|
1594
1626
|
Base for the `TeaTemplateLexer`. Yields `Token.Other` for area outside of
|
|
1595
1627
|
code blocks.
|
|
1596
1628
|
|
|
1597
|
-
|
|
1629
|
+
.. versionadded:: 1.5
|
|
1598
1630
|
"""
|
|
1599
1631
|
|
|
1600
1632
|
tokens = {
|
|
@@ -1615,7 +1647,7 @@ class TeaTemplateLexer(DelegatingLexer):
|
|
|
1615
1647
|
"""
|
|
1616
1648
|
Lexer for `Tea Templates <http://teatrove.org/>`_.
|
|
1617
1649
|
|
|
1618
|
-
|
|
1650
|
+
.. versionadded:: 1.5
|
|
1619
1651
|
"""
|
|
1620
1652
|
name = 'Tea'
|
|
1621
1653
|
aliases = ['tea']
|
|
@@ -1642,7 +1674,7 @@ class LassoHtmlLexer(DelegatingLexer):
|
|
|
1642
1674
|
|
|
1643
1675
|
Nested JavaScript and CSS is also highlighted.
|
|
1644
1676
|
|
|
1645
|
-
|
|
1677
|
+
.. versionadded:: 1.6
|
|
1646
1678
|
"""
|
|
1647
1679
|
|
|
1648
1680
|
name = 'HTML+Lasso'
|
|
@@ -1670,7 +1702,7 @@ class LassoXmlLexer(DelegatingLexer):
|
|
|
1670
1702
|
Subclass of the `LassoLexer` which highlights unhandled data with the
|
|
1671
1703
|
`XmlLexer`.
|
|
1672
1704
|
|
|
1673
|
-
|
|
1705
|
+
.. versionadded:: 1.6
|
|
1674
1706
|
"""
|
|
1675
1707
|
|
|
1676
1708
|
name = 'XML+Lasso'
|
|
@@ -1694,7 +1726,7 @@ class LassoCssLexer(DelegatingLexer):
|
|
|
1694
1726
|
Subclass of the `LassoLexer` which highlights unhandled data with the
|
|
1695
1727
|
`CssLexer`.
|
|
1696
1728
|
|
|
1697
|
-
|
|
1729
|
+
.. versionadded:: 1.6
|
|
1698
1730
|
"""
|
|
1699
1731
|
|
|
1700
1732
|
name = 'CSS+Lasso'
|
|
@@ -1720,7 +1752,7 @@ class LassoJavascriptLexer(DelegatingLexer):
|
|
|
1720
1752
|
Subclass of the `LassoLexer` which highlights unhandled data with the
|
|
1721
1753
|
`JavascriptLexer`.
|
|
1722
1754
|
|
|
1723
|
-
|
|
1755
|
+
.. versionadded:: 1.6
|
|
1724
1756
|
"""
|
|
1725
1757
|
|
|
1726
1758
|
name = 'JavaScript+Lasso'
|
|
@@ -1740,3 +1772,289 @@ class LassoJavascriptLexer(DelegatingLexer):
|
|
|
1740
1772
|
if 'function' in text:
|
|
1741
1773
|
rv += 0.2
|
|
1742
1774
|
return rv
|
|
1775
|
+
|
|
1776
|
+
class HandlebarsLexer(RegexLexer):
|
|
1777
|
+
"""
|
|
1778
|
+
Generic `handlebars <http://handlebarsjs.com/>` template lexer.
|
|
1779
|
+
|
|
1780
|
+
Highlights only the Handlebars template tags (stuff between `{{` and `}}`).
|
|
1781
|
+
Everything else is left for a delegating lexer.
|
|
1782
|
+
"""
|
|
1783
|
+
|
|
1784
|
+
name = "Handlebars"
|
|
1785
|
+
aliases = ['handlebars']
|
|
1786
|
+
|
|
1787
|
+
tokens = {
|
|
1788
|
+
'root': [
|
|
1789
|
+
(r'[^{]+', Other),
|
|
1790
|
+
|
|
1791
|
+
(r'{{!.*}}', Comment),
|
|
1792
|
+
|
|
1793
|
+
(r'({{{)(\s*)', bygroups(Comment.Special, Text), 'tag'),
|
|
1794
|
+
(r'({{)(\s*)', bygroups(Comment.Preproc, Text), 'tag'),
|
|
1795
|
+
],
|
|
1796
|
+
|
|
1797
|
+
'tag': [
|
|
1798
|
+
(r'\s+', Text),
|
|
1799
|
+
(r'\}\}\}', Comment.Special, '#pop'),
|
|
1800
|
+
(r'\}\}', Comment.Preproc, '#pop'),
|
|
1801
|
+
|
|
1802
|
+
# Handlebars
|
|
1803
|
+
(r'([\#/]*)(each|if|unless|else|with|log|in)', bygroups(Keyword,
|
|
1804
|
+
Keyword)),
|
|
1805
|
+
|
|
1806
|
+
# General {{#block}}
|
|
1807
|
+
(r'([\#/])(\w+)', bygroups(Name.Function, Name.Function)),
|
|
1808
|
+
|
|
1809
|
+
# {{opt=something}}
|
|
1810
|
+
(r'(\w+)(=)', bygroups(Name.Attribute, Operator)),
|
|
1811
|
+
|
|
1812
|
+
# borrowed from DjangoLexer
|
|
1813
|
+
(r':?"(\\\\|\\"|[^"])*"', String.Double),
|
|
1814
|
+
(r":?'(\\\\|\\'|[^'])*'", String.Single),
|
|
1815
|
+
(r'[a-zA-Z][\w-]*', Name.Variable),
|
|
1816
|
+
(r'\.\w+', Name.Variable),
|
|
1817
|
+
(r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|"
|
|
1818
|
+
r"0[xX][0-9a-fA-F]+[Ll]?", Number),
|
|
1819
|
+
]
|
|
1820
|
+
}
|
|
1821
|
+
|
|
1822
|
+
|
|
1823
|
+
class HandlebarsHtmlLexer(DelegatingLexer):
|
|
1824
|
+
"""
|
|
1825
|
+
Subclass of the `HandlebarsLexer` that highlights unlexed data with the
|
|
1826
|
+
`HtmlLexer`.
|
|
1827
|
+
"""
|
|
1828
|
+
|
|
1829
|
+
name = "HTML+Handlebars"
|
|
1830
|
+
aliases = ["html+handlebars"]
|
|
1831
|
+
filenames = ['*.handlebars', '*.hbs']
|
|
1832
|
+
mimetypes = ['text/html+handlebars', 'text/x-handlebars-template']
|
|
1833
|
+
|
|
1834
|
+
def __init__(self, **options):
|
|
1835
|
+
super(HandlebarsHtmlLexer, self).__init__(HtmlLexer, HandlebarsLexer, **options)
|
|
1836
|
+
|
|
1837
|
+
|
|
1838
|
+
class YamlJinjaLexer(DelegatingLexer):
|
|
1839
|
+
"""
|
|
1840
|
+
Subclass of the `DjangoLexer` that highighlights unlexed data with the
|
|
1841
|
+
`YamlLexer`.
|
|
1842
|
+
|
|
1843
|
+
Commonly used in Saltstack salt states.
|
|
1844
|
+
|
|
1845
|
+
.. versionadded:: 2.0
|
|
1846
|
+
"""
|
|
1847
|
+
|
|
1848
|
+
name = 'YAML+Jinja'
|
|
1849
|
+
aliases = ['yaml+jinja', 'salt', 'sls']
|
|
1850
|
+
filenames = ['*.sls']
|
|
1851
|
+
mimetypes = ['text/x-yaml+jinja', 'text/x-sls']
|
|
1852
|
+
|
|
1853
|
+
def __init__(self, **options):
|
|
1854
|
+
super(YamlJinjaLexer, self).__init__(YamlLexer, DjangoLexer, **options)
|
|
1855
|
+
|
|
1856
|
+
|
|
1857
|
+
class LiquidLexer(RegexLexer):
|
|
1858
|
+
"""
|
|
1859
|
+
Lexer for `Liquid templates
|
|
1860
|
+
<http://www.rubydoc.info/github/Shopify/liquid>`_.
|
|
1861
|
+
|
|
1862
|
+
.. versionadded:: 2.0
|
|
1863
|
+
"""
|
|
1864
|
+
name = 'liquid'
|
|
1865
|
+
aliases = ['liquid']
|
|
1866
|
+
filenames = ['*.liquid']
|
|
1867
|
+
|
|
1868
|
+
tokens = {
|
|
1869
|
+
'root': [
|
|
1870
|
+
(r'[^{]+', Text),
|
|
1871
|
+
# tags and block tags
|
|
1872
|
+
(r'(\{%)(\s*)', bygroups(Punctuation, Whitespace), 'tag-or-block'),
|
|
1873
|
+
# output tags
|
|
1874
|
+
(r'({{)(\s*)([^\s}]+)',
|
|
1875
|
+
bygroups(Punctuation, Whitespace, using(this, state = 'generic')),
|
|
1876
|
+
'output'),
|
|
1877
|
+
(r'{', Text)
|
|
1878
|
+
],
|
|
1879
|
+
|
|
1880
|
+
'tag-or-block': [
|
|
1881
|
+
# builtin logic blocks
|
|
1882
|
+
(r'(if|unless|elsif|case)(?=\s+)', Keyword.Reserved, 'condition'),
|
|
1883
|
+
(r'(when)(\s+)', bygroups(Keyword.Reserved, Whitespace),
|
|
1884
|
+
combined('end-of-block', 'whitespace', 'generic')),
|
|
1885
|
+
(r'(else)(\s*)(%\})',
|
|
1886
|
+
bygroups(Keyword.Reserved, Whitespace, Punctuation), '#pop'),
|
|
1887
|
+
|
|
1888
|
+
# other builtin blocks
|
|
1889
|
+
(r'(capture)(\s+)([^\s%]+)(\s*)(%\})',
|
|
1890
|
+
bygroups(Name.Tag, Whitespace, using(this, state = 'variable'),
|
|
1891
|
+
Whitespace, Punctuation), '#pop'),
|
|
1892
|
+
(r'(comment)(\s*)(%\})',
|
|
1893
|
+
bygroups(Name.Tag, Whitespace, Punctuation), 'comment'),
|
|
1894
|
+
(r'(raw)(\s*)(%\})',
|
|
1895
|
+
bygroups(Name.Tag, Whitespace, Punctuation), 'raw'),
|
|
1896
|
+
|
|
1897
|
+
# end of block
|
|
1898
|
+
(r'(end(case|unless|if))(\s*)(%\})',
|
|
1899
|
+
bygroups(Keyword.Reserved, None, Whitespace, Punctuation), '#pop'),
|
|
1900
|
+
(r'(end([^\s%]+))(\s*)(%\})',
|
|
1901
|
+
bygroups(Name.Tag, None, Whitespace, Punctuation), '#pop'),
|
|
1902
|
+
|
|
1903
|
+
# builtin tags (assign and include are handled together with usual tags)
|
|
1904
|
+
(r'(cycle)(\s+)(?:([^\s:]*)(:))?(\s*)',
|
|
1905
|
+
bygroups(Name.Tag, Whitespace,
|
|
1906
|
+
using(this, state='generic'), Punctuation, Whitespace),
|
|
1907
|
+
'variable-tag-markup'),
|
|
1908
|
+
|
|
1909
|
+
# other tags or blocks
|
|
1910
|
+
(r'([^\s%]+)(\s*)', bygroups(Name.Tag, Whitespace), 'tag-markup')
|
|
1911
|
+
],
|
|
1912
|
+
|
|
1913
|
+
'output': [
|
|
1914
|
+
include('whitespace'),
|
|
1915
|
+
('\}\}', Punctuation, '#pop'), # end of output
|
|
1916
|
+
|
|
1917
|
+
(r'\|', Punctuation, 'filters')
|
|
1918
|
+
],
|
|
1919
|
+
|
|
1920
|
+
'filters': [
|
|
1921
|
+
include('whitespace'),
|
|
1922
|
+
(r'\}\}', Punctuation, ('#pop', '#pop')), # end of filters and output
|
|
1923
|
+
|
|
1924
|
+
(r'([^\s\|:]+)(:?)(\s*)',
|
|
1925
|
+
bygroups(Name.Function, Punctuation, Whitespace), 'filter-markup')
|
|
1926
|
+
],
|
|
1927
|
+
|
|
1928
|
+
'filter-markup': [
|
|
1929
|
+
(r'\|', Punctuation, '#pop'),
|
|
1930
|
+
include('end-of-tag'),
|
|
1931
|
+
include('default-param-markup')
|
|
1932
|
+
],
|
|
1933
|
+
|
|
1934
|
+
'condition': [
|
|
1935
|
+
include('end-of-block'),
|
|
1936
|
+
include('whitespace'),
|
|
1937
|
+
|
|
1938
|
+
(r'([^\s=!><]+)(\s*)([=!><]=?)(\s*)(\S+)(\s*)(%\})',
|
|
1939
|
+
bygroups(using(this, state = 'generic'), Whitespace, Operator,
|
|
1940
|
+
Whitespace, using(this, state = 'generic'), Whitespace,
|
|
1941
|
+
Punctuation)),
|
|
1942
|
+
(r'\b!', Operator),
|
|
1943
|
+
(r'\bnot\b', Operator.Word),
|
|
1944
|
+
(r'([\w\.\'"]+)(\s+)(contains)(\s+)([\w\.\'"]+)',
|
|
1945
|
+
bygroups(using(this, state = 'generic'), Whitespace, Operator.Word,
|
|
1946
|
+
Whitespace, using(this, state = 'generic'))),
|
|
1947
|
+
|
|
1948
|
+
include('generic'),
|
|
1949
|
+
include('whitespace')
|
|
1950
|
+
],
|
|
1951
|
+
|
|
1952
|
+
'generic-value': [
|
|
1953
|
+
include('generic'),
|
|
1954
|
+
include('end-at-whitespace')
|
|
1955
|
+
],
|
|
1956
|
+
|
|
1957
|
+
'operator': [
|
|
1958
|
+
(r'(\s*)((=|!|>|<)=?)(\s*)',
|
|
1959
|
+
bygroups(Whitespace, Operator, None, Whitespace), '#pop'),
|
|
1960
|
+
(r'(\s*)(\bcontains\b)(\s*)',
|
|
1961
|
+
bygroups(Whitespace, Operator.Word, Whitespace), '#pop'),
|
|
1962
|
+
],
|
|
1963
|
+
|
|
1964
|
+
'end-of-tag': [
|
|
1965
|
+
(r'\}\}', Punctuation, '#pop')
|
|
1966
|
+
],
|
|
1967
|
+
|
|
1968
|
+
'end-of-block': [
|
|
1969
|
+
(r'%\}', Punctuation, ('#pop', '#pop'))
|
|
1970
|
+
],
|
|
1971
|
+
|
|
1972
|
+
'end-at-whitespace': [
|
|
1973
|
+
(r'\s+', Whitespace, '#pop')
|
|
1974
|
+
],
|
|
1975
|
+
|
|
1976
|
+
# states for unknown markup
|
|
1977
|
+
'param-markup': [
|
|
1978
|
+
include('whitespace'),
|
|
1979
|
+
# params with colons or equals
|
|
1980
|
+
(r'([^\s=:]+)(\s*)(=|:)',
|
|
1981
|
+
bygroups(Name.Attribute, Whitespace, Operator)),
|
|
1982
|
+
# explicit variables
|
|
1983
|
+
(r'(\{\{)(\s*)([^\s\}])(\s*)(\}\})',
|
|
1984
|
+
bygroups(Punctuation, Whitespace, using(this, state = 'variable'),
|
|
1985
|
+
Whitespace, Punctuation)),
|
|
1986
|
+
|
|
1987
|
+
include('string'),
|
|
1988
|
+
include('number'),
|
|
1989
|
+
include('keyword'),
|
|
1990
|
+
(r',', Punctuation)
|
|
1991
|
+
],
|
|
1992
|
+
|
|
1993
|
+
'default-param-markup': [
|
|
1994
|
+
include('param-markup'),
|
|
1995
|
+
(r'.', Text) # fallback for switches / variables / un-quoted strings / ...
|
|
1996
|
+
],
|
|
1997
|
+
|
|
1998
|
+
'variable-param-markup': [
|
|
1999
|
+
include('param-markup'),
|
|
2000
|
+
include('variable'),
|
|
2001
|
+
(r'.', Text) # fallback
|
|
2002
|
+
],
|
|
2003
|
+
|
|
2004
|
+
'tag-markup': [
|
|
2005
|
+
(r'%\}', Punctuation, ('#pop', '#pop')), # end of tag
|
|
2006
|
+
include('default-param-markup')
|
|
2007
|
+
],
|
|
2008
|
+
|
|
2009
|
+
'variable-tag-markup': [
|
|
2010
|
+
(r'%\}', Punctuation, ('#pop', '#pop')), # end of tag
|
|
2011
|
+
include('variable-param-markup')
|
|
2012
|
+
],
|
|
2013
|
+
|
|
2014
|
+
# states for different values types
|
|
2015
|
+
'keyword': [
|
|
2016
|
+
(r'\b(false|true)\b', Keyword.Constant)
|
|
2017
|
+
],
|
|
2018
|
+
|
|
2019
|
+
'variable': [
|
|
2020
|
+
(r'[a-zA-Z_]\w*', Name.Variable),
|
|
2021
|
+
(r'(?<=\w)\.(?=\w)', Punctuation)
|
|
2022
|
+
],
|
|
2023
|
+
|
|
2024
|
+
'string': [
|
|
2025
|
+
(r"'[^']*'", String.Single),
|
|
2026
|
+
(r'"[^"]*"', String.Double)
|
|
2027
|
+
],
|
|
2028
|
+
|
|
2029
|
+
'number': [
|
|
2030
|
+
(r'\d+\.\d+', Number.Float),
|
|
2031
|
+
(r'\d+', Number.Integer)
|
|
2032
|
+
],
|
|
2033
|
+
|
|
2034
|
+
'generic': [ # decides for variable, string, keyword or number
|
|
2035
|
+
include('keyword'),
|
|
2036
|
+
include('string'),
|
|
2037
|
+
include('number'),
|
|
2038
|
+
include('variable')
|
|
2039
|
+
],
|
|
2040
|
+
|
|
2041
|
+
'whitespace': [
|
|
2042
|
+
(r'[ \t]+', Whitespace)
|
|
2043
|
+
],
|
|
2044
|
+
|
|
2045
|
+
# states for builtin blocks
|
|
2046
|
+
'comment': [
|
|
2047
|
+
(r'(\{%)(\s*)(endcomment)(\s*)(%\})',
|
|
2048
|
+
bygroups(Punctuation, Whitespace, Name.Tag, Whitespace,
|
|
2049
|
+
Punctuation), ('#pop', '#pop')),
|
|
2050
|
+
(r'.', Comment)
|
|
2051
|
+
],
|
|
2052
|
+
|
|
2053
|
+
'raw': [
|
|
2054
|
+
(r'[^\{]+', Text),
|
|
2055
|
+
(r'(\{%)(\s*)(endraw)(\s*)(%\})',
|
|
2056
|
+
bygroups(Punctuation, Whitespace, Name.Tag, Whitespace,
|
|
2057
|
+
Punctuation), '#pop'),
|
|
2058
|
+
(r'\{', Text)
|
|
2059
|
+
]
|
|
2060
|
+
}
|