pygments.rb 0.2.4 → 0.2.6
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/pygments/version.rb +1 -1
- data/vendor/pygments-main/AUTHORS +14 -0
- data/vendor/pygments-main/CHANGES +34 -3
- data/vendor/pygments-main/Makefile +1 -1
- data/vendor/pygments-main/docs/generate.py +1 -1
- 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-old.py +1 -1
- data/vendor/pygments-main/external/rst-directive.py +1 -1
- data/vendor/pygments-main/pygments/__init__.py +1 -1
- data/vendor/pygments-main/pygments/cmdline.py +4 -1
- 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 +1 -1
- 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 +2 -2
- data/vendor/pygments-main/pygments/formatters/img.py +1 -1
- data/vendor/pygments-main/pygments/formatters/latex.py +3 -2
- 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 +5 -2
- data/vendor/pygments-main/pygments/formatters/terminal256.py +5 -2
- data/vendor/pygments-main/pygments/lexer.py +29 -10
- data/vendor/pygments-main/pygments/lexers/__init__.py +14 -11
- data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_mapping.py +41 -23
- data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +29 -0
- data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +3 -3
- data/vendor/pygments-main/pygments/lexers/agile.py +148 -443
- data/vendor/pygments-main/pygments/lexers/asm.py +5 -3
- data/vendor/pygments-main/pygments/lexers/compiled.py +298 -294
- data/vendor/pygments-main/pygments/lexers/dotnet.py +40 -34
- data/vendor/pygments-main/pygments/lexers/functional.py +723 -4
- data/vendor/pygments-main/pygments/lexers/hdl.py +228 -6
- data/vendor/pygments-main/pygments/lexers/jvm.py +678 -0
- data/vendor/pygments-main/pygments/lexers/math.py +65 -2
- data/vendor/pygments-main/pygments/lexers/other.py +875 -481
- data/vendor/pygments-main/pygments/lexers/parsers.py +1 -1
- data/vendor/pygments-main/pygments/lexers/shell.py +360 -0
- data/vendor/pygments-main/pygments/lexers/special.py +1 -1
- data/vendor/pygments-main/pygments/lexers/sql.py +565 -0
- data/vendor/pygments-main/pygments/lexers/templates.py +1 -1
- data/vendor/pygments-main/pygments/lexers/text.py +237 -100
- data/vendor/pygments-main/pygments/lexers/web.py +146 -10
- data/vendor/pygments-main/pygments/plugin.py +1 -1
- data/vendor/pygments-main/pygments/scanner.py +1 -1
- data/vendor/pygments-main/pygments/style.py +1 -1
- data/vendor/pygments-main/pygments/styles/__init__.py +2 -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 -2
- data/vendor/pygments-main/pygments/styles/manni.py +1 -1
- data/vendor/pygments-main/pygments/styles/monokai.py +1 -1
- data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
- data/vendor/pygments-main/pygments/styles/native.py +1 -1
- data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
- data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
- data/vendor/pygments-main/pygments/styles/rrt.py +33 -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/token.py +1 -1
- data/vendor/pygments-main/pygments/unistring.py +1 -1
- data/vendor/pygments-main/pygments/util.py +2 -2
- data/vendor/pygments-main/scripts/check_sources.py +2 -2
- data/vendor/pygments-main/scripts/find_codetags.py +1 -1
- data/vendor/pygments-main/scripts/find_error.py +5 -2
- data/vendor/pygments-main/scripts/get_vimkw.py +9 -4
- data/vendor/pygments-main/setup.py +1 -1
- data/vendor/pygments-main/tests/examplefiles/classes.dylan +16 -0
- data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
- data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
- data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
- data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
- data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
- data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
- data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
- data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
- data/vendor/pygments-main/tests/examplefiles/http_request_example +14 -0
- data/vendor/pygments-main/tests/examplefiles/http_response_example +27 -0
- data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
- data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
- data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +4 -2
- data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
- data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
- data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
- data/vendor/pygments-main/tests/examplefiles/test.cs +23 -0
- data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
- data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
- data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
- data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
- data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
- data/vendor/pygments-main/tests/old_run.py +1 -1
- data/vendor/pygments-main/tests/run.py +1 -1
- data/vendor/pygments-main/tests/test_basic_api.py +4 -3
- data/vendor/pygments-main/tests/test_clexer.py +1 -1
- data/vendor/pygments-main/tests/test_cmdline.py +1 -1
- data/vendor/pygments-main/tests/test_examplefiles.py +4 -3
- data/vendor/pygments-main/tests/test_html_formatter.py +33 -1
- data/vendor/pygments-main/tests/test_latex_formatter.py +1 -1
- data/vendor/pygments-main/tests/test_perllexer.py +137 -0
- data/vendor/pygments-main/tests/test_regexlexer.py +1 -1
- data/vendor/pygments-main/tests/test_token.py +1 -1
- data/vendor/pygments-main/tests/test_using_api.py +1 -1
- data/vendor/pygments-main/tests/test_util.py +35 -5
- metadata +30 -4
data/lib/pygments/version.rb
CHANGED
@@ -22,12 +22,14 @@ Other contributors, listed alphabetically, are:
|
|
22
22
|
* Frits van Bommel -- assembler lexers
|
23
23
|
* Pierre Bourdon -- bugfixes
|
24
24
|
* Hiram Chirino -- Scaml and Jade lexers
|
25
|
+
* Leaf Corcoran -- MoonScript lexer
|
25
26
|
* Christopher Creutzig -- MuPAD lexer
|
26
27
|
* Pete Curry -- bugfixes
|
27
28
|
* Owen Durni -- haXe lexer
|
28
29
|
* Nick Efford -- Python 3 lexer
|
29
30
|
* Artem Egorkine -- terminal256 formatter
|
30
31
|
* James H. Fisher -- PostScript lexer
|
32
|
+
* Carlos Galdino -- Elixir and Elixir Console lexers
|
31
33
|
* Naveen Garg -- Autohotkey lexer
|
32
34
|
* Laurent Gautier -- R/S lexer
|
33
35
|
* Alex Gaynor -- PyPy log lexer
|
@@ -36,6 +38,7 @@ Other contributors, listed alphabetically, are:
|
|
36
38
|
* Matt Good -- Genshi, Cheetah lexers
|
37
39
|
* Patrick Gotthardt -- PHP namespaces support
|
38
40
|
* Olivier Guibe -- Asymptote lexer
|
41
|
+
* Martin Harriman -- SNOBOL lexer
|
39
42
|
* Matthew Harrison -- SVG formatter
|
40
43
|
* Steven Hazel -- Tcl lexer
|
41
44
|
* Aslak Hellesøy -- Gherkin lexer
|
@@ -44,18 +47,25 @@ Other contributors, listed alphabetically, are:
|
|
44
47
|
* Varun Hiremath -- Debian control lexer
|
45
48
|
* Ben Hollis -- Mason lexer
|
46
49
|
* Tim Howard -- BlitzMax lexer
|
50
|
+
* Ivan Inozemtsev -- Fantom lexer
|
47
51
|
* Dennis Kaarsemaker -- sources.list lexer
|
52
|
+
* Igor Kalnitsky -- vhdl lexer
|
53
|
+
* Adam Koprowski -- Opa lexer
|
48
54
|
* Benjamin Kowarsch -- Modula-2 lexer
|
49
55
|
* Marek Kubica -- Scheme lexer
|
50
56
|
* Jochen Kupperschmidt -- Markdown processor
|
51
57
|
* Gerd Kurzbach -- Modelica lexer
|
58
|
+
* Olov Lassus -- Dart lexer
|
59
|
+
* Sylvestre Ledru -- Scilab lexer
|
52
60
|
* Mark Lee -- Vala lexer
|
53
61
|
* Ben Mabey -- Gherkin lexer
|
54
62
|
* Simone Margaritelli -- Hybris lexer
|
55
63
|
* Kirk McDonald -- D lexer
|
64
|
+
* Gordon McGregor -- SystemVerilog lexer
|
56
65
|
* Stephen McKamey -- Duel/JBST lexer
|
57
66
|
* Brian McKenna -- F# lexer
|
58
67
|
* Lukas Meuser -- BBCode formatter, Lua lexer
|
68
|
+
* Hong Minhee -- HTTP lexer
|
59
69
|
* Michael Mior -- Awk lexer
|
60
70
|
* Paulo Moura -- Logtalk lexer
|
61
71
|
* Mher Movsisyan -- DTD lexer
|
@@ -68,7 +78,9 @@ Other contributors, listed alphabetically, are:
|
|
68
78
|
* Ronny Pfannschmidt -- BBCode lexer
|
69
79
|
* Benjamin Peterson -- Test suite refactoring
|
70
80
|
* Dominik Picheta -- Nimrod lexer
|
81
|
+
* Clément Prévost -- UrbiScript lexer
|
71
82
|
* Justin Reidy -- MXML lexer
|
83
|
+
* Norman Richards -- JSON lexer
|
72
84
|
* Lubomir Rintel -- GoodData MAQL and CL lexers
|
73
85
|
* Andre Roberge -- Tango style
|
74
86
|
* Konrad Rudolph -- LaTeX formatter enhancements
|
@@ -87,7 +99,9 @@ Other contributors, listed alphabetically, are:
|
|
87
99
|
* Jeremy Thurgood -- Erlang, Squid config lexers
|
88
100
|
* Erick Tryzelaar -- Felix lexer
|
89
101
|
* Daniele Varrazzo -- PostgreSQL lexers
|
102
|
+
* Abe Voelker -- OpenEdge ABL lexer
|
90
103
|
* Whitney Young -- ObjectiveC lexer
|
104
|
+
* Matthias Vallentin -- Bro lexer
|
91
105
|
* Nathan Weizenbaum -- Haml and Sass lexers
|
92
106
|
* Dietmar Winkler -- Modelica lexer
|
93
107
|
* Nils Winter -- Smalltalk lexer
|
@@ -6,7 +6,7 @@ http://bitbucket.org/birkenfeld/pygments-main/issues.
|
|
6
6
|
|
7
7
|
Version 1.5
|
8
8
|
-----------
|
9
|
-
(codename not decided, released
|
9
|
+
(codename not decided, released 2012)
|
10
10
|
|
11
11
|
- Lexers added:
|
12
12
|
|
@@ -20,10 +20,30 @@ Version 1.5
|
|
20
20
|
* Groovy (#501)
|
21
21
|
* PostgreSQL (#660)
|
22
22
|
* DTD
|
23
|
-
* Gosu
|
23
|
+
* Gosu (#634)
|
24
24
|
* Octave (PR#22)
|
25
25
|
* Standard ML (PR#14)
|
26
26
|
* CFengine3 (#601)
|
27
|
+
* Opa (PR#37)
|
28
|
+
* HTTP sessions (PR#42)
|
29
|
+
* JSON (PR#31)
|
30
|
+
* SNOBOL (PR#30)
|
31
|
+
* MoonScript (PR#43)
|
32
|
+
* ECL (PR#29)
|
33
|
+
* Urbiscript (PR#17)
|
34
|
+
* OpenEdge ABL (PR#27)
|
35
|
+
* SystemVerilog (PR#35)
|
36
|
+
* Coq (#734)
|
37
|
+
* PowerShell (#654)
|
38
|
+
* Dart (#715)
|
39
|
+
* Fantom (PR#36)
|
40
|
+
* Bro (PR#5)
|
41
|
+
* NewLISP (PR#26)
|
42
|
+
* VHDL (PR#45)
|
43
|
+
* Scilab (#740)
|
44
|
+
* Elixir (PR#57)
|
45
|
+
|
46
|
+
- Fix Python 3 terminal highlighting with pygmentize (#691).
|
27
47
|
|
28
48
|
- In the LaTeX formatter, escape special &, < and > chars (#648).
|
29
49
|
|
@@ -38,7 +58,7 @@ Version 1.5
|
|
38
58
|
|
39
59
|
- Fix Lua "class" highlighting: it does not have classes (#665).
|
40
60
|
|
41
|
-
- Fix degenerate regex in Scala lexer (#671).
|
61
|
+
- Fix degenerate regex in Scala lexer (#671) and highlighting bugs (#713, 708).
|
42
62
|
|
43
63
|
- Fix number pattern order in Ocaml lexer (#647).
|
44
64
|
|
@@ -46,6 +66,17 @@ Version 1.5
|
|
46
66
|
|
47
67
|
- Fixes to the Clojure lexer (PR#9).
|
48
68
|
|
69
|
+
- Fix degenerate regex in Nemerle lexer (#706).
|
70
|
+
|
71
|
+
- Fix infinite looping in CoffeeScript lexer (#729).
|
72
|
+
|
73
|
+
- Fix crashes and analysis with ObjectiveC lexer (#693, #696).
|
74
|
+
|
75
|
+
- Add some Fortran 2003 keywords.
|
76
|
+
|
77
|
+
- Fix Boo string regexes (#679).
|
78
|
+
|
79
|
+
- Add "rrt" style (#727).
|
49
80
|
|
50
81
|
Version 1.4
|
51
82
|
-----------
|
@@ -27,7 +27,7 @@
|
|
27
27
|
|
28
28
|
.. _Markdown: http://www.freewisdom.org/projects/python-markdown/
|
29
29
|
|
30
|
-
:copyright: Copyright 2006-
|
30
|
+
:copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
|
31
31
|
:license: BSD, see LICENSE for details.
|
32
32
|
"""
|
33
33
|
|
@@ -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-2012 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-2012 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-2012 by the Pygments team, see AUTHORS.
|
35
35
|
:license: BSD, see LICENSE for details.
|
36
36
|
"""
|
37
37
|
|
@@ -22,7 +22,7 @@
|
|
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-2012 by the Pygments team, see AUTHORS.
|
26
26
|
:license: BSD, see LICENSE for details.
|
27
27
|
"""
|
28
28
|
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Command line interface.
|
7
7
|
|
8
|
-
:copyright: Copyright 2006-
|
8
|
+
:copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
|
9
9
|
:license: BSD, see LICENSE for details.
|
10
10
|
"""
|
11
11
|
import sys
|
@@ -408,6 +408,9 @@ def main(args=sys.argv):
|
|
408
408
|
None) or 'ascii'
|
409
409
|
fmter.encoding = getattr(sys.stdout, 'encoding',
|
410
410
|
None) or 'ascii'
|
411
|
+
elif not outfn and sys.version_info > (3,):
|
412
|
+
# output to terminal with encoding -> use .buffer
|
413
|
+
outfile = sys.stdout.buffer
|
411
414
|
|
412
415
|
# ... and do it!
|
413
416
|
try:
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Formatter for HTML output.
|
7
7
|
|
8
|
-
:copyright: Copyright 2006-
|
8
|
+
:copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
|
9
9
|
:license: BSD, see LICENSE for details.
|
10
10
|
"""
|
11
11
|
|
@@ -596,7 +596,7 @@ class HtmlFormatter(Formatter):
|
|
596
596
|
|
597
597
|
def _wrap_lineanchors(self, inner):
|
598
598
|
s = self.lineanchors
|
599
|
-
i =
|
599
|
+
i = self.linenostart - 1 # subtract 1 since we have to increment i *before* yielding
|
600
600
|
for t, line in inner:
|
601
601
|
if t:
|
602
602
|
i += 1
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Formatter for LaTeX fancyvrb output.
|
7
7
|
|
8
|
-
:copyright: Copyright 2006-
|
8
|
+
:copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
|
9
9
|
:license: BSD, see LICENSE for details.
|
10
10
|
"""
|
11
11
|
|
@@ -286,7 +286,8 @@ class LatexFormatter(Formatter):
|
|
286
286
|
cp = self.commandprefix
|
287
287
|
styles = []
|
288
288
|
for name, definition in self.cmd2def.iteritems():
|
289
|
-
styles.append(r'\expandafter\def\csname %s@tok@%s\endcsname{%s}' %
|
289
|
+
styles.append(r'\expandafter\def\csname %s@tok@%s\endcsname{%s}' %
|
290
|
+
(cp, name, definition))
|
290
291
|
return STYLE_TEMPLATE % {'cp': self.commandprefix,
|
291
292
|
'styles': '\n'.join(styles)}
|
292
293
|
|
@@ -5,10 +5,12 @@
|
|
5
5
|
|
6
6
|
Formatter for terminal output with ANSI sequences.
|
7
7
|
|
8
|
-
:copyright: Copyright 2006-
|
8
|
+
:copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
|
9
9
|
:license: BSD, see LICENSE for details.
|
10
10
|
"""
|
11
11
|
|
12
|
+
import sys
|
13
|
+
|
12
14
|
from pygments.formatter import Formatter
|
13
15
|
from pygments.token import Keyword, Name, Comment, String, Error, \
|
14
16
|
Number, Operator, Generic, Token, Whitespace
|
@@ -86,7 +88,8 @@ class TerminalFormatter(Formatter):
|
|
86
88
|
# hack: if the output is a terminal and has an encoding set,
|
87
89
|
# use that to avoid unicode encode problems
|
88
90
|
if not self.encoding and hasattr(outfile, "encoding") and \
|
89
|
-
hasattr(outfile, "isatty") and outfile.isatty()
|
91
|
+
hasattr(outfile, "isatty") and outfile.isatty() and \
|
92
|
+
sys.version_info < (3,):
|
90
93
|
self.encoding = outfile.encoding
|
91
94
|
return Formatter.format(self, tokensource, outfile)
|
92
95
|
|
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
Formatter version 1.
|
13
13
|
|
14
|
-
:copyright: Copyright 2006-
|
14
|
+
:copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
|
15
15
|
:license: BSD, see LICENSE for details.
|
16
16
|
"""
|
17
17
|
|
@@ -24,6 +24,8 @@
|
|
24
24
|
# black-on-while, so colors like "white background" need to be converted
|
25
25
|
# to "white background, black foreground", etc...
|
26
26
|
|
27
|
+
import sys
|
28
|
+
|
27
29
|
from pygments.formatter import Formatter
|
28
30
|
|
29
31
|
|
@@ -185,7 +187,8 @@ class Terminal256Formatter(Formatter):
|
|
185
187
|
# hack: if the output is a terminal and has an encoding set,
|
186
188
|
# use that to avoid unicode encode problems
|
187
189
|
if not self.encoding and hasattr(outfile, "encoding") and \
|
188
|
-
hasattr(outfile, "isatty") and outfile.isatty()
|
190
|
+
hasattr(outfile, "isatty") and outfile.isatty() and \
|
191
|
+
sys.version_info < (3,):
|
189
192
|
self.encoding = outfile.encoding
|
190
193
|
return Formatter.format(self, tokensource, outfile)
|
191
194
|
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Base lexer classes.
|
7
7
|
|
8
|
-
:copyright: Copyright 2006-
|
8
|
+
:copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
|
9
9
|
:license: BSD, see LICENSE for details.
|
10
10
|
"""
|
11
11
|
import re
|
@@ -21,6 +21,12 @@ __all__ = ['Lexer', 'RegexLexer', 'ExtendedRegexLexer', 'DelegatingLexer',
|
|
21
21
|
'LexerContext', 'include', 'bygroups', 'using', 'this']
|
22
22
|
|
23
23
|
|
24
|
+
_encoding_map = [('\xef\xbb\xbf', 'utf-8'),
|
25
|
+
('\xff\xfe\0\0', 'utf-32'),
|
26
|
+
('\0\0\xfe\xff', 'utf-32be'),
|
27
|
+
('\xff\xfe', 'utf-16'),
|
28
|
+
('\xfe\xff', 'utf-16be')]
|
29
|
+
|
24
30
|
_default_analyse = staticmethod(lambda x: 0.0)
|
25
31
|
|
26
32
|
|
@@ -142,8 +148,19 @@ class Lexer(object):
|
|
142
148
|
raise ImportError('To enable chardet encoding guessing, '
|
143
149
|
'please install the chardet library '
|
144
150
|
'from http://chardet.feedparser.org/')
|
145
|
-
|
146
|
-
|
151
|
+
# check for BOM first
|
152
|
+
decoded = None
|
153
|
+
for bom, encoding in _encoding_map:
|
154
|
+
if text.startswith(bom):
|
155
|
+
decoded = unicode(text[len(bom):], encoding,
|
156
|
+
errors='replace')
|
157
|
+
break
|
158
|
+
# no BOM found, so use chardet
|
159
|
+
if decoded is None:
|
160
|
+
enc = chardet.detect(text[:1024]) # Guess using first 1KB
|
161
|
+
decoded = unicode(text, enc.get('encoding') or 'utf-8',
|
162
|
+
errors='replace')
|
163
|
+
text = decoded
|
147
164
|
else:
|
148
165
|
text = text.decode(self.encoding)
|
149
166
|
# text now *is* a unicode string
|
@@ -274,12 +291,14 @@ def bygroups(*args):
|
|
274
291
|
if data:
|
275
292
|
yield match.start(i + 1), action, data
|
276
293
|
else:
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
294
|
+
data = match.group(i + 1)
|
295
|
+
if data is not None:
|
296
|
+
if ctx:
|
297
|
+
ctx.pos = match.start(i + 1)
|
298
|
+
for item in action(lexer, _PseudoMatch(match.start(i + 1),
|
299
|
+
data), ctx):
|
300
|
+
if item:
|
301
|
+
yield item
|
283
302
|
if ctx:
|
284
303
|
ctx.pos = match.end()
|
285
304
|
return callback
|
@@ -439,7 +458,7 @@ class RegexLexerMeta(LexerMeta):
|
|
439
458
|
|
440
459
|
def __call__(cls, *args, **kwds):
|
441
460
|
"""Instantiate cls after preprocessing its token definitions."""
|
442
|
-
if not
|
461
|
+
if '_tokens' not in cls.__dict__:
|
443
462
|
cls._all_tokens = {}
|
444
463
|
cls._tmpname = 0
|
445
464
|
if hasattr(cls, 'token_variants') and cls.token_variants:
|