pygments.rb 1.2.1 → 2.0.0.rc2
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 -6
- data/CHANGELOG.adoc +119 -0
- data/Gemfile +3 -1
- data/LICENSE +1 -1
- data/README.adoc +161 -0
- data/Rakefile +10 -21
- data/bench.rb +8 -7
- data/cache-lexers.rb +3 -2
- data/lib/pygments.rb +10 -11
- data/lib/pygments/lexer.rb +5 -5
- data/lib/pygments/mentos.py +23 -66
- data/lib/pygments/popen.rb +152 -204
- data/lib/pygments/version.rb +2 -2
- data/pygments.rb.gemspec +11 -9
- data/test/test_pygments.rb +51 -84
- data/vendor/pygments-main/{AUTHORS → Pygments-2.7.3.dist-info/AUTHORS} +21 -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 +38 -29
- 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 +9 -8
- 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 +68 -41
- 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 +342 -0
- data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1645 -0
- data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +232 -0
- data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +71 -0
- data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1725 -0
- data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +5327 -0
- data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +293 -0
- data/vendor/pygments-main/pygments/lexers/_mapping.py +551 -0
- data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1172 -0
- data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1282 -0
- data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +2547 -0
- data/vendor/pygments-main/pygments/lexers/_php_builtins.py +4753 -0
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +678 -0
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3094 -0
- data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1161 -0
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +558 -0
- data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +421 -0
- data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1004 -0
- 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 +1939 -0
- data/vendor/pygments-main/pygments/lexers/actionscript.py +245 -0
- data/vendor/pygments-main/pygments/lexers/agile.py +24 -0
- data/vendor/pygments-main/pygments/lexers/algebra.py +240 -0
- data/vendor/pygments-main/pygments/lexers/ambient.py +76 -0
- data/vendor/pygments-main/pygments/lexers/ampl.py +87 -0
- data/vendor/pygments-main/pygments/lexers/apl.py +101 -0
- data/vendor/pygments-main/pygments/lexers/archetype.py +318 -0
- data/vendor/pygments-main/pygments/lexers/arrow.py +117 -0
- data/vendor/pygments-main/pygments/lexers/asm.py +1005 -0
- data/vendor/pygments-main/pygments/lexers/automation.py +374 -0
- data/vendor/pygments-main/pygments/lexers/bare.py +104 -0
- data/vendor/pygments-main/pygments/lexers/basic.py +662 -0
- data/vendor/pygments-main/pygments/lexers/bibtex.py +160 -0
- data/vendor/pygments-main/pygments/lexers/boa.py +102 -0
- data/vendor/pygments-main/pygments/lexers/business.py +627 -0
- data/vendor/pygments-main/pygments/lexers/c_cpp.py +344 -0
- data/vendor/pygments-main/pygments/lexers/c_like.py +566 -0
- data/vendor/pygments-main/pygments/lexers/capnproto.py +78 -0
- data/vendor/pygments-main/pygments/lexers/chapel.py +112 -0
- data/vendor/pygments-main/pygments/lexers/clean.py +179 -0
- data/vendor/pygments-main/pygments/lexers/compiled.py +34 -0
- data/vendor/pygments-main/pygments/lexers/configs.py +984 -0
- data/vendor/pygments-main/pygments/lexers/console.py +114 -0
- data/vendor/pygments-main/pygments/lexers/crystal.py +392 -0
- data/vendor/pygments-main/pygments/lexers/csound.py +467 -0
- data/vendor/pygments-main/pygments/lexers/css.py +691 -0
- data/vendor/pygments-main/pygments/lexers/d.py +256 -0
- data/vendor/pygments-main/pygments/lexers/dalvik.py +125 -0
- data/vendor/pygments-main/pygments/lexers/data.py +698 -0
- data/vendor/pygments-main/pygments/lexers/devicetree.py +109 -0
- data/vendor/pygments-main/pygments/lexers/diff.py +165 -0
- data/vendor/pygments-main/pygments/lexers/dotnet.py +707 -0
- data/vendor/pygments-main/pygments/lexers/dsls.py +960 -0
- data/vendor/pygments-main/pygments/lexers/dylan.py +287 -0
- data/vendor/pygments-main/pygments/lexers/ecl.py +139 -0
- data/vendor/pygments-main/pygments/lexers/eiffel.py +65 -0
- data/vendor/pygments-main/pygments/lexers/elm.py +121 -0
- data/vendor/pygments-main/pygments/lexers/email.py +151 -0
- data/vendor/pygments-main/pygments/lexers/erlang.py +530 -0
- data/vendor/pygments-main/pygments/lexers/esoteric.py +304 -0
- data/vendor/pygments-main/pygments/lexers/ezhil.py +77 -0
- data/vendor/pygments-main/pygments/lexers/factor.py +344 -0
- data/vendor/pygments-main/pygments/lexers/fantom.py +250 -0
- data/vendor/pygments-main/pygments/lexers/felix.py +273 -0
- data/vendor/pygments-main/pygments/lexers/floscript.py +83 -0
- data/vendor/pygments-main/pygments/lexers/forth.py +178 -0
- data/vendor/pygments-main/pygments/lexers/fortran.py +206 -0
- data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
- data/vendor/pygments-main/pygments/lexers/freefem.py +898 -0
- data/vendor/pygments-main/pygments/lexers/functional.py +21 -0
- data/vendor/pygments-main/pygments/lexers/gdscript.py +346 -0
- data/vendor/pygments-main/pygments/lexers/go.py +101 -0
- data/vendor/pygments-main/pygments/lexers/grammar_notation.py +270 -0
- data/vendor/pygments-main/pygments/lexers/graph.py +85 -0
- data/vendor/pygments-main/pygments/lexers/graphics.py +800 -0
- data/vendor/pygments-main/pygments/lexers/haskell.py +870 -0
- data/vendor/pygments-main/pygments/lexers/haxe.py +936 -0
- data/vendor/pygments-main/pygments/lexers/hdl.py +472 -0
- data/vendor/pygments-main/pygments/lexers/hexdump.py +103 -0
- data/vendor/pygments-main/pygments/lexers/html.py +614 -0
- data/vendor/pygments-main/pygments/lexers/idl.py +281 -0
- data/vendor/pygments-main/pygments/lexers/igor.py +420 -0
- data/vendor/pygments-main/pygments/lexers/inferno.py +96 -0
- data/vendor/pygments-main/pygments/lexers/installers.py +322 -0
- data/vendor/pygments-main/pygments/lexers/int_fiction.py +1368 -0
- data/vendor/pygments-main/pygments/lexers/iolang.py +63 -0
- data/vendor/pygments-main/pygments/lexers/j.py +146 -0
- data/vendor/pygments-main/pygments/lexers/javascript.py +1540 -0
- data/vendor/pygments-main/pygments/lexers/julia.py +331 -0
- data/vendor/pygments-main/pygments/lexers/jvm.py +1673 -0
- data/vendor/pygments-main/pygments/lexers/lisp.py +2699 -0
- data/vendor/pygments-main/pygments/lexers/make.py +206 -0
- data/vendor/pygments-main/pygments/lexers/markup.py +765 -0
- data/vendor/pygments-main/pygments/lexers/math.py +21 -0
- data/vendor/pygments-main/pygments/lexers/matlab.py +720 -0
- data/vendor/pygments-main/pygments/lexers/mime.py +226 -0
- data/vendor/pygments-main/pygments/lexers/ml.py +958 -0
- data/vendor/pygments-main/pygments/lexers/modeling.py +366 -0
- data/vendor/pygments-main/pygments/lexers/modula2.py +1580 -0
- data/vendor/pygments-main/pygments/lexers/monte.py +204 -0
- data/vendor/pygments-main/pygments/lexers/mosel.py +448 -0
- data/vendor/pygments-main/pygments/lexers/ncl.py +894 -0
- data/vendor/pygments-main/pygments/lexers/nimrod.py +159 -0
- data/vendor/pygments-main/pygments/lexers/nit.py +64 -0
- data/vendor/pygments-main/pygments/lexers/nix.py +136 -0
- data/vendor/pygments-main/pygments/lexers/oberon.py +121 -0
- data/vendor/pygments-main/pygments/lexers/objective.py +504 -0
- data/vendor/pygments-main/pygments/lexers/ooc.py +85 -0
- data/vendor/pygments-main/pygments/lexers/other.py +41 -0
- data/vendor/pygments-main/pygments/lexers/parasail.py +79 -0
- data/vendor/pygments-main/pygments/lexers/parsers.py +800 -0
- data/vendor/pygments-main/pygments/lexers/pascal.py +644 -0
- data/vendor/pygments-main/pygments/lexers/pawn.py +205 -0
- data/vendor/pygments-main/pygments/lexers/perl.py +732 -0
- data/vendor/pygments-main/pygments/lexers/php.py +321 -0
- 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 +302 -0
- data/vendor/pygments-main/pygments/lexers/prolog.py +306 -0
- data/vendor/pygments-main/pygments/lexers/promql.py +183 -0
- data/vendor/pygments-main/pygments/lexers/python.py +1151 -0
- data/vendor/pygments-main/pygments/lexers/qvt.py +152 -0
- data/vendor/pygments-main/pygments/lexers/r.py +191 -0
- data/vendor/pygments-main/pygments/lexers/rdf.py +463 -0
- data/vendor/pygments-main/pygments/lexers/rebol.py +431 -0
- data/vendor/pygments-main/pygments/lexers/resource.py +85 -0
- data/vendor/pygments-main/pygments/lexers/ride.py +139 -0
- data/vendor/pygments-main/pygments/lexers/rnc.py +67 -0
- data/vendor/pygments-main/pygments/lexers/roboconf.py +82 -0
- data/vendor/pygments-main/pygments/lexers/robotframework.py +552 -0
- data/vendor/pygments-main/pygments/lexers/ruby.py +517 -0
- data/vendor/pygments-main/pygments/lexers/rust.py +224 -0
- data/vendor/pygments-main/pygments/lexers/sas.py +228 -0
- data/vendor/pygments-main/pygments/lexers/scdoc.py +83 -0
- data/vendor/pygments-main/pygments/lexers/scripting.py +1284 -0
- data/vendor/pygments-main/pygments/lexers/sgf.py +61 -0
- data/vendor/pygments-main/pygments/lexers/shell.py +914 -0
- 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 +195 -0
- data/vendor/pygments-main/pygments/lexers/smv.py +79 -0
- data/vendor/pygments-main/pygments/lexers/snobol.py +83 -0
- data/vendor/pygments-main/pygments/lexers/solidity.py +92 -0
- data/vendor/pygments-main/pygments/lexers/special.py +105 -0
- data/vendor/pygments-main/pygments/lexers/sql.py +837 -0
- data/vendor/pygments-main/pygments/lexers/stata.py +171 -0
- data/vendor/pygments-main/pygments/lexers/supercollider.py +95 -0
- data/vendor/pygments-main/pygments/lexers/tcl.py +145 -0
- data/vendor/pygments-main/pygments/lexers/templates.py +2264 -0
- data/vendor/pygments-main/pygments/lexers/teraterm.py +335 -0
- data/vendor/pygments-main/pygments/lexers/testing.py +207 -0
- data/vendor/pygments-main/pygments/lexers/text.py +26 -0
- data/vendor/pygments-main/pygments/lexers/textedit.py +169 -0
- data/vendor/pygments-main/pygments/lexers/textfmts.py +430 -0
- data/vendor/pygments-main/pygments/lexers/theorem.py +474 -0
- data/vendor/pygments-main/pygments/lexers/tnt.py +263 -0
- data/vendor/pygments-main/pygments/lexers/trafficscript.py +54 -0
- data/vendor/pygments-main/pygments/lexers/typoscript.py +219 -0
- data/vendor/pygments-main/pygments/lexers/unicon.py +412 -0
- data/vendor/pygments-main/pygments/lexers/urbi.py +146 -0
- data/vendor/pygments-main/pygments/lexers/usd.py +90 -0
- data/vendor/pygments-main/pygments/lexers/varnish.py +190 -0
- data/vendor/pygments-main/pygments/lexers/verification.py +114 -0
- data/vendor/pygments-main/pygments/lexers/web.py +24 -0
- data/vendor/pygments-main/pygments/lexers/webidl.py +299 -0
- data/vendor/pygments-main/pygments/lexers/webmisc.py +991 -0
- data/vendor/pygments-main/pygments/lexers/whiley.py +116 -0
- data/vendor/pygments-main/pygments/lexers/x10.py +69 -0
- 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 +1 -1
- data/vendor/pygments-main/pygments/plugin.py +4 -2
- 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 +10 -4
- data/vendor/pygments-main/pygments/styles/abap.py +1 -1
- 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 +1 -1
- data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
- data/vendor/pygments-main/pygments/styles/sas.py +1 -1
- 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.py → stata_light.py} +14 -15
- 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 +15 -92
- metadata +69 -136
- data/CHANGELOG.md +0 -111
- data/README.md +0 -121
- data/circle.yml +0 -20
- 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 -1186
- 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 -354
- 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 -166
- 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 -728
- 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 -101
- 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/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/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,7 +5,7 @@
|
|
|
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
|
|
|
@@ -14,7 +14,7 @@ import sys
|
|
|
14
14
|
|
|
15
15
|
from pygments.formatter import Formatter
|
|
16
16
|
from pygments.util import get_bool_opt, get_int_opt, get_list_opt, \
|
|
17
|
-
get_choice_opt
|
|
17
|
+
get_choice_opt
|
|
18
18
|
|
|
19
19
|
import subprocess
|
|
20
20
|
|
|
@@ -46,9 +46,9 @@ STYLES = {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
# A sane default for modern systems
|
|
49
|
-
DEFAULT_FONT_NAME_NIX = '
|
|
49
|
+
DEFAULT_FONT_NAME_NIX = 'DejaVu Sans Mono'
|
|
50
50
|
DEFAULT_FONT_NAME_WIN = 'Courier New'
|
|
51
|
-
DEFAULT_FONT_NAME_MAC = '
|
|
51
|
+
DEFAULT_FONT_NAME_MAC = 'Menlo'
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
class PilNotAvailable(ImportError):
|
|
@@ -59,7 +59,7 @@ class FontNotFound(Exception):
|
|
|
59
59
|
"""When there are no usable fonts specified"""
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
class FontManager
|
|
62
|
+
class FontManager:
|
|
63
63
|
"""
|
|
64
64
|
Manages a set of fonts: normal, italic, bold, etc...
|
|
65
65
|
"""
|
|
@@ -125,8 +125,9 @@ class FontManager(object):
|
|
|
125
125
|
for font_dir in (os.path.join(os.getenv("HOME"), 'Library/Fonts/'),
|
|
126
126
|
'/Library/Fonts/', '/System/Library/Fonts/'):
|
|
127
127
|
font_map.update(
|
|
128
|
-
(
|
|
129
|
-
|
|
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')))
|
|
130
131
|
|
|
131
132
|
for name in STYLES['NORMAL']:
|
|
132
133
|
path = self._get_mac_font_path(font_map, self.font_name, name)
|
|
@@ -164,31 +165,43 @@ class FontManager(object):
|
|
|
164
165
|
return None
|
|
165
166
|
|
|
166
167
|
def _create_win(self):
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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:
|
|
172
174
|
try:
|
|
173
|
-
key = _winreg.OpenKey(
|
|
174
|
-
|
|
175
|
-
|
|
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)
|
|
176
193
|
except EnvironmentError:
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
else:
|
|
189
|
-
self.fonts[style] = self.fonts['NORMAL']
|
|
190
|
-
finally:
|
|
191
|
-
_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')
|
|
192
205
|
|
|
193
206
|
def get_char_size(self):
|
|
194
207
|
"""
|
|
@@ -196,6 +209,12 @@ class FontManager(object):
|
|
|
196
209
|
"""
|
|
197
210
|
return self.fonts['NORMAL'].getsize('M')
|
|
198
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
|
+
|
|
199
218
|
def get_font(self, bold, oblique):
|
|
200
219
|
"""
|
|
201
220
|
Get the font based on bold and italic flags.
|
|
@@ -237,7 +256,8 @@ class ImageFormatter(Formatter):
|
|
|
237
256
|
bold and italic fonts will be generated. This really should be a
|
|
238
257
|
monospace font to look sane.
|
|
239
258
|
|
|
240
|
-
Default: "
|
|
259
|
+
Default: "Courier New" on Windows, "Menlo" on Mac OS, and
|
|
260
|
+
"DejaVu Sans Mono" on \\*nix
|
|
241
261
|
|
|
242
262
|
`font_size`
|
|
243
263
|
The font size in points to be used.
|
|
@@ -405,17 +425,17 @@ class ImageFormatter(Formatter):
|
|
|
405
425
|
"""
|
|
406
426
|
return self.fontw
|
|
407
427
|
|
|
408
|
-
def _get_char_x(self,
|
|
428
|
+
def _get_char_x(self, linelength):
|
|
409
429
|
"""
|
|
410
430
|
Get the X coordinate of a character position.
|
|
411
431
|
"""
|
|
412
|
-
return
|
|
432
|
+
return linelength + self.image_pad + self.line_number_width
|
|
413
433
|
|
|
414
|
-
def _get_text_pos(self,
|
|
434
|
+
def _get_text_pos(self, linelength, lineno):
|
|
415
435
|
"""
|
|
416
436
|
Get the actual position for a character and line position.
|
|
417
437
|
"""
|
|
418
|
-
return self._get_char_x(
|
|
438
|
+
return self._get_char_x(linelength), self._get_line_y(lineno)
|
|
419
439
|
|
|
420
440
|
def _get_linenumber_pos(self, lineno):
|
|
421
441
|
"""
|
|
@@ -439,11 +459,11 @@ class ImageFormatter(Formatter):
|
|
|
439
459
|
"""
|
|
440
460
|
return self.fonts.get_font(style['bold'], style['italic'])
|
|
441
461
|
|
|
442
|
-
def _get_image_size(self,
|
|
462
|
+
def _get_image_size(self, maxlinelength, maxlineno):
|
|
443
463
|
"""
|
|
444
464
|
Get the required image size.
|
|
445
465
|
"""
|
|
446
|
-
return (self._get_char_x(
|
|
466
|
+
return (self._get_char_x(maxlinelength) + self.image_pad,
|
|
447
467
|
self._get_line_y(maxlineno + 0) + self.image_pad)
|
|
448
468
|
|
|
449
469
|
def _draw_linenumber(self, posno, lineno):
|
|
@@ -469,6 +489,7 @@ class ImageFormatter(Formatter):
|
|
|
469
489
|
Create drawables for the token content.
|
|
470
490
|
"""
|
|
471
491
|
lineno = charno = maxcharno = 0
|
|
492
|
+
maxlinelength = linelength = 0
|
|
472
493
|
for ttype, value in tokensource:
|
|
473
494
|
while ttype not in self.styles:
|
|
474
495
|
ttype = ttype.parent
|
|
@@ -483,17 +504,22 @@ class ImageFormatter(Formatter):
|
|
|
483
504
|
temp = line.rstrip('\n')
|
|
484
505
|
if temp:
|
|
485
506
|
self._draw_text(
|
|
486
|
-
self._get_text_pos(
|
|
507
|
+
self._get_text_pos(linelength, lineno),
|
|
487
508
|
temp,
|
|
488
509
|
font = self._get_style_font(style),
|
|
489
510
|
fill = self._get_text_color(style)
|
|
490
511
|
)
|
|
512
|
+
temp_width, temp_hight = self.fonts.get_text_size(temp)
|
|
513
|
+
linelength += temp_width
|
|
514
|
+
maxlinelength = max(maxlinelength, linelength)
|
|
491
515
|
charno += len(temp)
|
|
492
516
|
maxcharno = max(maxcharno, charno)
|
|
493
517
|
if line.endswith('\n'):
|
|
494
518
|
# add a line for each extra line in the value
|
|
519
|
+
linelength = 0
|
|
495
520
|
charno = 0
|
|
496
521
|
lineno += 1
|
|
522
|
+
self.maxlinelength = maxlinelength
|
|
497
523
|
self.maxcharno = maxcharno
|
|
498
524
|
self.maxlineno = lineno
|
|
499
525
|
|
|
@@ -503,7 +529,7 @@ class ImageFormatter(Formatter):
|
|
|
503
529
|
"""
|
|
504
530
|
if not self.line_numbers:
|
|
505
531
|
return
|
|
506
|
-
for p in
|
|
532
|
+
for p in range(self.maxlineno):
|
|
507
533
|
n = p + self.line_number_start
|
|
508
534
|
if (n % self.line_number_step) == 0:
|
|
509
535
|
self._draw_linenumber(p, n)
|
|
@@ -521,7 +547,8 @@ class ImageFormatter(Formatter):
|
|
|
521
547
|
rectw = self.image_pad + self.line_number_width - self.line_number_pad
|
|
522
548
|
draw.rectangle([(0, 0), (rectw, recth)],
|
|
523
549
|
fill=self.line_number_bg)
|
|
524
|
-
|
|
550
|
+
if self.line_number_separator:
|
|
551
|
+
draw.line([(rectw, 0), (rectw, recth)], fill=self.line_number_fg)
|
|
525
552
|
del draw
|
|
526
553
|
|
|
527
554
|
def format(self, tokensource, outfile):
|
|
@@ -536,7 +563,7 @@ class ImageFormatter(Formatter):
|
|
|
536
563
|
self._draw_line_numbers()
|
|
537
564
|
im = Image.new(
|
|
538
565
|
'RGB',
|
|
539
|
-
self._get_image_size(self.
|
|
566
|
+
self._get_image_size(self.maxlinelength, self.maxlineno),
|
|
540
567
|
self.background_color
|
|
541
568
|
)
|
|
542
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:
|