pygments.rb 2.0.0.rc3 → 2.3.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/.github/workflows/ci.yml +13 -1
- data/.gitignore +0 -1
- data/.rubocop.yml +16 -0
- data/CHANGELOG.adoc +19 -0
- data/README.adoc +1 -3
- data/Rakefile +0 -14
- data/bench.rb +11 -6
- data/lib/pygments/lexer.rb +84 -62
- data/lib/pygments/mentos.py +7 -49
- data/lib/pygments/popen.rb +133 -173
- data/lib/pygments/version.rb +1 -1
- data/lib/pygments.rb +15 -6
- data/pygments.rb.gemspec +16 -11
- data/test/test_pygments.rb +19 -40
- data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/AUTHORS +13 -1
- data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/INSTALLER +0 -0
- data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/LICENSE +1 -1
- data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/METADATA +8 -9
- data/vendor/pygments-main/Pygments-2.10.0.dist-info/RECORD +524 -0
- data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/REQUESTED +0 -0
- data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/WHEEL +0 -0
- data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/entry_points.txt +0 -0
- data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/top_level.txt +0 -0
- data/vendor/pygments-main/bin/pygmentize +1 -1
- data/vendor/pygments-main/pygments/__init__.py +2 -3
- data/vendor/pygments-main/pygments/__main__.py +1 -2
- data/vendor/pygments-main/pygments/cmdline.py +179 -159
- data/vendor/pygments-main/pygments/console.py +1 -2
- data/vendor/pygments-main/pygments/filter.py +1 -2
- data/vendor/pygments-main/pygments/filters/__init__.py +1 -2
- data/vendor/pygments-main/pygments/formatter.py +1 -2
- data/vendor/pygments-main/pygments/formatters/__init__.py +2 -3
- data/vendor/pygments-main/pygments/formatters/_mapping.py +2 -2
- data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
- data/vendor/pygments-main/pygments/formatters/html.py +53 -25
- data/vendor/pygments-main/pygments/formatters/img.py +24 -10
- data/vendor/pygments-main/pygments/formatters/irc.py +1 -2
- data/vendor/pygments-main/pygments/formatters/latex.py +8 -9
- data/vendor/pygments-main/pygments/formatters/other.py +7 -10
- data/vendor/pygments-main/pygments/formatters/pangomarkup.py +83 -0
- data/vendor/pygments-main/pygments/formatters/rtf.py +1 -2
- data/vendor/pygments-main/pygments/formatters/svg.py +5 -4
- data/vendor/pygments-main/pygments/formatters/terminal.py +1 -2
- data/vendor/pygments-main/pygments/formatters/terminal256.py +24 -3
- data/vendor/pygments-main/pygments/lexer.py +7 -6
- data/vendor/pygments-main/pygments/lexers/__init__.py +2 -3
- data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1 -2
- data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +1 -2
- data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +16 -12
- data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +56 -16
- data/vendor/pygments-main/pygments/lexers/_julia_builtins.py +401 -0
- data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -2
- data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +1 -2
- data/vendor/pygments-main/pygments/lexers/_mapping.py +73 -54
- data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -2
- data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +2 -3
- data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +439 -386
- data/vendor/pygments-main/pygments/lexers/_php_builtins.py +1 -2
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +1 -2
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +1 -2
- data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -2
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +1 -2
- data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +91 -55
- data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -2
- data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +1 -2
- data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +1 -2
- data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -2
- data/vendor/pygments-main/pygments/lexers/actionscript.py +9 -10
- data/vendor/pygments-main/pygments/lexers/agile.py +1 -2
- data/vendor/pygments-main/pygments/lexers/algebra.py +1 -2
- data/vendor/pygments-main/pygments/lexers/ambient.py +3 -4
- data/vendor/pygments-main/pygments/lexers/amdgpu.py +53 -0
- data/vendor/pygments-main/pygments/lexers/ampl.py +1 -2
- data/vendor/pygments-main/pygments/lexers/apdlexer.py +448 -0
- data/vendor/pygments-main/pygments/lexers/apl.py +7 -5
- data/vendor/pygments-main/pygments/lexers/archetype.py +2 -3
- data/vendor/pygments-main/pygments/lexers/arrow.py +1 -2
- data/vendor/pygments-main/pygments/lexers/asc.py +51 -0
- data/vendor/pygments-main/pygments/lexers/asm.py +87 -60
- data/vendor/pygments-main/pygments/lexers/automation.py +8 -3
- data/vendor/pygments-main/pygments/lexers/bare.py +1 -2
- data/vendor/pygments-main/pygments/lexers/basic.py +3 -4
- data/vendor/pygments-main/pygments/lexers/bibtex.py +3 -4
- data/vendor/pygments-main/pygments/lexers/boa.py +4 -5
- data/vendor/pygments-main/pygments/lexers/business.py +3 -4
- data/vendor/pygments-main/pygments/lexers/c_cpp.py +61 -36
- data/vendor/pygments-main/pygments/lexers/c_like.py +103 -5
- data/vendor/pygments-main/pygments/lexers/capnproto.py +1 -2
- data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
- data/vendor/pygments-main/pygments/lexers/chapel.py +52 -29
- data/vendor/pygments-main/pygments/lexers/clean.py +7 -8
- data/vendor/pygments-main/pygments/lexers/compiled.py +1 -2
- data/vendor/pygments-main/pygments/lexers/configs.py +139 -48
- data/vendor/pygments-main/pygments/lexers/console.py +1 -2
- data/vendor/pygments-main/pygments/lexers/crystal.py +53 -79
- data/vendor/pygments-main/pygments/lexers/csound.py +3 -4
- data/vendor/pygments-main/pygments/lexers/css.py +11 -8
- data/vendor/pygments-main/pygments/lexers/d.py +3 -4
- data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -2
- data/vendor/pygments-main/pygments/lexers/data.py +2 -3
- data/vendor/pygments-main/pygments/lexers/devicetree.py +2 -3
- data/vendor/pygments-main/pygments/lexers/diff.py +1 -2
- data/vendor/pygments-main/pygments/lexers/dotnet.py +7 -8
- data/vendor/pygments-main/pygments/lexers/dsls.py +3 -4
- data/vendor/pygments-main/pygments/lexers/dylan.py +1 -2
- data/vendor/pygments-main/pygments/lexers/ecl.py +4 -6
- data/vendor/pygments-main/pygments/lexers/eiffel.py +2 -3
- data/vendor/pygments-main/pygments/lexers/elm.py +1 -2
- data/vendor/pygments-main/pygments/lexers/email.py +1 -2
- data/vendor/pygments-main/pygments/lexers/erlang.py +2 -3
- data/vendor/pygments-main/pygments/lexers/esoteric.py +1 -2
- data/vendor/pygments-main/pygments/lexers/ezhil.py +1 -2
- data/vendor/pygments-main/pygments/lexers/factor.py +3 -4
- data/vendor/pygments-main/pygments/lexers/fantom.py +1 -2
- data/vendor/pygments-main/pygments/lexers/felix.py +1 -2
- data/vendor/pygments-main/pygments/lexers/floscript.py +2 -3
- data/vendor/pygments-main/pygments/lexers/forth.py +2 -3
- data/vendor/pygments-main/pygments/lexers/fortran.py +9 -7
- data/vendor/pygments-main/pygments/lexers/foxpro.py +1 -2
- data/vendor/pygments-main/pygments/lexers/freefem.py +1 -2
- data/vendor/pygments-main/pygments/lexers/functional.py +1 -2
- data/vendor/pygments-main/pygments/lexers/futhark.py +111 -0
- data/vendor/pygments-main/pygments/lexers/gcodelexer.py +36 -0
- data/vendor/pygments-main/pygments/lexers/gdscript.py +1 -2
- data/vendor/pygments-main/pygments/lexers/go.py +3 -4
- data/vendor/pygments-main/pygments/lexers/grammar_notation.py +1 -2
- data/vendor/pygments-main/pygments/lexers/graph.py +1 -2
- data/vendor/pygments-main/pygments/lexers/graphics.py +4 -5
- data/vendor/pygments-main/pygments/lexers/graphviz.py +58 -0
- data/vendor/pygments-main/pygments/lexers/gsql.py +92 -0
- data/vendor/pygments-main/pygments/lexers/haskell.py +5 -6
- data/vendor/pygments-main/pygments/lexers/haxe.py +4 -5
- data/vendor/pygments-main/pygments/lexers/hdl.py +2 -6
- data/vendor/pygments-main/pygments/lexers/hexdump.py +1 -2
- data/vendor/pygments-main/pygments/lexers/html.py +7 -8
- data/vendor/pygments-main/pygments/lexers/idl.py +1 -2
- data/vendor/pygments-main/pygments/lexers/igor.py +1 -2
- data/vendor/pygments-main/pygments/lexers/inferno.py +1 -2
- data/vendor/pygments-main/pygments/lexers/installers.py +3 -4
- data/vendor/pygments-main/pygments/lexers/int_fiction.py +1 -2
- data/vendor/pygments-main/pygments/lexers/iolang.py +2 -3
- data/vendor/pygments-main/pygments/lexers/j.py +2 -3
- data/vendor/pygments-main/pygments/lexers/javascript.py +170 -156
- data/vendor/pygments-main/pygments/lexers/jslt.py +94 -0
- data/vendor/pygments-main/pygments/lexers/julia.py +136 -185
- data/vendor/pygments-main/pygments/lexers/jvm.py +433 -307
- data/vendor/pygments-main/pygments/lexers/kuin.py +299 -0
- data/vendor/pygments-main/pygments/lexers/lisp.py +25 -23
- data/vendor/pygments-main/pygments/lexers/make.py +3 -4
- data/vendor/pygments-main/pygments/lexers/markup.py +13 -16
- data/vendor/pygments-main/pygments/lexers/math.py +1 -2
- data/vendor/pygments-main/pygments/lexers/matlab.py +2666 -93
- data/vendor/pygments-main/pygments/lexers/meson.py +155 -0
- data/vendor/pygments-main/pygments/lexers/mime.py +7 -23
- data/vendor/pygments-main/pygments/lexers/ml.py +8 -9
- data/vendor/pygments-main/pygments/lexers/modeling.py +1 -2
- data/vendor/pygments-main/pygments/lexers/modula2.py +3 -4
- data/vendor/pygments-main/pygments/lexers/monte.py +1 -2
- data/vendor/pygments-main/pygments/lexers/mosel.py +1 -2
- data/vendor/pygments-main/pygments/lexers/ncl.py +1 -2
- data/vendor/pygments-main/pygments/lexers/nimrod.py +2 -3
- data/vendor/pygments-main/pygments/lexers/nit.py +1 -2
- data/vendor/pygments-main/pygments/lexers/nix.py +1 -2
- data/vendor/pygments-main/pygments/lexers/oberon.py +1 -2
- data/vendor/pygments-main/pygments/lexers/objective.py +6 -7
- data/vendor/pygments-main/pygments/lexers/ooc.py +1 -2
- data/vendor/pygments-main/pygments/lexers/other.py +1 -2
- data/vendor/pygments-main/pygments/lexers/parasail.py +1 -2
- data/vendor/pygments-main/pygments/lexers/parsers.py +26 -27
- data/vendor/pygments-main/pygments/lexers/pascal.py +1 -2
- data/vendor/pygments-main/pygments/lexers/pawn.py +2 -5
- data/vendor/pygments-main/pygments/lexers/perl.py +1 -2
- data/vendor/pygments-main/pygments/lexers/php.py +3 -4
- data/vendor/pygments-main/pygments/lexers/pointless.py +1 -2
- data/vendor/pygments-main/pygments/lexers/pony.py +1 -2
- data/vendor/pygments-main/pygments/lexers/praat.py +1 -2
- data/vendor/pygments-main/pygments/lexers/procfile.py +43 -0
- data/vendor/pygments-main/pygments/lexers/prolog.py +3 -4
- data/vendor/pygments-main/pygments/lexers/promql.py +2 -3
- data/vendor/pygments-main/pygments/lexers/python.py +38 -17
- data/vendor/pygments-main/pygments/lexers/qvt.py +1 -2
- data/vendor/pygments-main/pygments/lexers/r.py +1 -2
- data/vendor/pygments-main/pygments/lexers/rdf.py +1 -2
- data/vendor/pygments-main/pygments/lexers/rebol.py +1 -2
- data/vendor/pygments-main/pygments/lexers/resource.py +2 -3
- data/vendor/pygments-main/pygments/lexers/ride.py +1 -2
- data/vendor/pygments-main/pygments/lexers/rnc.py +2 -3
- data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -2
- data/vendor/pygments-main/pygments/lexers/robotframework.py +1 -2
- data/vendor/pygments-main/pygments/lexers/ruby.py +31 -25
- data/vendor/pygments-main/pygments/lexers/rust.py +10 -12
- data/vendor/pygments-main/pygments/lexers/sas.py +1 -2
- data/vendor/pygments-main/pygments/lexers/scdoc.py +1 -2
- data/vendor/pygments-main/pygments/lexers/scripting.py +12 -13
- data/vendor/pygments-main/pygments/lexers/sgf.py +1 -2
- data/vendor/pygments-main/pygments/lexers/shell.py +15 -17
- data/vendor/pygments-main/pygments/lexers/sieve.py +1 -2
- data/vendor/pygments-main/pygments/lexers/slash.py +1 -2
- data/vendor/pygments-main/pygments/lexers/smalltalk.py +1 -2
- data/vendor/pygments-main/pygments/lexers/smithy.py +79 -0
- data/vendor/pygments-main/pygments/lexers/smv.py +2 -3
- data/vendor/pygments-main/pygments/lexers/snobol.py +1 -2
- data/vendor/pygments-main/pygments/lexers/solidity.py +1 -2
- data/vendor/pygments-main/pygments/lexers/special.py +44 -30
- data/vendor/pygments-main/pygments/lexers/sql.py +8 -13
- data/vendor/pygments-main/pygments/lexers/stata.py +1 -2
- data/vendor/pygments-main/pygments/lexers/supercollider.py +4 -5
- data/vendor/pygments-main/pygments/lexers/tcl.py +4 -5
- data/vendor/pygments-main/pygments/lexers/teal.py +88 -0
- data/vendor/pygments-main/pygments/lexers/templates.py +34 -35
- data/vendor/pygments-main/pygments/lexers/teraterm.py +2 -3
- data/vendor/pygments-main/pygments/lexers/testing.py +2 -3
- data/vendor/pygments-main/pygments/lexers/text.py +1 -2
- data/vendor/pygments-main/pygments/lexers/textedit.py +3 -4
- data/vendor/pygments-main/pygments/lexers/textfmts.py +1 -2
- data/vendor/pygments-main/pygments/lexers/theorem.py +11 -7
- data/vendor/pygments-main/pygments/lexers/thingsdb.py +118 -0
- data/vendor/pygments-main/pygments/lexers/tnt.py +26 -17
- data/vendor/pygments-main/pygments/lexers/trafficscript.py +2 -3
- data/vendor/pygments-main/pygments/lexers/typoscript.py +1 -2
- data/vendor/pygments-main/pygments/lexers/unicon.py +1 -2
- data/vendor/pygments-main/pygments/lexers/urbi.py +3 -4
- data/vendor/pygments-main/pygments/lexers/usd.py +1 -2
- data/vendor/pygments-main/pygments/lexers/varnish.py +2 -3
- data/vendor/pygments-main/pygments/lexers/verification.py +1 -2
- data/vendor/pygments-main/pygments/lexers/web.py +1 -2
- data/vendor/pygments-main/pygments/lexers/webassembly.py +120 -0
- data/vendor/pygments-main/pygments/lexers/webidl.py +1 -2
- data/vendor/pygments-main/pygments/lexers/webmisc.py +5 -5
- data/vendor/pygments-main/pygments/lexers/whiley.py +1 -2
- data/vendor/pygments-main/pygments/lexers/x10.py +2 -3
- data/vendor/pygments-main/pygments/lexers/xorg.py +1 -2
- data/vendor/pygments-main/pygments/lexers/yang.py +1 -2
- data/vendor/pygments-main/pygments/lexers/zig.py +1 -2
- data/vendor/pygments-main/pygments/modeline.py +1 -2
- data/vendor/pygments-main/pygments/plugin.py +2 -3
- data/vendor/pygments-main/pygments/regexopt.py +2 -3
- data/vendor/pygments-main/pygments/scanner.py +1 -2
- data/vendor/pygments-main/pygments/sphinxext.py +1 -2
- data/vendor/pygments-main/pygments/style.py +4 -5
- data/vendor/pygments-main/pygments/styles/__init__.py +5 -2
- data/vendor/pygments-main/pygments/styles/abap.py +1 -2
- data/vendor/pygments-main/pygments/styles/algol.py +1 -2
- data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
- data/vendor/pygments-main/pygments/styles/arduino.py +1 -2
- data/vendor/pygments-main/pygments/styles/autumn.py +1 -2
- data/vendor/pygments-main/pygments/styles/borland.py +1 -2
- data/vendor/pygments-main/pygments/styles/bw.py +1 -2
- data/vendor/pygments-main/pygments/styles/colorful.py +1 -2
- data/vendor/pygments-main/pygments/styles/default.py +1 -2
- data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
- data/vendor/pygments-main/pygments/styles/friendly.py +2 -2
- data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
- data/vendor/pygments-main/pygments/styles/gruvbox.py +107 -0
- data/vendor/pygments-main/pygments/styles/igor.py +1 -2
- data/vendor/pygments-main/pygments/styles/inkpot.py +1 -2
- data/vendor/pygments-main/pygments/styles/lovelace.py +1 -2
- data/vendor/pygments-main/pygments/styles/manni.py +1 -2
- data/vendor/pygments-main/pygments/styles/material.py +118 -0
- data/vendor/pygments-main/pygments/styles/monokai.py +1 -2
- data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
- data/vendor/pygments-main/pygments/styles/native.py +2 -2
- data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -2
- data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -2
- data/vendor/pygments-main/pygments/styles/pastie.py +1 -2
- data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
- data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -2
- data/vendor/pygments-main/pygments/styles/rrt.py +1 -2
- data/vendor/pygments-main/pygments/styles/sas.py +1 -2
- data/vendor/pygments-main/pygments/styles/solarized.py +4 -2
- data/vendor/pygments-main/pygments/styles/stata_dark.py +1 -2
- data/vendor/pygments-main/pygments/styles/stata_light.py +1 -2
- data/vendor/pygments-main/pygments/styles/tango.py +1 -2
- data/vendor/pygments-main/pygments/styles/trac.py +1 -2
- data/vendor/pygments-main/pygments/styles/vim.py +1 -2
- data/vendor/pygments-main/pygments/styles/vs.py +1 -2
- data/vendor/pygments-main/pygments/styles/xcode.py +1 -2
- data/vendor/pygments-main/pygments/styles/zenburn.py +80 -0
- data/vendor/pygments-main/pygments/token.py +1 -2
- data/vendor/pygments-main/pygments/unistring.py +1 -2
- data/vendor/pygments-main/pygments/util.py +2 -5
- metadata +48 -23
- data/cache-lexers.rb +0 -9
- data/lexers +0 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +0 -482
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
pygments.formatters.html
|
|
4
3
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
4
|
|
|
6
5
|
Formatter for HTML output.
|
|
7
6
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
9
8
|
:license: BSD, see LICENSE for details.
|
|
10
9
|
"""
|
|
11
10
|
|
|
@@ -63,7 +62,7 @@ def _get_ttype_class(ttype):
|
|
|
63
62
|
CSSFILE_TEMPLATE = '''\
|
|
64
63
|
/*
|
|
65
64
|
generated by Pygments <https://pygments.org/>
|
|
66
|
-
Copyright 2006-
|
|
65
|
+
Copyright 2006-2021 by the Pygments team.
|
|
67
66
|
Licensed under the BSD license, see LICENSE for details.
|
|
68
67
|
*/
|
|
69
68
|
%(styledefs)s
|
|
@@ -74,7 +73,7 @@ DOC_HEADER = '''\
|
|
|
74
73
|
"http://www.w3.org/TR/html4/strict.dtd">
|
|
75
74
|
<!--
|
|
76
75
|
generated by Pygments <https://pygments.org/>
|
|
77
|
-
Copyright 2006-
|
|
76
|
+
Copyright 2006-2021 by the Pygments team.
|
|
78
77
|
Licensed under the BSD license, see LICENSE for details.
|
|
79
78
|
-->
|
|
80
79
|
<html>
|
|
@@ -273,7 +272,9 @@ class HtmlFormatter(Formatter):
|
|
|
273
272
|
125%``).
|
|
274
273
|
|
|
275
274
|
`hl_lines`
|
|
276
|
-
Specify a list of lines to be highlighted.
|
|
275
|
+
Specify a list of lines to be highlighted. The line numbers are always
|
|
276
|
+
relative to the input (i.e. the first line is line 1) and are
|
|
277
|
+
independent of `linenostart`.
|
|
277
278
|
|
|
278
279
|
.. versionadded:: 0.11
|
|
279
280
|
|
|
@@ -304,7 +305,7 @@ class HtmlFormatter(Formatter):
|
|
|
304
305
|
|
|
305
306
|
`lineanchors`
|
|
306
307
|
If set to a nonempty string, e.g. ``foo``, the formatter will wrap each
|
|
307
|
-
output line in an anchor tag with
|
|
308
|
+
output line in an anchor tag with an ``id`` (and `name`) of ``foo-linenumber``.
|
|
308
309
|
This allows easy linking to certain lines.
|
|
309
310
|
|
|
310
311
|
.. versionadded:: 0.9
|
|
@@ -336,7 +337,9 @@ class HtmlFormatter(Formatter):
|
|
|
336
337
|
|
|
337
338
|
`filename`
|
|
338
339
|
A string used to generate a filename when rendering ``<pre>`` blocks,
|
|
339
|
-
for example if displaying source code.
|
|
340
|
+
for example if displaying source code. If `linenos` is set to
|
|
341
|
+
``'table'`` then the filename will be rendered in an initial row
|
|
342
|
+
containing a single `<th>` which spans both columns.
|
|
340
343
|
|
|
341
344
|
.. versionadded:: 2.1
|
|
342
345
|
|
|
@@ -457,20 +460,20 @@ class HtmlFormatter(Formatter):
|
|
|
457
460
|
return ''
|
|
458
461
|
|
|
459
462
|
def _get_css_classes(self, ttype):
|
|
460
|
-
"""
|
|
463
|
+
"""Return the CSS classes of this token type prefixed with the classprefix option."""
|
|
461
464
|
cls = self._get_css_class(ttype)
|
|
462
465
|
while ttype not in STANDARD_TYPES:
|
|
463
466
|
ttype = ttype.parent
|
|
464
467
|
cls = self._get_css_class(ttype) + ' ' + cls
|
|
465
|
-
return cls
|
|
468
|
+
return cls or ''
|
|
466
469
|
|
|
467
470
|
def _get_css_inline_styles(self, ttype):
|
|
468
|
-
"""
|
|
471
|
+
"""Return the inline CSS styles for this token type."""
|
|
469
472
|
cclass = self.ttype2class.get(ttype)
|
|
470
473
|
while cclass is None:
|
|
471
474
|
ttype = ttype.parent
|
|
472
475
|
cclass = self.ttype2class.get(ttype)
|
|
473
|
-
return cclass
|
|
476
|
+
return cclass or ''
|
|
474
477
|
|
|
475
478
|
def _create_stylesheet(self):
|
|
476
479
|
t2c = self.ttype2class = {Token: ''}
|
|
@@ -553,9 +556,9 @@ class HtmlFormatter(Formatter):
|
|
|
553
556
|
def get_linenos_style_defs(self):
|
|
554
557
|
lines = [
|
|
555
558
|
'pre { %s }' % self._pre_style,
|
|
556
|
-
'td.linenos
|
|
559
|
+
'td.linenos .normal { %s }' % self._linenos_style,
|
|
557
560
|
'span.linenos { %s }' % self._linenos_style,
|
|
558
|
-
'td.linenos
|
|
561
|
+
'td.linenos .special { %s }' % self._linenos_special_style,
|
|
559
562
|
'span.linenos.special { %s }' % self._linenos_special_style,
|
|
560
563
|
]
|
|
561
564
|
|
|
@@ -628,7 +631,7 @@ class HtmlFormatter(Formatter):
|
|
|
628
631
|
with open(cssfilename, "w") as cf:
|
|
629
632
|
cf.write(CSSFILE_TEMPLATE %
|
|
630
633
|
{'styledefs': self.get_style_defs('body')})
|
|
631
|
-
except
|
|
634
|
+
except OSError as err:
|
|
632
635
|
err.strerror = 'Error writing CSS file: ' + err.strerror
|
|
633
636
|
raise
|
|
634
637
|
|
|
@@ -683,7 +686,7 @@ class HtmlFormatter(Formatter):
|
|
|
683
686
|
if special_line:
|
|
684
687
|
style = ' class="special"'
|
|
685
688
|
else:
|
|
686
|
-
style = ''
|
|
689
|
+
style = ' class="normal"'
|
|
687
690
|
|
|
688
691
|
if style:
|
|
689
692
|
line = '<span%s>%s</span>' % (style, line)
|
|
@@ -692,11 +695,20 @@ class HtmlFormatter(Formatter):
|
|
|
692
695
|
|
|
693
696
|
ls = '\n'.join(lines)
|
|
694
697
|
|
|
698
|
+
# If a filename was specified, we can't put it into the code table as it
|
|
699
|
+
# would misalign the line numbers. Hence we emit a separate row for it.
|
|
700
|
+
filename_tr = ""
|
|
701
|
+
if self.filename:
|
|
702
|
+
filename_tr = (
|
|
703
|
+
'<tr><th colspan="2" class="filename"><div class="highlight">'
|
|
704
|
+
'<span class="filename">' + self.filename + '</span></div>'
|
|
705
|
+
'</th></tr>')
|
|
706
|
+
|
|
695
707
|
# in case you wonder about the seemingly redundant <div> here: since the
|
|
696
708
|
# content in the other cell also is wrapped in a div, some browsers in
|
|
697
709
|
# some configurations seem to mess up the formatting...
|
|
698
710
|
yield 0, (
|
|
699
|
-
'<table class="%stable">' % self.cssclass +
|
|
711
|
+
'<table class="%stable">' % self.cssclass + filename_tr +
|
|
700
712
|
'<tr><td class="linenos"><div class="linenodiv"><pre>' +
|
|
701
713
|
ls + '</pre></div></td><td class="code">'
|
|
702
714
|
)
|
|
@@ -710,6 +722,8 @@ class HtmlFormatter(Formatter):
|
|
|
710
722
|
st = self.linenostep
|
|
711
723
|
num = self.linenostart
|
|
712
724
|
mw = len(str(len(inner_lines) + num - 1))
|
|
725
|
+
la = self.lineanchors
|
|
726
|
+
aln = self.anchorlinenos
|
|
713
727
|
nocls = self.noclasses
|
|
714
728
|
|
|
715
729
|
for _, inner_line in inner_lines:
|
|
@@ -733,9 +747,15 @@ class HtmlFormatter(Formatter):
|
|
|
733
747
|
style = ' class="linenos"'
|
|
734
748
|
|
|
735
749
|
if style:
|
|
736
|
-
|
|
750
|
+
linenos = '<span%s>%s</span>' % (style, line)
|
|
737
751
|
else:
|
|
738
|
-
|
|
752
|
+
linenos = line
|
|
753
|
+
|
|
754
|
+
if aln:
|
|
755
|
+
yield 1, ('<a href="#%s-%d">%s</a>' % (la, num, linenos) +
|
|
756
|
+
inner_line)
|
|
757
|
+
else:
|
|
758
|
+
yield 1, linenos + inner_line
|
|
739
759
|
num += 1
|
|
740
760
|
|
|
741
761
|
def _wrap_lineanchors(self, inner):
|
|
@@ -745,7 +765,7 @@ class HtmlFormatter(Formatter):
|
|
|
745
765
|
for t, line in inner:
|
|
746
766
|
if t:
|
|
747
767
|
i += 1
|
|
748
|
-
yield 1, '<a name="%s-%d"></a>' % (s, i) + line
|
|
768
|
+
yield 1, '<a id="%s-%d" name="%s-%d"></a>' % (s, i, s, i) + line
|
|
749
769
|
else:
|
|
750
770
|
yield 0, line
|
|
751
771
|
|
|
@@ -781,7 +801,7 @@ class HtmlFormatter(Formatter):
|
|
|
781
801
|
style.append(self._pre_style)
|
|
782
802
|
style = '; '.join(style)
|
|
783
803
|
|
|
784
|
-
if self.filename:
|
|
804
|
+
if self.filename and self.linenos != 1:
|
|
785
805
|
yield 0, ('<span class="filename">' + self.filename + '</span>')
|
|
786
806
|
|
|
787
807
|
# the empty span here is to keep leading empty lines from being
|
|
@@ -816,9 +836,12 @@ class HtmlFormatter(Formatter):
|
|
|
816
836
|
cspan = self.span_element_openers[ttype]
|
|
817
837
|
except KeyError:
|
|
818
838
|
if nocls:
|
|
819
|
-
|
|
839
|
+
css_style = self._get_css_inline_styles(ttype)
|
|
840
|
+
cspan = css_style and '<span style="%s">' % self.class2style[css_style][0] or ''
|
|
820
841
|
else:
|
|
821
|
-
|
|
842
|
+
css_class = self._get_css_classes(ttype)
|
|
843
|
+
cspan = css_class and '<span class="%s">' % css_class or ''
|
|
844
|
+
self.span_element_openers[ttype] = cspan
|
|
822
845
|
|
|
823
846
|
parts = self._translate_parts(value)
|
|
824
847
|
|
|
@@ -867,7 +890,7 @@ class HtmlFormatter(Formatter):
|
|
|
867
890
|
|
|
868
891
|
def _lookup_ctag(self, token):
|
|
869
892
|
entry = ctags.TagEntry()
|
|
870
|
-
if self._ctags.find(entry, token, 0):
|
|
893
|
+
if self._ctags.find(entry, token.encode(), 0):
|
|
871
894
|
return entry['file'], entry['lineNumber']
|
|
872
895
|
else:
|
|
873
896
|
return None, None
|
|
@@ -920,11 +943,16 @@ class HtmlFormatter(Formatter):
|
|
|
920
943
|
linewise, e.g. line number generators.
|
|
921
944
|
"""
|
|
922
945
|
source = self._format_lines(tokensource)
|
|
946
|
+
|
|
947
|
+
# As a special case, we wrap line numbers before line highlighting
|
|
948
|
+
# so the line numbers get wrapped in the highlighting tag.
|
|
949
|
+
if not self.nowrap and self.linenos == 2:
|
|
950
|
+
source = self._wrap_inlinelinenos(source)
|
|
951
|
+
|
|
923
952
|
if self.hl_lines:
|
|
924
953
|
source = self._highlight_lines(source)
|
|
954
|
+
|
|
925
955
|
if not self.nowrap:
|
|
926
|
-
if self.linenos == 2:
|
|
927
|
-
source = self._wrap_inlinelinenos(source)
|
|
928
956
|
if self.lineanchors:
|
|
929
957
|
source = self._wrap_lineanchors(source)
|
|
930
958
|
if self.linespans:
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
pygments.formatters.img
|
|
4
3
|
~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
4
|
|
|
6
5
|
Formatter for Pixmap output.
|
|
7
6
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
9
8
|
:license: BSD, see LICENSE for details.
|
|
10
9
|
"""
|
|
11
10
|
|
|
@@ -156,7 +155,7 @@ class FontManager:
|
|
|
156
155
|
valname = '%s%s%s' % (basename, style and ' '+style, suffix)
|
|
157
156
|
val, _ = _winreg.QueryValueEx(key, valname)
|
|
158
157
|
return val
|
|
159
|
-
except
|
|
158
|
+
except OSError:
|
|
160
159
|
continue
|
|
161
160
|
else:
|
|
162
161
|
if fail:
|
|
@@ -190,7 +189,7 @@ class FontManager:
|
|
|
190
189
|
lookuperror = err
|
|
191
190
|
finally:
|
|
192
191
|
_winreg.CloseKey(key)
|
|
193
|
-
except
|
|
192
|
+
except OSError:
|
|
194
193
|
pass
|
|
195
194
|
else:
|
|
196
195
|
# If we get here, we checked all registry keys and had no luck
|
|
@@ -453,6 +452,16 @@ class ImageFormatter(Formatter):
|
|
|
453
452
|
fill = '#000'
|
|
454
453
|
return fill
|
|
455
454
|
|
|
455
|
+
def _get_text_bg_color(self, style):
|
|
456
|
+
"""
|
|
457
|
+
Get the correct background color for the token from the style.
|
|
458
|
+
"""
|
|
459
|
+
if style['bgcolor'] is not None:
|
|
460
|
+
bg_color = '#' + style['bgcolor']
|
|
461
|
+
else:
|
|
462
|
+
bg_color = None
|
|
463
|
+
return bg_color
|
|
464
|
+
|
|
456
465
|
def _get_style_font(self, style):
|
|
457
466
|
"""
|
|
458
467
|
Get the correct font for the style.
|
|
@@ -475,14 +484,15 @@ class ImageFormatter(Formatter):
|
|
|
475
484
|
str(lineno).rjust(self.line_number_chars),
|
|
476
485
|
font=self.fonts.get_font(self.line_number_bold,
|
|
477
486
|
self.line_number_italic),
|
|
478
|
-
|
|
487
|
+
text_fg=self.line_number_fg,
|
|
488
|
+
text_bg=None,
|
|
479
489
|
)
|
|
480
490
|
|
|
481
|
-
def _draw_text(self, pos, text, font,
|
|
491
|
+
def _draw_text(self, pos, text, font, text_fg, text_bg):
|
|
482
492
|
"""
|
|
483
493
|
Remember a single drawable tuple to paint later.
|
|
484
494
|
"""
|
|
485
|
-
self.drawables.append((pos, text, font,
|
|
495
|
+
self.drawables.append((pos, text, font, text_fg, text_bg))
|
|
486
496
|
|
|
487
497
|
def _create_drawables(self, tokensource):
|
|
488
498
|
"""
|
|
@@ -507,7 +517,8 @@ class ImageFormatter(Formatter):
|
|
|
507
517
|
self._get_text_pos(linelength, lineno),
|
|
508
518
|
temp,
|
|
509
519
|
font = self._get_style_font(style),
|
|
510
|
-
|
|
520
|
+
text_fg = self._get_text_color(style),
|
|
521
|
+
text_bg = self._get_text_bg_color(style),
|
|
511
522
|
)
|
|
512
523
|
temp_width, temp_hight = self.fonts.get_text_size(temp)
|
|
513
524
|
linelength += temp_width
|
|
@@ -577,8 +588,11 @@ class ImageFormatter(Formatter):
|
|
|
577
588
|
y = self._get_line_y(linenumber - 1)
|
|
578
589
|
draw.rectangle([(x, y), (x + rectw, y + recth)],
|
|
579
590
|
fill=self.hl_color)
|
|
580
|
-
for pos, value, font,
|
|
581
|
-
|
|
591
|
+
for pos, value, font, text_fg, text_bg in self.drawables:
|
|
592
|
+
if text_bg:
|
|
593
|
+
text_size = draw.textsize(text=value, font=font)
|
|
594
|
+
draw.rectangle([pos[0], pos[1], pos[0] + text_size[0], pos[1] + text_size[1]], fill=text_bg)
|
|
595
|
+
draw.text(pos, value, font=font, fill=text_fg)
|
|
582
596
|
im.save(outfile, self.image_format.upper())
|
|
583
597
|
|
|
584
598
|
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
pygments.formatters.irc
|
|
4
3
|
~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
4
|
|
|
6
5
|
Formatter for IRC output
|
|
7
6
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
9
8
|
:license: BSD, see LICENSE for details.
|
|
10
9
|
"""
|
|
11
10
|
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
pygments.formatters.latex
|
|
4
3
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
4
|
|
|
6
5
|
Formatter for LaTeX fancyvrb output.
|
|
7
6
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
9
8
|
:license: BSD, see LICENSE for details.
|
|
10
9
|
"""
|
|
11
10
|
|
|
@@ -300,13 +299,13 @@ class LatexFormatter(Formatter):
|
|
|
300
299
|
cmndef += (r'\def\$$@tc##1{\textcolor[rgb]{%s}{##1}}' %
|
|
301
300
|
rgbcolor(ndef['color']))
|
|
302
301
|
if ndef['border']:
|
|
303
|
-
cmndef += (r'\def\$$@bc##1{\setlength{\fboxsep}{
|
|
304
|
-
r'\fcolorbox[rgb]{%s}{%s}{\strut ##1}}' %
|
|
302
|
+
cmndef += (r'\def\$$@bc##1{{\setlength{\fboxsep}{\string -\fboxrule}'
|
|
303
|
+
r'\fcolorbox[rgb]{%s}{%s}{\strut ##1}}}' %
|
|
305
304
|
(rgbcolor(ndef['border']),
|
|
306
305
|
rgbcolor(ndef['bgcolor'])))
|
|
307
306
|
elif ndef['bgcolor']:
|
|
308
|
-
cmndef += (r'\def\$$@bc##1{\setlength{\fboxsep}{0pt}'
|
|
309
|
-
r'\colorbox[rgb]{%s}{\strut ##1}}' %
|
|
307
|
+
cmndef += (r'\def\$$@bc##1{{\setlength{\fboxsep}{0pt}'
|
|
308
|
+
r'\colorbox[rgb]{%s}{\strut ##1}}}' %
|
|
310
309
|
rgbcolor(ndef['bgcolor']))
|
|
311
310
|
if cmndef == '':
|
|
312
311
|
continue
|
|
@@ -322,8 +321,7 @@ class LatexFormatter(Formatter):
|
|
|
322
321
|
cp = self.commandprefix
|
|
323
322
|
styles = []
|
|
324
323
|
for name, definition in self.cmd2def.items():
|
|
325
|
-
styles.append(r'
|
|
326
|
-
(cp, name, definition))
|
|
324
|
+
styles.append(r'\@namedef{%s@tok@%s}{%s}' % (cp, name, definition))
|
|
327
325
|
return STYLE_TEMPLATE % {'cp': self.commandprefix,
|
|
328
326
|
'styles': '\n'.join(styles)}
|
|
329
327
|
|
|
@@ -343,7 +341,8 @@ class LatexFormatter(Formatter):
|
|
|
343
341
|
(start and ',firstnumber=%d' % start or '') +
|
|
344
342
|
(step and ',stepnumber=%d' % step or ''))
|
|
345
343
|
if self.mathescape or self.texcomments or self.escapeinside:
|
|
346
|
-
outfile.write(',codes={\\catcode`\\$=3\\catcode`\\^=7
|
|
344
|
+
outfile.write(',codes={\\catcode`\\$=3\\catcode`\\^=7'
|
|
345
|
+
'\\catcode`\\_=8\\relax}')
|
|
347
346
|
if self.verboptions:
|
|
348
347
|
outfile.write(',' + self.verboptions)
|
|
349
348
|
outfile.write(']\n')
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
pygments.formatters.other
|
|
4
3
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
4
|
|
|
6
5
|
Other formatters: NullFormatter, RawTokenFormatter.
|
|
7
6
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
9
8
|
:license: BSD, see LICENSE for details.
|
|
10
9
|
"""
|
|
11
10
|
|
|
@@ -88,34 +87,32 @@ class RawTokenFormatter(Formatter):
|
|
|
88
87
|
import gzip
|
|
89
88
|
outfile = gzip.GzipFile('', 'wb', 9, outfile)
|
|
90
89
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
flush = outfile.flush
|
|
90
|
+
write = outfile.write
|
|
91
|
+
flush = outfile.close
|
|
94
92
|
elif self.compress == 'bz2':
|
|
95
93
|
import bz2
|
|
96
94
|
compressor = bz2.BZ2Compressor(9)
|
|
97
95
|
|
|
98
96
|
def write(text):
|
|
99
|
-
outfile.write(compressor.compress(text
|
|
97
|
+
outfile.write(compressor.compress(text))
|
|
100
98
|
|
|
101
99
|
def flush():
|
|
102
100
|
outfile.write(compressor.flush())
|
|
103
101
|
outfile.flush()
|
|
104
102
|
else:
|
|
105
|
-
|
|
106
|
-
outfile.write(text.encode())
|
|
103
|
+
write = outfile.write
|
|
107
104
|
flush = outfile.flush
|
|
108
105
|
|
|
109
106
|
if self.error_color:
|
|
110
107
|
for ttype, value in tokensource:
|
|
111
|
-
line = "%
|
|
108
|
+
line = b"%r\t%r\n" % (ttype, value)
|
|
112
109
|
if ttype is Token.Error:
|
|
113
110
|
write(colorize(self.error_color, line))
|
|
114
111
|
else:
|
|
115
112
|
write(line)
|
|
116
113
|
else:
|
|
117
114
|
for ttype, value in tokensource:
|
|
118
|
-
write("%
|
|
115
|
+
write(b"%r\t%r\n" % (ttype, value))
|
|
119
116
|
flush()
|
|
120
117
|
|
|
121
118
|
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"""
|
|
2
|
+
pygments.formatters.pangomarkup
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
4
|
+
|
|
5
|
+
Formatter for Pango markup output.
|
|
6
|
+
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
8
|
+
:license: BSD, see LICENSE for details.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from pygments.formatter import Formatter
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ['PangoMarkupFormatter']
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
_escape_table = {
|
|
18
|
+
ord('&'): '&',
|
|
19
|
+
ord('<'): '<',
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def escape_special_chars(text, table=_escape_table):
|
|
24
|
+
"""Escape & and < for Pango Markup."""
|
|
25
|
+
return text.translate(table)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class PangoMarkupFormatter(Formatter):
|
|
29
|
+
"""
|
|
30
|
+
Format tokens as Pango Markup code. It can then be rendered to an SVG.
|
|
31
|
+
|
|
32
|
+
.. versionadded:: 2.9
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
name = 'Pango Markup'
|
|
36
|
+
aliases = ['pango', 'pangomarkup']
|
|
37
|
+
filenames = []
|
|
38
|
+
|
|
39
|
+
def __init__(self, **options):
|
|
40
|
+
Formatter.__init__(self, **options)
|
|
41
|
+
|
|
42
|
+
self.styles = {}
|
|
43
|
+
|
|
44
|
+
for token, style in self.style:
|
|
45
|
+
start = ''
|
|
46
|
+
end = ''
|
|
47
|
+
if style['color']:
|
|
48
|
+
start += '<span fgcolor="#%s">' % style['color']
|
|
49
|
+
end = '</span>' + end
|
|
50
|
+
if style['bold']:
|
|
51
|
+
start += '<b>'
|
|
52
|
+
end = '</b>' + end
|
|
53
|
+
if style['italic']:
|
|
54
|
+
start += '<i>'
|
|
55
|
+
end = '</i>' + end
|
|
56
|
+
if style['underline']:
|
|
57
|
+
start += '<u>'
|
|
58
|
+
end = '</u>' + end
|
|
59
|
+
self.styles[token] = (start, end)
|
|
60
|
+
|
|
61
|
+
def format_unencoded(self, tokensource, outfile):
|
|
62
|
+
lastval = ''
|
|
63
|
+
lasttype = None
|
|
64
|
+
|
|
65
|
+
outfile.write('<tt>')
|
|
66
|
+
|
|
67
|
+
for ttype, value in tokensource:
|
|
68
|
+
while ttype not in self.styles:
|
|
69
|
+
ttype = ttype.parent
|
|
70
|
+
if ttype == lasttype:
|
|
71
|
+
lastval += escape_special_chars(value)
|
|
72
|
+
else:
|
|
73
|
+
if lastval:
|
|
74
|
+
stylebegin, styleend = self.styles[lasttype]
|
|
75
|
+
outfile.write(stylebegin + lastval + styleend)
|
|
76
|
+
lastval = escape_special_chars(value)
|
|
77
|
+
lasttype = ttype
|
|
78
|
+
|
|
79
|
+
if lastval:
|
|
80
|
+
stylebegin, styleend = self.styles[lasttype]
|
|
81
|
+
outfile.write(stylebegin + lastval + styleend)
|
|
82
|
+
|
|
83
|
+
outfile.write('</tt>')
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
pygments.formatters.rtf
|
|
4
3
|
~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
4
|
|
|
6
5
|
A formatter that generates RTF files.
|
|
7
6
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
9
8
|
:license: BSD, see LICENSE for details.
|
|
10
9
|
"""
|
|
11
10
|
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
pygments.formatters.svg
|
|
4
3
|
~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
4
|
|
|
6
5
|
Formatter for SVG output.
|
|
7
6
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
9
8
|
:license: BSD, see LICENSE for details.
|
|
10
9
|
"""
|
|
11
10
|
|
|
@@ -141,7 +140,8 @@ class SvgFormatter(Formatter):
|
|
|
141
140
|
|
|
142
141
|
if self.linenos:
|
|
143
142
|
if counter % counter_step == 0:
|
|
144
|
-
outfile.write('<text x="%s" y="%s" %s text-anchor="end">%s</text>' %
|
|
143
|
+
outfile.write('<text x="%s" y="%s" %s text-anchor="end">%s</text>' %
|
|
144
|
+
(x+self.linenowidth,y,counter_style,counter))
|
|
145
145
|
line_x += self.linenowidth + self.ystep
|
|
146
146
|
counter += 1
|
|
147
147
|
|
|
@@ -159,7 +159,8 @@ class SvgFormatter(Formatter):
|
|
|
159
159
|
y += self.ystep
|
|
160
160
|
outfile.write('</text>\n')
|
|
161
161
|
if self.linenos and counter % counter_step == 0:
|
|
162
|
-
outfile.write('<text x="%s" y="%s" text-anchor="end" %s>%s</text>' %
|
|
162
|
+
outfile.write('<text x="%s" y="%s" text-anchor="end" %s>%s</text>' %
|
|
163
|
+
(x+self.linenowidth,y,counter_style,counter))
|
|
163
164
|
|
|
164
165
|
counter += 1
|
|
165
166
|
outfile.write('<text x="%s" y="%s" ' 'xml:space="preserve">' % (line_x,y))
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
pygments.formatters.terminal
|
|
4
3
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
4
|
|
|
6
5
|
Formatter for terminal output with ANSI sequences.
|
|
7
6
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
9
8
|
:license: BSD, see LICENSE for details.
|
|
10
9
|
"""
|
|
11
10
|
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
pygments.formatters.terminal256
|
|
4
3
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
@@ -11,7 +10,7 @@
|
|
|
11
10
|
|
|
12
11
|
Formatter version 1.
|
|
13
12
|
|
|
14
|
-
:copyright: Copyright 2006-
|
|
13
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
15
14
|
:license: BSD, see LICENSE for details.
|
|
16
15
|
"""
|
|
17
16
|
|
|
@@ -126,6 +125,10 @@ class Terminal256Formatter(Formatter):
|
|
|
126
125
|
`style`
|
|
127
126
|
The style to use, can be a string or a Style subclass (default:
|
|
128
127
|
``'default'``).
|
|
128
|
+
|
|
129
|
+
`linenos`
|
|
130
|
+
Set to ``True`` to have line numbers on the terminal output as well
|
|
131
|
+
(default: ``False`` = no line numbers).
|
|
129
132
|
"""
|
|
130
133
|
name = 'Terminal256'
|
|
131
134
|
aliases = ['terminal256', 'console256', '256']
|
|
@@ -145,6 +148,9 @@ class Terminal256Formatter(Formatter):
|
|
|
145
148
|
self._build_color_table() # build an RGB-to-256 color conversion table
|
|
146
149
|
self._setup_styles() # convert selected style's colors to term. colors
|
|
147
150
|
|
|
151
|
+
self.linenos = options.get('linenos', False)
|
|
152
|
+
self._lineno = 0
|
|
153
|
+
|
|
148
154
|
def _build_color_table(self):
|
|
149
155
|
# colors 0..15: 16 basic colors
|
|
150
156
|
|
|
@@ -238,10 +244,17 @@ class Terminal256Formatter(Formatter):
|
|
|
238
244
|
self.style_string[str(ttype)] = (escape.color_string(),
|
|
239
245
|
escape.reset_string())
|
|
240
246
|
|
|
247
|
+
def _write_lineno(self, outfile):
|
|
248
|
+
self._lineno += 1
|
|
249
|
+
outfile.write("%s%04d: " % (self._lineno != 1 and '\n' or '', self._lineno))
|
|
250
|
+
|
|
241
251
|
def format(self, tokensource, outfile):
|
|
242
252
|
return Formatter.format(self, tokensource, outfile)
|
|
243
253
|
|
|
244
254
|
def format_unencoded(self, tokensource, outfile):
|
|
255
|
+
if self.linenos:
|
|
256
|
+
self._write_lineno(outfile)
|
|
257
|
+
|
|
245
258
|
for ttype, value in tokensource:
|
|
246
259
|
not_found = True
|
|
247
260
|
while ttype and not_found:
|
|
@@ -255,7 +268,11 @@ class Terminal256Formatter(Formatter):
|
|
|
255
268
|
for line in spl[:-1]:
|
|
256
269
|
if line:
|
|
257
270
|
outfile.write(on + line + off)
|
|
258
|
-
|
|
271
|
+
if self.linenos:
|
|
272
|
+
self._write_lineno(outfile)
|
|
273
|
+
else:
|
|
274
|
+
outfile.write('\n')
|
|
275
|
+
|
|
259
276
|
if spl[-1]:
|
|
260
277
|
outfile.write(on + spl[-1] + off)
|
|
261
278
|
|
|
@@ -270,6 +287,10 @@ class Terminal256Formatter(Formatter):
|
|
|
270
287
|
if not_found:
|
|
271
288
|
outfile.write(value)
|
|
272
289
|
|
|
290
|
+
if self.linenos:
|
|
291
|
+
outfile.write("\n")
|
|
292
|
+
|
|
293
|
+
|
|
273
294
|
|
|
274
295
|
class TerminalTrueColorFormatter(Terminal256Formatter):
|
|
275
296
|
r"""
|