pygments.rb 1.2.1 → 2.2.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 +40 -0
- data/.github/workflows/release.yml +24 -0
- data/.gitignore +4 -6
- data/.rubocop.yml +16 -0
- data/CHANGELOG.adoc +137 -0
- data/Gemfile +3 -1
- data/LICENSE +1 -1
- data/README.adoc +159 -0
- data/Rakefile +8 -32
- data/bench.rb +14 -8
- data/lib/pygments.rb +16 -14
- data/lib/pygments/lexer.rb +87 -65
- data/lib/pygments/mentos.py +23 -110
- data/lib/pygments/popen.rb +188 -284
- data/lib/pygments/version.rb +2 -2
- data/pygments.rb.gemspec +20 -13
- data/test/test_pygments.rb +50 -110
- data/vendor/pygments-main/{AUTHORS → Pygments-2.8.1.dist-info/AUTHORS} +26 -3
- data/vendor/pygments-main/Pygments-2.8.1.dist-info/INSTALLER +1 -0
- data/vendor/pygments-main/{LICENSE → Pygments-2.8.1.dist-info/LICENSE} +1 -1
- data/vendor/pygments-main/Pygments-2.8.1.dist-info/METADATA +48 -0
- data/vendor/pygments-main/Pygments-2.8.1.dist-info/RECORD +494 -0
- data/vendor/pygments-main/Pygments-2.8.1.dist-info/REQUESTED +0 -0
- data/vendor/pygments-main/Pygments-2.8.1.dist-info/WHEEL +5 -0
- data/vendor/pygments-main/Pygments-2.8.1.dist-info/entry_points.txt +3 -0
- data/vendor/pygments-main/Pygments-2.8.1.dist-info/top_level.txt +1 -0
- data/vendor/pygments-main/bin/pygmentize +8 -0
- data/vendor/pygments-main/pygments/__init__.py +6 -12
- data/vendor/pygments-main/pygments/__main__.py +17 -0
- data/vendor/pygments-main/pygments/cmdline.py +213 -184
- data/vendor/pygments-main/pygments/console.py +6 -10
- data/vendor/pygments-main/pygments/filter.py +4 -7
- data/vendor/pygments-main/pygments/filters/__init__.py +609 -22
- data/vendor/pygments-main/pygments/formatter.py +4 -5
- data/vendor/pygments-main/pygments/formatters/__init__.py +10 -10
- data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -4
- data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
- data/vendor/pygments-main/pygments/formatters/html.py +242 -139
- data/vendor/pygments-main/pygments/formatters/img.py +91 -50
- data/vendor/pygments-main/pygments/formatters/irc.py +39 -40
- data/vendor/pygments-main/pygments/formatters/latex.py +62 -33
- data/vendor/pygments-main/pygments/formatters/other.py +18 -17
- data/vendor/pygments-main/pygments/formatters/rtf.py +29 -30
- data/vendor/pygments-main/pygments/formatters/svg.py +40 -5
- data/vendor/pygments-main/pygments/formatters/terminal.py +25 -32
- data/vendor/pygments-main/pygments/formatters/terminal256.py +45 -14
- data/vendor/pygments-main/pygments/lexer.py +47 -44
- data/vendor/pygments-main/pygments/lexers/__init__.py +341 -0
- data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1644 -0
- data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +231 -0
- data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +75 -0
- data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1724 -0
- data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +5326 -0
- data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +292 -0
- data/vendor/pygments-main/pygments/lexers/_mapping.py +554 -0
- data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1171 -0
- data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1281 -0
- data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +2600 -0
- data/vendor/pygments-main/pygments/lexers/_php_builtins.py +4752 -0
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +677 -0
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3093 -0
- data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1160 -0
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +557 -0
- data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +457 -0
- data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1003 -0
- data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +112 -0
- data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +279 -0
- data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1938 -0
- data/vendor/pygments-main/pygments/lexers/actionscript.py +244 -0
- data/vendor/pygments-main/pygments/lexers/agile.py +23 -0
- data/vendor/pygments-main/pygments/lexers/algebra.py +239 -0
- data/vendor/pygments-main/pygments/lexers/ambient.py +75 -0
- data/vendor/pygments-main/pygments/lexers/amdgpu.py +48 -0
- data/vendor/pygments-main/pygments/lexers/ampl.py +86 -0
- data/vendor/pygments-main/pygments/lexers/apl.py +100 -0
- data/vendor/pygments-main/pygments/lexers/archetype.py +317 -0
- data/vendor/pygments-main/pygments/lexers/arrow.py +116 -0
- data/vendor/pygments-main/pygments/lexers/asm.py +1004 -0
- data/vendor/pygments-main/pygments/lexers/automation.py +379 -0
- data/vendor/pygments-main/pygments/lexers/bare.py +103 -0
- data/vendor/pygments-main/pygments/lexers/basic.py +661 -0
- data/vendor/pygments-main/pygments/lexers/bibtex.py +159 -0
- data/vendor/pygments-main/pygments/lexers/boa.py +101 -0
- data/vendor/pygments-main/pygments/lexers/business.py +626 -0
- data/vendor/pygments-main/pygments/lexers/c_cpp.py +342 -0
- data/vendor/pygments-main/pygments/lexers/c_like.py +565 -0
- data/vendor/pygments-main/pygments/lexers/capnproto.py +77 -0
- data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
- data/vendor/pygments-main/pygments/lexers/chapel.py +111 -0
- data/vendor/pygments-main/pygments/lexers/clean.py +178 -0
- data/vendor/pygments-main/pygments/lexers/compiled.py +33 -0
- data/vendor/pygments-main/pygments/lexers/configs.py +985 -0
- data/vendor/pygments-main/pygments/lexers/console.py +113 -0
- data/vendor/pygments-main/pygments/lexers/crystal.py +366 -0
- data/vendor/pygments-main/pygments/lexers/csound.py +466 -0
- data/vendor/pygments-main/pygments/lexers/css.py +694 -0
- data/vendor/pygments-main/pygments/lexers/d.py +255 -0
- data/vendor/pygments-main/pygments/lexers/dalvik.py +124 -0
- data/vendor/pygments-main/pygments/lexers/data.py +697 -0
- data/vendor/pygments-main/pygments/lexers/devicetree.py +108 -0
- data/vendor/pygments-main/pygments/lexers/diff.py +164 -0
- data/vendor/pygments-main/pygments/lexers/dotnet.py +706 -0
- data/vendor/pygments-main/pygments/lexers/dsls.py +959 -0
- data/vendor/pygments-main/pygments/lexers/dylan.py +286 -0
- data/vendor/pygments-main/pygments/lexers/ecl.py +137 -0
- data/vendor/pygments-main/pygments/lexers/eiffel.py +64 -0
- data/vendor/pygments-main/pygments/lexers/elm.py +120 -0
- data/vendor/pygments-main/pygments/lexers/email.py +150 -0
- data/vendor/pygments-main/pygments/lexers/erlang.py +529 -0
- data/vendor/pygments-main/pygments/lexers/esoteric.py +303 -0
- data/vendor/pygments-main/pygments/lexers/ezhil.py +76 -0
- data/vendor/pygments-main/pygments/lexers/factor.py +343 -0
- data/vendor/pygments-main/pygments/lexers/fantom.py +249 -0
- data/vendor/pygments-main/pygments/lexers/felix.py +272 -0
- data/vendor/pygments-main/pygments/lexers/floscript.py +82 -0
- data/vendor/pygments-main/pygments/lexers/forth.py +177 -0
- data/vendor/pygments-main/pygments/lexers/fortran.py +208 -0
- data/vendor/pygments-main/pygments/lexers/foxpro.py +427 -0
- data/vendor/pygments-main/pygments/lexers/freefem.py +897 -0
- data/vendor/pygments-main/pygments/lexers/functional.py +20 -0
- data/vendor/pygments-main/pygments/lexers/futhark.py +110 -0
- data/vendor/pygments-main/pygments/lexers/gdscript.py +345 -0
- data/vendor/pygments-main/pygments/lexers/go.py +100 -0
- data/vendor/pygments-main/pygments/lexers/grammar_notation.py +269 -0
- data/vendor/pygments-main/pygments/lexers/graph.py +84 -0
- data/vendor/pygments-main/pygments/lexers/graphics.py +799 -0
- data/vendor/pygments-main/pygments/lexers/graphviz.py +57 -0
- data/vendor/pygments-main/pygments/lexers/haskell.py +869 -0
- data/vendor/pygments-main/pygments/lexers/haxe.py +935 -0
- data/vendor/pygments-main/pygments/lexers/hdl.py +468 -0
- data/vendor/pygments-main/pygments/lexers/hexdump.py +102 -0
- data/vendor/pygments-main/pygments/lexers/html.py +613 -0
- data/vendor/pygments-main/pygments/lexers/idl.py +280 -0
- data/vendor/pygments-main/pygments/lexers/igor.py +419 -0
- data/vendor/pygments-main/pygments/lexers/inferno.py +95 -0
- data/vendor/pygments-main/pygments/lexers/installers.py +321 -0
- data/vendor/pygments-main/pygments/lexers/int_fiction.py +1367 -0
- data/vendor/pygments-main/pygments/lexers/iolang.py +62 -0
- data/vendor/pygments-main/pygments/lexers/j.py +145 -0
- data/vendor/pygments-main/pygments/lexers/javascript.py +1536 -0
- data/vendor/pygments-main/pygments/lexers/julia.py +330 -0
- data/vendor/pygments-main/pygments/lexers/jvm.py +1739 -0
- data/vendor/pygments-main/pygments/lexers/lisp.py +2698 -0
- data/vendor/pygments-main/pygments/lexers/make.py +205 -0
- data/vendor/pygments-main/pygments/lexers/markup.py +762 -0
- data/vendor/pygments-main/pygments/lexers/math.py +20 -0
- data/vendor/pygments-main/pygments/lexers/matlab.py +3280 -0
- data/vendor/pygments-main/pygments/lexers/mime.py +225 -0
- data/vendor/pygments-main/pygments/lexers/ml.py +957 -0
- data/vendor/pygments-main/pygments/lexers/modeling.py +365 -0
- data/vendor/pygments-main/pygments/lexers/modula2.py +1579 -0
- data/vendor/pygments-main/pygments/lexers/monte.py +203 -0
- data/vendor/pygments-main/pygments/lexers/mosel.py +447 -0
- data/vendor/pygments-main/pygments/lexers/ncl.py +893 -0
- data/vendor/pygments-main/pygments/lexers/nimrod.py +158 -0
- data/vendor/pygments-main/pygments/lexers/nit.py +63 -0
- data/vendor/pygments-main/pygments/lexers/nix.py +135 -0
- data/vendor/pygments-main/pygments/lexers/oberon.py +120 -0
- data/vendor/pygments-main/pygments/lexers/objective.py +503 -0
- data/vendor/pygments-main/pygments/lexers/ooc.py +84 -0
- data/vendor/pygments-main/pygments/lexers/other.py +40 -0
- data/vendor/pygments-main/pygments/lexers/parasail.py +78 -0
- data/vendor/pygments-main/pygments/lexers/parsers.py +799 -0
- data/vendor/pygments-main/pygments/lexers/pascal.py +643 -0
- data/vendor/pygments-main/pygments/lexers/pawn.py +202 -0
- data/vendor/pygments-main/pygments/lexers/perl.py +731 -0
- data/vendor/pygments-main/pygments/lexers/php.py +320 -0
- data/vendor/pygments-main/pygments/lexers/pointless.py +70 -0
- data/vendor/pygments-main/pygments/lexers/pony.py +93 -0
- data/vendor/pygments-main/pygments/lexers/praat.py +301 -0
- data/vendor/pygments-main/pygments/lexers/prolog.py +305 -0
- data/vendor/pygments-main/pygments/lexers/promql.py +182 -0
- data/vendor/pygments-main/pygments/lexers/python.py +1158 -0
- data/vendor/pygments-main/pygments/lexers/qvt.py +151 -0
- data/vendor/pygments-main/pygments/lexers/r.py +190 -0
- data/vendor/pygments-main/pygments/lexers/rdf.py +462 -0
- data/vendor/pygments-main/pygments/lexers/rebol.py +430 -0
- data/vendor/pygments-main/pygments/lexers/resource.py +84 -0
- data/vendor/pygments-main/pygments/lexers/ride.py +138 -0
- data/vendor/pygments-main/pygments/lexers/rnc.py +66 -0
- data/vendor/pygments-main/pygments/lexers/roboconf.py +81 -0
- data/vendor/pygments-main/pygments/lexers/robotframework.py +551 -0
- data/vendor/pygments-main/pygments/lexers/ruby.py +523 -0
- data/vendor/pygments-main/pygments/lexers/rust.py +223 -0
- data/vendor/pygments-main/pygments/lexers/sas.py +227 -0
- data/vendor/pygments-main/pygments/lexers/scdoc.py +82 -0
- data/vendor/pygments-main/pygments/lexers/scripting.py +1283 -0
- data/vendor/pygments-main/pygments/lexers/sgf.py +60 -0
- data/vendor/pygments-main/pygments/lexers/shell.py +909 -0
- data/vendor/pygments-main/pygments/lexers/sieve.py +68 -0
- data/vendor/pygments-main/pygments/lexers/slash.py +184 -0
- data/vendor/pygments-main/pygments/lexers/smalltalk.py +194 -0
- data/vendor/pygments-main/pygments/lexers/smv.py +78 -0
- data/vendor/pygments-main/pygments/lexers/snobol.py +82 -0
- data/vendor/pygments-main/pygments/lexers/solidity.py +91 -0
- data/vendor/pygments-main/pygments/lexers/special.py +106 -0
- data/vendor/pygments-main/pygments/lexers/sql.py +832 -0
- data/vendor/pygments-main/pygments/lexers/stata.py +170 -0
- data/vendor/pygments-main/pygments/lexers/supercollider.py +94 -0
- data/vendor/pygments-main/pygments/lexers/tcl.py +144 -0
- data/vendor/pygments-main/pygments/lexers/templates.py +2263 -0
- data/vendor/pygments-main/pygments/lexers/teraterm.py +334 -0
- data/vendor/pygments-main/pygments/lexers/testing.py +206 -0
- data/vendor/pygments-main/pygments/lexers/text.py +25 -0
- data/vendor/pygments-main/pygments/lexers/textedit.py +168 -0
- data/vendor/pygments-main/pygments/lexers/textfmts.py +429 -0
- data/vendor/pygments-main/pygments/lexers/theorem.py +476 -0
- data/vendor/pygments-main/pygments/lexers/tnt.py +262 -0
- data/vendor/pygments-main/pygments/lexers/trafficscript.py +53 -0
- data/vendor/pygments-main/pygments/lexers/typoscript.py +218 -0
- data/vendor/pygments-main/pygments/lexers/unicon.py +411 -0
- data/vendor/pygments-main/pygments/lexers/urbi.py +145 -0
- data/vendor/pygments-main/pygments/lexers/usd.py +89 -0
- data/vendor/pygments-main/pygments/lexers/varnish.py +189 -0
- data/vendor/pygments-main/pygments/lexers/verification.py +113 -0
- data/vendor/pygments-main/pygments/lexers/web.py +23 -0
- data/vendor/pygments-main/pygments/lexers/webidl.py +298 -0
- data/vendor/pygments-main/pygments/lexers/webmisc.py +991 -0
- data/vendor/pygments-main/pygments/lexers/whiley.py +115 -0
- data/vendor/pygments-main/pygments/lexers/x10.py +68 -0
- data/vendor/pygments-main/pygments/lexers/xorg.py +36 -0
- data/vendor/pygments-main/pygments/lexers/yang.py +103 -0
- data/vendor/pygments-main/pygments/lexers/zig.py +123 -0
- data/vendor/pygments-main/pygments/modeline.py +1 -2
- data/vendor/pygments-main/pygments/plugin.py +4 -3
- data/vendor/pygments-main/pygments/regexopt.py +1 -2
- data/vendor/pygments-main/pygments/scanner.py +2 -3
- data/vendor/pygments-main/pygments/sphinxext.py +2 -5
- data/vendor/pygments-main/pygments/style.py +61 -25
- data/vendor/pygments-main/pygments/styles/__init__.py +12 -5
- 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 +2 -3
- 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 +1 -2
- data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
- data/vendor/pygments-main/pygments/styles/igor.py +1 -2
- data/vendor/pygments-main/pygments/styles/inkpot.py +66 -0
- 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 +4 -4
- data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
- data/vendor/pygments-main/pygments/styles/native.py +1 -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 +136 -0
- data/vendor/pygments-main/pygments/styles/stata_dark.py +40 -0
- data/vendor/pygments-main/pygments/styles/{stata.py → stata_light.py} +14 -16
- 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 +47 -109
- data/vendor/pygments-main/pygments/util.py +16 -96
- metadata +81 -139
- data/CHANGELOG.md +0 -111
- data/README.md +0 -121
- data/cache-lexers.rb +0 -8
- 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 -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
|
@@ -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
|
|
|
@@ -14,7 +13,7 @@ import sys
|
|
|
14
13
|
|
|
15
14
|
from pygments.formatter import Formatter
|
|
16
15
|
from pygments.util import get_bool_opt, get_int_opt, get_list_opt, \
|
|
17
|
-
get_choice_opt
|
|
16
|
+
get_choice_opt
|
|
18
17
|
|
|
19
18
|
import subprocess
|
|
20
19
|
|
|
@@ -46,9 +45,9 @@ STYLES = {
|
|
|
46
45
|
}
|
|
47
46
|
|
|
48
47
|
# A sane default for modern systems
|
|
49
|
-
DEFAULT_FONT_NAME_NIX = '
|
|
48
|
+
DEFAULT_FONT_NAME_NIX = 'DejaVu Sans Mono'
|
|
50
49
|
DEFAULT_FONT_NAME_WIN = 'Courier New'
|
|
51
|
-
DEFAULT_FONT_NAME_MAC = '
|
|
50
|
+
DEFAULT_FONT_NAME_MAC = 'Menlo'
|
|
52
51
|
|
|
53
52
|
|
|
54
53
|
class PilNotAvailable(ImportError):
|
|
@@ -59,7 +58,7 @@ class FontNotFound(Exception):
|
|
|
59
58
|
"""When there are no usable fonts specified"""
|
|
60
59
|
|
|
61
60
|
|
|
62
|
-
class FontManager
|
|
61
|
+
class FontManager:
|
|
63
62
|
"""
|
|
64
63
|
Manages a set of fonts: normal, italic, bold, etc...
|
|
65
64
|
"""
|
|
@@ -125,8 +124,9 @@ class FontManager(object):
|
|
|
125
124
|
for font_dir in (os.path.join(os.getenv("HOME"), 'Library/Fonts/'),
|
|
126
125
|
'/Library/Fonts/', '/System/Library/Fonts/'):
|
|
127
126
|
font_map.update(
|
|
128
|
-
(
|
|
129
|
-
|
|
127
|
+
(os.path.splitext(f)[0].lower(), os.path.join(font_dir, f))
|
|
128
|
+
for f in os.listdir(font_dir)
|
|
129
|
+
if f.lower().endswith(('ttf', 'ttc')))
|
|
130
130
|
|
|
131
131
|
for name in STYLES['NORMAL']:
|
|
132
132
|
path = self._get_mac_font_path(font_map, self.font_name, name)
|
|
@@ -155,7 +155,7 @@ class FontManager(object):
|
|
|
155
155
|
valname = '%s%s%s' % (basename, style and ' '+style, suffix)
|
|
156
156
|
val, _ = _winreg.QueryValueEx(key, valname)
|
|
157
157
|
return val
|
|
158
|
-
except
|
|
158
|
+
except OSError:
|
|
159
159
|
continue
|
|
160
160
|
else:
|
|
161
161
|
if fail:
|
|
@@ -164,31 +164,43 @@ class FontManager(object):
|
|
|
164
164
|
return None
|
|
165
165
|
|
|
166
166
|
def _create_win(self):
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
167
|
+
lookuperror = None
|
|
168
|
+
keynames = [ (_winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows NT\CurrentVersion\Fonts'),
|
|
169
|
+
(_winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Fonts'),
|
|
170
|
+
(_winreg.HKEY_LOCAL_MACHINE, r'Software\Microsoft\Windows NT\CurrentVersion\Fonts'),
|
|
171
|
+
(_winreg.HKEY_LOCAL_MACHINE, r'Software\Microsoft\Windows\CurrentVersion\Fonts') ]
|
|
172
|
+
for keyname in keynames:
|
|
172
173
|
try:
|
|
173
|
-
key = _winreg.OpenKey(
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
174
|
+
key = _winreg.OpenKey(*keyname)
|
|
175
|
+
try:
|
|
176
|
+
path = self._lookup_win(key, self.font_name, STYLES['NORMAL'], True)
|
|
177
|
+
self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size)
|
|
178
|
+
for style in ('ITALIC', 'BOLD', 'BOLDITALIC'):
|
|
179
|
+
path = self._lookup_win(key, self.font_name, STYLES[style])
|
|
180
|
+
if path:
|
|
181
|
+
self.fonts[style] = ImageFont.truetype(path, self.font_size)
|
|
182
|
+
else:
|
|
183
|
+
if style == 'BOLDITALIC':
|
|
184
|
+
self.fonts[style] = self.fonts['BOLD']
|
|
185
|
+
else:
|
|
186
|
+
self.fonts[style] = self.fonts['NORMAL']
|
|
187
|
+
return
|
|
188
|
+
except FontNotFound as err:
|
|
189
|
+
lookuperror = err
|
|
190
|
+
finally:
|
|
191
|
+
_winreg.CloseKey(key)
|
|
192
|
+
except OSError:
|
|
193
|
+
pass
|
|
194
|
+
else:
|
|
195
|
+
# If we get here, we checked all registry keys and had no luck
|
|
196
|
+
# We can be in one of two situations now:
|
|
197
|
+
# * All key lookups failed. In this case lookuperror is None and we
|
|
198
|
+
# will raise a generic error
|
|
199
|
+
# * At least one lookup failed with a FontNotFound error. In this
|
|
200
|
+
# case, we will raise that as a more specific error
|
|
201
|
+
if lookuperror:
|
|
202
|
+
raise lookuperror
|
|
203
|
+
raise FontNotFound('Can\'t open Windows font registry key')
|
|
192
204
|
|
|
193
205
|
def get_char_size(self):
|
|
194
206
|
"""
|
|
@@ -196,6 +208,12 @@ class FontManager(object):
|
|
|
196
208
|
"""
|
|
197
209
|
return self.fonts['NORMAL'].getsize('M')
|
|
198
210
|
|
|
211
|
+
def get_text_size(self, text):
|
|
212
|
+
"""
|
|
213
|
+
Get the text size(width, height).
|
|
214
|
+
"""
|
|
215
|
+
return self.fonts['NORMAL'].getsize(text)
|
|
216
|
+
|
|
199
217
|
def get_font(self, bold, oblique):
|
|
200
218
|
"""
|
|
201
219
|
Get the font based on bold and italic flags.
|
|
@@ -237,7 +255,8 @@ class ImageFormatter(Formatter):
|
|
|
237
255
|
bold and italic fonts will be generated. This really should be a
|
|
238
256
|
monospace font to look sane.
|
|
239
257
|
|
|
240
|
-
Default: "
|
|
258
|
+
Default: "Courier New" on Windows, "Menlo" on Mac OS, and
|
|
259
|
+
"DejaVu Sans Mono" on \\*nix
|
|
241
260
|
|
|
242
261
|
`font_size`
|
|
243
262
|
The font size in points to be used.
|
|
@@ -405,17 +424,17 @@ class ImageFormatter(Formatter):
|
|
|
405
424
|
"""
|
|
406
425
|
return self.fontw
|
|
407
426
|
|
|
408
|
-
def _get_char_x(self,
|
|
427
|
+
def _get_char_x(self, linelength):
|
|
409
428
|
"""
|
|
410
429
|
Get the X coordinate of a character position.
|
|
411
430
|
"""
|
|
412
|
-
return
|
|
431
|
+
return linelength + self.image_pad + self.line_number_width
|
|
413
432
|
|
|
414
|
-
def _get_text_pos(self,
|
|
433
|
+
def _get_text_pos(self, linelength, lineno):
|
|
415
434
|
"""
|
|
416
435
|
Get the actual position for a character and line position.
|
|
417
436
|
"""
|
|
418
|
-
return self._get_char_x(
|
|
437
|
+
return self._get_char_x(linelength), self._get_line_y(lineno)
|
|
419
438
|
|
|
420
439
|
def _get_linenumber_pos(self, lineno):
|
|
421
440
|
"""
|
|
@@ -433,17 +452,27 @@ class ImageFormatter(Formatter):
|
|
|
433
452
|
fill = '#000'
|
|
434
453
|
return fill
|
|
435
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
|
+
|
|
436
465
|
def _get_style_font(self, style):
|
|
437
466
|
"""
|
|
438
467
|
Get the correct font for the style.
|
|
439
468
|
"""
|
|
440
469
|
return self.fonts.get_font(style['bold'], style['italic'])
|
|
441
470
|
|
|
442
|
-
def _get_image_size(self,
|
|
471
|
+
def _get_image_size(self, maxlinelength, maxlineno):
|
|
443
472
|
"""
|
|
444
473
|
Get the required image size.
|
|
445
474
|
"""
|
|
446
|
-
return (self._get_char_x(
|
|
475
|
+
return (self._get_char_x(maxlinelength) + self.image_pad,
|
|
447
476
|
self._get_line_y(maxlineno + 0) + self.image_pad)
|
|
448
477
|
|
|
449
478
|
def _draw_linenumber(self, posno, lineno):
|
|
@@ -455,20 +484,22 @@ class ImageFormatter(Formatter):
|
|
|
455
484
|
str(lineno).rjust(self.line_number_chars),
|
|
456
485
|
font=self.fonts.get_font(self.line_number_bold,
|
|
457
486
|
self.line_number_italic),
|
|
458
|
-
|
|
487
|
+
text_fg=self.line_number_fg,
|
|
488
|
+
text_bg=None,
|
|
459
489
|
)
|
|
460
490
|
|
|
461
|
-
def _draw_text(self, pos, text, font,
|
|
491
|
+
def _draw_text(self, pos, text, font, text_fg, text_bg):
|
|
462
492
|
"""
|
|
463
493
|
Remember a single drawable tuple to paint later.
|
|
464
494
|
"""
|
|
465
|
-
self.drawables.append((pos, text, font,
|
|
495
|
+
self.drawables.append((pos, text, font, text_fg, text_bg))
|
|
466
496
|
|
|
467
497
|
def _create_drawables(self, tokensource):
|
|
468
498
|
"""
|
|
469
499
|
Create drawables for the token content.
|
|
470
500
|
"""
|
|
471
501
|
lineno = charno = maxcharno = 0
|
|
502
|
+
maxlinelength = linelength = 0
|
|
472
503
|
for ttype, value in tokensource:
|
|
473
504
|
while ttype not in self.styles:
|
|
474
505
|
ttype = ttype.parent
|
|
@@ -483,17 +514,23 @@ class ImageFormatter(Formatter):
|
|
|
483
514
|
temp = line.rstrip('\n')
|
|
484
515
|
if temp:
|
|
485
516
|
self._draw_text(
|
|
486
|
-
self._get_text_pos(
|
|
517
|
+
self._get_text_pos(linelength, lineno),
|
|
487
518
|
temp,
|
|
488
519
|
font = self._get_style_font(style),
|
|
489
|
-
|
|
520
|
+
text_fg = self._get_text_color(style),
|
|
521
|
+
text_bg = self._get_text_bg_color(style),
|
|
490
522
|
)
|
|
523
|
+
temp_width, temp_hight = self.fonts.get_text_size(temp)
|
|
524
|
+
linelength += temp_width
|
|
525
|
+
maxlinelength = max(maxlinelength, linelength)
|
|
491
526
|
charno += len(temp)
|
|
492
527
|
maxcharno = max(maxcharno, charno)
|
|
493
528
|
if line.endswith('\n'):
|
|
494
529
|
# add a line for each extra line in the value
|
|
530
|
+
linelength = 0
|
|
495
531
|
charno = 0
|
|
496
532
|
lineno += 1
|
|
533
|
+
self.maxlinelength = maxlinelength
|
|
497
534
|
self.maxcharno = maxcharno
|
|
498
535
|
self.maxlineno = lineno
|
|
499
536
|
|
|
@@ -503,7 +540,7 @@ class ImageFormatter(Formatter):
|
|
|
503
540
|
"""
|
|
504
541
|
if not self.line_numbers:
|
|
505
542
|
return
|
|
506
|
-
for p in
|
|
543
|
+
for p in range(self.maxlineno):
|
|
507
544
|
n = p + self.line_number_start
|
|
508
545
|
if (n % self.line_number_step) == 0:
|
|
509
546
|
self._draw_linenumber(p, n)
|
|
@@ -521,7 +558,8 @@ class ImageFormatter(Formatter):
|
|
|
521
558
|
rectw = self.image_pad + self.line_number_width - self.line_number_pad
|
|
522
559
|
draw.rectangle([(0, 0), (rectw, recth)],
|
|
523
560
|
fill=self.line_number_bg)
|
|
524
|
-
|
|
561
|
+
if self.line_number_separator:
|
|
562
|
+
draw.line([(rectw, 0), (rectw, recth)], fill=self.line_number_fg)
|
|
525
563
|
del draw
|
|
526
564
|
|
|
527
565
|
def format(self, tokensource, outfile):
|
|
@@ -536,7 +574,7 @@ class ImageFormatter(Formatter):
|
|
|
536
574
|
self._draw_line_numbers()
|
|
537
575
|
im = Image.new(
|
|
538
576
|
'RGB',
|
|
539
|
-
self._get_image_size(self.
|
|
577
|
+
self._get_image_size(self.maxlinelength, self.maxlineno),
|
|
540
578
|
self.background_color
|
|
541
579
|
)
|
|
542
580
|
self._paint_line_number_bg(im)
|
|
@@ -550,8 +588,11 @@ class ImageFormatter(Formatter):
|
|
|
550
588
|
y = self._get_line_y(linenumber - 1)
|
|
551
589
|
draw.rectangle([(x, y), (x + rectw, y + recth)],
|
|
552
590
|
fill=self.hl_color)
|
|
553
|
-
for pos, value, font,
|
|
554
|
-
|
|
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)
|
|
555
596
|
im.save(outfile, self.image_format.upper())
|
|
556
597
|
|
|
557
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
|
|
|
@@ -25,55 +24,55 @@ __all__ = ['IRCFormatter']
|
|
|
25
24
|
IRC_COLORS = {
|
|
26
25
|
Token: ('', ''),
|
|
27
26
|
|
|
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: ('
|
|
27
|
+
Whitespace: ('gray', 'brightblack'),
|
|
28
|
+
Comment: ('gray', 'brightblack'),
|
|
29
|
+
Comment.Preproc: ('cyan', 'brightcyan'),
|
|
30
|
+
Keyword: ('blue', 'brightblue'),
|
|
31
|
+
Keyword.Type: ('cyan', 'brightcyan'),
|
|
32
|
+
Operator.Word: ('magenta', 'brightcyan'),
|
|
33
|
+
Name.Builtin: ('cyan', 'brightcyan'),
|
|
34
|
+
Name.Function: ('green', 'brightgreen'),
|
|
35
|
+
Name.Namespace: ('_cyan_', '_brightcyan_'),
|
|
36
|
+
Name.Class: ('_green_', '_brightgreen_'),
|
|
37
|
+
Name.Exception: ('cyan', 'brightcyan'),
|
|
38
|
+
Name.Decorator: ('brightblack', 'gray'),
|
|
39
|
+
Name.Variable: ('red', 'brightred'),
|
|
40
|
+
Name.Constant: ('red', 'brightred'),
|
|
41
|
+
Name.Attribute: ('cyan', 'brightcyan'),
|
|
42
|
+
Name.Tag: ('brightblue', 'brightblue'),
|
|
43
|
+
String: ('yellow', 'yellow'),
|
|
44
|
+
Number: ('blue', 'brightblue'),
|
|
45
|
+
|
|
46
|
+
Generic.Deleted: ('brightred', 'brightred'),
|
|
47
|
+
Generic.Inserted: ('green', 'brightgreen'),
|
|
49
48
|
Generic.Heading: ('**', '**'),
|
|
50
|
-
Generic.Subheading: ('*
|
|
51
|
-
Generic.Error: ('
|
|
49
|
+
Generic.Subheading: ('*magenta*', '*brightmagenta*'),
|
|
50
|
+
Generic.Error: ('brightred', 'brightred'),
|
|
52
51
|
|
|
53
|
-
Error: ('
|
|
52
|
+
Error: ('_brightred_', '_brightred_'),
|
|
54
53
|
}
|
|
55
54
|
|
|
56
55
|
|
|
57
56
|
IRC_COLOR_MAP = {
|
|
58
57
|
'white': 0,
|
|
59
58
|
'black': 1,
|
|
60
|
-
'
|
|
61
|
-
'
|
|
62
|
-
'
|
|
63
|
-
'
|
|
64
|
-
'
|
|
59
|
+
'blue': 2,
|
|
60
|
+
'brightgreen': 3,
|
|
61
|
+
'brightred': 4,
|
|
62
|
+
'yellow': 5,
|
|
63
|
+
'magenta': 6,
|
|
65
64
|
'orange': 7,
|
|
66
|
-
'
|
|
67
|
-
'
|
|
65
|
+
'green': 7, #compat w/ ansi
|
|
66
|
+
'brightyellow': 8,
|
|
68
67
|
'lightgreen': 9,
|
|
69
|
-
'
|
|
70
|
-
'
|
|
68
|
+
'brightcyan': 9, # compat w/ ansi
|
|
69
|
+
'cyan': 10,
|
|
71
70
|
'lightblue': 11,
|
|
72
|
-
'
|
|
73
|
-
'
|
|
74
|
-
'
|
|
75
|
-
'
|
|
76
|
-
'
|
|
71
|
+
'red': 11, # compat w/ ansi
|
|
72
|
+
'brightblue': 12,
|
|
73
|
+
'brightmagenta': 13,
|
|
74
|
+
'brightblack': 14,
|
|
75
|
+
'gray': 15,
|
|
77
76
|
}
|
|
78
77
|
|
|
79
78
|
def ircformat(color, text):
|
|
@@ -1,21 +1,19 @@
|
|
|
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
|
|
|
12
|
-
from
|
|
11
|
+
from io import StringIO
|
|
13
12
|
|
|
14
13
|
from pygments.formatter import Formatter
|
|
15
|
-
from pygments.lexer import Lexer
|
|
14
|
+
from pygments.lexer import Lexer, do_insertions
|
|
16
15
|
from pygments.token import Token, STANDARD_TYPES
|
|
17
|
-
from pygments.util import get_bool_opt, get_int_opt
|
|
18
|
-
iteritems
|
|
16
|
+
from pygments.util import get_bool_opt, get_int_opt
|
|
19
17
|
|
|
20
18
|
|
|
21
19
|
__all__ = ['LatexFormatter']
|
|
@@ -266,7 +264,7 @@ class LatexFormatter(Formatter):
|
|
|
266
264
|
self.right = self.escapeinside[1]
|
|
267
265
|
else:
|
|
268
266
|
self.escapeinside = ''
|
|
269
|
-
self.envname = options.get('envname',
|
|
267
|
+
self.envname = options.get('envname', 'Verbatim')
|
|
270
268
|
|
|
271
269
|
self._create_stylesheet()
|
|
272
270
|
|
|
@@ -301,13 +299,13 @@ class LatexFormatter(Formatter):
|
|
|
301
299
|
cmndef += (r'\def\$$@tc##1{\textcolor[rgb]{%s}{##1}}' %
|
|
302
300
|
rgbcolor(ndef['color']))
|
|
303
301
|
if ndef['border']:
|
|
304
|
-
cmndef += (r'\def\$$@bc##1{\setlength{\fboxsep}{
|
|
305
|
-
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}}}' %
|
|
306
304
|
(rgbcolor(ndef['border']),
|
|
307
305
|
rgbcolor(ndef['bgcolor'])))
|
|
308
306
|
elif ndef['bgcolor']:
|
|
309
|
-
cmndef += (r'\def\$$@bc##1{\setlength{\fboxsep}{0pt}'
|
|
310
|
-
r'\colorbox[rgb]{%s}{\strut ##1}}' %
|
|
307
|
+
cmndef += (r'\def\$$@bc##1{{\setlength{\fboxsep}{0pt}'
|
|
308
|
+
r'\colorbox[rgb]{%s}{\strut ##1}}}' %
|
|
311
309
|
rgbcolor(ndef['bgcolor']))
|
|
312
310
|
if cmndef == '':
|
|
313
311
|
continue
|
|
@@ -322,9 +320,8 @@ class LatexFormatter(Formatter):
|
|
|
322
320
|
"""
|
|
323
321
|
cp = self.commandprefix
|
|
324
322
|
styles = []
|
|
325
|
-
for name, definition in
|
|
326
|
-
styles.append(r'
|
|
327
|
-
(cp, name, definition))
|
|
323
|
+
for name, definition in self.cmd2def.items():
|
|
324
|
+
styles.append(r'\@namedef{%s@tok@%s}{%s}' % (cp, name, definition))
|
|
328
325
|
return STYLE_TEMPLATE % {'cp': self.commandprefix,
|
|
329
326
|
'styles': '\n'.join(styles)}
|
|
330
327
|
|
|
@@ -337,24 +334,25 @@ class LatexFormatter(Formatter):
|
|
|
337
334
|
realoutfile = outfile
|
|
338
335
|
outfile = StringIO()
|
|
339
336
|
|
|
340
|
-
outfile.write(
|
|
337
|
+
outfile.write('\\begin{' + self.envname + '}[commandchars=\\\\\\{\\}')
|
|
341
338
|
if self.linenos:
|
|
342
339
|
start, step = self.linenostart, self.linenostep
|
|
343
|
-
outfile.write(
|
|
344
|
-
(start and
|
|
345
|
-
(step and
|
|
340
|
+
outfile.write(',numbers=left' +
|
|
341
|
+
(start and ',firstnumber=%d' % start or '') +
|
|
342
|
+
(step and ',stepnumber=%d' % step or ''))
|
|
346
343
|
if self.mathescape or self.texcomments or self.escapeinside:
|
|
347
|
-
outfile.write(
|
|
344
|
+
outfile.write(',codes={\\catcode`\\$=3\\catcode`\\^=7'
|
|
345
|
+
'\\catcode`\\_=8\\relax}')
|
|
348
346
|
if self.verboptions:
|
|
349
|
-
outfile.write(
|
|
350
|
-
outfile.write(
|
|
347
|
+
outfile.write(',' + self.verboptions)
|
|
348
|
+
outfile.write(']\n')
|
|
351
349
|
|
|
352
350
|
for ttype, value in tokensource:
|
|
353
351
|
if ttype in Token.Comment:
|
|
354
352
|
if self.texcomments:
|
|
355
353
|
# Try to guess comment starting lexeme and escape it ...
|
|
356
354
|
start = value[0:1]
|
|
357
|
-
for i in
|
|
355
|
+
for i in range(1, len(value)):
|
|
358
356
|
if start[0] != value[i]:
|
|
359
357
|
break
|
|
360
358
|
start += value[i]
|
|
@@ -410,7 +408,7 @@ class LatexFormatter(Formatter):
|
|
|
410
408
|
else:
|
|
411
409
|
outfile.write(value)
|
|
412
410
|
|
|
413
|
-
outfile.write(
|
|
411
|
+
outfile.write('\\end{' + self.envname + '}\n')
|
|
414
412
|
|
|
415
413
|
if self.full:
|
|
416
414
|
encoding = self.encoding or 'utf8'
|
|
@@ -447,13 +445,44 @@ class LatexEmbeddedLexer(Lexer):
|
|
|
447
445
|
Lexer.__init__(self, **options)
|
|
448
446
|
|
|
449
447
|
def get_tokens_unprocessed(self, text):
|
|
448
|
+
# find and remove all the escape tokens (replace with an empty string)
|
|
449
|
+
# this is very similar to DelegatingLexer.get_tokens_unprocessed.
|
|
450
|
+
buffered = ''
|
|
451
|
+
insertions = []
|
|
452
|
+
insertion_buf = []
|
|
453
|
+
for i, t, v in self._find_safe_escape_tokens(text):
|
|
454
|
+
if t is None:
|
|
455
|
+
if insertion_buf:
|
|
456
|
+
insertions.append((len(buffered), insertion_buf))
|
|
457
|
+
insertion_buf = []
|
|
458
|
+
buffered += v
|
|
459
|
+
else:
|
|
460
|
+
insertion_buf.append((i, t, v))
|
|
461
|
+
if insertion_buf:
|
|
462
|
+
insertions.append((len(buffered), insertion_buf))
|
|
463
|
+
return do_insertions(insertions,
|
|
464
|
+
self.lang.get_tokens_unprocessed(buffered))
|
|
465
|
+
|
|
466
|
+
def _find_safe_escape_tokens(self, text):
|
|
467
|
+
""" find escape tokens that are not in strings or comments """
|
|
468
|
+
for i, t, v in self._filter_to(
|
|
469
|
+
self.lang.get_tokens_unprocessed(text),
|
|
470
|
+
lambda t: t in Token.Comment or t in Token.String
|
|
471
|
+
):
|
|
472
|
+
if t is None:
|
|
473
|
+
for i2, t2, v2 in self._find_escape_tokens(v):
|
|
474
|
+
yield i + i2, t2, v2
|
|
475
|
+
else:
|
|
476
|
+
yield i, None, v
|
|
477
|
+
|
|
478
|
+
def _filter_to(self, it, pred):
|
|
479
|
+
""" Keep only the tokens that match `pred`, merge the others together """
|
|
450
480
|
buf = ''
|
|
451
481
|
idx = 0
|
|
452
|
-
for i, t, v in
|
|
453
|
-
if t
|
|
482
|
+
for i, t, v in it:
|
|
483
|
+
if pred(t):
|
|
454
484
|
if buf:
|
|
455
|
-
|
|
456
|
-
yield x
|
|
485
|
+
yield idx, None, buf
|
|
457
486
|
buf = ''
|
|
458
487
|
yield i, t, v
|
|
459
488
|
else:
|
|
@@ -461,16 +490,16 @@ class LatexEmbeddedLexer(Lexer):
|
|
|
461
490
|
idx = i
|
|
462
491
|
buf += v
|
|
463
492
|
if buf:
|
|
464
|
-
|
|
465
|
-
yield x
|
|
493
|
+
yield idx, None, buf
|
|
466
494
|
|
|
467
|
-
def
|
|
495
|
+
def _find_escape_tokens(self, text):
|
|
496
|
+
""" Find escape tokens within text, give token=None otherwise """
|
|
497
|
+
index = 0
|
|
468
498
|
while text:
|
|
469
499
|
a, sep1, text = text.partition(self.left)
|
|
470
500
|
if a:
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
index += len(a)
|
|
501
|
+
yield index, None, a
|
|
502
|
+
index += len(a)
|
|
474
503
|
if sep1:
|
|
475
504
|
b, sep2, text = text.partition(self.right)
|
|
476
505
|
if sep2:
|