pygments.rb 1.1.2 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -1
- data/Rakefile +1 -0
- data/lib/pygments/version.rb +1 -1
- data/pygments.rb.gemspec +1 -2
- data/vendor/pygments-main/AUTHORS +2 -0
- data/vendor/pygments-main/CHANGES +27 -4
- data/vendor/pygments-main/LICENSE +1 -1
- data/vendor/pygments-main/MANIFEST.in +1 -1
- data/vendor/pygments-main/Makefile +1 -1
- data/vendor/pygments-main/REVISION +1 -1
- data/vendor/pygments-main/doc/_themes/pygments14/layout.html +1 -1
- data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +1 -1
- data/vendor/pygments-main/doc/docs/api.rst +23 -0
- data/vendor/pygments-main/doc/docs/cmdline.rst +17 -0
- data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +42 -3
- data/vendor/pygments-main/external/autopygmentize +28 -11
- data/vendor/pygments-main/external/markdown-processor.py +1 -1
- data/vendor/pygments-main/external/moin-parser.py +1 -1
- data/vendor/pygments-main/external/rst-directive.py +1 -1
- data/vendor/pygments-main/pygments/__init__.py +2 -2
- data/vendor/pygments-main/pygments/cmdline.py +61 -17
- 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 +1 -1
- data/vendor/pygments-main/pygments/formatter.py +1 -1
- data/vendor/pygments-main/pygments/formatters/__init__.py +37 -2
- data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -1
- data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
- data/vendor/pygments-main/pygments/formatters/html.py +1 -1
- data/vendor/pygments-main/pygments/formatters/img.py +38 -1
- data/vendor/pygments-main/pygments/formatters/irc.py +1 -1
- data/vendor/pygments-main/pygments/formatters/latex.py +1 -1
- data/vendor/pygments-main/pygments/formatters/other.py +1 -1
- 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 +1 -1
- data/vendor/pygments-main/pygments/lexers/__init__.py +39 -5
- data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +8 -1
- data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_mapping.py +6 -5
- data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_php_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/actionscript.py +1 -1
- data/vendor/pygments-main/pygments/lexers/agile.py +1 -1
- data/vendor/pygments-main/pygments/lexers/algebra.py +1 -1
- data/vendor/pygments-main/pygments/lexers/ambient.py +1 -1
- data/vendor/pygments-main/pygments/lexers/ampl.py +1 -1
- data/vendor/pygments-main/pygments/lexers/apl.py +1 -1
- data/vendor/pygments-main/pygments/lexers/archetype.py +1 -1
- data/vendor/pygments-main/pygments/lexers/asm.py +21 -10
- data/vendor/pygments-main/pygments/lexers/automation.py +3 -3
- data/vendor/pygments-main/pygments/lexers/basic.py +1 -1
- data/vendor/pygments-main/pygments/lexers/bibtex.py +9 -5
- data/vendor/pygments-main/pygments/lexers/business.py +53 -35
- data/vendor/pygments-main/pygments/lexers/c_cpp.py +1 -1
- data/vendor/pygments-main/pygments/lexers/c_like.py +2 -2
- data/vendor/pygments-main/pygments/lexers/capnproto.py +14 -15
- data/vendor/pygments-main/pygments/lexers/chapel.py +4 -3
- data/vendor/pygments-main/pygments/lexers/clean.py +11 -11
- data/vendor/pygments-main/pygments/lexers/compiled.py +1 -1
- data/vendor/pygments-main/pygments/lexers/configs.py +3 -3
- data/vendor/pygments-main/pygments/lexers/console.py +1 -1
- data/vendor/pygments-main/pygments/lexers/crystal.py +29 -20
- data/vendor/pygments-main/pygments/lexers/csound.py +1 -1
- data/vendor/pygments-main/pygments/lexers/css.py +1 -1
- data/vendor/pygments-main/pygments/lexers/d.py +1 -1
- data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -1
- data/vendor/pygments-main/pygments/lexers/data.py +1 -1
- data/vendor/pygments-main/pygments/lexers/diff.py +1 -1
- data/vendor/pygments-main/pygments/lexers/dotnet.py +1 -1
- data/vendor/pygments-main/pygments/lexers/dsls.py +4 -4
- data/vendor/pygments-main/pygments/lexers/dylan.py +1 -1
- data/vendor/pygments-main/pygments/lexers/ecl.py +1 -1
- data/vendor/pygments-main/pygments/lexers/eiffel.py +1 -1
- data/vendor/pygments-main/pygments/lexers/elm.py +1 -1
- data/vendor/pygments-main/pygments/lexers/erlang.py +1 -1
- data/vendor/pygments-main/pygments/lexers/esoteric.py +9 -7
- data/vendor/pygments-main/pygments/lexers/ezhil.py +4 -3
- data/vendor/pygments-main/pygments/lexers/factor.py +1 -1
- data/vendor/pygments-main/pygments/lexers/fantom.py +1 -1
- data/vendor/pygments-main/pygments/lexers/felix.py +1 -1
- data/vendor/pygments-main/pygments/lexers/forth.py +1 -1
- data/vendor/pygments-main/pygments/lexers/fortran.py +1 -1
- data/vendor/pygments-main/pygments/lexers/foxpro.py +1 -1
- data/vendor/pygments-main/pygments/lexers/functional.py +1 -1
- data/vendor/pygments-main/pygments/lexers/go.py +1 -1
- data/vendor/pygments-main/pygments/lexers/grammar_notation.py +2 -2
- data/vendor/pygments-main/pygments/lexers/graph.py +1 -1
- data/vendor/pygments-main/pygments/lexers/graphics.py +1 -1
- data/vendor/pygments-main/pygments/lexers/haskell.py +5 -2
- data/vendor/pygments-main/pygments/lexers/haxe.py +1 -1
- data/vendor/pygments-main/pygments/lexers/hdl.py +1 -1
- data/vendor/pygments-main/pygments/lexers/hexdump.py +18 -12
- data/vendor/pygments-main/pygments/lexers/html.py +1 -1
- data/vendor/pygments-main/pygments/lexers/idl.py +2 -2
- data/vendor/pygments-main/pygments/lexers/igor.py +1 -1
- data/vendor/pygments-main/pygments/lexers/inferno.py +1 -1
- data/vendor/pygments-main/pygments/lexers/installers.py +1 -1
- data/vendor/pygments-main/pygments/lexers/int_fiction.py +1 -1
- data/vendor/pygments-main/pygments/lexers/iolang.py +1 -1
- data/vendor/pygments-main/pygments/lexers/j.py +1 -1
- data/vendor/pygments-main/pygments/lexers/javascript.py +56 -37
- data/vendor/pygments-main/pygments/lexers/julia.py +3 -3
- data/vendor/pygments-main/pygments/lexers/jvm.py +1 -1
- data/vendor/pygments-main/pygments/lexers/lisp.py +1 -1
- data/vendor/pygments-main/pygments/lexers/make.py +1 -1
- data/vendor/pygments-main/pygments/lexers/markup.py +1 -1
- data/vendor/pygments-main/pygments/lexers/math.py +1 -1
- data/vendor/pygments-main/pygments/lexers/matlab.py +1 -1
- data/vendor/pygments-main/pygments/lexers/ml.py +1 -1
- data/vendor/pygments-main/pygments/lexers/modeling.py +1 -1
- data/vendor/pygments-main/pygments/lexers/modula2.py +1 -1
- data/vendor/pygments-main/pygments/lexers/monte.py +4 -3
- data/vendor/pygments-main/pygments/lexers/ncl.py +85 -244
- data/vendor/pygments-main/pygments/lexers/nimrod.py +1 -1
- data/vendor/pygments-main/pygments/lexers/nit.py +1 -1
- data/vendor/pygments-main/pygments/lexers/nix.py +1 -1
- data/vendor/pygments-main/pygments/lexers/oberon.py +1 -1
- data/vendor/pygments-main/pygments/lexers/objective.py +1 -1
- data/vendor/pygments-main/pygments/lexers/ooc.py +1 -1
- data/vendor/pygments-main/pygments/lexers/other.py +1 -1
- data/vendor/pygments-main/pygments/lexers/parasail.py +1 -1
- data/vendor/pygments-main/pygments/lexers/parsers.py +1 -1
- data/vendor/pygments-main/pygments/lexers/pascal.py +2 -2
- data/vendor/pygments-main/pygments/lexers/pawn.py +1 -1
- data/vendor/pygments-main/pygments/lexers/perl.py +17 -13
- data/vendor/pygments-main/pygments/lexers/php.py +1 -1
- data/vendor/pygments-main/pygments/lexers/praat.py +1 -1
- data/vendor/pygments-main/pygments/lexers/prolog.py +1 -1
- data/vendor/pygments-main/pygments/lexers/python.py +2 -1
- data/vendor/pygments-main/pygments/lexers/qvt.py +1 -1
- data/vendor/pygments-main/pygments/lexers/r.py +1 -1
- data/vendor/pygments-main/pygments/lexers/rdf.py +1 -1
- data/vendor/pygments-main/pygments/lexers/rebol.py +1 -1
- data/vendor/pygments-main/pygments/lexers/resource.py +1 -1
- data/vendor/pygments-main/pygments/lexers/rnc.py +1 -1
- data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -1
- data/vendor/pygments-main/pygments/lexers/robotframework.py +1 -1
- data/vendor/pygments-main/pygments/lexers/ruby.py +1 -1
- data/vendor/pygments-main/pygments/lexers/rust.py +41 -30
- data/vendor/pygments-main/pygments/lexers/sas.py +7 -7
- data/vendor/pygments-main/pygments/lexers/scripting.py +1 -1
- data/vendor/pygments-main/pygments/lexers/shell.py +14 -10
- data/vendor/pygments-main/pygments/lexers/smalltalk.py +1 -1
- data/vendor/pygments-main/pygments/lexers/smv.py +28 -24
- data/vendor/pygments-main/pygments/lexers/snobol.py +1 -1
- data/vendor/pygments-main/pygments/lexers/special.py +1 -1
- data/vendor/pygments-main/pygments/lexers/sql.py +1 -1
- data/vendor/pygments-main/pygments/lexers/stata.py +9 -7
- data/vendor/pygments-main/pygments/lexers/supercollider.py +1 -1
- data/vendor/pygments-main/pygments/lexers/tcl.py +1 -1
- data/vendor/pygments-main/pygments/lexers/templates.py +48 -17
- data/vendor/pygments-main/pygments/lexers/testing.py +1 -1
- data/vendor/pygments-main/pygments/lexers/text.py +1 -1
- data/vendor/pygments-main/pygments/lexers/textedit.py +1 -1
- data/vendor/pygments-main/pygments/lexers/textfmts.py +1 -1
- data/vendor/pygments-main/pygments/lexers/theorem.py +1 -1
- data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -1
- data/vendor/pygments-main/pygments/lexers/typoscript.py +8 -7
- data/vendor/pygments-main/pygments/lexers/urbi.py +1 -1
- data/vendor/pygments-main/pygments/lexers/varnish.py +3 -3
- data/vendor/pygments-main/pygments/lexers/verification.py +3 -3
- data/vendor/pygments-main/pygments/lexers/web.py +1 -1
- data/vendor/pygments-main/pygments/lexers/webmisc.py +20 -11
- data/vendor/pygments-main/pygments/lexers/whiley.py +7 -8
- data/vendor/pygments-main/pygments/lexers/x10.py +1 -1
- data/vendor/pygments-main/pygments/lexers/xorg.py +36 -0
- data/vendor/pygments-main/pygments/modeline.py +6 -5
- data/vendor/pygments-main/pygments/plugin.py +12 -18
- data/vendor/pygments-main/pygments/regexopt.py +1 -1
- data/vendor/pygments-main/pygments/scanner.py +1 -1
- data/vendor/pygments-main/pygments/sphinxext.py +1 -1
- data/vendor/pygments-main/pygments/style.py +1 -1
- data/vendor/pygments-main/pygments/styles/__init__.py +4 -2
- data/vendor/pygments-main/pygments/styles/abap.py +29 -0
- data/vendor/pygments-main/pygments/styles/algol.py +1 -1
- data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -1
- data/vendor/pygments-main/pygments/styles/arduino.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/igor.py +1 -1
- data/vendor/pygments-main/pygments/styles/lovelace.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/paraiso_dark.py +1 -1
- data/vendor/pygments-main/pygments/styles/paraiso_light.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/rainbow_dash.py +89 -0
- data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
- data/vendor/pygments-main/pygments/styles/sas.py +3 -0
- data/vendor/pygments-main/pygments/styles/stata.py +3 -0
- 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 +1 -1
- data/vendor/pygments-main/pygments/token.py +1 -1
- data/vendor/pygments-main/pygments/unistring.py +1 -1
- data/vendor/pygments-main/pygments/util.py +5 -4
- data/vendor/pygments-main/scripts/check_sources.py +2 -2
- data/vendor/pygments-main/scripts/debug_lexer.py +1 -1
- data/vendor/pygments-main/scripts/get_vimkw.py +1 -1
- data/vendor/pygments-main/setup.cfg +2 -2
- data/vendor/pygments-main/setup.py +3 -3
- metadata +6 -4
- data/vendor/pygments-main/scripts/find_error.py +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68bbaf00ae347f4be0aa0915c3c91d3702fb1018
|
4
|
+
data.tar.gz: 3a35c538fdf8ceec9ad26f3ac86cb708e73f7109
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ab74f4da1c783693f827b3245abf4a9d88c75fc92fbaeba78950f29638f36e85e61cef83d936537937e33749237d12b139ec46c1df3d03e8aa0a38cb629be0c
|
7
|
+
data.tar.gz: 0afd2f0409c4932453582ab242f8501601528a266411b6bcd1b1fc235da82074832a5d71d9adce682f0dcd099e23286e22342236c132dc9cd73b635b78878b25
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,14 @@
|
|
1
|
-
|
1
|
+
CHANGELOG
|
2
2
|
===========
|
3
3
|
|
4
|
+
Version 1.2.0 (2017/09/13)
|
5
|
+
-----------------------------
|
6
|
+
|
7
|
+
* Exclude symlinks from the gem package to solve Windows issues [#181](https://github.com/tmm1/pygments.rb/pull/181)
|
8
|
+
* Upgrade pygments to 2.0.0 [#180](https://github.com/tmm1/pygments.rb/pull/180)
|
9
|
+
|
4
10
|
Version 1.1.2 (2017/04/03)
|
11
|
+
-----------------------------
|
5
12
|
|
6
13
|
* Resolves #176 exclude find_error.py symlink from gem [#177](https://github.com/tmm1/pygments.rb/pull/177)
|
7
14
|
|
data/Rakefile
CHANGED
data/lib/pygments/version.rb
CHANGED
data/pygments.rb.gemspec
CHANGED
@@ -21,6 +21,5 @@ Gem::Specification.new do |s|
|
|
21
21
|
# s.extensions = ['ext/extconf.rb']
|
22
22
|
s.require_paths = ['lib']
|
23
23
|
|
24
|
-
|
25
|
-
s.files = `git ls-files -- . #{exclude}`.split("\n")
|
24
|
+
s.files = `git ls-files`.split("\n").select { |f| !File.symlink?(f) }
|
26
25
|
end
|
@@ -155,6 +155,7 @@ Other contributors, listed alphabetically, are:
|
|
155
155
|
* Dominik Picheta -- Nimrod lexer
|
156
156
|
* Andrew Pinkham -- RTF Formatter Refactoring
|
157
157
|
* Clément Prévost -- UrbiScript lexer
|
158
|
+
* Tanner Prynn -- cmdline -x option and loading lexers from files
|
158
159
|
* Oleh Prypin -- Crystal lexer (based on Ruby lexer)
|
159
160
|
* Elias Rabel -- Fortran fixed form lexer
|
160
161
|
* raichoo -- Idris lexer
|
@@ -173,6 +174,7 @@ Other contributors, listed alphabetically, are:
|
|
173
174
|
* Matteo Sasso -- Common Lisp lexer
|
174
175
|
* Joe Schafer -- Ada lexer
|
175
176
|
* Ken Schutte -- Matlab lexers
|
177
|
+
* René Schwaiger -- Rainbow Dash style
|
176
178
|
* Sebastian Schweizer -- Whiley lexer
|
177
179
|
* Tassilo Schweyer -- Io, MOOCode lexers
|
178
180
|
* Ted Shaw -- AutoIt lexer
|
@@ -6,9 +6,9 @@ Issue numbers refer to the tracker at
|
|
6
6
|
pull request numbers to the requests at
|
7
7
|
<https://bitbucket.org/birkenfeld/pygments-main/pull-requests/merged>.
|
8
8
|
|
9
|
-
Version 2.2
|
10
|
-
|
11
|
-
(
|
9
|
+
Version 2.2.0
|
10
|
+
-------------
|
11
|
+
(release Jan 22, 2017)
|
12
12
|
|
13
13
|
- Added lexers:
|
14
14
|
|
@@ -24,6 +24,17 @@ Version 2.2
|
|
24
24
|
* NCAR command language (PR#536)
|
25
25
|
* Extempore (PR#530)
|
26
26
|
* Cap'n Proto (PR#595)
|
27
|
+
* Whiley (PR#573)
|
28
|
+
* Monte (PR#592)
|
29
|
+
* Crystal (PR#576)
|
30
|
+
* Snowball (PR#589)
|
31
|
+
* CapDL (PR#579)
|
32
|
+
* NuSMV (PR#564)
|
33
|
+
* SAS, Stata (PR#593)
|
34
|
+
|
35
|
+
- Added the ability to load lexer and formatter classes directly from files
|
36
|
+
with the `-x` command line option and the `lexers.load_lexer_from_file()`
|
37
|
+
and `formatters.load_formatter_from_file()` functions. (PR#559)
|
27
38
|
|
28
39
|
- Added `lexers.find_lexer_class_by_name()`. (#1203)
|
29
40
|
|
@@ -41,12 +52,24 @@ Version 2.2
|
|
41
52
|
|
42
53
|
- Improved the CSS lexer. (#1083, #1130)
|
43
54
|
|
55
|
+
- Added "Rainbow Dash" style. (PR#623)
|
56
|
+
|
57
|
+
- Delay loading `pkg_resources`, which takes a long while to import. (PR#690)
|
58
|
+
|
59
|
+
|
60
|
+
Version 2.1.3
|
61
|
+
-------------
|
62
|
+
(released Mar 2, 2016)
|
63
|
+
|
64
|
+
- Fixed regression in Bash lexer (PR#563)
|
65
|
+
|
44
66
|
|
45
67
|
Version 2.1.2
|
46
68
|
-------------
|
47
|
-
(
|
69
|
+
(released Feb 29, 2016)
|
48
70
|
|
49
71
|
- Fixed Python 3 regression in image formatter (#1215)
|
72
|
+
- Fixed regression in Bash lexer (PR#562)
|
50
73
|
|
51
74
|
|
52
75
|
Version 2.1.1
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
7941677dc77d
|
@@ -82,7 +82,7 @@
|
|
82
82
|
|
83
83
|
{% block footer %}
|
84
84
|
<div class="footer" role="contentinfo">
|
85
|
-
© Copyright 2006-
|
85
|
+
© Copyright 2006-2017, Georg Brandl and Pygments contributors.
|
86
86
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> {{
|
87
87
|
sphinx_version }}. <br/>
|
88
88
|
Pygments logo created by <a href="http://joelunger.com">Joel Unger</a>.
|
@@ -4,7 +4,7 @@
|
|
4
4
|
*
|
5
5
|
* Sphinx stylesheet -- pygments14 theme. Heavily copied from sphinx13.
|
6
6
|
*
|
7
|
-
* :copyright: Copyright 2006-
|
7
|
+
* :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
|
8
8
|
* :license: BSD, see LICENSE for details.
|
9
9
|
*
|
10
10
|
*/
|
@@ -62,6 +62,18 @@ Functions from :mod:`pygments.lexers`:
|
|
62
62
|
Will raise :exc:`pygments.util.ClassNotFound` if not lexer for that mimetype
|
63
63
|
is found.
|
64
64
|
|
65
|
+
.. function:: load_lexer_from_file(filename, lexername="CustomLexer", **options)
|
66
|
+
|
67
|
+
Return a `Lexer` subclass instance loaded from the provided file, relative
|
68
|
+
to the current directory. The file is expected to contain a Lexer class
|
69
|
+
named `lexername` (by default, CustomLexer). Users should be very careful with
|
70
|
+
the input, because this method is equivalent to running eval on the input file.
|
71
|
+
The lexer is given the `options` at its instantiation.
|
72
|
+
|
73
|
+
:exc:`ClassNotFound` is raised if there are any errors loading the Lexer
|
74
|
+
|
75
|
+
.. versionadded:: 2.2
|
76
|
+
|
65
77
|
.. function:: guess_lexer(text, **options)
|
66
78
|
|
67
79
|
Return a `Lexer` subclass instance that's guessed from the text in
|
@@ -125,6 +137,17 @@ Functions from :mod:`pygments.formatters`:
|
|
125
137
|
Will raise :exc:`pygments.util.ClassNotFound` if no formatter for that filename
|
126
138
|
is found.
|
127
139
|
|
140
|
+
.. function:: load_formatter_from_file(filename, formattername="CustomFormatter", **options)
|
141
|
+
|
142
|
+
Return a `Formatter` subclass instance loaded from the provided file, relative
|
143
|
+
to the current directory. The file is expected to contain a Formatter class
|
144
|
+
named ``formattername`` (by default, CustomFormatter). Users should be very
|
145
|
+
careful with the input, because this method is equivalent to running eval
|
146
|
+
on the input file. The formatter is given the `options` at its instantiation.
|
147
|
+
|
148
|
+
:exc:`ClassNotFound` is raised if there are any errors loading the Formatter
|
149
|
+
|
150
|
+
.. versionadded:: 2.2
|
128
151
|
|
129
152
|
.. module:: pygments.styles
|
130
153
|
|
@@ -99,6 +99,23 @@ The ``-N`` option guesses a lexer name for a given filename, so that ::
|
|
99
99
|
will print out ``python``. It won't highlight anything yet. If no specific
|
100
100
|
lexer is known for that filename, ``text`` is printed.
|
101
101
|
|
102
|
+
Custom Lexers and Formatters
|
103
|
+
----------------------------
|
104
|
+
|
105
|
+
.. versionadded:: 2.2
|
106
|
+
|
107
|
+
The ``-x`` flag enables custom lexers and formatters to be loaded
|
108
|
+
from files relative to the current directory. Create a file with a class named
|
109
|
+
CustomLexer or CustomFormatter, then specify it on the command line::
|
110
|
+
|
111
|
+
$ pygmentize -l your_lexer.py -f your_formatter.py -x
|
112
|
+
|
113
|
+
You can also specify the name of your class with a colon::
|
114
|
+
|
115
|
+
$ pygmentize -l your_lexer.py:SomeLexer -x
|
116
|
+
|
117
|
+
For more information, see :doc:`the Pygments documentation on Lexer development
|
118
|
+
<lexerdevelopment>`.
|
102
119
|
|
103
120
|
Getting help
|
104
121
|
------------
|
@@ -88,8 +88,47 @@ one.
|
|
88
88
|
Adding and testing a new lexer
|
89
89
|
==============================
|
90
90
|
|
91
|
-
|
92
|
-
|
91
|
+
The easiest way to use a new lexer is to use Pygments' support for loading
|
92
|
+
the lexer from a file relative to your current directory.
|
93
|
+
|
94
|
+
First, change the name of your lexer class to CustomLexer:
|
95
|
+
|
96
|
+
.. code-block:: python
|
97
|
+
|
98
|
+
from pygments.lexer import RegexLexer
|
99
|
+
from pygments.token import *
|
100
|
+
|
101
|
+
class CustomLexer(RegexLexer):
|
102
|
+
"""All your lexer code goes here!"""
|
103
|
+
|
104
|
+
Then you can load the lexer from the command line with the additional
|
105
|
+
flag ``-x``:
|
106
|
+
|
107
|
+
.. code-block:: console
|
108
|
+
|
109
|
+
$ pygmentize -l your_lexer_file.py -x
|
110
|
+
|
111
|
+
To specify a class name other than CustomLexer, append it with a colon:
|
112
|
+
|
113
|
+
.. code-block:: console
|
114
|
+
|
115
|
+
$ pygmentize -l your_lexer.py:SomeLexer -x
|
116
|
+
|
117
|
+
Or, using the Python API:
|
118
|
+
|
119
|
+
.. code-block:: python
|
120
|
+
|
121
|
+
# For a lexer named CustomLexer
|
122
|
+
your_lexer = load_lexer_from_file(filename, **options)
|
123
|
+
|
124
|
+
# For a lexer named MyNewLexer
|
125
|
+
your_named_lexer = load_lexer_from_file(filename, "MyNewLexer", **options)
|
126
|
+
|
127
|
+
When loading custom lexers and formatters, be extremely careful to use only
|
128
|
+
trusted files; Pygments will perform the equivalent of ``eval`` on them.
|
129
|
+
|
130
|
+
If you only want to use your lexer with the Pygments API, you can import and
|
131
|
+
instantiate the lexer yourself, then pass it to :func:`pygments.highlight`.
|
93
132
|
|
94
133
|
To prepare your new lexer for inclusion in the Pygments distribution, so that it
|
95
134
|
will be found when passing filenames or lexer aliases from the command line, you
|
@@ -361,7 +400,7 @@ There are a few more things you can do with states:
|
|
361
400
|
tokens = {...}
|
362
401
|
|
363
402
|
def get_tokens_unprocessed(self, text, stack=('root', 'otherstate')):
|
364
|
-
for item in RegexLexer.get_tokens_unprocessed(text, stack):
|
403
|
+
for item in RegexLexer.get_tokens_unprocessed(self, text, stack):
|
365
404
|
yield item
|
366
405
|
|
367
406
|
Some lexers like the `PhpLexer` use this to make the leading ``<?php``
|
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/bin/bash
|
2
2
|
# Best effort auto-pygmentization with transparent decompression
|
3
|
-
# by Reuben Thomas 2008-
|
3
|
+
# by Reuben Thomas 2008-2016
|
4
4
|
# This program is in the public domain.
|
5
5
|
|
6
6
|
# Strategy: first see if pygmentize can find a lexer; if not, ask file; if that finds nothing, fail
|
@@ -25,6 +25,7 @@ if [[ "$lexer" == text ]]; then
|
|
25
25
|
text/x-awk) lexer=awk;;
|
26
26
|
text/x-c) lexer=c;;
|
27
27
|
text/x-c++) lexer=cpp;;
|
28
|
+
text/x-crystal) lexer=crystal;;
|
28
29
|
text/x-diff) lexer=diff;;
|
29
30
|
text/x-fortran) lexer=fortran;;
|
30
31
|
text/x-gawk) lexer=gawk;;
|
@@ -40,7 +41,6 @@ if [[ "$lexer" == text ]]; then
|
|
40
41
|
text/x-po) lexer=po;;
|
41
42
|
text/x-python) lexer=python;;
|
42
43
|
text/x-ruby) lexer=ruby;;
|
43
|
-
text/x-crystal) lexer=crystal;;
|
44
44
|
text/x-shellscript) lexer=sh;;
|
45
45
|
text/x-tcl) lexer=tcl;;
|
46
46
|
text/x-tex|text/x-texinfo) lexer=latex;; # FIXME: texinfo really needs its own lexer
|
@@ -66,19 +66,36 @@ if [[ "$lexer" == text ]]; then
|
|
66
66
|
esac
|
67
67
|
fi
|
68
68
|
|
69
|
+
# Find a preprocessor for compressed files
|
70
|
+
concat=cat
|
71
|
+
case $(file $file_common_opts --mime-type "$file") in
|
72
|
+
application/x-gzip) concat=zcat;;
|
73
|
+
application/x-bzip2) concat=bzcat;;
|
74
|
+
application/x-xz) concat=xzcat;;
|
75
|
+
esac
|
76
|
+
|
77
|
+
# Find a suitable lexer, preceded by a hex dump for binary files
|
78
|
+
prereader=""
|
69
79
|
encoding=$(file --mime-encoding --uncompress $file_common_opts "$file")
|
70
80
|
if [[ $encoding == "binary" ]]; then
|
71
|
-
|
81
|
+
prereader="od -x" # POSIX fallback
|
82
|
+
if [[ -n $(which hd) ]]; then
|
83
|
+
prereader="hd" # preferred
|
84
|
+
fi
|
85
|
+
lexer=hexdump
|
86
|
+
encoding=latin1
|
72
87
|
fi
|
73
|
-
|
74
88
|
if [[ -n "$lexer" ]]; then
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
89
|
+
reader="pygmentize -O inencoding=$encoding $PYGMENTIZE_OPTS $options -l $lexer"
|
90
|
+
fi
|
91
|
+
|
92
|
+
# If we found a reader, run it
|
93
|
+
if [[ -n "$reader" ]]; then
|
94
|
+
if [[ -n "$prereader" ]]; then
|
95
|
+
exec $concat "$file" | $prereader | $reader
|
96
|
+
else
|
97
|
+
exec $concat "$file" | $reader
|
98
|
+
fi
|
82
99
|
fi
|
83
100
|
|
84
101
|
exit 1
|
@@ -31,7 +31,7 @@
|
|
31
31
|
If you do not want to do that and are willing to accept larger HTML
|
32
32
|
output, you can set the INLINESTYLES option below to True.
|
33
33
|
|
34
|
-
:copyright: Copyright 2006-
|
34
|
+
:copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
|
35
35
|
:license: BSD, see LICENSE for details.
|
36
36
|
"""
|
37
37
|
|
@@ -31,7 +31,7 @@
|
|
31
31
|
.. _directive documentation:
|
32
32
|
http://docutils.sourceforge.net/docs/howto/rst-directives.html
|
33
33
|
|
34
|
-
:copyright: Copyright 2006-
|
34
|
+
:copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
|
35
35
|
:license: BSD, see LICENSE for details.
|
36
36
|
"""
|
37
37
|
|
@@ -22,14 +22,14 @@
|
|
22
22
|
.. _Pygments tip:
|
23
23
|
http://bitbucket.org/birkenfeld/pygments-main/get/tip.zip#egg=Pygments-dev
|
24
24
|
|
25
|
-
:copyright: Copyright 2006-
|
25
|
+
:copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
|
26
26
|
:license: BSD, see LICENSE for details.
|
27
27
|
"""
|
28
28
|
import sys
|
29
29
|
|
30
30
|
from pygments.util import StringIO, BytesIO
|
31
31
|
|
32
|
-
__version__ = '2.
|
32
|
+
__version__ = '2.2.0'
|
33
33
|
__docformat__ = 'restructuredtext'
|
34
34
|
|
35
35
|
__all__ = ['lex', 'format', 'highlight']
|
@@ -5,12 +5,13 @@
|
|
5
5
|
|
6
6
|
Command line interface.
|
7
7
|
|
8
|
-
:copyright: Copyright 2006-
|
8
|
+
:copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
|
9
9
|
:license: BSD, see LICENSE for details.
|
10
10
|
"""
|
11
11
|
|
12
12
|
from __future__ import print_function
|
13
13
|
|
14
|
+
import os
|
14
15
|
import sys
|
15
16
|
import getopt
|
16
17
|
from textwrap import dedent
|
@@ -19,19 +20,20 @@ from pygments import __version__, highlight
|
|
19
20
|
from pygments.util import ClassNotFound, OptionError, docstring_headline, \
|
20
21
|
guess_decode, guess_decode_from_terminal, terminal_encoding
|
21
22
|
from pygments.lexers import get_all_lexers, get_lexer_by_name, guess_lexer, \
|
22
|
-
get_lexer_for_filename, find_lexer_class_for_filename
|
23
|
+
load_lexer_from_file, get_lexer_for_filename, find_lexer_class_for_filename
|
23
24
|
from pygments.lexers.special import TextLexer
|
24
25
|
from pygments.formatters.latex import LatexEmbeddedLexer, LatexFormatter
|
25
26
|
from pygments.formatters import get_all_formatters, get_formatter_by_name, \
|
26
|
-
get_formatter_for_filename, find_formatter_class
|
27
|
+
load_formatter_from_file, get_formatter_for_filename, find_formatter_class
|
27
28
|
from pygments.formatters.terminal import TerminalFormatter
|
29
|
+
from pygments.formatters.terminal256 import Terminal256Formatter
|
28
30
|
from pygments.filters import get_all_filters, find_filter_class
|
29
31
|
from pygments.styles import get_all_styles, get_style_by_name
|
30
32
|
|
31
33
|
|
32
34
|
USAGE = """\
|
33
35
|
Usage: %s [-l <lexer> | -g] [-F <filter>[:<options>]] [-f <formatter>]
|
34
|
-
[-O <options>] [-P <option=value>] [-s] [-v] [-o <outfile>] [<infile>]
|
36
|
+
[-O <options>] [-P <option=value>] [-s] [-v] [-x] [-o <outfile>] [<infile>]
|
35
37
|
|
36
38
|
%s -S <style> -f <formatter> [-a <arg>] [-O <options>] [-P <option=value>]
|
37
39
|
%s -L [<which> ...]
|
@@ -57,6 +59,14 @@ Likewise, <formatter> is a formatter name, and will be guessed from
|
|
57
59
|
the extension of the output file name. If no output file is given,
|
58
60
|
the terminal formatter will be used by default.
|
59
61
|
|
62
|
+
The additional option -x allows custom lexers and formatters to be
|
63
|
+
loaded from a .py file relative to the current working directory. For
|
64
|
+
example, ``-l ./customlexer.py -x``. By default, this option expects a
|
65
|
+
file with a class named CustomLexer or CustomFormatter; you can also
|
66
|
+
specify your own class name with a colon (``-l ./lexer.py:MyLexer``).
|
67
|
+
Users should be very careful not to use this option with untrusted files,
|
68
|
+
because it will import and run them.
|
69
|
+
|
60
70
|
With the -O option, you can give the lexer and formatter a comma-
|
61
71
|
separated list of options, e.g. ``-O bg=light,python=cool``.
|
62
72
|
|
@@ -223,7 +233,7 @@ def main_inner(popts, args, usage):
|
|
223
233
|
return 0
|
224
234
|
|
225
235
|
if opts.pop('-V', None) is not None:
|
226
|
-
print('Pygments version %s, (c) 2006-
|
236
|
+
print('Pygments version %s, (c) 2006-2017 by Georg Brandl.' % __version__)
|
227
237
|
return 0
|
228
238
|
|
229
239
|
# handle ``pygmentize -L``
|
@@ -314,17 +324,35 @@ def main_inner(popts, args, usage):
|
|
314
324
|
F_opts = _parse_filters(F_opts)
|
315
325
|
opts.pop('-F', None)
|
316
326
|
|
327
|
+
allow_custom_lexer_formatter = False
|
328
|
+
# -x: allow custom (eXternal) lexers and formatters
|
329
|
+
if opts.pop('-x', None) is not None:
|
330
|
+
allow_custom_lexer_formatter = True
|
331
|
+
|
317
332
|
# select lexer
|
318
333
|
lexer = None
|
319
334
|
|
320
335
|
# given by name?
|
321
336
|
lexername = opts.pop('-l', None)
|
322
337
|
if lexername:
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
338
|
+
# custom lexer, located relative to user's cwd
|
339
|
+
if allow_custom_lexer_formatter and '.py' in lexername:
|
340
|
+
try:
|
341
|
+
if ':' in lexername:
|
342
|
+
filename, name = lexername.rsplit(':', 1)
|
343
|
+
lexer = load_lexer_from_file(filename, name,
|
344
|
+
**parsed_opts)
|
345
|
+
else:
|
346
|
+
lexer = load_lexer_from_file(lexername, **parsed_opts)
|
347
|
+
except ClassNotFound as err:
|
348
|
+
print('Error:', err, file=sys.stderr)
|
349
|
+
return 1
|
350
|
+
else:
|
351
|
+
try:
|
352
|
+
lexer = get_lexer_by_name(lexername, **parsed_opts)
|
353
|
+
except (OptionError, ClassNotFound) as err:
|
354
|
+
print('Error:', err, file=sys.stderr)
|
355
|
+
return 1
|
328
356
|
|
329
357
|
# read input code
|
330
358
|
code = None
|
@@ -401,11 +429,24 @@ def main_inner(popts, args, usage):
|
|
401
429
|
outfn = opts.pop('-o', None)
|
402
430
|
fmter = opts.pop('-f', None)
|
403
431
|
if fmter:
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
432
|
+
# custom formatter, located relative to user's cwd
|
433
|
+
if allow_custom_lexer_formatter and '.py' in fmter:
|
434
|
+
try:
|
435
|
+
if ':' in fmter:
|
436
|
+
file, fmtername = fmter.rsplit(':', 1)
|
437
|
+
fmter = load_formatter_from_file(file, fmtername,
|
438
|
+
**parsed_opts)
|
439
|
+
else:
|
440
|
+
fmter = load_formatter_from_file(fmter, **parsed_opts)
|
441
|
+
except ClassNotFound as err:
|
442
|
+
print('Error:', err, file=sys.stderr)
|
443
|
+
return 1
|
444
|
+
else:
|
445
|
+
try:
|
446
|
+
fmter = get_formatter_by_name(fmter, **parsed_opts)
|
447
|
+
except (OptionError, ClassNotFound) as err:
|
448
|
+
print('Error:', err, file=sys.stderr)
|
449
|
+
return 1
|
409
450
|
|
410
451
|
if outfn:
|
411
452
|
if not fmter:
|
@@ -421,7 +462,10 @@ def main_inner(popts, args, usage):
|
|
421
462
|
return 1
|
422
463
|
else:
|
423
464
|
if not fmter:
|
424
|
-
|
465
|
+
if '256' in os.environ.get('TERM', ''):
|
466
|
+
fmter = Terminal256Formatter(**parsed_opts)
|
467
|
+
else:
|
468
|
+
fmter = TerminalFormatter(**parsed_opts)
|
425
469
|
if sys.version_info > (3,):
|
426
470
|
# Python 3: we have to use .buffer to get a binary stream
|
427
471
|
outfile = sys.stdout.buffer
|
@@ -495,7 +539,7 @@ def main(args=sys.argv):
|
|
495
539
|
usage = USAGE % ((args[0],) * 6)
|
496
540
|
|
497
541
|
try:
|
498
|
-
popts, args = getopt.getopt(args[1:], "l:f:F:o:O:P:LS:a:N:
|
542
|
+
popts, args = getopt.getopt(args[1:], "l:f:F:o:O:P:LS:a:N:vhVHgsx")
|
499
543
|
except getopt.GetoptError:
|
500
544
|
print(usage, file=sys.stderr)
|
501
545
|
return 2
|