gitlab-pygments.rb 0.3.2 → 0.5.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +71 -0
- data/Gemfile +1 -1
- data/LICENSE +17 -0
- data/README.md +28 -1
- data/Rakefile +2 -5
- data/lexers +0 -0
- data/lib/pygments/mentos.py +19 -12
- data/lib/pygments/popen.rb +21 -4
- data/lib/pygments/version.rb +1 -1
- data/pygments.rb.gemspec +2 -0
- data/test/test_pygments.rb +13 -2
- data/vendor/custom_lexers/github.py +206 -3
- data/vendor/pygments-main/AUTHORS +41 -3
- data/vendor/pygments-main/CHANGES +132 -5
- data/vendor/pygments-main/LICENSE +1 -1
- data/vendor/pygments-main/Makefile +1 -1
- data/vendor/pygments-main/REVISION +1 -1
- data/vendor/pygments-main/docs/generate.py +1 -1
- data/vendor/pygments-main/docs/src/api.txt +1 -1
- data/vendor/pygments-main/docs/src/index.txt +1 -1
- data/vendor/pygments-main/docs/src/integrate.txt +5 -0
- data/vendor/pygments-main/docs/src/java.txt +70 -0
- data/vendor/pygments-main/docs/src/lexerdevelopment.txt +52 -0
- data/vendor/pygments-main/external/autopygmentize +64 -0
- data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +144 -0
- data/vendor/pygments-main/external/markdown-processor.py +2 -2
- data/vendor/pygments-main/external/moin-parser.py +1 -1
- data/vendor/pygments-main/external/rst-directive-old.py +1 -1
- data/vendor/pygments-main/external/rst-directive.py +1 -1
- data/vendor/pygments-main/pygmentize +1 -1
- data/vendor/pygments-main/pygments/__init__.py +2 -2
- data/vendor/pygments-main/pygments/cmdline.py +14 -6
- 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 +3 -4
- data/vendor/pygments-main/pygments/formatter.py +4 -1
- data/vendor/pygments-main/pygments/formatters/__init__.py +1 -1
- data/vendor/pygments-main/pygments/formatters/_mapping.py +3 -3
- data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
- data/vendor/pygments-main/pygments/formatters/html.py +73 -2
- data/vendor/pygments-main/pygments/formatters/img.py +2 -2
- data/vendor/pygments-main/pygments/formatters/latex.py +9 -9
- data/vendor/pygments-main/pygments/formatters/other.py +1 -3
- data/vendor/pygments-main/pygments/formatters/rtf.py +1 -1
- data/vendor/pygments-main/pygments/formatters/svg.py +1 -1
- data/vendor/pygments-main/pygments/formatters/terminal.py +1 -1
- data/vendor/pygments-main/pygments/formatters/terminal256.py +1 -1
- data/vendor/pygments-main/pygments/lexer.py +78 -10
- data/vendor/pygments-main/pygments/lexers/__init__.py +13 -2
- data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +5172 -0
- data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_mapping.py +92 -36
- data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +562 -0
- data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +2 -2
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +4 -3
- data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +557 -0
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +11 -0
- data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +1072 -0
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +360 -0
- data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +13 -3
- data/vendor/pygments-main/pygments/lexers/agile.py +525 -38
- data/vendor/pygments-main/pygments/lexers/asm.py +45 -7
- data/vendor/pygments-main/pygments/lexers/compiled.py +1257 -425
- data/vendor/pygments-main/pygments/lexers/dalvik.py +104 -0
- data/vendor/pygments-main/pygments/lexers/dotnet.py +97 -62
- data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
- data/vendor/pygments-main/pygments/lexers/functional.py +931 -32
- data/vendor/pygments-main/pygments/lexers/github.py +206 -3
- data/vendor/pygments-main/pygments/lexers/hdl.py +3 -3
- data/vendor/pygments-main/pygments/lexers/jvm.py +309 -44
- data/vendor/pygments-main/pygments/lexers/math.py +876 -30
- data/vendor/pygments-main/pygments/lexers/other.py +956 -517
- data/vendor/pygments-main/pygments/lexers/parsers.py +85 -2
- data/vendor/pygments-main/pygments/lexers/shell.py +81 -18
- data/vendor/pygments-main/pygments/lexers/special.py +1 -1
- data/vendor/pygments-main/pygments/lexers/sql.py +2 -2
- data/vendor/pygments-main/pygments/lexers/templates.py +119 -8
- data/vendor/pygments-main/pygments/lexers/text.py +155 -15
- data/vendor/pygments-main/pygments/lexers/web.py +1578 -397
- data/vendor/pygments-main/pygments/modeline.py +40 -0
- data/vendor/pygments-main/pygments/plugin.py +1 -1
- data/vendor/pygments-main/pygments/scanner.py +1 -1
- data/vendor/pygments-main/pygments/style.py +1 -1
- data/vendor/pygments-main/pygments/styles/__init__.py +1 -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/manni.py +1 -1
- data/vendor/pygments-main/pygments/styles/monokai.py +1 -1
- 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/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/token.py +1 -1
- data/vendor/pygments-main/pygments/unistring.py +36 -26
- data/vendor/pygments-main/pygments/util.py +46 -1
- data/vendor/pygments-main/scripts/check_sources.py +2 -2
- data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +2 -0
- data/vendor/pygments-main/scripts/find_codetags.py +1 -1
- data/vendor/pygments-main/scripts/find_error.py +5 -6
- data/vendor/pygments-main/setup.cfg +1 -0
- data/vendor/pygments-main/setup.py +6 -4
- data/vendor/pygments-main/tests/examplefiles/BOM.js +1 -0
- data/vendor/pygments-main/tests/examplefiles/Config.in.cache +1973 -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/autoit_submit.au3 +25 -0
- data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +308 -0
- data/vendor/pygments-main/tests/examplefiles/ca65_example +284 -0
- data/vendor/pygments-main/tests/examplefiles/cbmbas_example +9 -0
- data/vendor/pygments-main/tests/examplefiles/classes.dylan +89 -4
- data/vendor/pygments-main/tests/examplefiles/example.Rd +78 -0
- data/vendor/pygments-main/tests/examplefiles/example.bug +54 -0
- data/vendor/pygments-main/tests/examplefiles/example.ceylon +52 -0
- data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
- data/vendor/pygments-main/tests/examplefiles/example.cob +3556 -0
- data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
- data/vendor/pygments-main/tests/examplefiles/example.jag +48 -0
- data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
- data/vendor/pygments-main/tests/examplefiles/example.monkey +152 -0
- data/vendor/pygments-main/tests/examplefiles/example.msc +43 -0
- data/vendor/pygments-main/tests/examplefiles/example.prg +161 -0
- data/vendor/pygments-main/tests/examplefiles/example.reg +19 -0
- data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
- data/vendor/pygments-main/tests/examplefiles/example.rkt +95 -0
- data/vendor/pygments-main/tests/examplefiles/example.rpf +4 -0
- data/vendor/pygments-main/tests/examplefiles/example.shell-session +45 -0
- data/vendor/pygments-main/tests/examplefiles/example.stan +108 -0
- data/vendor/pygments-main/tests/examplefiles/example.ts +28 -0
- data/vendor/pygments-main/tests/examplefiles/example.xtend +34 -0
- data/vendor/pygments-main/tests/examplefiles/example2.msc +79 -0
- data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +133 -0
- data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
- data/vendor/pygments-main/tests/examplefiles/hello.smali +40 -0
- data/vendor/pygments-main/tests/examplefiles/hello.sp +9 -0
- data/vendor/pygments-main/tests/examplefiles/http_request_example +2 -1
- data/vendor/pygments-main/tests/examplefiles/http_response_example +4 -2
- data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +71 -0
- data/vendor/pygments-main/tests/examplefiles/json.lasso +301 -0
- data/vendor/pygments-main/tests/examplefiles/json.lasso9 +213 -0
- data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +41 -0
- data/vendor/pygments-main/tests/examplefiles/logos_example.xm +28 -0
- data/vendor/pygments-main/tests/examplefiles/matlab_sample +5 -2
- data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +455 -0
- data/vendor/pygments-main/tests/examplefiles/mg_sample.pro +73 -0
- data/vendor/pygments-main/tests/examplefiles/minehunt.qml +112 -0
- data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +95 -0
- data/vendor/pygments-main/tests/examplefiles/objc_example.m +7 -0
- data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +163 -0
- data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
- data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +4 -0
- data/vendor/pygments-main/tests/examplefiles/robotframework.txt +39 -0
- data/vendor/pygments-main/tests/examplefiles/rust_example.rs +233 -0
- data/vendor/pygments-main/tests/examplefiles/session.dylan-console +9 -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.R +149 -115
- 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.cu +36 -0
- data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
- data/vendor/pygments-main/tests/examplefiles/test.opa +10 -0
- data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
- data/vendor/pygments-main/tests/examplefiles/test2.pypylog +120 -0
- data/vendor/pygments-main/tests/examplefiles/type.lisp +16 -0
- data/vendor/pygments-main/tests/examplefiles/unix-io.lid +37 -0
- data/vendor/pygments-main/tests/old_run.py +1 -1
- data/vendor/pygments-main/tests/run.py +3 -2
- data/vendor/pygments-main/tests/support/tags +36 -0
- data/vendor/pygments-main/tests/test_basic_api.py +4 -3
- data/vendor/pygments-main/tests/test_clexer.py +1 -1
- data/vendor/pygments-main/tests/test_cmdline.py +1 -1
- data/vendor/pygments-main/tests/test_examplefiles.py +3 -1
- data/vendor/pygments-main/tests/test_html_formatter.py +17 -1
- data/vendor/pygments-main/tests/test_latex_formatter.py +1 -1
- data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
- data/vendor/pygments-main/tests/test_perllexer.py +1 -1
- data/vendor/pygments-main/tests/test_regexlexer.py +1 -1
- data/vendor/pygments-main/tests/test_token.py +1 -1
- data/vendor/pygments-main/tests/test_using_api.py +1 -1
- data/vendor/pygments-main/tests/test_util.py +22 -3
- metadata +84 -16
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c9e666c39dc7808836454fedca53b08cebb0b2c1
|
4
|
+
data.tar.gz: 1f3aa26080fdf52b1c7a310b2ad907441ace89cb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: acb7ac600833fc8367fa96691172d62fb5f123701f82dfdb5e2e32c296b2ca047c211d580bfd9c5d3781f8f90152f53cc4acc8ebe28c8ece1cbc135cfa8f53ca
|
7
|
+
data.tar.gz: ac813b3fcd1e709a8d07d2a957e8717aafaebdae7dca6fc505d47fac5ab640e64d0ef4ca7ece56106256ebe3f83a2c4d678def8f2380f47f8ccc8bd38efdc48d
|
data/.gitignore
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
changelog
|
2
|
+
===========
|
3
|
+
|
4
|
+
Version 0.5.4 (Nov 3, 2013)
|
5
|
+
-----------------------------
|
6
|
+
|
7
|
+
* Update lexers file
|
8
|
+
|
9
|
+
Version 0.5.3 (Sep 17, 2013)
|
10
|
+
-----------------------------
|
11
|
+
|
12
|
+
* Fixes for Slash lexer
|
13
|
+
* Improve highlighting for Slash lexer
|
14
|
+
* Upgrade to latest pygments (1.7, changes summary follows. See pygments changelog for details)
|
15
|
+
* Add Clay lexer
|
16
|
+
* Add Perl 6 lexer
|
17
|
+
* Add Swig lexer
|
18
|
+
* Add nesC lexer
|
19
|
+
* Add BlitzBasic lexer
|
20
|
+
* Add EBNF lexer
|
21
|
+
* Add Igor Pro lexer
|
22
|
+
* Add Rexx lexer
|
23
|
+
* Add Agda lexer
|
24
|
+
* Recognize vim modelines
|
25
|
+
* Improve Python 3 lexer
|
26
|
+
* Improve Opa lexer
|
27
|
+
* Improve Julia lexer
|
28
|
+
* Improve Lasso lexer
|
29
|
+
* Improve Objective C/C++ lexer
|
30
|
+
* Improve Ruby lexer
|
31
|
+
* Improve Stan lexer
|
32
|
+
* Improve JavaScript lexer
|
33
|
+
* Improve HTTP lexer
|
34
|
+
* Improve Koka lexer
|
35
|
+
* Improve Haxe lexer
|
36
|
+
* Improve Prolog lexer
|
37
|
+
* Improve F# lexer
|
38
|
+
|
39
|
+
Version 0.5.2 (July 17, 2013)
|
40
|
+
-----------------------------
|
41
|
+
|
42
|
+
* Add Slash lexer
|
43
|
+
|
44
|
+
Version 0.5.1 (June 25, 2013)
|
45
|
+
-----------------------------
|
46
|
+
|
47
|
+
* Ensure compatability across distros by detecting if `python2` is available
|
48
|
+
|
49
|
+
Version 0.5.0 (Apr 13, 2013)
|
50
|
+
-----------------------------
|
51
|
+
|
52
|
+
* Use #rstrip to fix table mode bug
|
53
|
+
|
54
|
+
Version 0.4.2 (Feb 25, 2013)
|
55
|
+
-----------------------------
|
56
|
+
|
57
|
+
* Add new lexers, including custom lexers
|
58
|
+
|
59
|
+
Version 0.3.7 (Jan 2, 2013)
|
60
|
+
-----------------------------
|
61
|
+
|
62
|
+
* Fixed missing custom lexers
|
63
|
+
* Added syntax highlighting for Hxml
|
64
|
+
|
65
|
+
Version 0.3.4 (Dec 28, 2012)
|
66
|
+
-----------------------------
|
67
|
+
|
68
|
+
* Add support for Windows
|
69
|
+
* Add MIT license
|
70
|
+
|
71
|
+
|
data/Gemfile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
source
|
1
|
+
source "https://rubygems.org"
|
2
2
|
gemspec
|
data/LICENSE
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
Copyright (c) Ted Nyman and Aman Gupta, 2012-2013
|
3
|
+
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
5
|
+
associated documentation files (the "Software"), to deal in the Software without restriction,
|
6
|
+
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
7
|
+
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
|
8
|
+
subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial
|
11
|
+
portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
14
|
+
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
15
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
16
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
17
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -14,7 +14,8 @@ pygments.rb request.
|
|
14
14
|
|
15
15
|
## system requirements
|
16
16
|
|
17
|
-
- Python 2.5
|
17
|
+
- Python 2.5, Python 2.6, or Python 2.7. You can always use Python 2.x from a `virtualenv` if
|
18
|
+
your default Python install is 3.x.
|
18
19
|
|
19
20
|
## usage
|
20
21
|
|
@@ -49,6 +50,12 @@ Pygments.css
|
|
49
50
|
Pygments.css('.highlight')
|
50
51
|
```
|
51
52
|
|
53
|
+
To use a specific pygments style, pass the `:style` option to the `#css` method:
|
54
|
+
|
55
|
+
``` ruby
|
56
|
+
Pygments.css(:style => "monokai")
|
57
|
+
```
|
58
|
+
|
52
59
|
Other Pygments high-level API methods are also available.
|
53
60
|
These methods return arrays detailing all the available lexers, formatters,
|
54
61
|
and styles.
|
@@ -66,6 +73,8 @@ To use a custom pygments installation, specify the path to
|
|
66
73
|
Pygments.start("/path/to/pygments")
|
67
74
|
```
|
68
75
|
|
76
|
+
If you'd like logging, set the environmental variable `MENTOS_LOG` to a file path for your logfile.
|
77
|
+
|
69
78
|
## benchmarks
|
70
79
|
|
71
80
|
|
@@ -87,5 +96,23 @@ Pygments.start("/path/to/pygments")
|
|
87
96
|
pygments popen (process already started) 0.010000 0.000000 0.010000 ( 0.676515)
|
88
97
|
pygments popen (process already started 2) 0.000000 0.010000 0.010000 ( 0.674189)
|
89
98
|
|
99
|
+
## license
|
100
|
+
|
101
|
+
The MIT License (MIT)
|
102
|
+
|
103
|
+
Copyright (c) Ted Nyman and Aman Gupta, 2012-2013
|
104
|
+
|
105
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
106
|
+
associated documentation files (the "Software"), to deal in the Software without restriction,
|
107
|
+
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
108
|
+
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
|
109
|
+
subject to the following conditions:
|
90
110
|
|
111
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial
|
112
|
+
portions of the Software.
|
91
113
|
|
114
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
115
|
+
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
116
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
117
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
118
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
CHANGED
@@ -9,9 +9,7 @@ task :default => :test
|
|
9
9
|
|
10
10
|
GEMSPEC = eval(File.read('pygments.rb.gemspec'))
|
11
11
|
|
12
|
-
require '
|
13
|
-
Rake::GemPackageTask.new(GEMSPEC) do |pkg|
|
14
|
-
end
|
12
|
+
require 'rubygems/package_task'
|
15
13
|
|
16
14
|
# ==========================================================
|
17
15
|
# Testing
|
@@ -33,14 +31,13 @@ end
|
|
33
31
|
|
34
32
|
# ==========================================================
|
35
33
|
# Cache lexers
|
36
|
-
#
|
34
|
+
# ==========================================================
|
37
35
|
|
38
36
|
# Write all the lexers to a file for easy lookup
|
39
37
|
task :lexers do
|
40
38
|
sh "ruby cache-lexers.rb"
|
41
39
|
end
|
42
40
|
|
43
|
-
|
44
41
|
# ==========================================================
|
45
42
|
# Vendor
|
46
43
|
# ==========================================================
|
data/lexers
CHANGED
Binary file
|
data/lib/pygments/mentos.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env python2
|
2
2
|
# -*- coding: utf-8 -*-
|
3
3
|
|
4
|
-
import sys, re, os, signal
|
4
|
+
import sys, re, os, signal
|
5
5
|
import traceback
|
6
6
|
if 'PYGMENTS_PATH' in os.environ:
|
7
7
|
sys.path.insert(0, os.environ['PYGMENTS_PATH'])
|
@@ -320,20 +320,27 @@ def main():
|
|
320
320
|
# Signal handlers to trap signals.
|
321
321
|
signal.signal(signal.SIGINT, _signal_handler)
|
322
322
|
signal.signal(signal.SIGTERM, _signal_handler)
|
323
|
-
|
323
|
+
if sys.platform != "win32":
|
324
|
+
signal.signal(signal.SIGHUP, _signal_handler)
|
324
325
|
|
325
326
|
mentos = Mentos()
|
326
327
|
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
328
|
+
if sys.platform == "win32":
|
329
|
+
# disable CRLF
|
330
|
+
import msvcrt
|
331
|
+
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
|
332
|
+
else:
|
333
|
+
# close fd's inherited from the ruby parent
|
334
|
+
import resource
|
335
|
+
maxfd = resource.getrlimit(resource.RLIMIT_NOFILE)[1]
|
336
|
+
if maxfd == resource.RLIM_INFINITY:
|
337
|
+
maxfd = 65536
|
338
|
+
|
339
|
+
for fd in range(3, maxfd):
|
340
|
+
try:
|
341
|
+
os.close(fd)
|
342
|
+
except:
|
343
|
+
pass
|
337
344
|
|
338
345
|
mentos.start()
|
339
346
|
|
data/lib/pygments/popen.rb
CHANGED
@@ -20,12 +20,13 @@ module Pygments
|
|
20
20
|
# Python process that talks to the Pygments library. We'll talk back and
|
21
21
|
# forth across this pipe.
|
22
22
|
def start(pygments_path = File.expand_path('../../../vendor/pygments-main/', __FILE__))
|
23
|
+
is_windows = RUBY_PLATFORM =~ /mswin|mingw/
|
23
24
|
begin
|
24
|
-
@log = Logger.new(ENV['MENTOS_LOG'] ||= '/dev/null')
|
25
|
+
@log = Logger.new(ENV['MENTOS_LOG'] ||= is_windows ? 'NUL:' : '/dev/null')
|
25
26
|
@log.level = Logger::INFO
|
26
27
|
@log.datetime_format = "%Y-%m-%d %H:%M "
|
27
28
|
rescue
|
28
|
-
@log = Logger.new('/dev/null')
|
29
|
+
@log = Logger.new(is_windows ? 'NUL:' : '/dev/null')
|
29
30
|
end
|
30
31
|
|
31
32
|
ENV['PYGMENTS_PATH'] = pygments_path
|
@@ -35,10 +36,21 @@ module Pygments
|
|
35
36
|
|
36
37
|
# A pipe to the mentos python process. #popen4 gives us
|
37
38
|
# the pid and three IO objects to write and read.
|
38
|
-
|
39
|
+
script = "#{python_binary} #{File.expand_path('../mentos.py', __FILE__)}"
|
40
|
+
@pid, @in, @out, @err = popen4(script)
|
39
41
|
@log.info "[#{Time.now.iso8601}] Starting pid #{@pid.to_s} with fd #{@out.to_i.to_s}."
|
40
42
|
end
|
41
43
|
|
44
|
+
# Detect a suitable Python binary to use. We can't just use `python2`
|
45
|
+
# because apparently some old versions of Debian only have `python` or
|
46
|
+
# something like that.
|
47
|
+
def python_binary
|
48
|
+
@python_binary ||= begin
|
49
|
+
`which python2`
|
50
|
+
$?.success? ? "python2" : "python"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
42
54
|
# Stop the child process by issuing a kill -9.
|
43
55
|
#
|
44
56
|
# We then call waitpid() with the pid, which waits for that particular
|
@@ -126,6 +138,10 @@ module Pygments
|
|
126
138
|
:filenames => lxr[2],
|
127
139
|
:mimetypes => lxr[3]
|
128
140
|
}
|
141
|
+
hash["Augeas"] = {:name=>"Augeas", :aliases=>["augeas"], :filenames=>["*.aug"], :mimetypes=>[]}
|
142
|
+
hash["dasm16"] = {:name=>"dasm16", :aliases=>["DASM16"], :filenames=>["*.dasm16", "*.dasm"], :mimetypes=>['text/x-dasm16']}
|
143
|
+
hash["Puppet"] = {:name=>"Puppet", :aliases=>["puppet"], :filenames=>["*.pp"], :mimetypes=>[]}
|
144
|
+
hash["Slash"] = {:name=>"Slash", :aliases=>["slash"], :filenames=>["*.sl"], :mimetypes=>[]}
|
129
145
|
hash
|
130
146
|
end
|
131
147
|
end
|
@@ -358,7 +374,8 @@ module Pygments
|
|
358
374
|
unless method == :lexer_name_for || method == :highlight || method == :css
|
359
375
|
res = Yajl.load(res, :symbolize_keys => true)
|
360
376
|
end
|
361
|
-
res = res
|
377
|
+
res = res.rstrip if res.class == String
|
378
|
+
res
|
362
379
|
end
|
363
380
|
|
364
381
|
# Convert a text header into JSON for easy access.
|
data/lib/pygments/version.rb
CHANGED
data/pygments.rb.gemspec
CHANGED
data/test/test_pygments.rb
CHANGED
@@ -17,10 +17,22 @@ class PygmentsHighlightTest < Test::Unit::TestCase
|
|
17
17
|
assert_equal '<div class', code[0..9]
|
18
18
|
end
|
19
19
|
|
20
|
+
def test_full_html_highlight
|
21
|
+
code = P.highlight(RUBY_CODE)
|
22
|
+
assert_match '<span class="c1">#!/usr/bin/ruby</span>', code
|
23
|
+
assert_equal "<div class=\"highlight\"><pre><span class=\"c1\">#!/usr/bin/ruby</span>\n<span class=\"nb\">puts</span> <span class=\"s1\">'foo'</span>\n</pre></div>", code
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_full_table_highlight
|
27
|
+
code = P.highlight(RUBY_CODE, :options => {:linenos => true})
|
28
|
+
assert_match '<span class="c1">#!/usr/bin/ruby</span>', code
|
29
|
+
assert_equal "<table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre>1\n2</pre></div></td><td class=\"code\"><div class=\"highlight\"><pre><span class=\"c1\">#!/usr/bin/ruby</span>\n<span class=\"nb\">puts</span> <span class=\"s1\">'foo'</span>\n</pre></div>\n</td></tr></table>", code
|
30
|
+
end
|
31
|
+
|
20
32
|
def test_highlight_works_with_larger_files
|
21
33
|
code = P.highlight(REDIS_CODE)
|
22
34
|
assert_match 'used_memory_peak_human', code
|
23
|
-
assert_equal
|
35
|
+
assert_equal 455203, code.bytesize.to_i
|
24
36
|
end
|
25
37
|
|
26
38
|
def test_returns_nil_on_timeout
|
@@ -210,7 +222,6 @@ class PygmentsLexerClassTest < Test::Unit::TestCase
|
|
210
222
|
assert_equal P::Lexer['Groff'], P::Lexer.find_by_extname('.1')
|
211
223
|
assert_equal P::Lexer['Groff'], P::Lexer.find_by_extname('.3')
|
212
224
|
assert_equal P::Lexer['C'], P::Lexer.find_by_extname('.c')
|
213
|
-
assert_equal P::Lexer['C'], P::Lexer.find_by_extname('.h')
|
214
225
|
assert_equal P::Lexer['Python'], P::Lexer.find_by_extname('.py')
|
215
226
|
assert_equal P::Lexer['Java'], P::Lexer.find_by_extname('.java')
|
216
227
|
end
|
@@ -10,11 +10,12 @@
|
|
10
10
|
"""
|
11
11
|
import re
|
12
12
|
|
13
|
-
from pygments.lexer import RegexLexer, include, bygroups,
|
13
|
+
from pygments.lexer import RegexLexer, ExtendedRegexLexer, include, bygroups, \
|
14
|
+
using, DelegatingLexer
|
14
15
|
from pygments.token import Text, Name, Number, String, Comment, Punctuation, \
|
15
|
-
Other, Keyword, Operator, Literal
|
16
|
+
Other, Keyword, Operator, Literal, Whitespace
|
16
17
|
|
17
|
-
__all__ = ['Dasm16Lexer', 'PuppetLexer', 'AugeasLexer']
|
18
|
+
__all__ = ['Dasm16Lexer', 'PuppetLexer', 'AugeasLexer', "TOMLLexer", "SlashLexer"]
|
18
19
|
|
19
20
|
class Dasm16Lexer(RegexLexer):
|
20
21
|
"""
|
@@ -360,3 +361,205 @@ class AugeasLexer(RegexLexer):
|
|
360
361
|
(r'[\*\)]', Comment.Multiline)
|
361
362
|
],
|
362
363
|
}
|
364
|
+
|
365
|
+
class TOMLLexer(RegexLexer):
|
366
|
+
"""
|
367
|
+
Lexer for TOML, a simple language for config files
|
368
|
+
"""
|
369
|
+
|
370
|
+
name = 'TOML'
|
371
|
+
aliases = ['toml']
|
372
|
+
filenames = ['*.toml']
|
373
|
+
|
374
|
+
tokens = {
|
375
|
+
'root': [
|
376
|
+
|
377
|
+
# Basics, comments, strings
|
378
|
+
(r'\s+', Text),
|
379
|
+
(r'#.*?$', Comment.Single),
|
380
|
+
(r'"(\\\\|\\"|[^"])*"', String),
|
381
|
+
(r'(true|false)$', Keyword.Constant),
|
382
|
+
('[a-zA-Z_][a-zA-Z0-9_\-]*', Name),
|
383
|
+
|
384
|
+
# Datetime
|
385
|
+
(r'\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z', Number.Integer),
|
386
|
+
|
387
|
+
# Numbers
|
388
|
+
(r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?', Number.Float),
|
389
|
+
(r'\d+[eE][+-]?[0-9]+j?', Number.Float),
|
390
|
+
(r'\-?\d+', Number.Integer),
|
391
|
+
|
392
|
+
# Punctuation
|
393
|
+
(r'[]{}:(),;[]', Punctuation),
|
394
|
+
(r'\.', Punctuation),
|
395
|
+
|
396
|
+
# Operators
|
397
|
+
(r'=', Operator)
|
398
|
+
|
399
|
+
]
|
400
|
+
}
|
401
|
+
|
402
|
+
class SlashLanguageLexer(ExtendedRegexLexer):
|
403
|
+
_nkw = r'(?=[^a-zA-Z_0-9])'
|
404
|
+
|
405
|
+
def move_state(new_state):
|
406
|
+
return ("#pop", new_state)
|
407
|
+
|
408
|
+
def right_angle_bracket(lexer, match, ctx):
|
409
|
+
if len(ctx.stack) > 1 and ctx.stack[-2] == "string":
|
410
|
+
ctx.stack.pop()
|
411
|
+
yield match.start(), String.Interpol, u"}"
|
412
|
+
ctx.pos = match.end()
|
413
|
+
pass
|
414
|
+
|
415
|
+
tokens = {
|
416
|
+
"root": [
|
417
|
+
(r"<%=", Comment.Preproc, move_state("slash")),
|
418
|
+
(r"<%!!", Comment.Preproc, move_state("slash")),
|
419
|
+
(r"<%#.*?%>", Comment.Multiline),
|
420
|
+
(r"<%", Comment.Preproc, move_state("slash")),
|
421
|
+
(r".|\n", Other),
|
422
|
+
],
|
423
|
+
"string": [
|
424
|
+
(r"\\", String.Escape, move_state("string_e")),
|
425
|
+
(r"\"", String, move_state("slash")),
|
426
|
+
(r"#\{", String.Interpol, "slash"),
|
427
|
+
(r'.|\n', String),
|
428
|
+
],
|
429
|
+
"string_e": [
|
430
|
+
(r'n', String.Escape, move_state("string")),
|
431
|
+
(r't', String.Escape, move_state("string")),
|
432
|
+
(r'r', String.Escape, move_state("string")),
|
433
|
+
(r'e', String.Escape, move_state("string")),
|
434
|
+
(r'x[a-fA-F0-9]{2}', String.Escape, move_state("string")),
|
435
|
+
(r'.', String.Escape, move_state("string")),
|
436
|
+
],
|
437
|
+
"regexp": [
|
438
|
+
(r'}[a-z]*', String.Regex, move_state("slash")),
|
439
|
+
(r'\\(.|\n)', String.Regex),
|
440
|
+
(r'{', String.Regex, "regexp_r"),
|
441
|
+
(r'.|\n', String.Regex),
|
442
|
+
],
|
443
|
+
"regexp_r": [
|
444
|
+
(r'}[a-z]*', String.Regex, "#pop"),
|
445
|
+
(r'\\(.|\n)', String.Regex),
|
446
|
+
(r'{', String.Regex, "regexp_r"),
|
447
|
+
],
|
448
|
+
"slash": [
|
449
|
+
(r"%>", Comment.Preproc, move_state("root")),
|
450
|
+
(r"\"", String, move_state("string")),
|
451
|
+
(r"'[a-zA-Z0-9_]+", String),
|
452
|
+
(r'%r{', String.Regex, move_state("regexp")),
|
453
|
+
(r'/\*.*?\*/', Comment.Multiline),
|
454
|
+
(r"(#|//).*?\n", Comment.Single),
|
455
|
+
(r'-?[0-9]+e[+-]?[0-9]+', Number.Float),
|
456
|
+
(r'-?[0-9]+\.[0-9]+(e[+-]?[0-9]+)?', Number.Float),
|
457
|
+
(r'-?[0-9]+', Number.Integer),
|
458
|
+
(r'nil'+_nkw, Name.Builtin),
|
459
|
+
(r'true'+_nkw, Name.Builtin),
|
460
|
+
(r'false'+_nkw, Name.Builtin),
|
461
|
+
(r'self'+_nkw, Name.Builtin),
|
462
|
+
(r'(class)(\s+)([A-Z][a-zA-Z0-9_\']*)',
|
463
|
+
bygroups(Keyword, Whitespace, Name.Class)),
|
464
|
+
(r'class'+_nkw, Keyword),
|
465
|
+
(r'extends'+_nkw, Keyword),
|
466
|
+
(r'(def)(\s+)(self)(\s*)(\.)(\s*)([a-z_][a-zA-Z0-9_\']*=?|<<|>>|==|<=>|<=|<|>=|>|\+|-(self)?|~(self)?|\*|/|%|^|&&|&|\||\[\]=?)',
|
467
|
+
bygroups(Keyword, Whitespace, Name.Builtin, Whitespace, Punctuation, Whitespace, Name.Function)),
|
468
|
+
(r'(def)(\s+)([a-z_][a-zA-Z0-9_\']*=?|<<|>>|==|<=>|<=|<|>=|>|\+|-(self)?|~(self)?|\*|/|%|^|&&|&|\||\[\]=?)',
|
469
|
+
bygroups(Keyword, Whitespace, Name.Function)),
|
470
|
+
(r'def'+_nkw, Keyword),
|
471
|
+
(r'if'+_nkw, Keyword),
|
472
|
+
(r'elsif'+_nkw, Keyword),
|
473
|
+
(r'else'+_nkw, Keyword),
|
474
|
+
(r'unless'+_nkw, Keyword),
|
475
|
+
(r'for'+_nkw, Keyword),
|
476
|
+
(r'in'+_nkw, Keyword),
|
477
|
+
(r'while'+_nkw, Keyword),
|
478
|
+
(r'until'+_nkw, Keyword),
|
479
|
+
(r'and'+_nkw, Keyword),
|
480
|
+
(r'or'+_nkw, Keyword),
|
481
|
+
(r'not'+_nkw, Keyword),
|
482
|
+
(r'lambda'+_nkw, Keyword),
|
483
|
+
(r'try'+_nkw, Keyword),
|
484
|
+
(r'catch'+_nkw, Keyword),
|
485
|
+
(r'return'+_nkw, Keyword),
|
486
|
+
(r'next'+_nkw, Keyword),
|
487
|
+
(r'last'+_nkw, Keyword),
|
488
|
+
(r'throw'+_nkw, Keyword),
|
489
|
+
(r'use'+_nkw, Keyword),
|
490
|
+
(r'switch'+_nkw, Keyword),
|
491
|
+
(r'\\', Keyword),
|
492
|
+
(r'λ', Keyword),
|
493
|
+
(r'__FILE__'+_nkw, Name.Builtin.Pseudo),
|
494
|
+
(r'__LINE__'+_nkw, Name.Builtin.Pseudo),
|
495
|
+
(r'[A-Z][a-zA-Z0-9_\']*'+_nkw, Name.Constant),
|
496
|
+
(r'[a-z_][a-zA-Z0-9_\']*'+_nkw, Name),
|
497
|
+
(r'@[a-z_][a-zA-Z0-9_\']*'+_nkw, Name.Variable.Instance),
|
498
|
+
(r'@@[a-z_][a-zA-Z0-9_\']*'+_nkw, Name.Variable.Class),
|
499
|
+
(r'\(', Punctuation),
|
500
|
+
(r'\)', Punctuation),
|
501
|
+
(r'\[', Punctuation),
|
502
|
+
(r'\]', Punctuation),
|
503
|
+
(r'\{', Punctuation),
|
504
|
+
(r'\}', right_angle_bracket),
|
505
|
+
(r';', Punctuation),
|
506
|
+
(r',', Punctuation),
|
507
|
+
(r'<<=', Operator),
|
508
|
+
(r'>>=', Operator),
|
509
|
+
(r'<<', Operator),
|
510
|
+
(r'>>', Operator),
|
511
|
+
(r'==', Operator),
|
512
|
+
(r'!=', Operator),
|
513
|
+
(r'=>', Operator),
|
514
|
+
(r'=', Operator),
|
515
|
+
(r'<=>', Operator),
|
516
|
+
(r'<=', Operator),
|
517
|
+
(r'>=', Operator),
|
518
|
+
(r'<', Operator),
|
519
|
+
(r'>', Operator),
|
520
|
+
(r'\+\+', Operator),
|
521
|
+
(r'\+=', Operator),
|
522
|
+
(r'-=', Operator),
|
523
|
+
(r'\*\*=', Operator),
|
524
|
+
(r'\*=', Operator),
|
525
|
+
(r'\*\*', Operator),
|
526
|
+
(r'\*', Operator),
|
527
|
+
(r'/=', Operator),
|
528
|
+
(r'\+', Operator),
|
529
|
+
(r'-', Operator),
|
530
|
+
(r'/', Operator),
|
531
|
+
(r'%=', Operator),
|
532
|
+
(r'%', Operator),
|
533
|
+
(r'^=', Operator),
|
534
|
+
(r'&&=', Operator),
|
535
|
+
(r'&=', Operator),
|
536
|
+
(r'&&', Operator),
|
537
|
+
(r'&', Operator),
|
538
|
+
(r'\|\|=', Operator),
|
539
|
+
(r'\|=', Operator),
|
540
|
+
(r'\|\|', Operator),
|
541
|
+
(r'\|', Operator),
|
542
|
+
(r'!', Operator),
|
543
|
+
(r'\.\.\.', Operator),
|
544
|
+
(r'\.\.', Operator),
|
545
|
+
(r'\.', Operator),
|
546
|
+
(r'::', Operator),
|
547
|
+
(r':', Operator),
|
548
|
+
(r'(\s|\n)+', Whitespace),
|
549
|
+
(r'[a-z_][a-zA-Z0-9_\']*', Name.Variable),
|
550
|
+
],
|
551
|
+
}
|
552
|
+
|
553
|
+
class SlashLexer(DelegatingLexer):
|
554
|
+
"""
|
555
|
+
Lexer for the Slash programming language.
|
556
|
+
"""
|
557
|
+
|
558
|
+
name = 'Slash'
|
559
|
+
aliases = ['slash']
|
560
|
+
filenames = ['*.sl']
|
561
|
+
|
562
|
+
def __init__(self, **options):
|
563
|
+
from pygments.lexers.web import HtmlLexer
|
564
|
+
super(SlashLexer, self).__init__(HtmlLexer, SlashLanguageLexer, **options)
|
565
|
+
|