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,16 +1,15 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
pygments.formatters.other
|
|
4
3
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
4
|
|
|
6
5
|
Other formatters: NullFormatter, RawTokenFormatter.
|
|
7
6
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
9
8
|
:license: BSD, see LICENSE for details.
|
|
10
9
|
"""
|
|
11
10
|
|
|
12
11
|
from pygments.formatter import Formatter
|
|
13
|
-
from pygments.util import
|
|
12
|
+
from pygments.util import get_choice_opt
|
|
14
13
|
from pygments.token import Token
|
|
15
14
|
from pygments.console import colorize
|
|
16
15
|
|
|
@@ -87,42 +86,44 @@ class RawTokenFormatter(Formatter):
|
|
|
87
86
|
if self.compress == 'gz':
|
|
88
87
|
import gzip
|
|
89
88
|
outfile = gzip.GzipFile('', 'wb', 9, outfile)
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
flush = outfile.
|
|
89
|
+
|
|
90
|
+
write = outfile.write
|
|
91
|
+
flush = outfile.close
|
|
93
92
|
elif self.compress == 'bz2':
|
|
94
93
|
import bz2
|
|
95
94
|
compressor = bz2.BZ2Compressor(9)
|
|
95
|
+
|
|
96
96
|
def write(text):
|
|
97
|
-
outfile.write(compressor.compress(text
|
|
97
|
+
outfile.write(compressor.compress(text))
|
|
98
|
+
|
|
98
99
|
def flush():
|
|
99
100
|
outfile.write(compressor.flush())
|
|
100
101
|
outfile.flush()
|
|
101
102
|
else:
|
|
102
|
-
|
|
103
|
-
outfile.write(text.encode())
|
|
103
|
+
write = outfile.write
|
|
104
104
|
flush = outfile.flush
|
|
105
105
|
|
|
106
106
|
if self.error_color:
|
|
107
107
|
for ttype, value in tokensource:
|
|
108
|
-
line = "%
|
|
108
|
+
line = b"%r\t%r\n" % (ttype, value)
|
|
109
109
|
if ttype is Token.Error:
|
|
110
110
|
write(colorize(self.error_color, line))
|
|
111
111
|
else:
|
|
112
112
|
write(line)
|
|
113
113
|
else:
|
|
114
114
|
for ttype, value in tokensource:
|
|
115
|
-
write("%
|
|
115
|
+
write(b"%r\t%r\n" % (ttype, value))
|
|
116
116
|
flush()
|
|
117
117
|
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
|
|
119
|
+
TESTCASE_BEFORE = '''\
|
|
120
|
+
def testNeedsName(lexer):
|
|
120
121
|
fragment = %r
|
|
121
122
|
tokens = [
|
|
122
123
|
'''
|
|
123
|
-
TESTCASE_AFTER =
|
|
124
|
+
TESTCASE_AFTER = '''\
|
|
124
125
|
]
|
|
125
|
-
|
|
126
|
+
assert list(lexer.get_tokens(fragment)) == tokens
|
|
126
127
|
'''
|
|
127
128
|
|
|
128
129
|
|
|
@@ -148,8 +149,8 @@ class TestcaseFormatter(Formatter):
|
|
|
148
149
|
rawbuf.append(value)
|
|
149
150
|
outbuf.append('%s(%s, %r),\n' % (indentation, ttype, value))
|
|
150
151
|
|
|
151
|
-
before = TESTCASE_BEFORE % (
|
|
152
|
-
during =
|
|
152
|
+
before = TESTCASE_BEFORE % (''.join(rawbuf),)
|
|
153
|
+
during = ''.join(outbuf)
|
|
153
154
|
after = TESTCASE_AFTER
|
|
154
155
|
if self.encoding is None:
|
|
155
156
|
outfile.write(before + during + after)
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
pygments.formatters.rtf
|
|
4
3
|
~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
4
|
|
|
6
5
|
A formatter that generates RTF files.
|
|
7
6
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
9
8
|
:license: BSD, see LICENSE for details.
|
|
10
9
|
"""
|
|
11
10
|
|
|
12
11
|
from pygments.formatter import Formatter
|
|
13
|
-
from pygments.util import get_int_opt,
|
|
12
|
+
from pygments.util import get_int_opt, surrogatepair
|
|
14
13
|
|
|
15
14
|
|
|
16
15
|
__all__ = ['RtfFormatter']
|
|
@@ -35,7 +34,7 @@ class RtfFormatter(Formatter):
|
|
|
35
34
|
``'default'``).
|
|
36
35
|
|
|
37
36
|
`fontface`
|
|
38
|
-
The used font
|
|
37
|
+
The used font family, for example ``Bitstream Vera Sans``. Defaults to
|
|
39
38
|
some generic font which is supposed to have fixed width.
|
|
40
39
|
|
|
41
40
|
`fontsize`
|
|
@@ -65,14 +64,14 @@ class RtfFormatter(Formatter):
|
|
|
65
64
|
self.fontsize = get_int_opt(options, 'fontsize', 0)
|
|
66
65
|
|
|
67
66
|
def _escape(self, text):
|
|
68
|
-
return text.replace(
|
|
69
|
-
.replace(
|
|
70
|
-
.replace(
|
|
67
|
+
return text.replace('\\', '\\\\') \
|
|
68
|
+
.replace('{', '\\{') \
|
|
69
|
+
.replace('}', '\\}')
|
|
71
70
|
|
|
72
71
|
def _escape_text(self, text):
|
|
73
|
-
# empty strings, should give a small performance
|
|
72
|
+
# empty strings, should give a small performance improvement
|
|
74
73
|
if not text:
|
|
75
|
-
return
|
|
74
|
+
return ''
|
|
76
75
|
|
|
77
76
|
# escape text
|
|
78
77
|
text = self._escape(text)
|
|
@@ -85,21 +84,21 @@ class RtfFormatter(Formatter):
|
|
|
85
84
|
buf.append(str(c))
|
|
86
85
|
elif (2**7) <= cn < (2**16):
|
|
87
86
|
# single unicode escape sequence
|
|
88
|
-
buf.append(
|
|
87
|
+
buf.append('{\\u%d}' % cn)
|
|
89
88
|
elif (2**16) <= cn:
|
|
90
89
|
# RTF limits unicode to 16 bits.
|
|
91
90
|
# Force surrogate pairs
|
|
92
|
-
buf.append(
|
|
91
|
+
buf.append('{\\u%d}{\\u%d}' % surrogatepair(cn))
|
|
93
92
|
|
|
94
|
-
return
|
|
93
|
+
return ''.join(buf).replace('\n', '\\par\n')
|
|
95
94
|
|
|
96
95
|
def format_unencoded(self, tokensource, outfile):
|
|
97
96
|
# rtf 1.8 header
|
|
98
|
-
outfile.write(
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
97
|
+
outfile.write('{\\rtf1\\ansi\\uc0\\deff0'
|
|
98
|
+
'{\\fonttbl{\\f0\\fmodern\\fprq1\\fcharset0%s;}}'
|
|
99
|
+
'{\\colortbl;' % (self.fontface and
|
|
100
|
+
' ' + self._escape(self.fontface) or
|
|
101
|
+
''))
|
|
103
102
|
|
|
104
103
|
# convert colors and save them in a mapping to access them later.
|
|
105
104
|
color_mapping = {}
|
|
@@ -108,15 +107,15 @@ class RtfFormatter(Formatter):
|
|
|
108
107
|
for color in style['color'], style['bgcolor'], style['border']:
|
|
109
108
|
if color and color not in color_mapping:
|
|
110
109
|
color_mapping[color] = offset
|
|
111
|
-
outfile.write(
|
|
110
|
+
outfile.write('\\red%d\\green%d\\blue%d;' % (
|
|
112
111
|
int(color[0:2], 16),
|
|
113
112
|
int(color[2:4], 16),
|
|
114
113
|
int(color[4:6], 16)
|
|
115
114
|
))
|
|
116
115
|
offset += 1
|
|
117
|
-
outfile.write(
|
|
116
|
+
outfile.write('}\\f0 ')
|
|
118
117
|
if self.fontsize:
|
|
119
|
-
outfile.write(
|
|
118
|
+
outfile.write('\\fs%d' % self.fontsize)
|
|
120
119
|
|
|
121
120
|
# highlight stream
|
|
122
121
|
for ttype, value in tokensource:
|
|
@@ -125,23 +124,23 @@ class RtfFormatter(Formatter):
|
|
|
125
124
|
style = self.style.style_for_token(ttype)
|
|
126
125
|
buf = []
|
|
127
126
|
if style['bgcolor']:
|
|
128
|
-
buf.append(
|
|
127
|
+
buf.append('\\cb%d' % color_mapping[style['bgcolor']])
|
|
129
128
|
if style['color']:
|
|
130
|
-
buf.append(
|
|
129
|
+
buf.append('\\cf%d' % color_mapping[style['color']])
|
|
131
130
|
if style['bold']:
|
|
132
|
-
buf.append(
|
|
131
|
+
buf.append('\\b')
|
|
133
132
|
if style['italic']:
|
|
134
|
-
buf.append(
|
|
133
|
+
buf.append('\\i')
|
|
135
134
|
if style['underline']:
|
|
136
|
-
buf.append(
|
|
135
|
+
buf.append('\\ul')
|
|
137
136
|
if style['border']:
|
|
138
|
-
buf.append(
|
|
137
|
+
buf.append('\\chbrdr\\chcfpat%d' %
|
|
139
138
|
color_mapping[style['border']])
|
|
140
|
-
start =
|
|
139
|
+
start = ''.join(buf)
|
|
141
140
|
if start:
|
|
142
|
-
outfile.write(
|
|
141
|
+
outfile.write('{%s ' % start)
|
|
143
142
|
outfile.write(self._escape_text(value))
|
|
144
143
|
if start:
|
|
145
|
-
outfile.write(
|
|
144
|
+
outfile.write('}')
|
|
146
145
|
|
|
147
|
-
outfile.write(
|
|
146
|
+
outfile.write('}')
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
pygments.formatters.svg
|
|
4
3
|
~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
4
|
|
|
6
5
|
Formatter for SVG output.
|
|
7
6
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
9
8
|
:license: BSD, see LICENSE for details.
|
|
10
9
|
"""
|
|
11
10
|
|
|
12
11
|
from pygments.formatter import Formatter
|
|
12
|
+
from pygments.token import Comment
|
|
13
13
|
from pygments.util import get_bool_opt, get_int_opt
|
|
14
14
|
|
|
15
15
|
__all__ = ['SvgFormatter']
|
|
@@ -52,6 +52,19 @@ class SvgFormatter(Formatter):
|
|
|
52
52
|
The value to give the wrapping ``<g>`` element's ``font-size``
|
|
53
53
|
attribute, defaults to ``"14px"``.
|
|
54
54
|
|
|
55
|
+
`linenos`
|
|
56
|
+
If ``True``, add line numbers (default: ``False``).
|
|
57
|
+
|
|
58
|
+
`linenostart`
|
|
59
|
+
The line number for the first line (default: ``1``).
|
|
60
|
+
|
|
61
|
+
`linenostep`
|
|
62
|
+
If set to a number n > 1, only every nth line number is printed.
|
|
63
|
+
|
|
64
|
+
`linenowidth`
|
|
65
|
+
Maximum width devoted to line numbers (default: ``3*ystep``, sufficient
|
|
66
|
+
for up to 4-digit line numbers. Increase width for longer code blocks).
|
|
67
|
+
|
|
55
68
|
`xoffset`
|
|
56
69
|
Starting offset in X direction, defaults to ``0``.
|
|
57
70
|
|
|
@@ -92,6 +105,10 @@ class SvgFormatter(Formatter):
|
|
|
92
105
|
self.yoffset = get_int_opt(options, 'yoffset', int_fs)
|
|
93
106
|
self.ystep = get_int_opt(options, 'ystep', int_fs + 5)
|
|
94
107
|
self.spacehack = get_bool_opt(options, 'spacehack', True)
|
|
108
|
+
self.linenos = get_bool_opt(options,'linenos',False)
|
|
109
|
+
self.linenostart = get_int_opt(options,'linenostart',1)
|
|
110
|
+
self.linenostep = get_int_opt(options,'linenostep',1)
|
|
111
|
+
self.linenowidth = get_int_opt(options,'linenowidth', 3*self.ystep)
|
|
95
112
|
self._stylecache = {}
|
|
96
113
|
|
|
97
114
|
def format_unencoded(self, tokensource, outfile):
|
|
@@ -115,7 +132,20 @@ class SvgFormatter(Formatter):
|
|
|
115
132
|
outfile.write('<svg xmlns="http://www.w3.org/2000/svg">\n')
|
|
116
133
|
outfile.write('<g font-family="%s" font-size="%s">\n' %
|
|
117
134
|
(self.fontfamily, self.fontsize))
|
|
118
|
-
|
|
135
|
+
|
|
136
|
+
counter = self.linenostart
|
|
137
|
+
counter_step = self.linenostep
|
|
138
|
+
counter_style = self._get_style(Comment)
|
|
139
|
+
line_x = x
|
|
140
|
+
|
|
141
|
+
if self.linenos:
|
|
142
|
+
if counter % counter_step == 0:
|
|
143
|
+
outfile.write('<text x="%s" y="%s" %s text-anchor="end">%s</text>' %
|
|
144
|
+
(x+self.linenowidth,y,counter_style,counter))
|
|
145
|
+
line_x += self.linenowidth + self.ystep
|
|
146
|
+
counter += 1
|
|
147
|
+
|
|
148
|
+
outfile.write('<text x="%s" y="%s" xml:space="preserve">' % (line_x, y))
|
|
119
149
|
for ttype, value in tokensource:
|
|
120
150
|
style = self._get_style(ttype)
|
|
121
151
|
tspan = style and '<tspan' + style + '>' or ''
|
|
@@ -127,8 +157,13 @@ class SvgFormatter(Formatter):
|
|
|
127
157
|
for part in parts[:-1]:
|
|
128
158
|
outfile.write(tspan + part + tspanend)
|
|
129
159
|
y += self.ystep
|
|
130
|
-
outfile.write('</text>\n
|
|
131
|
-
|
|
160
|
+
outfile.write('</text>\n')
|
|
161
|
+
if self.linenos and counter % counter_step == 0:
|
|
162
|
+
outfile.write('<text x="%s" y="%s" text-anchor="end" %s>%s</text>' %
|
|
163
|
+
(x+self.linenowidth,y,counter_style,counter))
|
|
164
|
+
|
|
165
|
+
counter += 1
|
|
166
|
+
outfile.write('<text x="%s" y="%s" ' 'xml:space="preserve">' % (line_x,y))
|
|
132
167
|
outfile.write(tspan + parts[-1] + tspanend)
|
|
133
168
|
outfile.write('</text>')
|
|
134
169
|
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
pygments.formatters.terminal
|
|
4
3
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
4
|
|
|
6
5
|
Formatter for terminal output with ANSI sequences.
|
|
7
6
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
7
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
9
8
|
:license: BSD, see LICENSE for details.
|
|
10
9
|
"""
|
|
11
10
|
|
|
@@ -26,33 +25,33 @@ __all__ = ['TerminalFormatter']
|
|
|
26
25
|
TERMINAL_COLORS = {
|
|
27
26
|
Token: ('', ''),
|
|
28
27
|
|
|
29
|
-
Whitespace: ('
|
|
30
|
-
Comment: ('
|
|
31
|
-
Comment.Preproc: ('
|
|
32
|
-
Keyword: ('
|
|
33
|
-
Keyword.Type: ('
|
|
34
|
-
Operator.Word: ('
|
|
35
|
-
Name.Builtin: ('
|
|
36
|
-
Name.Function: ('
|
|
37
|
-
Name.Namespace: ('
|
|
38
|
-
Name.Class: ('
|
|
39
|
-
Name.Exception: ('
|
|
40
|
-
Name.Decorator: ('
|
|
41
|
-
Name.Variable: ('
|
|
42
|
-
Name.Constant: ('
|
|
43
|
-
Name.Attribute: ('
|
|
44
|
-
Name.Tag: ('
|
|
45
|
-
String: ('
|
|
46
|
-
Number: ('
|
|
47
|
-
|
|
48
|
-
Generic.Deleted: ('
|
|
49
|
-
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', 'brightmagenta'),
|
|
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'),
|
|
50
49
|
Generic.Heading: ('**', '**'),
|
|
51
|
-
Generic.Subheading: ('*
|
|
50
|
+
Generic.Subheading: ('*magenta*', '*brightmagenta*'),
|
|
52
51
|
Generic.Prompt: ('**', '**'),
|
|
53
|
-
Generic.Error: ('
|
|
52
|
+
Generic.Error: ('brightred', 'brightred'),
|
|
54
53
|
|
|
55
|
-
Error: ('
|
|
54
|
+
Error: ('_brightred_', '_brightred_'),
|
|
56
55
|
}
|
|
57
56
|
|
|
58
57
|
|
|
@@ -92,12 +91,6 @@ class TerminalFormatter(Formatter):
|
|
|
92
91
|
self._lineno = 0
|
|
93
92
|
|
|
94
93
|
def format(self, tokensource, outfile):
|
|
95
|
-
# hack: if the output is a terminal and has an encoding set,
|
|
96
|
-
# use that to avoid unicode encode problems
|
|
97
|
-
if not self.encoding and hasattr(outfile, "encoding") and \
|
|
98
|
-
hasattr(outfile, "isatty") and outfile.isatty() and \
|
|
99
|
-
sys.version_info < (3,):
|
|
100
|
-
self.encoding = outfile.encoding
|
|
101
94
|
return Formatter.format(self, tokensource, outfile)
|
|
102
95
|
|
|
103
96
|
def _write_lineno(self, outfile):
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
pygments.formatters.terminal256
|
|
4
3
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
@@ -11,7 +10,7 @@
|
|
|
11
10
|
|
|
12
11
|
Formatter version 1.
|
|
13
12
|
|
|
14
|
-
:copyright: Copyright 2006-
|
|
13
|
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
|
15
14
|
:license: BSD, see LICENSE for details.
|
|
16
15
|
"""
|
|
17
16
|
|
|
@@ -35,11 +34,12 @@ __all__ = ['Terminal256Formatter', 'TerminalTrueColorFormatter']
|
|
|
35
34
|
|
|
36
35
|
|
|
37
36
|
class EscapeSequence:
|
|
38
|
-
def __init__(self, fg=None, bg=None, bold=False, underline=False):
|
|
37
|
+
def __init__(self, fg=None, bg=None, bold=False, underline=False, italic=False):
|
|
39
38
|
self.fg = fg
|
|
40
39
|
self.bg = bg
|
|
41
40
|
self.bold = bold
|
|
42
41
|
self.underline = underline
|
|
42
|
+
self.italic = italic
|
|
43
43
|
|
|
44
44
|
def escape(self, attrs):
|
|
45
45
|
if len(attrs):
|
|
@@ -50,7 +50,7 @@ class EscapeSequence:
|
|
|
50
50
|
attrs = []
|
|
51
51
|
if self.fg is not None:
|
|
52
52
|
if self.fg in ansicolors:
|
|
53
|
-
esc = codes[self.fg
|
|
53
|
+
esc = codes[self.fg.replace('ansi','')]
|
|
54
54
|
if ';01m' in esc:
|
|
55
55
|
self.bold = True
|
|
56
56
|
# extract fg color code.
|
|
@@ -59,7 +59,7 @@ class EscapeSequence:
|
|
|
59
59
|
attrs.extend(("38", "5", "%i" % self.fg))
|
|
60
60
|
if self.bg is not None:
|
|
61
61
|
if self.bg in ansicolors:
|
|
62
|
-
esc = codes[self.bg
|
|
62
|
+
esc = codes[self.bg.replace('ansi','')]
|
|
63
63
|
# extract fg color code, add 10 for bg.
|
|
64
64
|
attrs.append(str(int(esc[2:4])+10))
|
|
65
65
|
else:
|
|
@@ -68,6 +68,8 @@ class EscapeSequence:
|
|
|
68
68
|
attrs.append("01")
|
|
69
69
|
if self.underline:
|
|
70
70
|
attrs.append("04")
|
|
71
|
+
if self.italic:
|
|
72
|
+
attrs.append("03")
|
|
71
73
|
return self.escape(attrs)
|
|
72
74
|
|
|
73
75
|
def true_color_string(self):
|
|
@@ -80,6 +82,8 @@ class EscapeSequence:
|
|
|
80
82
|
attrs.append("01")
|
|
81
83
|
if self.underline:
|
|
82
84
|
attrs.append("04")
|
|
85
|
+
if self.italic:
|
|
86
|
+
attrs.append("03")
|
|
83
87
|
return self.escape(attrs)
|
|
84
88
|
|
|
85
89
|
def reset_string(self):
|
|
@@ -88,7 +92,7 @@ class EscapeSequence:
|
|
|
88
92
|
attrs.append("39")
|
|
89
93
|
if self.bg is not None:
|
|
90
94
|
attrs.append("49")
|
|
91
|
-
if self.bold or self.underline:
|
|
95
|
+
if self.bold or self.underline or self.italic:
|
|
92
96
|
attrs.append("00")
|
|
93
97
|
return self.escape(attrs)
|
|
94
98
|
|
|
@@ -110,11 +114,21 @@ class Terminal256Formatter(Formatter):
|
|
|
110
114
|
`Terminal256Formatter` will map these to non extended foreground color.
|
|
111
115
|
See :ref:`AnsiTerminalStyle` for more information.
|
|
112
116
|
|
|
117
|
+
.. versionchanged:: 2.4
|
|
118
|
+
The ANSI color names have been updated with names that are easier to
|
|
119
|
+
understand and align with colornames of other projects and terminals.
|
|
120
|
+
See :ref:`this table <new-ansi-color-names>` for more information.
|
|
121
|
+
|
|
122
|
+
|
|
113
123
|
Options accepted:
|
|
114
124
|
|
|
115
125
|
`style`
|
|
116
126
|
The style to use, can be a string or a Style subclass (default:
|
|
117
127
|
``'default'``).
|
|
128
|
+
|
|
129
|
+
`linenos`
|
|
130
|
+
Set to ``True`` to have line numbers on the terminal output as well
|
|
131
|
+
(default: ``False`` = no line numbers).
|
|
118
132
|
"""
|
|
119
133
|
name = 'Terminal256'
|
|
120
134
|
aliases = ['terminal256', 'console256', '256']
|
|
@@ -129,10 +143,14 @@ class Terminal256Formatter(Formatter):
|
|
|
129
143
|
|
|
130
144
|
self.usebold = 'nobold' not in options
|
|
131
145
|
self.useunderline = 'nounderline' not in options
|
|
146
|
+
self.useitalic = 'noitalic' not in options
|
|
132
147
|
|
|
133
148
|
self._build_color_table() # build an RGB-to-256 color conversion table
|
|
134
149
|
self._setup_styles() # convert selected style's colors to term. colors
|
|
135
150
|
|
|
151
|
+
self.linenos = options.get('linenos', False)
|
|
152
|
+
self._lineno = 0
|
|
153
|
+
|
|
136
154
|
def _build_color_table(self):
|
|
137
155
|
# colors 0..15: 16 basic colors
|
|
138
156
|
|
|
@@ -189,7 +207,7 @@ class Terminal256Formatter(Formatter):
|
|
|
189
207
|
def _color_index(self, color):
|
|
190
208
|
index = self.best_match.get(color, None)
|
|
191
209
|
if color in ansicolors:
|
|
192
|
-
# strip the
|
|
210
|
+
# strip the `ansi/#ansi` part and look up code
|
|
193
211
|
index = color
|
|
194
212
|
self.best_match[color] = index
|
|
195
213
|
if index is None:
|
|
@@ -221,19 +239,22 @@ class Terminal256Formatter(Formatter):
|
|
|
221
239
|
escape.bold = True
|
|
222
240
|
if self.useunderline and ndef['underline']:
|
|
223
241
|
escape.underline = True
|
|
242
|
+
if self.useitalic and ndef['italic']:
|
|
243
|
+
escape.italic = True
|
|
224
244
|
self.style_string[str(ttype)] = (escape.color_string(),
|
|
225
245
|
escape.reset_string())
|
|
226
246
|
|
|
247
|
+
def _write_lineno(self, outfile):
|
|
248
|
+
self._lineno += 1
|
|
249
|
+
outfile.write("%s%04d: " % (self._lineno != 1 and '\n' or '', self._lineno))
|
|
250
|
+
|
|
227
251
|
def format(self, tokensource, outfile):
|
|
228
|
-
# hack: if the output is a terminal and has an encoding set,
|
|
229
|
-
# use that to avoid unicode encode problems
|
|
230
|
-
if not self.encoding and hasattr(outfile, "encoding") and \
|
|
231
|
-
hasattr(outfile, "isatty") and outfile.isatty() and \
|
|
232
|
-
sys.version_info < (3,):
|
|
233
|
-
self.encoding = outfile.encoding
|
|
234
252
|
return Formatter.format(self, tokensource, outfile)
|
|
235
253
|
|
|
236
254
|
def format_unencoded(self, tokensource, outfile):
|
|
255
|
+
if self.linenos:
|
|
256
|
+
self._write_lineno(outfile)
|
|
257
|
+
|
|
237
258
|
for ttype, value in tokensource:
|
|
238
259
|
not_found = True
|
|
239
260
|
while ttype and not_found:
|
|
@@ -247,7 +268,11 @@ class Terminal256Formatter(Formatter):
|
|
|
247
268
|
for line in spl[:-1]:
|
|
248
269
|
if line:
|
|
249
270
|
outfile.write(on + line + off)
|
|
250
|
-
|
|
271
|
+
if self.linenos:
|
|
272
|
+
self._write_lineno(outfile)
|
|
273
|
+
else:
|
|
274
|
+
outfile.write('\n')
|
|
275
|
+
|
|
251
276
|
if spl[-1]:
|
|
252
277
|
outfile.write(on + spl[-1] + off)
|
|
253
278
|
|
|
@@ -262,6 +287,10 @@ class Terminal256Formatter(Formatter):
|
|
|
262
287
|
if not_found:
|
|
263
288
|
outfile.write(value)
|
|
264
289
|
|
|
290
|
+
if self.linenos:
|
|
291
|
+
outfile.write("\n")
|
|
292
|
+
|
|
293
|
+
|
|
265
294
|
|
|
266
295
|
class TerminalTrueColorFormatter(Terminal256Formatter):
|
|
267
296
|
r"""
|
|
@@ -305,5 +334,7 @@ class TerminalTrueColorFormatter(Terminal256Formatter):
|
|
|
305
334
|
escape.bold = True
|
|
306
335
|
if self.useunderline and ndef['underline']:
|
|
307
336
|
escape.underline = True
|
|
337
|
+
if self.useitalic and ndef['italic']:
|
|
338
|
+
escape.italic = True
|
|
308
339
|
self.style_string[str(ttype)] = (escape.true_color_string(),
|
|
309
340
|
escape.reset_string())
|