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
@@ -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',), ()),
|