pygments.rb 1.1.2 → 2.0.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 +5 -5
- data/.github/dependabot.yml +13 -0
- data/.github/workflows/ci.yml +28 -0
- data/.github/workflows/release.yml +24 -0
- data/.gitignore +5 -5
- data/CHANGELOG.adoc +128 -0
- data/Gemfile +3 -1
- data/LICENSE +1 -1
- data/README.adoc +160 -0
- data/Rakefile +13 -19
- data/bench.rb +8 -7
- data/cache-lexers.rb +3 -2
- data/lexers +0 -0
- data/lib/pygments.rb +10 -11
- data/lib/pygments/lexer.rb +5 -5
- data/lib/pygments/mentos.py +23 -110
- data/lib/pygments/popen.rb +148 -229
- data/lib/pygments/version.rb +2 -2
- data/pygments.rb.gemspec +12 -11
- data/test/test_pygments.rb +46 -104
- data/vendor/pygments-main/{AUTHORS → Pygments-2.7.3.dist-info/AUTHORS} +23 -3
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/INSTALLER +1 -0
- data/vendor/pygments-main/{LICENSE → Pygments-2.7.3.dist-info/LICENSE} +1 -1
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/METADATA +49 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +482 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/REQUESTED +0 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/WHEEL +5 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/entry_points.txt +3 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/top_level.txt +1 -0
- data/vendor/pygments-main/bin/pygmentize +8 -0
- data/vendor/pygments-main/pygments/__init__.py +6 -11
- data/vendor/pygments-main/pygments/__main__.py +18 -0
- data/vendor/pygments-main/pygments/cmdline.py +94 -41
- data/vendor/pygments-main/pygments/console.py +6 -9
- data/vendor/pygments-main/pygments/filter.py +4 -6
- data/vendor/pygments-main/pygments/filters/__init__.py +609 -21
- data/vendor/pygments-main/pygments/formatter.py +4 -4
- data/vendor/pygments-main/pygments/formatters/__init__.py +42 -6
- data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -3
- data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
- data/vendor/pygments-main/pygments/formatters/html.py +223 -135
- data/vendor/pygments-main/pygments/formatters/img.py +102 -38
- data/vendor/pygments-main/pygments/formatters/irc.py +39 -39
- data/vendor/pygments-main/pygments/formatters/latex.py +56 -26
- data/vendor/pygments-main/pygments/formatters/other.py +12 -8
- data/vendor/pygments-main/pygments/formatters/rtf.py +29 -29
- data/vendor/pygments-main/pygments/formatters/svg.py +38 -4
- data/vendor/pygments-main/pygments/formatters/terminal.py +25 -31
- data/vendor/pygments-main/pygments/formatters/terminal256.py +22 -12
- data/vendor/pygments-main/pygments/lexer.py +41 -39
- data/vendor/pygments-main/pygments/lexers/__init__.py +62 -15
- data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +5 -5
- data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +15 -15
- data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +11 -12
- data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1717 -1338
- data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +8 -1
- data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +2 -4
- data/vendor/pygments-main/pygments/lexers/_mapping.py +79 -33
- data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +2 -2
- data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1282 -0
- data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_php_builtins.py +17 -20
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +73 -16
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +2 -2
- data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -3
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +151 -125
- data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +6 -4
- data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +113 -0
- data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +280 -0
- data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/actionscript.py +8 -3
- data/vendor/pygments-main/pygments/lexers/agile.py +1 -1
- data/vendor/pygments-main/pygments/lexers/algebra.py +20 -1
- data/vendor/pygments-main/pygments/lexers/ambient.py +1 -1
- data/vendor/pygments-main/pygments/lexers/ampl.py +3 -3
- data/vendor/pygments-main/pygments/lexers/apl.py +15 -15
- data/vendor/pygments-main/pygments/lexers/archetype.py +3 -3
- data/vendor/pygments-main/pygments/lexers/arrow.py +117 -0
- data/vendor/pygments-main/pygments/lexers/asm.py +445 -70
- data/vendor/pygments-main/pygments/lexers/automation.py +3 -3
- data/vendor/pygments-main/pygments/lexers/bare.py +104 -0
- data/vendor/pygments-main/pygments/lexers/basic.py +166 -4
- data/vendor/pygments-main/pygments/lexers/bibtex.py +13 -9
- data/vendor/pygments-main/pygments/lexers/boa.py +102 -0
- data/vendor/pygments-main/pygments/lexers/business.py +69 -36
- data/vendor/pygments-main/pygments/lexers/c_cpp.py +137 -45
- data/vendor/pygments-main/pygments/lexers/c_like.py +68 -43
- data/vendor/pygments-main/pygments/lexers/capnproto.py +20 -21
- data/vendor/pygments-main/pygments/lexers/chapel.py +25 -14
- data/vendor/pygments-main/pygments/lexers/clean.py +135 -244
- data/vendor/pygments-main/pygments/lexers/compiled.py +1 -1
- data/vendor/pygments-main/pygments/lexers/configs.py +188 -37
- data/vendor/pygments-main/pygments/lexers/console.py +1 -1
- data/vendor/pygments-main/pygments/lexers/crystal.py +31 -23
- data/vendor/pygments-main/pygments/lexers/csound.py +288 -187
- data/vendor/pygments-main/pygments/lexers/css.py +18 -16
- data/vendor/pygments-main/pygments/lexers/d.py +10 -5
- data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -1
- data/vendor/pygments-main/pygments/lexers/data.py +240 -97
- data/vendor/pygments-main/pygments/lexers/devicetree.py +109 -0
- data/vendor/pygments-main/pygments/lexers/diff.py +4 -4
- data/vendor/pygments-main/pygments/lexers/dotnet.py +40 -24
- data/vendor/pygments-main/pygments/lexers/dsls.py +147 -65
- data/vendor/pygments-main/pygments/lexers/dylan.py +16 -18
- data/vendor/pygments-main/pygments/lexers/ecl.py +16 -2
- data/vendor/pygments-main/pygments/lexers/eiffel.py +1 -1
- data/vendor/pygments-main/pygments/lexers/elm.py +5 -5
- data/vendor/pygments-main/pygments/lexers/email.py +151 -0
- data/vendor/pygments-main/pygments/lexers/erlang.py +29 -32
- data/vendor/pygments-main/pygments/lexers/esoteric.py +54 -25
- data/vendor/pygments-main/pygments/lexers/ezhil.py +24 -15
- 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/floscript.py +83 -0
- data/vendor/pygments-main/pygments/lexers/forth.py +41 -40
- data/vendor/pygments-main/pygments/lexers/fortran.py +5 -4
- data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -2
- data/vendor/pygments-main/pygments/lexers/freefem.py +898 -0
- data/vendor/pygments-main/pygments/lexers/functional.py +1 -1
- data/vendor/pygments-main/pygments/lexers/gdscript.py +346 -0
- data/vendor/pygments-main/pygments/lexers/go.py +1 -1
- data/vendor/pygments-main/pygments/lexers/grammar_notation.py +63 -6
- data/vendor/pygments-main/pygments/lexers/graph.py +14 -9
- data/vendor/pygments-main/pygments/lexers/graphics.py +272 -25
- data/vendor/pygments-main/pygments/lexers/haskell.py +52 -22
- data/vendor/pygments-main/pygments/lexers/haxe.py +6 -6
- data/vendor/pygments-main/pygments/lexers/hdl.py +176 -86
- data/vendor/pygments-main/pygments/lexers/hexdump.py +18 -12
- data/vendor/pygments-main/pygments/lexers/html.py +31 -19
- data/vendor/pygments-main/pygments/lexers/idl.py +20 -9
- data/vendor/pygments-main/pygments/lexers/igor.py +244 -112
- data/vendor/pygments-main/pygments/lexers/inferno.py +2 -2
- data/vendor/pygments-main/pygments/lexers/installers.py +1 -1
- data/vendor/pygments-main/pygments/lexers/int_fiction.py +40 -15
- data/vendor/pygments-main/pygments/lexers/iolang.py +2 -2
- data/vendor/pygments-main/pygments/lexers/j.py +3 -3
- data/vendor/pygments-main/pygments/lexers/javascript.py +100 -66
- data/vendor/pygments-main/pygments/lexers/julia.py +46 -48
- data/vendor/pygments-main/pygments/lexers/jvm.py +265 -165
- data/vendor/pygments-main/pygments/lexers/lisp.py +882 -804
- data/vendor/pygments-main/pygments/lexers/make.py +10 -6
- data/vendor/pygments-main/pygments/lexers/markup.py +213 -43
- data/vendor/pygments-main/pygments/lexers/math.py +1 -1
- data/vendor/pygments-main/pygments/lexers/matlab.py +98 -41
- data/vendor/pygments-main/pygments/lexers/mime.py +226 -0
- data/vendor/pygments-main/pygments/lexers/ml.py +198 -9
- data/vendor/pygments-main/pygments/lexers/modeling.py +26 -18
- data/vendor/pygments-main/pygments/lexers/modula2.py +25 -6
- data/vendor/pygments-main/pygments/lexers/monte.py +4 -3
- data/vendor/pygments-main/pygments/lexers/mosel.py +448 -0
- data/vendor/pygments-main/pygments/lexers/ncl.py +85 -244
- data/vendor/pygments-main/pygments/lexers/nimrod.py +4 -4
- 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 +17 -1
- data/vendor/pygments-main/pygments/lexers/objective.py +16 -16
- 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 +23 -58
- data/vendor/pygments-main/pygments/lexers/pascal.py +23 -23
- data/vendor/pygments-main/pygments/lexers/pawn.py +30 -24
- data/vendor/pygments-main/pygments/lexers/perl.py +276 -160
- data/vendor/pygments-main/pygments/lexers/php.py +64 -10
- data/vendor/pygments-main/pygments/lexers/pointless.py +71 -0
- data/vendor/pygments-main/pygments/lexers/pony.py +94 -0
- data/vendor/pygments-main/pygments/lexers/praat.py +38 -30
- data/vendor/pygments-main/pygments/lexers/prolog.py +36 -36
- data/vendor/pygments-main/pygments/lexers/promql.py +183 -0
- data/vendor/pygments-main/pygments/lexers/python.py +439 -226
- data/vendor/pygments-main/pygments/lexers/qvt.py +6 -6
- data/vendor/pygments-main/pygments/lexers/r.py +13 -275
- data/vendor/pygments-main/pygments/lexers/rdf.py +232 -39
- data/vendor/pygments-main/pygments/lexers/rebol.py +8 -8
- data/vendor/pygments-main/pygments/lexers/resource.py +2 -2
- data/vendor/pygments-main/pygments/lexers/ride.py +139 -0
- 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 +23 -31
- data/vendor/pygments-main/pygments/lexers/ruby.py +22 -24
- data/vendor/pygments-main/pygments/lexers/rust.py +86 -71
- data/vendor/pygments-main/pygments/lexers/sas.py +7 -7
- data/vendor/pygments-main/pygments/lexers/scdoc.py +83 -0
- data/vendor/pygments-main/pygments/lexers/scripting.py +75 -13
- data/vendor/pygments-main/pygments/lexers/sgf.py +61 -0
- data/vendor/pygments-main/pygments/lexers/shell.py +175 -51
- data/vendor/pygments-main/pygments/lexers/sieve.py +69 -0
- data/vendor/pygments-main/pygments/lexers/slash.py +185 -0
- data/vendor/pygments-main/pygments/lexers/smalltalk.py +2 -2
- data/vendor/pygments-main/pygments/lexers/smv.py +30 -26
- data/vendor/pygments-main/pygments/lexers/snobol.py +1 -1
- data/vendor/pygments-main/pygments/lexers/solidity.py +92 -0
- data/vendor/pygments-main/pygments/lexers/special.py +5 -3
- data/vendor/pygments-main/pygments/lexers/sql.py +333 -177
- data/vendor/pygments-main/pygments/lexers/stata.py +107 -42
- data/vendor/pygments-main/pygments/lexers/supercollider.py +6 -1
- data/vendor/pygments-main/pygments/lexers/tcl.py +1 -1
- data/vendor/pygments-main/pygments/lexers/templates.py +144 -132
- data/vendor/pygments-main/pygments/lexers/teraterm.py +335 -0
- data/vendor/pygments-main/pygments/lexers/testing.py +6 -6
- data/vendor/pygments-main/pygments/lexers/text.py +2 -1
- data/vendor/pygments-main/pygments/lexers/textedit.py +4 -4
- data/vendor/pygments-main/pygments/lexers/textfmts.py +146 -13
- data/vendor/pygments-main/pygments/lexers/theorem.py +69 -53
- data/vendor/pygments-main/pygments/lexers/tnt.py +263 -0
- data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -1
- data/vendor/pygments-main/pygments/lexers/typoscript.py +8 -14
- data/vendor/pygments-main/pygments/lexers/unicon.py +412 -0
- data/vendor/pygments-main/pygments/lexers/urbi.py +14 -1
- data/vendor/pygments-main/pygments/lexers/usd.py +90 -0
- data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
- data/vendor/pygments-main/pygments/lexers/verification.py +15 -12
- data/vendor/pygments-main/pygments/lexers/web.py +1 -1
- data/vendor/pygments-main/pygments/lexers/webidl.py +299 -0
- data/vendor/pygments-main/pygments/lexers/webmisc.py +50 -38
- data/vendor/pygments-main/pygments/lexers/whiley.py +11 -12
- data/vendor/pygments-main/pygments/lexers/x10.py +1 -1
- data/vendor/pygments-main/pygments/lexers/xorg.py +37 -0
- data/vendor/pygments-main/pygments/lexers/yang.py +104 -0
- data/vendor/pygments-main/pygments/lexers/zig.py +124 -0
- data/vendor/pygments-main/pygments/modeline.py +6 -5
- data/vendor/pygments-main/pygments/plugin.py +14 -18
- data/vendor/pygments-main/pygments/regexopt.py +1 -1
- data/vendor/pygments-main/pygments/scanner.py +2 -2
- data/vendor/pygments-main/pygments/sphinxext.py +2 -4
- data/vendor/pygments-main/pygments/style.py +61 -24
- data/vendor/pygments-main/pygments/styles/__init__.py +13 -5
- 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 +2 -2
- 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/inkpot.py +67 -0
- 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 +4 -3
- 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/solarized.py +134 -0
- data/vendor/pygments-main/pygments/styles/stata_dark.py +41 -0
- data/vendor/pygments-main/pygments/styles/stata_light.py +39 -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 +47 -108
- data/vendor/pygments-main/pygments/util.py +19 -95
- metadata +71 -137
- data/CHANGELOG.md +0 -98
- data/README.md +0 -121
- data/circle.yml +0 -20
- data/test/test_data.c +0 -2581
- data/test/test_data.py +0 -514
- data/test/test_data_generated +0 -2582
- data/vendor/custom_lexers/github.py +0 -565
- data/vendor/pygments-main/CHANGES +0 -1163
- data/vendor/pygments-main/MANIFEST.in +0 -6
- data/vendor/pygments-main/Makefile +0 -65
- data/vendor/pygments-main/README.rst +0 -39
- data/vendor/pygments-main/REVISION +0 -1
- data/vendor/pygments-main/TODO +0 -12
- data/vendor/pygments-main/doc/Makefile +0 -153
- data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
- data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
- data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
- data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
- data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
- data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
- data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
- data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
- data/vendor/pygments-main/doc/conf.py +0 -241
- data/vendor/pygments-main/doc/docs/api.rst +0 -331
- data/vendor/pygments-main/doc/docs/authors.rst +0 -4
- data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
- data/vendor/pygments-main/doc/docs/cmdline.rst +0 -149
- data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
- data/vendor/pygments-main/doc/docs/filters.rst +0 -41
- data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
- data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
- data/vendor/pygments-main/doc/docs/index.rst +0 -66
- data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
- data/vendor/pygments-main/doc/docs/java.rst +0 -70
- data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -689
- data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
- data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
- data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
- data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
- data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
- data/vendor/pygments-main/doc/docs/styles.rst +0 -201
- data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
- data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
- data/vendor/pygments-main/doc/download.rst +0 -41
- data/vendor/pygments-main/doc/faq.rst +0 -139
- data/vendor/pygments-main/doc/index.rst +0 -54
- data/vendor/pygments-main/doc/languages.rst +0 -154
- data/vendor/pygments-main/doc/make.bat +0 -190
- data/vendor/pygments-main/doc/pygmentize.1 +0 -94
- data/vendor/pygments-main/external/autopygmentize +0 -84
- data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
- data/vendor/pygments-main/external/markdown-processor.py +0 -67
- data/vendor/pygments-main/external/moin-parser.py +0 -112
- data/vendor/pygments-main/external/pygments.bashcomp +0 -38
- data/vendor/pygments-main/external/rst-directive.py +0 -82
- data/vendor/pygments-main/pygmentize +0 -8
- data/vendor/pygments-main/pygments/lexers/github.py +0 -565
- data/vendor/pygments-main/pygments/styles/stata.py +0 -37
- data/vendor/pygments-main/requirements.txt +0 -5
- data/vendor/pygments-main/scripts/check_sources.py +0 -211
- data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
- data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
- data/vendor/pygments-main/scripts/epydoc.css +0 -280
- data/vendor/pygments-main/scripts/find_error.py +0 -1
- data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
- data/vendor/pygments-main/scripts/pylintrc +0 -301
- data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
- data/vendor/pygments-main/setup.cfg +0 -10
- data/vendor/pygments-main/setup.py +0 -77
- data/vendor/pygments-main/tox.ini +0 -7
- data/vendor/simplejson/.gitignore +0 -10
- data/vendor/simplejson/.travis.yml +0 -5
- data/vendor/simplejson/CHANGES.txt +0 -291
- data/vendor/simplejson/LICENSE.txt +0 -19
- data/vendor/simplejson/MANIFEST.in +0 -5
- data/vendor/simplejson/README.rst +0 -19
- data/vendor/simplejson/conf.py +0 -179
- data/vendor/simplejson/index.rst +0 -628
- data/vendor/simplejson/scripts/make_docs.py +0 -18
- data/vendor/simplejson/setup.py +0 -104
- data/vendor/simplejson/simplejson/__init__.py +0 -510
- data/vendor/simplejson/simplejson/_speedups.c +0 -2745
- data/vendor/simplejson/simplejson/decoder.py +0 -425
- data/vendor/simplejson/simplejson/encoder.py +0 -567
- data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
- data/vendor/simplejson/simplejson/scanner.py +0 -77
- data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
- data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
- data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
- data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
- data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
- data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
- data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
- data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
- data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
- data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
- data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
- data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
- data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
- data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
- data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
- data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
- data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
- data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
- data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
- data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
- data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
- data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
- data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
- data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
- data/vendor/simplejson/simplejson/tool.py +0 -39
|
@@ -5,15 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
Formatter for Pixmap output.
|
|
7
7
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
8
|
+
:copyright: Copyright 2006-2020 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
|
|
15
16
|
from pygments.util import get_bool_opt, get_int_opt, get_list_opt, \
|
|
16
|
-
get_choice_opt
|
|
17
|
+
get_choice_opt
|
|
17
18
|
|
|
18
19
|
import subprocess
|
|
19
20
|
|
|
@@ -45,8 +46,9 @@ STYLES = {
|
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
# A sane default for modern systems
|
|
48
|
-
DEFAULT_FONT_NAME_NIX = '
|
|
49
|
+
DEFAULT_FONT_NAME_NIX = 'DejaVu Sans Mono'
|
|
49
50
|
DEFAULT_FONT_NAME_WIN = 'Courier New'
|
|
51
|
+
DEFAULT_FONT_NAME_MAC = 'Menlo'
|
|
50
52
|
|
|
51
53
|
|
|
52
54
|
class PilNotAvailable(ImportError):
|
|
@@ -57,7 +59,7 @@ class FontNotFound(Exception):
|
|
|
57
59
|
"""When there are no usable fonts specified"""
|
|
58
60
|
|
|
59
61
|
|
|
60
|
-
class FontManager
|
|
62
|
+
class FontManager:
|
|
61
63
|
"""
|
|
62
64
|
Manages a set of fonts: normal, italic, bold, etc...
|
|
63
65
|
"""
|
|
@@ -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,38 @@ 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)
|
|
130
|
+
if f.lower().endswith(('ttf', 'ttc')))
|
|
131
|
+
|
|
132
|
+
for name in STYLES['NORMAL']:
|
|
133
|
+
path = self._get_mac_font_path(font_map, self.font_name, name)
|
|
134
|
+
if path is not None:
|
|
135
|
+
self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size)
|
|
136
|
+
break
|
|
137
|
+
else:
|
|
138
|
+
raise FontNotFound('No usable fonts named: "%s"' %
|
|
139
|
+
self.font_name)
|
|
140
|
+
for style in ('ITALIC', 'BOLD', 'BOLDITALIC'):
|
|
141
|
+
for stylename in STYLES[style]:
|
|
142
|
+
path = self._get_mac_font_path(font_map, self.font_name, stylename)
|
|
143
|
+
if path is not None:
|
|
144
|
+
self.fonts[style] = ImageFont.truetype(path, self.font_size)
|
|
145
|
+
break
|
|
146
|
+
else:
|
|
147
|
+
if style == 'BOLDITALIC':
|
|
148
|
+
self.fonts[style] = self.fonts['BOLD']
|
|
149
|
+
else:
|
|
150
|
+
self.fonts[style] = self.fonts['NORMAL']
|
|
151
|
+
|
|
114
152
|
def _lookup_win(self, key, basename, styles, fail=False):
|
|
115
153
|
for suffix in ('', ' (TrueType)'):
|
|
116
154
|
for style in styles:
|
|
@@ -127,31 +165,43 @@ class FontManager(object):
|
|
|
127
165
|
return None
|
|
128
166
|
|
|
129
167
|
def _create_win(self):
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
168
|
+
lookuperror = None
|
|
169
|
+
keynames = [ (_winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows NT\CurrentVersion\Fonts'),
|
|
170
|
+
(_winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Fonts'),
|
|
171
|
+
(_winreg.HKEY_LOCAL_MACHINE, r'Software\Microsoft\Windows NT\CurrentVersion\Fonts'),
|
|
172
|
+
(_winreg.HKEY_LOCAL_MACHINE, r'Software\Microsoft\Windows\CurrentVersion\Fonts') ]
|
|
173
|
+
for keyname in keynames:
|
|
135
174
|
try:
|
|
136
|
-
key = _winreg.OpenKey(
|
|
137
|
-
|
|
138
|
-
|
|
175
|
+
key = _winreg.OpenKey(*keyname)
|
|
176
|
+
try:
|
|
177
|
+
path = self._lookup_win(key, self.font_name, STYLES['NORMAL'], True)
|
|
178
|
+
self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size)
|
|
179
|
+
for style in ('ITALIC', 'BOLD', 'BOLDITALIC'):
|
|
180
|
+
path = self._lookup_win(key, self.font_name, STYLES[style])
|
|
181
|
+
if path:
|
|
182
|
+
self.fonts[style] = ImageFont.truetype(path, self.font_size)
|
|
183
|
+
else:
|
|
184
|
+
if style == 'BOLDITALIC':
|
|
185
|
+
self.fonts[style] = self.fonts['BOLD']
|
|
186
|
+
else:
|
|
187
|
+
self.fonts[style] = self.fonts['NORMAL']
|
|
188
|
+
return
|
|
189
|
+
except FontNotFound as err:
|
|
190
|
+
lookuperror = err
|
|
191
|
+
finally:
|
|
192
|
+
_winreg.CloseKey(key)
|
|
139
193
|
except EnvironmentError:
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
else:
|
|
152
|
-
self.fonts[style] = self.fonts['NORMAL']
|
|
153
|
-
finally:
|
|
154
|
-
_winreg.CloseKey(key)
|
|
194
|
+
pass
|
|
195
|
+
else:
|
|
196
|
+
# If we get here, we checked all registry keys and had no luck
|
|
197
|
+
# We can be in one of two situations now:
|
|
198
|
+
# * All key lookups failed. In this case lookuperror is None and we
|
|
199
|
+
# will raise a generic error
|
|
200
|
+
# * At least one lookup failed with a FontNotFound error. In this
|
|
201
|
+
# case, we will raise that as a more specific error
|
|
202
|
+
if lookuperror:
|
|
203
|
+
raise lookuperror
|
|
204
|
+
raise FontNotFound('Can\'t open Windows font registry key')
|
|
155
205
|
|
|
156
206
|
def get_char_size(self):
|
|
157
207
|
"""
|
|
@@ -159,6 +209,12 @@ class FontManager(object):
|
|
|
159
209
|
"""
|
|
160
210
|
return self.fonts['NORMAL'].getsize('M')
|
|
161
211
|
|
|
212
|
+
def get_text_size(self, text):
|
|
213
|
+
"""
|
|
214
|
+
Get the text size(width, height).
|
|
215
|
+
"""
|
|
216
|
+
return self.fonts['NORMAL'].getsize(text)
|
|
217
|
+
|
|
162
218
|
def get_font(self, bold, oblique):
|
|
163
219
|
"""
|
|
164
220
|
Get the font based on bold and italic flags.
|
|
@@ -200,7 +256,8 @@ class ImageFormatter(Formatter):
|
|
|
200
256
|
bold and italic fonts will be generated. This really should be a
|
|
201
257
|
monospace font to look sane.
|
|
202
258
|
|
|
203
|
-
Default: "
|
|
259
|
+
Default: "Courier New" on Windows, "Menlo" on Mac OS, and
|
|
260
|
+
"DejaVu Sans Mono" on \\*nix
|
|
204
261
|
|
|
205
262
|
`font_size`
|
|
206
263
|
The font size in points to be used.
|
|
@@ -368,17 +425,17 @@ class ImageFormatter(Formatter):
|
|
|
368
425
|
"""
|
|
369
426
|
return self.fontw
|
|
370
427
|
|
|
371
|
-
def _get_char_x(self,
|
|
428
|
+
def _get_char_x(self, linelength):
|
|
372
429
|
"""
|
|
373
430
|
Get the X coordinate of a character position.
|
|
374
431
|
"""
|
|
375
|
-
return
|
|
432
|
+
return linelength + self.image_pad + self.line_number_width
|
|
376
433
|
|
|
377
|
-
def _get_text_pos(self,
|
|
434
|
+
def _get_text_pos(self, linelength, lineno):
|
|
378
435
|
"""
|
|
379
436
|
Get the actual position for a character and line position.
|
|
380
437
|
"""
|
|
381
|
-
return self._get_char_x(
|
|
438
|
+
return self._get_char_x(linelength), self._get_line_y(lineno)
|
|
382
439
|
|
|
383
440
|
def _get_linenumber_pos(self, lineno):
|
|
384
441
|
"""
|
|
@@ -402,11 +459,11 @@ class ImageFormatter(Formatter):
|
|
|
402
459
|
"""
|
|
403
460
|
return self.fonts.get_font(style['bold'], style['italic'])
|
|
404
461
|
|
|
405
|
-
def _get_image_size(self,
|
|
462
|
+
def _get_image_size(self, maxlinelength, maxlineno):
|
|
406
463
|
"""
|
|
407
464
|
Get the required image size.
|
|
408
465
|
"""
|
|
409
|
-
return (self._get_char_x(
|
|
466
|
+
return (self._get_char_x(maxlinelength) + self.image_pad,
|
|
410
467
|
self._get_line_y(maxlineno + 0) + self.image_pad)
|
|
411
468
|
|
|
412
469
|
def _draw_linenumber(self, posno, lineno):
|
|
@@ -432,6 +489,7 @@ class ImageFormatter(Formatter):
|
|
|
432
489
|
Create drawables for the token content.
|
|
433
490
|
"""
|
|
434
491
|
lineno = charno = maxcharno = 0
|
|
492
|
+
maxlinelength = linelength = 0
|
|
435
493
|
for ttype, value in tokensource:
|
|
436
494
|
while ttype not in self.styles:
|
|
437
495
|
ttype = ttype.parent
|
|
@@ -446,17 +504,22 @@ class ImageFormatter(Formatter):
|
|
|
446
504
|
temp = line.rstrip('\n')
|
|
447
505
|
if temp:
|
|
448
506
|
self._draw_text(
|
|
449
|
-
self._get_text_pos(
|
|
507
|
+
self._get_text_pos(linelength, lineno),
|
|
450
508
|
temp,
|
|
451
509
|
font = self._get_style_font(style),
|
|
452
510
|
fill = self._get_text_color(style)
|
|
453
511
|
)
|
|
512
|
+
temp_width, temp_hight = self.fonts.get_text_size(temp)
|
|
513
|
+
linelength += temp_width
|
|
514
|
+
maxlinelength = max(maxlinelength, linelength)
|
|
454
515
|
charno += len(temp)
|
|
455
516
|
maxcharno = max(maxcharno, charno)
|
|
456
517
|
if line.endswith('\n'):
|
|
457
518
|
# add a line for each extra line in the value
|
|
519
|
+
linelength = 0
|
|
458
520
|
charno = 0
|
|
459
521
|
lineno += 1
|
|
522
|
+
self.maxlinelength = maxlinelength
|
|
460
523
|
self.maxcharno = maxcharno
|
|
461
524
|
self.maxlineno = lineno
|
|
462
525
|
|
|
@@ -466,7 +529,7 @@ class ImageFormatter(Formatter):
|
|
|
466
529
|
"""
|
|
467
530
|
if not self.line_numbers:
|
|
468
531
|
return
|
|
469
|
-
for p in
|
|
532
|
+
for p in range(self.maxlineno):
|
|
470
533
|
n = p + self.line_number_start
|
|
471
534
|
if (n % self.line_number_step) == 0:
|
|
472
535
|
self._draw_linenumber(p, n)
|
|
@@ -484,7 +547,8 @@ class ImageFormatter(Formatter):
|
|
|
484
547
|
rectw = self.image_pad + self.line_number_width - self.line_number_pad
|
|
485
548
|
draw.rectangle([(0, 0), (rectw, recth)],
|
|
486
549
|
fill=self.line_number_bg)
|
|
487
|
-
|
|
550
|
+
if self.line_number_separator:
|
|
551
|
+
draw.line([(rectw, 0), (rectw, recth)], fill=self.line_number_fg)
|
|
488
552
|
del draw
|
|
489
553
|
|
|
490
554
|
def format(self, tokensource, outfile):
|
|
@@ -499,7 +563,7 @@ class ImageFormatter(Formatter):
|
|
|
499
563
|
self._draw_line_numbers()
|
|
500
564
|
im = Image.new(
|
|
501
565
|
'RGB',
|
|
502
|
-
self._get_image_size(self.
|
|
566
|
+
self._get_image_size(self.maxlinelength, self.maxlineno),
|
|
503
567
|
self.background_color
|
|
504
568
|
)
|
|
505
569
|
self._paint_line_number_bg(im)
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
Formatter for IRC output
|
|
7
7
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
8
|
+
:copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
|
|
9
9
|
:license: BSD, see LICENSE for details.
|
|
10
10
|
"""
|
|
11
11
|
|
|
@@ -25,55 +25,55 @@ __all__ = ['IRCFormatter']
|
|
|
25
25
|
IRC_COLORS = {
|
|
26
26
|
Token: ('', ''),
|
|
27
27
|
|
|
28
|
-
Whitespace: ('
|
|
29
|
-
Comment: ('
|
|
30
|
-
Comment.Preproc: ('
|
|
31
|
-
Keyword: ('
|
|
32
|
-
Keyword.Type: ('
|
|
33
|
-
Operator.Word: ('
|
|
34
|
-
Name.Builtin: ('
|
|
35
|
-
Name.Function: ('
|
|
36
|
-
Name.Namespace: ('
|
|
37
|
-
Name.Class: ('
|
|
38
|
-
Name.Exception: ('
|
|
39
|
-
Name.Decorator: ('
|
|
40
|
-
Name.Variable: ('
|
|
41
|
-
Name.Constant: ('
|
|
42
|
-
Name.Attribute: ('
|
|
43
|
-
Name.Tag: ('
|
|
44
|
-
String: ('
|
|
45
|
-
Number: ('
|
|
46
|
-
|
|
47
|
-
Generic.Deleted: ('
|
|
48
|
-
Generic.Inserted: ('
|
|
28
|
+
Whitespace: ('gray', 'brightblack'),
|
|
29
|
+
Comment: ('gray', 'brightblack'),
|
|
30
|
+
Comment.Preproc: ('cyan', 'brightcyan'),
|
|
31
|
+
Keyword: ('blue', 'brightblue'),
|
|
32
|
+
Keyword.Type: ('cyan', 'brightcyan'),
|
|
33
|
+
Operator.Word: ('magenta', 'brightcyan'),
|
|
34
|
+
Name.Builtin: ('cyan', 'brightcyan'),
|
|
35
|
+
Name.Function: ('green', 'brightgreen'),
|
|
36
|
+
Name.Namespace: ('_cyan_', '_brightcyan_'),
|
|
37
|
+
Name.Class: ('_green_', '_brightgreen_'),
|
|
38
|
+
Name.Exception: ('cyan', 'brightcyan'),
|
|
39
|
+
Name.Decorator: ('brightblack', 'gray'),
|
|
40
|
+
Name.Variable: ('red', 'brightred'),
|
|
41
|
+
Name.Constant: ('red', 'brightred'),
|
|
42
|
+
Name.Attribute: ('cyan', 'brightcyan'),
|
|
43
|
+
Name.Tag: ('brightblue', 'brightblue'),
|
|
44
|
+
String: ('yellow', 'yellow'),
|
|
45
|
+
Number: ('blue', 'brightblue'),
|
|
46
|
+
|
|
47
|
+
Generic.Deleted: ('brightred', 'brightred'),
|
|
48
|
+
Generic.Inserted: ('green', 'brightgreen'),
|
|
49
49
|
Generic.Heading: ('**', '**'),
|
|
50
|
-
Generic.Subheading: ('*
|
|
51
|
-
Generic.Error: ('
|
|
50
|
+
Generic.Subheading: ('*magenta*', '*brightmagenta*'),
|
|
51
|
+
Generic.Error: ('brightred', 'brightred'),
|
|
52
52
|
|
|
53
|
-
Error: ('
|
|
53
|
+
Error: ('_brightred_', '_brightred_'),
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
IRC_COLOR_MAP = {
|
|
58
58
|
'white': 0,
|
|
59
59
|
'black': 1,
|
|
60
|
-
'
|
|
61
|
-
'
|
|
62
|
-
'
|
|
63
|
-
'
|
|
64
|
-
'
|
|
60
|
+
'blue': 2,
|
|
61
|
+
'brightgreen': 3,
|
|
62
|
+
'brightred': 4,
|
|
63
|
+
'yellow': 5,
|
|
64
|
+
'magenta': 6,
|
|
65
65
|
'orange': 7,
|
|
66
|
-
'
|
|
67
|
-
'
|
|
66
|
+
'green': 7, #compat w/ ansi
|
|
67
|
+
'brightyellow': 8,
|
|
68
68
|
'lightgreen': 9,
|
|
69
|
-
'
|
|
70
|
-
'
|
|
69
|
+
'brightcyan': 9, # compat w/ ansi
|
|
70
|
+
'cyan': 10,
|
|
71
71
|
'lightblue': 11,
|
|
72
|
-
'
|
|
73
|
-
'
|
|
74
|
-
'
|
|
75
|
-
'
|
|
76
|
-
'
|
|
72
|
+
'red': 11, # compat w/ ansi
|
|
73
|
+
'brightblue': 12,
|
|
74
|
+
'brightmagenta': 13,
|
|
75
|
+
'brightblack': 14,
|
|
76
|
+
'gray': 15,
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
def ircformat(color, text):
|
|
@@ -5,17 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
Formatter for LaTeX fancyvrb output.
|
|
7
7
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
8
|
+
:copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
|
|
9
9
|
:license: BSD, see LICENSE for details.
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
|
-
from
|
|
12
|
+
from io import StringIO
|
|
13
13
|
|
|
14
14
|
from pygments.formatter import Formatter
|
|
15
|
-
from pygments.lexer import Lexer
|
|
15
|
+
from pygments.lexer import Lexer, do_insertions
|
|
16
16
|
from pygments.token import Token, STANDARD_TYPES
|
|
17
|
-
from pygments.util import get_bool_opt, get_int_opt
|
|
18
|
-
iteritems
|
|
17
|
+
from pygments.util import get_bool_opt, get_int_opt
|
|
19
18
|
|
|
20
19
|
|
|
21
20
|
__all__ = ['LatexFormatter']
|
|
@@ -266,7 +265,7 @@ class LatexFormatter(Formatter):
|
|
|
266
265
|
self.right = self.escapeinside[1]
|
|
267
266
|
else:
|
|
268
267
|
self.escapeinside = ''
|
|
269
|
-
self.envname = options.get('envname',
|
|
268
|
+
self.envname = options.get('envname', 'Verbatim')
|
|
270
269
|
|
|
271
270
|
self._create_stylesheet()
|
|
272
271
|
|
|
@@ -322,7 +321,7 @@ class LatexFormatter(Formatter):
|
|
|
322
321
|
"""
|
|
323
322
|
cp = self.commandprefix
|
|
324
323
|
styles = []
|
|
325
|
-
for name, definition in
|
|
324
|
+
for name, definition in self.cmd2def.items():
|
|
326
325
|
styles.append(r'\expandafter\def\csname %s@tok@%s\endcsname{%s}' %
|
|
327
326
|
(cp, name, definition))
|
|
328
327
|
return STYLE_TEMPLATE % {'cp': self.commandprefix,
|
|
@@ -337,24 +336,24 @@ class LatexFormatter(Formatter):
|
|
|
337
336
|
realoutfile = outfile
|
|
338
337
|
outfile = StringIO()
|
|
339
338
|
|
|
340
|
-
outfile.write(
|
|
339
|
+
outfile.write('\\begin{' + self.envname + '}[commandchars=\\\\\\{\\}')
|
|
341
340
|
if self.linenos:
|
|
342
341
|
start, step = self.linenostart, self.linenostep
|
|
343
|
-
outfile.write(
|
|
344
|
-
(start and
|
|
345
|
-
(step and
|
|
342
|
+
outfile.write(',numbers=left' +
|
|
343
|
+
(start and ',firstnumber=%d' % start or '') +
|
|
344
|
+
(step and ',stepnumber=%d' % step or ''))
|
|
346
345
|
if self.mathescape or self.texcomments or self.escapeinside:
|
|
347
|
-
outfile.write(
|
|
346
|
+
outfile.write(',codes={\\catcode`\\$=3\\catcode`\\^=7\\catcode`\\_=8}')
|
|
348
347
|
if self.verboptions:
|
|
349
|
-
outfile.write(
|
|
350
|
-
outfile.write(
|
|
348
|
+
outfile.write(',' + self.verboptions)
|
|
349
|
+
outfile.write(']\n')
|
|
351
350
|
|
|
352
351
|
for ttype, value in tokensource:
|
|
353
352
|
if ttype in Token.Comment:
|
|
354
353
|
if self.texcomments:
|
|
355
354
|
# Try to guess comment starting lexeme and escape it ...
|
|
356
355
|
start = value[0:1]
|
|
357
|
-
for i in
|
|
356
|
+
for i in range(1, len(value)):
|
|
358
357
|
if start[0] != value[i]:
|
|
359
358
|
break
|
|
360
359
|
start += value[i]
|
|
@@ -410,7 +409,7 @@ class LatexFormatter(Formatter):
|
|
|
410
409
|
else:
|
|
411
410
|
outfile.write(value)
|
|
412
411
|
|
|
413
|
-
outfile.write(
|
|
412
|
+
outfile.write('\\end{' + self.envname + '}\n')
|
|
414
413
|
|
|
415
414
|
if self.full:
|
|
416
415
|
encoding = self.encoding or 'utf8'
|
|
@@ -447,13 +446,44 @@ class LatexEmbeddedLexer(Lexer):
|
|
|
447
446
|
Lexer.__init__(self, **options)
|
|
448
447
|
|
|
449
448
|
def get_tokens_unprocessed(self, text):
|
|
449
|
+
# find and remove all the escape tokens (replace with an empty string)
|
|
450
|
+
# this is very similar to DelegatingLexer.get_tokens_unprocessed.
|
|
451
|
+
buffered = ''
|
|
452
|
+
insertions = []
|
|
453
|
+
insertion_buf = []
|
|
454
|
+
for i, t, v in self._find_safe_escape_tokens(text):
|
|
455
|
+
if t is None:
|
|
456
|
+
if insertion_buf:
|
|
457
|
+
insertions.append((len(buffered), insertion_buf))
|
|
458
|
+
insertion_buf = []
|
|
459
|
+
buffered += v
|
|
460
|
+
else:
|
|
461
|
+
insertion_buf.append((i, t, v))
|
|
462
|
+
if insertion_buf:
|
|
463
|
+
insertions.append((len(buffered), insertion_buf))
|
|
464
|
+
return do_insertions(insertions,
|
|
465
|
+
self.lang.get_tokens_unprocessed(buffered))
|
|
466
|
+
|
|
467
|
+
def _find_safe_escape_tokens(self, text):
|
|
468
|
+
""" find escape tokens that are not in strings or comments """
|
|
469
|
+
for i, t, v in self._filter_to(
|
|
470
|
+
self.lang.get_tokens_unprocessed(text),
|
|
471
|
+
lambda t: t in Token.Comment or t in Token.String
|
|
472
|
+
):
|
|
473
|
+
if t is None:
|
|
474
|
+
for i2, t2, v2 in self._find_escape_tokens(v):
|
|
475
|
+
yield i + i2, t2, v2
|
|
476
|
+
else:
|
|
477
|
+
yield i, None, v
|
|
478
|
+
|
|
479
|
+
def _filter_to(self, it, pred):
|
|
480
|
+
""" Keep only the tokens that match `pred`, merge the others together """
|
|
450
481
|
buf = ''
|
|
451
482
|
idx = 0
|
|
452
|
-
for i, t, v in
|
|
453
|
-
if t
|
|
483
|
+
for i, t, v in it:
|
|
484
|
+
if pred(t):
|
|
454
485
|
if buf:
|
|
455
|
-
|
|
456
|
-
yield x
|
|
486
|
+
yield idx, None, buf
|
|
457
487
|
buf = ''
|
|
458
488
|
yield i, t, v
|
|
459
489
|
else:
|
|
@@ -461,16 +491,16 @@ class LatexEmbeddedLexer(Lexer):
|
|
|
461
491
|
idx = i
|
|
462
492
|
buf += v
|
|
463
493
|
if buf:
|
|
464
|
-
|
|
465
|
-
yield x
|
|
494
|
+
yield idx, None, buf
|
|
466
495
|
|
|
467
|
-
def
|
|
496
|
+
def _find_escape_tokens(self, text):
|
|
497
|
+
""" Find escape tokens within text, give token=None otherwise """
|
|
498
|
+
index = 0
|
|
468
499
|
while text:
|
|
469
500
|
a, sep1, text = text.partition(self.left)
|
|
470
501
|
if a:
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
index += len(a)
|
|
502
|
+
yield index, None, a
|
|
503
|
+
index += len(a)
|
|
474
504
|
if sep1:
|
|
475
505
|
b, sep2, text = text.partition(self.right)
|
|
476
506
|
if sep2:
|