gitlab-pygments.rb 0.3.2 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
|