pygments.rb 1.1.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
Pygments formatters.
|
|
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
|
|
|
@@ -20,7 +20,7 @@ from pygments.plugin import find_plugin_formatters
|
|
|
20
20
|
from pygments.util import ClassNotFound, itervalues
|
|
21
21
|
|
|
22
22
|
__all__ = ['get_formatter_by_name', 'get_formatter_for_filename',
|
|
23
|
-
'get_all_formatters'] + list(FORMATTERS)
|
|
23
|
+
'get_all_formatters', 'load_formatter_from_file'] + list(FORMATTERS)
|
|
24
24
|
|
|
25
25
|
_formatter_cache = {} # classes by name
|
|
26
26
|
_pattern_cache = {}
|
|
@@ -79,6 +79,41 @@ def get_formatter_by_name(_alias, **options):
|
|
|
79
79
|
return cls(**options)
|
|
80
80
|
|
|
81
81
|
|
|
82
|
+
def load_formatter_from_file(filename, formattername="CustomFormatter",
|
|
83
|
+
**options):
|
|
84
|
+
"""Load a formatter from a file.
|
|
85
|
+
|
|
86
|
+
This method expects a file located relative to the current working
|
|
87
|
+
directory, which contains a class named CustomFormatter. By default,
|
|
88
|
+
it expects the Formatter to be named CustomFormatter; you can specify
|
|
89
|
+
your own class name as the second argument to this function.
|
|
90
|
+
|
|
91
|
+
Users should be very careful with the input, because this method
|
|
92
|
+
is equivalent to running eval on the input file.
|
|
93
|
+
|
|
94
|
+
Raises ClassNotFound if there are any problems importing the Formatter.
|
|
95
|
+
|
|
96
|
+
.. versionadded:: 2.2
|
|
97
|
+
"""
|
|
98
|
+
try:
|
|
99
|
+
# This empty dict will contain the namespace for the exec'd file
|
|
100
|
+
custom_namespace = {}
|
|
101
|
+
exec(open(filename, 'rb').read(), custom_namespace)
|
|
102
|
+
# Retrieve the class `formattername` from that namespace
|
|
103
|
+
if formattername not in custom_namespace:
|
|
104
|
+
raise ClassNotFound('no valid %s class found in %s' %
|
|
105
|
+
(formattername, filename))
|
|
106
|
+
formatter_class = custom_namespace[formattername]
|
|
107
|
+
# And finally instantiate it with the options
|
|
108
|
+
return formatter_class(**options)
|
|
109
|
+
except IOError as err:
|
|
110
|
+
raise ClassNotFound('cannot read %s' % filename)
|
|
111
|
+
except ClassNotFound as err:
|
|
112
|
+
raise
|
|
113
|
+
except Exception as err:
|
|
114
|
+
raise ClassNotFound('error when loading custom formatter: %s' % err)
|
|
115
|
+
|
|
116
|
+
|
|
82
117
|
def get_formatter_for_filename(fn, **options):
|
|
83
118
|
"""Lookup and instantiate a formatter by filename pattern.
|
|
84
119
|
|
|
@@ -5,10 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Formatter for Pixmap output.
|
|
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
|
+
import os
|
|
12
13
|
import sys
|
|
13
14
|
|
|
14
15
|
from pygments.formatter import Formatter
|
|
@@ -47,6 +48,7 @@ STYLES = {
|
|
|
47
48
|
# A sane default for modern systems
|
|
48
49
|
DEFAULT_FONT_NAME_NIX = 'Bitstream Vera Sans Mono'
|
|
49
50
|
DEFAULT_FONT_NAME_WIN = 'Courier New'
|
|
51
|
+
DEFAULT_FONT_NAME_MAC = 'Courier New'
|
|
50
52
|
|
|
51
53
|
|
|
52
54
|
class PilNotAvailable(ImportError):
|
|
@@ -71,6 +73,10 @@ class FontManager(object):
|
|
|
71
73
|
if not font_name:
|
|
72
74
|
self.font_name = DEFAULT_FONT_NAME_WIN
|
|
73
75
|
self._create_win()
|
|
76
|
+
elif sys.platform.startswith('darwin'):
|
|
77
|
+
if not font_name:
|
|
78
|
+
self.font_name = DEFAULT_FONT_NAME_MAC
|
|
79
|
+
self._create_mac()
|
|
74
80
|
else:
|
|
75
81
|
if not font_name:
|
|
76
82
|
self.font_name = DEFAULT_FONT_NAME_NIX
|
|
@@ -111,6 +117,37 @@ class FontManager(object):
|
|
|
111
117
|
else:
|
|
112
118
|
self.fonts[style] = self.fonts['NORMAL']
|
|
113
119
|
|
|
120
|
+
def _get_mac_font_path(self, font_map, name, style):
|
|
121
|
+
return font_map.get((name + ' ' + style).strip().lower())
|
|
122
|
+
|
|
123
|
+
def _create_mac(self):
|
|
124
|
+
font_map = {}
|
|
125
|
+
for font_dir in (os.path.join(os.getenv("HOME"), 'Library/Fonts/'),
|
|
126
|
+
'/Library/Fonts/', '/System/Library/Fonts/'):
|
|
127
|
+
font_map.update(
|
|
128
|
+
((os.path.splitext(f)[0].lower(), os.path.join(font_dir, f))
|
|
129
|
+
for f in os.listdir(font_dir) if f.lower().endswith('ttf')))
|
|
130
|
+
|
|
131
|
+
for name in STYLES['NORMAL']:
|
|
132
|
+
path = self._get_mac_font_path(font_map, self.font_name, name)
|
|
133
|
+
if path is not None:
|
|
134
|
+
self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size)
|
|
135
|
+
break
|
|
136
|
+
else:
|
|
137
|
+
raise FontNotFound('No usable fonts named: "%s"' %
|
|
138
|
+
self.font_name)
|
|
139
|
+
for style in ('ITALIC', 'BOLD', 'BOLDITALIC'):
|
|
140
|
+
for stylename in STYLES[style]:
|
|
141
|
+
path = self._get_mac_font_path(font_map, self.font_name, stylename)
|
|
142
|
+
if path is not None:
|
|
143
|
+
self.fonts[style] = ImageFont.truetype(path, self.font_size)
|
|
144
|
+
break
|
|
145
|
+
else:
|
|
146
|
+
if style == 'BOLDITALIC':
|
|
147
|
+
self.fonts[style] = self.fonts['BOLD']
|
|
148
|
+
else:
|
|
149
|
+
self.fonts[style] = self.fonts['NORMAL']
|
|
150
|
+
|
|
114
151
|
def _lookup_win(self, key, basename, styles, fail=False):
|
|
115
152
|
for suffix in ('', ' (TrueType)'):
|
|
116
153
|
for style in styles:
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
Pygments lexers.
|
|
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
|
|
|
@@ -22,7 +22,7 @@ from pygments.util import ClassNotFound, itervalues, guess_decode
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
__all__ = ['get_lexer_by_name', 'get_lexer_for_filename', 'find_lexer_class',
|
|
25
|
-
'guess_lexer'] + list(LEXERS)
|
|
25
|
+
'guess_lexer', 'load_lexer_from_file'] + list(LEXERS)
|
|
26
26
|
|
|
27
27
|
_lexer_cache = {}
|
|
28
28
|
_pattern_cache = {}
|
|
@@ -72,7 +72,7 @@ def find_lexer_class(name):
|
|
|
72
72
|
return cls
|
|
73
73
|
|
|
74
74
|
|
|
75
|
-
def find_lexer_class_by_name(
|
|
75
|
+
def find_lexer_class_by_name(_alias):
|
|
76
76
|
"""Lookup a lexer class by alias.
|
|
77
77
|
|
|
78
78
|
Like `get_lexer_by_name`, but does not instantiate the class.
|
|
@@ -115,6 +115,40 @@ def get_lexer_by_name(_alias, **options):
|
|
|
115
115
|
raise ClassNotFound('no lexer for alias %r found' % _alias)
|
|
116
116
|
|
|
117
117
|
|
|
118
|
+
def load_lexer_from_file(filename, lexername="CustomLexer", **options):
|
|
119
|
+
"""Load a lexer from a file.
|
|
120
|
+
|
|
121
|
+
This method expects a file located relative to the current working
|
|
122
|
+
directory, which contains a Lexer class. By default, it expects the
|
|
123
|
+
Lexer to be name CustomLexer; you can specify your own class name
|
|
124
|
+
as the second argument to this function.
|
|
125
|
+
|
|
126
|
+
Users should be very careful with the input, because this method
|
|
127
|
+
is equivalent to running eval on the input file.
|
|
128
|
+
|
|
129
|
+
Raises ClassNotFound if there are any problems importing the Lexer.
|
|
130
|
+
|
|
131
|
+
.. versionadded:: 2.2
|
|
132
|
+
"""
|
|
133
|
+
try:
|
|
134
|
+
# This empty dict will contain the namespace for the exec'd file
|
|
135
|
+
custom_namespace = {}
|
|
136
|
+
exec(open(filename, 'rb').read(), custom_namespace)
|
|
137
|
+
# Retrieve the class `lexername` from that namespace
|
|
138
|
+
if lexername not in custom_namespace:
|
|
139
|
+
raise ClassNotFound('no valid %s class found in %s' %
|
|
140
|
+
(lexername, filename))
|
|
141
|
+
lexer_class = custom_namespace[lexername]
|
|
142
|
+
# And finally instantiate it with the options
|
|
143
|
+
return lexer_class(**options)
|
|
144
|
+
except IOError as err:
|
|
145
|
+
raise ClassNotFound('cannot read %s' % filename)
|
|
146
|
+
except ClassNotFound as err:
|
|
147
|
+
raise
|
|
148
|
+
except Exception as err:
|
|
149
|
+
raise ClassNotFound('error when loading custom lexer: %s' % err)
|
|
150
|
+
|
|
151
|
+
|
|
118
152
|
def find_lexer_class_for_filename(_fn, code=None):
|
|
119
153
|
"""Get a lexer for a filename.
|
|
120
154
|
|
|
@@ -149,8 +183,8 @@ def find_lexer_class_for_filename(_fn, code=None):
|
|
|
149
183
|
# gets turned into 0.0. Run scripts/detect_missing_analyse_text.py
|
|
150
184
|
# to find lexers which need it overridden.
|
|
151
185
|
if code:
|
|
152
|
-
return cls.analyse_text(code) + bonus
|
|
153
|
-
return cls.priority + bonus
|
|
186
|
+
return cls.analyse_text(code) + bonus, cls.__name__
|
|
187
|
+
return cls.priority + bonus, cls.__name__
|
|
154
188
|
|
|
155
189
|
if matches:
|
|
156
190
|
matches.sort(key=get_rating)
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
TODO: perl/python script in Asymptote SVN similar to asy-list.pl but only
|
|
11
11
|
for function and variable names.
|
|
12
12
|
|
|
13
|
-
:copyright: Copyright 2006-
|
|
13
|
+
:copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
|
|
14
14
|
:license: BSD, see LICENSE for details.
|
|
15
15
|
"""
|
|
16
16
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
Built-in Lasso types, traits, methods, and members.
|
|
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
|
|
|
@@ -471,6 +471,10 @@ BUILTINS = {
|
|
|
471
471
|
'curl_netrc_ignored',
|
|
472
472
|
'curl_netrc_optional',
|
|
473
473
|
'curl_netrc_required',
|
|
474
|
+
'curl_sslversion_default',
|
|
475
|
+
'curl_sslversion_sslv2',
|
|
476
|
+
'curl_sslversion_sslv3',
|
|
477
|
+
'curl_sslversion_tlsv1',
|
|
474
478
|
'curl_version_asynchdns',
|
|
475
479
|
'curl_version_debug',
|
|
476
480
|
'curl_version_gssnegotiate',
|
|
@@ -1102,6 +1106,7 @@ BUILTINS = {
|
|
|
1102
1106
|
'json_open_array',
|
|
1103
1107
|
'json_open_object',
|
|
1104
1108
|
'json_period',
|
|
1109
|
+
'json_positive',
|
|
1105
1110
|
'json_quote_double',
|
|
1106
1111
|
'json_rpccall',
|
|
1107
1112
|
'json_serialize',
|
|
@@ -1229,6 +1234,7 @@ BUILTINS = {
|
|
|
1229
1234
|
'lcapi_loadmodules',
|
|
1230
1235
|
'lcapi_updatedatasourceslist',
|
|
1231
1236
|
'ldap_scope_base',
|
|
1237
|
+
'ldap_scope_children',
|
|
1232
1238
|
'ldap_scope_onelevel',
|
|
1233
1239
|
'ldap_scope_subtree',
|
|
1234
1240
|
'library_once',
|
|
@@ -4044,6 +4050,7 @@ MEMBERS = {
|
|
|
4044
4050
|
'iscntrl',
|
|
4045
4051
|
'isdigit',
|
|
4046
4052
|
'isdir',
|
|
4053
|
+
'isdirectory',
|
|
4047
4054
|
'isempty',
|
|
4048
4055
|
'isemptyelement',
|
|
4049
4056
|
'isfirststep',
|
|
@@ -52,7 +52,7 @@ LEXERS = {
|
|
|
52
52
|
'BCLexer': ('pygments.lexers.algebra', 'BC', ('bc',), ('*.bc',), ()),
|
|
53
53
|
'BSTLexer': ('pygments.lexers.bibtex', 'BST', ('bst', 'bst-pybtex'), ('*.bst',), ()),
|
|
54
54
|
'BaseMakefileLexer': ('pygments.lexers.make', 'Base Makefile', ('basemake',), (), ()),
|
|
55
|
-
'BashLexer': ('pygments.lexers.shell', 'Bash', ('bash', 'sh', 'ksh', 'shell'), ('*.sh', '*.ksh', '*.bash', '*.ebuild', '*.eclass', '*.exheres-0', '*.exlib', '.bashrc', 'bashrc', '.bash_*', 'bash_*', 'PKGBUILD'), ('application/x-sh', 'application/x-shellscript')),
|
|
55
|
+
'BashLexer': ('pygments.lexers.shell', 'Bash', ('bash', 'sh', 'ksh', 'zsh', 'shell'), ('*.sh', '*.ksh', '*.bash', '*.ebuild', '*.eclass', '*.exheres-0', '*.exlib', '*.zsh', '.bashrc', 'bashrc', '.bash_*', 'bash_*', 'zshrc', '.zshrc', 'PKGBUILD'), ('application/x-sh', 'application/x-shellscript')),
|
|
56
56
|
'BashSessionLexer': ('pygments.lexers.shell', 'Bash Session', ('console', 'shell-session'), ('*.sh-session', '*.shell-session'), ('application/x-shell-session', 'application/x-sh-session')),
|
|
57
57
|
'BatchLexer': ('pygments.lexers.shell', 'Batchfile', ('bat', 'batch', 'dosbatch', 'winbatch'), ('*.bat', '*.cmd'), ('application/x-dos-batch',)),
|
|
58
58
|
'BefungeLexer': ('pygments.lexers.esoteric', 'Befunge', ('befunge',), ('*.befunge',), ('application/x-befunge',)),
|
|
@@ -123,7 +123,7 @@ LEXERS = {
|
|
|
123
123
|
'DartLexer': ('pygments.lexers.javascript', 'Dart', ('dart',), ('*.dart',), ('text/x-dart',)),
|
|
124
124
|
'Dasm16Lexer': ('pygments.lexers.github', 'dasm16', ('DASM16',), ('*.dasm16', '*.dasm'), ('text/x-dasm16',)),
|
|
125
125
|
'DebianControlLexer': ('pygments.lexers.installers', 'Debian Control file', ('control', 'debcontrol'), ('control',), ()),
|
|
126
|
-
'DelphiLexer': ('pygments.lexers.pascal', 'Delphi', ('delphi', 'pas', 'pascal', 'objectpascal'), ('*.pas',), ('text/x-pascal',)),
|
|
126
|
+
'DelphiLexer': ('pygments.lexers.pascal', 'Delphi', ('delphi', 'pas', 'pascal', 'objectpascal'), ('*.pas', '*.dpr'), ('text/x-pascal',)),
|
|
127
127
|
'DgLexer': ('pygments.lexers.python', 'dg', ('dg',), ('*.dg',), ('text/x-dg',)),
|
|
128
128
|
'DiffLexer': ('pygments.lexers.diff', 'Diff', ('diff', 'udiff'), ('*.diff', '*.patch'), ('text/x-diff', 'text/x-patch')),
|
|
129
129
|
'DjangoLexer': ('pygments.lexers.templates', 'Django/Jinja', ('django', 'jinja'), (), ('application/x-django-templating', 'application/x-jinja')),
|
|
@@ -291,7 +291,7 @@ LEXERS = {
|
|
|
291
291
|
'NesCLexer': ('pygments.lexers.c_like', 'nesC', ('nesc',), ('*.nc',), ('text/x-nescsrc',)),
|
|
292
292
|
'NewLispLexer': ('pygments.lexers.lisp', 'NewLisp', ('newlisp',), ('*.lsp', '*.nl', '*.kif'), ('text/x-newlisp', 'application/x-newlisp')),
|
|
293
293
|
'NewspeakLexer': ('pygments.lexers.smalltalk', 'Newspeak', ('newspeak',), ('*.ns2',), ('text/x-newspeak',)),
|
|
294
|
-
'NginxConfLexer': ('pygments.lexers.configs', 'Nginx configuration file', ('nginx',), (), ('text/x-nginx-conf',)),
|
|
294
|
+
'NginxConfLexer': ('pygments.lexers.configs', 'Nginx configuration file', ('nginx',), ('nginx.conf',), ('text/x-nginx-conf',)),
|
|
295
295
|
'NimrodLexer': ('pygments.lexers.nimrod', 'Nimrod', ('nim', 'nimrod'), ('*.nim', '*.nimrod'), ('text/x-nim',)),
|
|
296
296
|
'NitLexer': ('pygments.lexers.nit', 'Nit', ('nit',), ('*.nit',), ()),
|
|
297
297
|
'NixLexer': ('pygments.lexers.nix', 'Nix', ('nixos', 'nix'), ('*.nix',), ('text/x-nix',)),
|
|
@@ -381,7 +381,7 @@ LEXERS = {
|
|
|
381
381
|
'ScilabLexer': ('pygments.lexers.matlab', 'Scilab', ('scilab',), ('*.sci', '*.sce', '*.tst'), ('text/scilab',)),
|
|
382
382
|
'ScssLexer': ('pygments.lexers.css', 'SCSS', ('scss',), ('*.scss',), ('text/x-scss',)),
|
|
383
383
|
'ShenLexer': ('pygments.lexers.lisp', 'Shen', ('shen',), ('*.shen',), ('text/x-shen', 'application/x-shen')),
|
|
384
|
-
'SilverLexer': ('pygments.lexers.verification', 'Silver', ('silver',), ('*.sil',), ()),
|
|
384
|
+
'SilverLexer': ('pygments.lexers.verification', 'Silver', ('silver',), ('*.sil', '*.vpr'), ()),
|
|
385
385
|
'SlashLexer': ('pygments.lexers.github', 'Slash', ('slash',), ('*.sl',), ()),
|
|
386
386
|
'SlimLexer': ('pygments.lexers.webmisc', 'Slim', ('slim',), ('*.slim',), ('text/x-slim',)),
|
|
387
387
|
'SmaliLexer': ('pygments.lexers.dalvik', 'Smali', ('smali',), ('*.smali',), ('text/smali',)),
|
|
@@ -422,7 +422,7 @@ LEXERS = {
|
|
|
422
422
|
'TurtleLexer': ('pygments.lexers.rdf', 'Turtle', ('turtle',), ('*.ttl',), ('text/turtle', 'application/x-turtle')),
|
|
423
423
|
'TwigHtmlLexer': ('pygments.lexers.templates', 'HTML+Twig', ('html+twig',), ('*.twig',), ('text/html+twig',)),
|
|
424
424
|
'TwigLexer': ('pygments.lexers.templates', 'Twig', ('twig',), (), ('application/x-twig',)),
|
|
425
|
-
'TypeScriptLexer': ('pygments.lexers.javascript', 'TypeScript', ('ts', 'typescript'), ('*.ts',), ('text/x-typescript',)),
|
|
425
|
+
'TypeScriptLexer': ('pygments.lexers.javascript', 'TypeScript', ('ts', 'typescript'), ('*.ts', '*.tsx'), ('text/x-typescript',)),
|
|
426
426
|
'TypoScriptCssDataLexer': ('pygments.lexers.typoscript', 'TypoScriptCssData', ('typoscriptcssdata',), (), ()),
|
|
427
427
|
'TypoScriptHtmlDataLexer': ('pygments.lexers.typoscript', 'TypoScriptHtmlData', ('typoscripthtmldata',), (), ()),
|
|
428
428
|
'TypoScriptLexer': ('pygments.lexers.typoscript', 'TypoScript', ('typoscript',), ('*.ts', '*.txt'), ('text/x-typoscript',)),
|
|
@@ -449,6 +449,7 @@ LEXERS = {
|
|
|
449
449
|
'XmlLexer': ('pygments.lexers.html', 'XML', ('xml',), ('*.xml', '*.xsl', '*.rss', '*.xslt', '*.xsd', '*.wsdl', '*.wsf'), ('text/xml', 'application/xml', 'image/svg+xml', 'application/rss+xml', 'application/atom+xml')),
|
|
450
450
|
'XmlPhpLexer': ('pygments.lexers.templates', 'XML+PHP', ('xml+php',), (), ('application/xml+php',)),
|
|
451
451
|
'XmlSmartyLexer': ('pygments.lexers.templates', 'XML+Smarty', ('xml+smarty',), (), ('application/xml+smarty',)),
|
|
452
|
+
'XorgLexer': ('pygments.lexers.xorg', 'Xorg', ('xorg.conf',), ('xorg.conf',), ()),
|
|
452
453
|
'XsltLexer': ('pygments.lexers.html', 'XSLT', ('xslt',), ('*.xsl', '*.xslt', '*.xpl'), ('application/xsl+xml', 'application/xslt+xml')),
|
|
453
454
|
'XtendLexer': ('pygments.lexers.jvm', 'Xtend', ('xtend',), ('*.xtend',), ('text/x-xtend',)),
|
|
454
455
|
'XtlangLexer': ('pygments.lexers.lisp', 'xtlang', ('extempore',), ('*.xtm',), ()),
|