pygments.rb 1.1.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.github/dependabot.yml +13 -0
- data/.github/workflows/ci.yml +28 -0
- data/.github/workflows/release.yml +24 -0
- data/.gitignore +5 -5
- data/CHANGELOG.adoc +128 -0
- data/Gemfile +3 -1
- data/LICENSE +1 -1
- data/README.adoc +160 -0
- data/Rakefile +13 -19
- data/bench.rb +8 -7
- data/cache-lexers.rb +3 -2
- data/lexers +0 -0
- data/lib/pygments.rb +10 -11
- data/lib/pygments/lexer.rb +5 -5
- data/lib/pygments/mentos.py +23 -110
- data/lib/pygments/popen.rb +148 -229
- data/lib/pygments/version.rb +2 -2
- data/pygments.rb.gemspec +12 -11
- data/test/test_pygments.rb +46 -104
- data/vendor/pygments-main/{AUTHORS → Pygments-2.7.3.dist-info/AUTHORS} +23 -3
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/INSTALLER +1 -0
- data/vendor/pygments-main/{LICENSE → Pygments-2.7.3.dist-info/LICENSE} +1 -1
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/METADATA +49 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +482 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/REQUESTED +0 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/WHEEL +5 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/entry_points.txt +3 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/top_level.txt +1 -0
- data/vendor/pygments-main/bin/pygmentize +8 -0
- data/vendor/pygments-main/pygments/__init__.py +6 -11
- data/vendor/pygments-main/pygments/__main__.py +18 -0
- data/vendor/pygments-main/pygments/cmdline.py +94 -41
- data/vendor/pygments-main/pygments/console.py +6 -9
- data/vendor/pygments-main/pygments/filter.py +4 -6
- data/vendor/pygments-main/pygments/filters/__init__.py +609 -21
- data/vendor/pygments-main/pygments/formatter.py +4 -4
- data/vendor/pygments-main/pygments/formatters/__init__.py +42 -6
- data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -3
- data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
- data/vendor/pygments-main/pygments/formatters/html.py +223 -135
- data/vendor/pygments-main/pygments/formatters/img.py +102 -38
- data/vendor/pygments-main/pygments/formatters/irc.py +39 -39
- data/vendor/pygments-main/pygments/formatters/latex.py +56 -26
- data/vendor/pygments-main/pygments/formatters/other.py +12 -8
- data/vendor/pygments-main/pygments/formatters/rtf.py +29 -29
- data/vendor/pygments-main/pygments/formatters/svg.py +38 -4
- data/vendor/pygments-main/pygments/formatters/terminal.py +25 -31
- data/vendor/pygments-main/pygments/formatters/terminal256.py +22 -12
- data/vendor/pygments-main/pygments/lexer.py +41 -39
- data/vendor/pygments-main/pygments/lexers/__init__.py +62 -15
- data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +5 -5
- data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +15 -15
- data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +11 -12
- data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1717 -1338
- data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +8 -1
- data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +2 -4
- data/vendor/pygments-main/pygments/lexers/_mapping.py +79 -33
- data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +2 -2
- data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1282 -0
- data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_php_builtins.py +17 -20
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +73 -16
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +2 -2
- data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -3
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +151 -125
- data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +6 -4
- data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +113 -0
- data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +280 -0
- data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/actionscript.py +8 -3
- data/vendor/pygments-main/pygments/lexers/agile.py +1 -1
- data/vendor/pygments-main/pygments/lexers/algebra.py +20 -1
- data/vendor/pygments-main/pygments/lexers/ambient.py +1 -1
- data/vendor/pygments-main/pygments/lexers/ampl.py +3 -3
- data/vendor/pygments-main/pygments/lexers/apl.py +15 -15
- data/vendor/pygments-main/pygments/lexers/archetype.py +3 -3
- data/vendor/pygments-main/pygments/lexers/arrow.py +117 -0
- data/vendor/pygments-main/pygments/lexers/asm.py +445 -70
- data/vendor/pygments-main/pygments/lexers/automation.py +3 -3
- data/vendor/pygments-main/pygments/lexers/bare.py +104 -0
- data/vendor/pygments-main/pygments/lexers/basic.py +166 -4
- data/vendor/pygments-main/pygments/lexers/bibtex.py +13 -9
- data/vendor/pygments-main/pygments/lexers/boa.py +102 -0
- data/vendor/pygments-main/pygments/lexers/business.py +69 -36
- data/vendor/pygments-main/pygments/lexers/c_cpp.py +137 -45
- data/vendor/pygments-main/pygments/lexers/c_like.py +68 -43
- data/vendor/pygments-main/pygments/lexers/capnproto.py +20 -21
- data/vendor/pygments-main/pygments/lexers/chapel.py +25 -14
- data/vendor/pygments-main/pygments/lexers/clean.py +135 -244
- data/vendor/pygments-main/pygments/lexers/compiled.py +1 -1
- data/vendor/pygments-main/pygments/lexers/configs.py +188 -37
- data/vendor/pygments-main/pygments/lexers/console.py +1 -1
- data/vendor/pygments-main/pygments/lexers/crystal.py +31 -23
- data/vendor/pygments-main/pygments/lexers/csound.py +288 -187
- data/vendor/pygments-main/pygments/lexers/css.py +18 -16
- data/vendor/pygments-main/pygments/lexers/d.py +10 -5
- data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -1
- data/vendor/pygments-main/pygments/lexers/data.py +240 -97
- data/vendor/pygments-main/pygments/lexers/devicetree.py +109 -0
- data/vendor/pygments-main/pygments/lexers/diff.py +4 -4
- data/vendor/pygments-main/pygments/lexers/dotnet.py +40 -24
- data/vendor/pygments-main/pygments/lexers/dsls.py +147 -65
- data/vendor/pygments-main/pygments/lexers/dylan.py +16 -18
- data/vendor/pygments-main/pygments/lexers/ecl.py +16 -2
- data/vendor/pygments-main/pygments/lexers/eiffel.py +1 -1
- data/vendor/pygments-main/pygments/lexers/elm.py +5 -5
- data/vendor/pygments-main/pygments/lexers/email.py +151 -0
- data/vendor/pygments-main/pygments/lexers/erlang.py +29 -32
- data/vendor/pygments-main/pygments/lexers/esoteric.py +54 -25
- data/vendor/pygments-main/pygments/lexers/ezhil.py +24 -15
- data/vendor/pygments-main/pygments/lexers/factor.py +1 -1
- data/vendor/pygments-main/pygments/lexers/fantom.py +1 -1
- data/vendor/pygments-main/pygments/lexers/felix.py +1 -1
- data/vendor/pygments-main/pygments/lexers/floscript.py +83 -0
- data/vendor/pygments-main/pygments/lexers/forth.py +41 -40
- data/vendor/pygments-main/pygments/lexers/fortran.py +5 -4
- data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -2
- data/vendor/pygments-main/pygments/lexers/freefem.py +898 -0
- data/vendor/pygments-main/pygments/lexers/functional.py +1 -1
- data/vendor/pygments-main/pygments/lexers/gdscript.py +346 -0
- data/vendor/pygments-main/pygments/lexers/go.py +1 -1
- data/vendor/pygments-main/pygments/lexers/grammar_notation.py +63 -6
- data/vendor/pygments-main/pygments/lexers/graph.py +14 -9
- data/vendor/pygments-main/pygments/lexers/graphics.py +272 -25
- data/vendor/pygments-main/pygments/lexers/haskell.py +52 -22
- data/vendor/pygments-main/pygments/lexers/haxe.py +6 -6
- data/vendor/pygments-main/pygments/lexers/hdl.py +176 -86
- data/vendor/pygments-main/pygments/lexers/hexdump.py +18 -12
- data/vendor/pygments-main/pygments/lexers/html.py +31 -19
- data/vendor/pygments-main/pygments/lexers/idl.py +20 -9
- data/vendor/pygments-main/pygments/lexers/igor.py +244 -112
- data/vendor/pygments-main/pygments/lexers/inferno.py +2 -2
- data/vendor/pygments-main/pygments/lexers/installers.py +1 -1
- data/vendor/pygments-main/pygments/lexers/int_fiction.py +40 -15
- data/vendor/pygments-main/pygments/lexers/iolang.py +2 -2
- data/vendor/pygments-main/pygments/lexers/j.py +3 -3
- data/vendor/pygments-main/pygments/lexers/javascript.py +100 -66
- data/vendor/pygments-main/pygments/lexers/julia.py +46 -48
- data/vendor/pygments-main/pygments/lexers/jvm.py +265 -165
- data/vendor/pygments-main/pygments/lexers/lisp.py +882 -804
- data/vendor/pygments-main/pygments/lexers/make.py +10 -6
- data/vendor/pygments-main/pygments/lexers/markup.py +213 -43
- data/vendor/pygments-main/pygments/lexers/math.py +1 -1
- data/vendor/pygments-main/pygments/lexers/matlab.py +98 -41
- data/vendor/pygments-main/pygments/lexers/mime.py +226 -0
- data/vendor/pygments-main/pygments/lexers/ml.py +198 -9
- data/vendor/pygments-main/pygments/lexers/modeling.py +26 -18
- data/vendor/pygments-main/pygments/lexers/modula2.py +25 -6
- data/vendor/pygments-main/pygments/lexers/monte.py +4 -3
- data/vendor/pygments-main/pygments/lexers/mosel.py +448 -0
- data/vendor/pygments-main/pygments/lexers/ncl.py +85 -244
- data/vendor/pygments-main/pygments/lexers/nimrod.py +4 -4
- data/vendor/pygments-main/pygments/lexers/nit.py +1 -1
- data/vendor/pygments-main/pygments/lexers/nix.py +1 -1
- data/vendor/pygments-main/pygments/lexers/oberon.py +17 -1
- data/vendor/pygments-main/pygments/lexers/objective.py +16 -16
- data/vendor/pygments-main/pygments/lexers/ooc.py +1 -1
- data/vendor/pygments-main/pygments/lexers/other.py +1 -1
- data/vendor/pygments-main/pygments/lexers/parasail.py +1 -1
- data/vendor/pygments-main/pygments/lexers/parsers.py +23 -58
- data/vendor/pygments-main/pygments/lexers/pascal.py +23 -23
- data/vendor/pygments-main/pygments/lexers/pawn.py +30 -24
- data/vendor/pygments-main/pygments/lexers/perl.py +276 -160
- data/vendor/pygments-main/pygments/lexers/php.py +64 -10
- data/vendor/pygments-main/pygments/lexers/pointless.py +71 -0
- data/vendor/pygments-main/pygments/lexers/pony.py +94 -0
- data/vendor/pygments-main/pygments/lexers/praat.py +38 -30
- data/vendor/pygments-main/pygments/lexers/prolog.py +36 -36
- data/vendor/pygments-main/pygments/lexers/promql.py +183 -0
- data/vendor/pygments-main/pygments/lexers/python.py +439 -226
- data/vendor/pygments-main/pygments/lexers/qvt.py +6 -6
- data/vendor/pygments-main/pygments/lexers/r.py +13 -275
- data/vendor/pygments-main/pygments/lexers/rdf.py +232 -39
- data/vendor/pygments-main/pygments/lexers/rebol.py +8 -8
- data/vendor/pygments-main/pygments/lexers/resource.py +2 -2
- data/vendor/pygments-main/pygments/lexers/ride.py +139 -0
- data/vendor/pygments-main/pygments/lexers/rnc.py +1 -1
- data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -1
- data/vendor/pygments-main/pygments/lexers/robotframework.py +23 -31
- data/vendor/pygments-main/pygments/lexers/ruby.py +22 -24
- data/vendor/pygments-main/pygments/lexers/rust.py +86 -71
- data/vendor/pygments-main/pygments/lexers/sas.py +7 -7
- data/vendor/pygments-main/pygments/lexers/scdoc.py +83 -0
- data/vendor/pygments-main/pygments/lexers/scripting.py +75 -13
- data/vendor/pygments-main/pygments/lexers/sgf.py +61 -0
- data/vendor/pygments-main/pygments/lexers/shell.py +175 -51
- data/vendor/pygments-main/pygments/lexers/sieve.py +69 -0
- data/vendor/pygments-main/pygments/lexers/slash.py +185 -0
- data/vendor/pygments-main/pygments/lexers/smalltalk.py +2 -2
- data/vendor/pygments-main/pygments/lexers/smv.py +30 -26
- data/vendor/pygments-main/pygments/lexers/snobol.py +1 -1
- data/vendor/pygments-main/pygments/lexers/solidity.py +92 -0
- data/vendor/pygments-main/pygments/lexers/special.py +5 -3
- data/vendor/pygments-main/pygments/lexers/sql.py +333 -177
- data/vendor/pygments-main/pygments/lexers/stata.py +107 -42
- data/vendor/pygments-main/pygments/lexers/supercollider.py +6 -1
- data/vendor/pygments-main/pygments/lexers/tcl.py +1 -1
- data/vendor/pygments-main/pygments/lexers/templates.py +144 -132
- data/vendor/pygments-main/pygments/lexers/teraterm.py +335 -0
- data/vendor/pygments-main/pygments/lexers/testing.py +6 -6
- data/vendor/pygments-main/pygments/lexers/text.py +2 -1
- data/vendor/pygments-main/pygments/lexers/textedit.py +4 -4
- data/vendor/pygments-main/pygments/lexers/textfmts.py +146 -13
- data/vendor/pygments-main/pygments/lexers/theorem.py +69 -53
- data/vendor/pygments-main/pygments/lexers/tnt.py +263 -0
- data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -1
- data/vendor/pygments-main/pygments/lexers/typoscript.py +8 -14
- data/vendor/pygments-main/pygments/lexers/unicon.py +412 -0
- data/vendor/pygments-main/pygments/lexers/urbi.py +14 -1
- data/vendor/pygments-main/pygments/lexers/usd.py +90 -0
- data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
- data/vendor/pygments-main/pygments/lexers/verification.py +15 -12
- data/vendor/pygments-main/pygments/lexers/web.py +1 -1
- data/vendor/pygments-main/pygments/lexers/webidl.py +299 -0
- data/vendor/pygments-main/pygments/lexers/webmisc.py +50 -38
- data/vendor/pygments-main/pygments/lexers/whiley.py +11 -12
- data/vendor/pygments-main/pygments/lexers/x10.py +1 -1
- data/vendor/pygments-main/pygments/lexers/xorg.py +37 -0
- data/vendor/pygments-main/pygments/lexers/yang.py +104 -0
- data/vendor/pygments-main/pygments/lexers/zig.py +124 -0
- data/vendor/pygments-main/pygments/modeline.py +6 -5
- data/vendor/pygments-main/pygments/plugin.py +14 -18
- data/vendor/pygments-main/pygments/regexopt.py +1 -1
- data/vendor/pygments-main/pygments/scanner.py +2 -2
- data/vendor/pygments-main/pygments/sphinxext.py +2 -4
- data/vendor/pygments-main/pygments/style.py +61 -24
- data/vendor/pygments-main/pygments/styles/__init__.py +13 -5
- data/vendor/pygments-main/pygments/styles/abap.py +29 -0
- data/vendor/pygments-main/pygments/styles/algol.py +1 -1
- data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -1
- data/vendor/pygments-main/pygments/styles/arduino.py +2 -2
- data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
- data/vendor/pygments-main/pygments/styles/borland.py +1 -1
- data/vendor/pygments-main/pygments/styles/bw.py +1 -1
- data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
- data/vendor/pygments-main/pygments/styles/default.py +1 -1
- data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
- data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
- data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
- data/vendor/pygments-main/pygments/styles/igor.py +1 -1
- data/vendor/pygments-main/pygments/styles/inkpot.py +67 -0
- data/vendor/pygments-main/pygments/styles/lovelace.py +1 -1
- data/vendor/pygments-main/pygments/styles/manni.py +1 -1
- data/vendor/pygments-main/pygments/styles/monokai.py +4 -3
- data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
- data/vendor/pygments-main/pygments/styles/native.py +1 -1
- data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -1
- data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -1
- data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
- data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
- data/vendor/pygments-main/pygments/styles/rainbow_dash.py +89 -0
- data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
- data/vendor/pygments-main/pygments/styles/sas.py +3 -0
- data/vendor/pygments-main/pygments/styles/solarized.py +134 -0
- data/vendor/pygments-main/pygments/styles/stata_dark.py +41 -0
- data/vendor/pygments-main/pygments/styles/stata_light.py +39 -0
- data/vendor/pygments-main/pygments/styles/tango.py +1 -1
- data/vendor/pygments-main/pygments/styles/trac.py +1 -1
- data/vendor/pygments-main/pygments/styles/vim.py +1 -1
- data/vendor/pygments-main/pygments/styles/vs.py +1 -1
- data/vendor/pygments-main/pygments/styles/xcode.py +1 -1
- data/vendor/pygments-main/pygments/token.py +1 -1
- data/vendor/pygments-main/pygments/unistring.py +47 -108
- data/vendor/pygments-main/pygments/util.py +19 -95
- metadata +71 -137
- data/CHANGELOG.md +0 -98
- data/README.md +0 -121
- data/circle.yml +0 -20
- data/test/test_data.c +0 -2581
- data/test/test_data.py +0 -514
- data/test/test_data_generated +0 -2582
- data/vendor/custom_lexers/github.py +0 -565
- data/vendor/pygments-main/CHANGES +0 -1163
- data/vendor/pygments-main/MANIFEST.in +0 -6
- data/vendor/pygments-main/Makefile +0 -65
- data/vendor/pygments-main/README.rst +0 -39
- data/vendor/pygments-main/REVISION +0 -1
- data/vendor/pygments-main/TODO +0 -12
- data/vendor/pygments-main/doc/Makefile +0 -153
- data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
- data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
- data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
- data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
- data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
- data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
- data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
- data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
- data/vendor/pygments-main/doc/conf.py +0 -241
- data/vendor/pygments-main/doc/docs/api.rst +0 -331
- data/vendor/pygments-main/doc/docs/authors.rst +0 -4
- data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
- data/vendor/pygments-main/doc/docs/cmdline.rst +0 -149
- data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
- data/vendor/pygments-main/doc/docs/filters.rst +0 -41
- data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
- data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
- data/vendor/pygments-main/doc/docs/index.rst +0 -66
- data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
- data/vendor/pygments-main/doc/docs/java.rst +0 -70
- data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -689
- data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
- data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
- data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
- data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
- data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
- data/vendor/pygments-main/doc/docs/styles.rst +0 -201
- data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
- data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
- data/vendor/pygments-main/doc/download.rst +0 -41
- data/vendor/pygments-main/doc/faq.rst +0 -139
- data/vendor/pygments-main/doc/index.rst +0 -54
- data/vendor/pygments-main/doc/languages.rst +0 -154
- data/vendor/pygments-main/doc/make.bat +0 -190
- data/vendor/pygments-main/doc/pygmentize.1 +0 -94
- data/vendor/pygments-main/external/autopygmentize +0 -84
- data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
- data/vendor/pygments-main/external/markdown-processor.py +0 -67
- data/vendor/pygments-main/external/moin-parser.py +0 -112
- data/vendor/pygments-main/external/pygments.bashcomp +0 -38
- data/vendor/pygments-main/external/rst-directive.py +0 -82
- data/vendor/pygments-main/pygmentize +0 -8
- data/vendor/pygments-main/pygments/lexers/github.py +0 -565
- data/vendor/pygments-main/pygments/styles/stata.py +0 -37
- data/vendor/pygments-main/requirements.txt +0 -5
- data/vendor/pygments-main/scripts/check_sources.py +0 -211
- data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
- data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
- data/vendor/pygments-main/scripts/epydoc.css +0 -280
- data/vendor/pygments-main/scripts/find_error.py +0 -1
- data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
- data/vendor/pygments-main/scripts/pylintrc +0 -301
- data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
- data/vendor/pygments-main/setup.cfg +0 -10
- data/vendor/pygments-main/setup.py +0 -77
- data/vendor/pygments-main/tox.ini +0 -7
- data/vendor/simplejson/.gitignore +0 -10
- data/vendor/simplejson/.travis.yml +0 -5
- data/vendor/simplejson/CHANGES.txt +0 -291
- data/vendor/simplejson/LICENSE.txt +0 -19
- data/vendor/simplejson/MANIFEST.in +0 -5
- data/vendor/simplejson/README.rst +0 -19
- data/vendor/simplejson/conf.py +0 -179
- data/vendor/simplejson/index.rst +0 -628
- data/vendor/simplejson/scripts/make_docs.py +0 -18
- data/vendor/simplejson/setup.py +0 -104
- data/vendor/simplejson/simplejson/__init__.py +0 -510
- data/vendor/simplejson/simplejson/_speedups.c +0 -2745
- data/vendor/simplejson/simplejson/decoder.py +0 -425
- data/vendor/simplejson/simplejson/encoder.py +0 -567
- data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
- data/vendor/simplejson/simplejson/scanner.py +0 -77
- data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
- data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
- data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
- data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
- data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
- data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
- data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
- data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
- data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
- data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
- data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
- data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
- data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
- data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
- data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
- data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
- data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
- data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
- data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
- data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
- data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
- data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
- data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
- data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
- data/vendor/simplejson/simplejson/tool.py +0 -39
|
@@ -5,12 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
Base lexer classes.
|
|
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 __future__ import print_function
|
|
13
|
-
|
|
14
12
|
import re
|
|
15
13
|
import sys
|
|
16
14
|
import time
|
|
@@ -19,7 +17,7 @@ from pygments.filter import apply_filters, Filter
|
|
|
19
17
|
from pygments.filters import get_filter_by_name
|
|
20
18
|
from pygments.token import Error, Text, Other, _TokenType
|
|
21
19
|
from pygments.util import get_bool_opt, get_int_opt, get_list_opt, \
|
|
22
|
-
make_analysator,
|
|
20
|
+
make_analysator, Future, guess_decode
|
|
23
21
|
from pygments.regexopt import regex_opt
|
|
24
22
|
|
|
25
23
|
__all__ = ['Lexer', 'RegexLexer', 'ExtendedRegexLexer', 'DelegatingLexer',
|
|
@@ -48,8 +46,7 @@ class LexerMeta(type):
|
|
|
48
46
|
return type.__new__(mcs, name, bases, d)
|
|
49
47
|
|
|
50
48
|
|
|
51
|
-
|
|
52
|
-
class Lexer(object):
|
|
49
|
+
class Lexer(metaclass=LexerMeta):
|
|
53
50
|
"""
|
|
54
51
|
Lexer for a specific language.
|
|
55
52
|
|
|
@@ -145,16 +142,16 @@ class Lexer(object):
|
|
|
145
142
|
Also preprocess the text, i.e. expand tabs and strip it if
|
|
146
143
|
wanted and applies registered filters.
|
|
147
144
|
"""
|
|
148
|
-
if not isinstance(text,
|
|
145
|
+
if not isinstance(text, str):
|
|
149
146
|
if self.encoding == 'guess':
|
|
150
147
|
text, _ = guess_decode(text)
|
|
151
148
|
elif self.encoding == 'chardet':
|
|
152
149
|
try:
|
|
153
150
|
import chardet
|
|
154
|
-
except ImportError:
|
|
151
|
+
except ImportError as e:
|
|
155
152
|
raise ImportError('To enable chardet encoding guessing, '
|
|
156
153
|
'please install the chardet library '
|
|
157
|
-
'from http://chardet.feedparser.org/')
|
|
154
|
+
'from http://chardet.feedparser.org/') from e
|
|
158
155
|
# check for BOM first
|
|
159
156
|
decoded = None
|
|
160
157
|
for bom, encoding in _encoding_map:
|
|
@@ -169,11 +166,11 @@ class Lexer(object):
|
|
|
169
166
|
text = decoded
|
|
170
167
|
else:
|
|
171
168
|
text = text.decode(self.encoding)
|
|
172
|
-
if text.startswith(
|
|
173
|
-
text = text[len(
|
|
169
|
+
if text.startswith('\ufeff'):
|
|
170
|
+
text = text[len('\ufeff'):]
|
|
174
171
|
else:
|
|
175
|
-
if text.startswith(
|
|
176
|
-
text = text[len(
|
|
172
|
+
if text.startswith('\ufeff'):
|
|
173
|
+
text = text[len('\ufeff'):]
|
|
177
174
|
|
|
178
175
|
# text now *is* a unicode string
|
|
179
176
|
text = text.replace('\r\n', '\n')
|
|
@@ -252,7 +249,7 @@ class include(str): # pylint: disable=invalid-name
|
|
|
252
249
|
pass
|
|
253
250
|
|
|
254
251
|
|
|
255
|
-
class _inherit
|
|
252
|
+
class _inherit:
|
|
256
253
|
"""
|
|
257
254
|
Indicates the a state should inherit from its superclass.
|
|
258
255
|
"""
|
|
@@ -275,7 +272,7 @@ class combined(tuple): # pylint: disable=invalid-name
|
|
|
275
272
|
pass
|
|
276
273
|
|
|
277
274
|
|
|
278
|
-
class _PseudoMatch
|
|
275
|
+
class _PseudoMatch:
|
|
279
276
|
"""
|
|
280
277
|
A pseudo match object constructed from a string.
|
|
281
278
|
"""
|
|
@@ -328,11 +325,12 @@ def bygroups(*args):
|
|
|
328
325
|
return callback
|
|
329
326
|
|
|
330
327
|
|
|
331
|
-
class _This
|
|
328
|
+
class _This:
|
|
332
329
|
"""
|
|
333
330
|
Special singleton used for indicating the caller class.
|
|
334
331
|
Used by ``using``.
|
|
335
332
|
"""
|
|
333
|
+
|
|
336
334
|
this = _This()
|
|
337
335
|
|
|
338
336
|
|
|
@@ -498,7 +496,7 @@ class RegexLexerMeta(LexerMeta):
|
|
|
498
496
|
rex = cls._process_regex(tdef[0], rflags, state)
|
|
499
497
|
except Exception as err:
|
|
500
498
|
raise ValueError("uncompilable regex %r in state %r of %r: %s" %
|
|
501
|
-
(tdef[0], state, cls, err))
|
|
499
|
+
(tdef[0], state, cls, err)) from err
|
|
502
500
|
|
|
503
501
|
token = cls._process_token(tdef[1])
|
|
504
502
|
|
|
@@ -536,7 +534,7 @@ class RegexLexerMeta(LexerMeta):
|
|
|
536
534
|
for c in cls.__mro__:
|
|
537
535
|
toks = c.__dict__.get('tokens', {})
|
|
538
536
|
|
|
539
|
-
for state, items in
|
|
537
|
+
for state, items in toks.items():
|
|
540
538
|
curitems = tokens.get(state)
|
|
541
539
|
if curitems is None:
|
|
542
540
|
# N.b. because this is assigned by reference, sufficiently
|
|
@@ -582,8 +580,7 @@ class RegexLexerMeta(LexerMeta):
|
|
|
582
580
|
return type.__call__(cls, *args, **kwds)
|
|
583
581
|
|
|
584
582
|
|
|
585
|
-
|
|
586
|
-
class RegexLexer(Lexer):
|
|
583
|
+
class RegexLexer(Lexer, metaclass=RegexLexerMeta):
|
|
587
584
|
"""
|
|
588
585
|
Base for simple stateful regular expression-based lexers.
|
|
589
586
|
Simplifies the lexing process so that you need only
|
|
@@ -631,22 +628,27 @@ class RegexLexer(Lexer):
|
|
|
631
628
|
if type(action) is _TokenType:
|
|
632
629
|
yield pos, action, m.group()
|
|
633
630
|
else:
|
|
634
|
-
|
|
635
|
-
yield item
|
|
631
|
+
yield from action(self, m)
|
|
636
632
|
pos = m.end()
|
|
637
633
|
if new_state is not None:
|
|
638
634
|
# state transition
|
|
639
635
|
if isinstance(new_state, tuple):
|
|
640
636
|
for state in new_state:
|
|
641
637
|
if state == '#pop':
|
|
642
|
-
statestack
|
|
638
|
+
if len(statestack) > 1:
|
|
639
|
+
statestack.pop()
|
|
643
640
|
elif state == '#push':
|
|
644
641
|
statestack.append(statestack[-1])
|
|
645
642
|
else:
|
|
646
643
|
statestack.append(state)
|
|
647
644
|
elif isinstance(new_state, int):
|
|
648
|
-
# pop
|
|
649
|
-
|
|
645
|
+
# pop, but keep at least one state on the stack
|
|
646
|
+
# (random code leading to unexpected pops should
|
|
647
|
+
# not allow exceptions)
|
|
648
|
+
if abs(new_state) >= len(statestack):
|
|
649
|
+
del statestack[1:]
|
|
650
|
+
else:
|
|
651
|
+
del statestack[new_state:]
|
|
650
652
|
elif new_state == '#push':
|
|
651
653
|
statestack.append(statestack[-1])
|
|
652
654
|
else:
|
|
@@ -661,7 +663,7 @@ class RegexLexer(Lexer):
|
|
|
661
663
|
# at EOL, reset state to "root"
|
|
662
664
|
statestack = ['root']
|
|
663
665
|
statetokens = tokendefs['root']
|
|
664
|
-
yield pos, Text,
|
|
666
|
+
yield pos, Text, '\n'
|
|
665
667
|
pos += 1
|
|
666
668
|
continue
|
|
667
669
|
yield pos, Error, text[pos]
|
|
@@ -670,7 +672,7 @@ class RegexLexer(Lexer):
|
|
|
670
672
|
break
|
|
671
673
|
|
|
672
674
|
|
|
673
|
-
class LexerContext
|
|
675
|
+
class LexerContext:
|
|
674
676
|
"""
|
|
675
677
|
A helper object that holds lexer position data.
|
|
676
678
|
"""
|
|
@@ -713,8 +715,7 @@ class ExtendedRegexLexer(RegexLexer):
|
|
|
713
715
|
yield ctx.pos, action, m.group()
|
|
714
716
|
ctx.pos = m.end()
|
|
715
717
|
else:
|
|
716
|
-
|
|
717
|
-
yield item
|
|
718
|
+
yield from action(self, m, ctx)
|
|
718
719
|
if not new_state:
|
|
719
720
|
# altered the state stack?
|
|
720
721
|
statetokens = tokendefs[ctx.stack[-1]]
|
|
@@ -724,14 +725,18 @@ class ExtendedRegexLexer(RegexLexer):
|
|
|
724
725
|
if isinstance(new_state, tuple):
|
|
725
726
|
for state in new_state:
|
|
726
727
|
if state == '#pop':
|
|
727
|
-
ctx.stack
|
|
728
|
+
if len(ctx.stack) > 1:
|
|
729
|
+
ctx.stack.pop()
|
|
728
730
|
elif state == '#push':
|
|
729
731
|
ctx.stack.append(ctx.stack[-1])
|
|
730
732
|
else:
|
|
731
733
|
ctx.stack.append(state)
|
|
732
734
|
elif isinstance(new_state, int):
|
|
733
|
-
#
|
|
734
|
-
|
|
735
|
+
# see RegexLexer for why this check is made
|
|
736
|
+
if abs(new_state) >= len(ctx.stack):
|
|
737
|
+
del ctx.state[1:]
|
|
738
|
+
else:
|
|
739
|
+
del ctx.stack[new_state:]
|
|
735
740
|
elif new_state == '#push':
|
|
736
741
|
ctx.stack.append(ctx.stack[-1])
|
|
737
742
|
else:
|
|
@@ -746,7 +751,7 @@ class ExtendedRegexLexer(RegexLexer):
|
|
|
746
751
|
# at EOL, reset state to "root"
|
|
747
752
|
ctx.stack = ['root']
|
|
748
753
|
statetokens = tokendefs['root']
|
|
749
|
-
yield ctx.pos, Text,
|
|
754
|
+
yield ctx.pos, Text, '\n'
|
|
750
755
|
ctx.pos += 1
|
|
751
756
|
continue
|
|
752
757
|
yield ctx.pos, Error, text[ctx.pos]
|
|
@@ -774,8 +779,7 @@ def do_insertions(insertions, tokens):
|
|
|
774
779
|
index, itokens = next(insertions)
|
|
775
780
|
except StopIteration:
|
|
776
781
|
# no insertions
|
|
777
|
-
|
|
778
|
-
yield item
|
|
782
|
+
yield from tokens
|
|
779
783
|
return
|
|
780
784
|
|
|
781
785
|
realpos = None
|
|
@@ -840,8 +844,7 @@ class ProfilingRegexLexerMeta(RegexLexerMeta):
|
|
|
840
844
|
return match_func
|
|
841
845
|
|
|
842
846
|
|
|
843
|
-
|
|
844
|
-
class ProfilingRegexLexer(RegexLexer):
|
|
847
|
+
class ProfilingRegexLexer(RegexLexer, metaclass=ProfilingRegexLexerMeta):
|
|
845
848
|
"""Drop-in replacement for RegexLexer that does profiling of its regexes."""
|
|
846
849
|
|
|
847
850
|
_prof_data = []
|
|
@@ -850,8 +853,7 @@ class ProfilingRegexLexer(RegexLexer):
|
|
|
850
853
|
def get_tokens_unprocessed(self, text, stack=('root',)):
|
|
851
854
|
# this needs to be a stack, since using(this) will produce nested calls
|
|
852
855
|
self.__class__._prof_data.append({})
|
|
853
|
-
|
|
854
|
-
yield tok
|
|
856
|
+
yield from RegexLexer.get_tokens_unprocessed(self, text, stack)
|
|
855
857
|
rawdata = self.__class__._prof_data.pop()
|
|
856
858
|
data = sorted(((s, repr(r).strip('u\'').replace('\\\\', '\\')[:65],
|
|
857
859
|
n, 1000 * t, 1000 * t / n)
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
Pygments lexers.
|
|
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
|
|
|
@@ -18,11 +18,15 @@ from os.path import basename
|
|
|
18
18
|
from pygments.lexers._mapping import LEXERS
|
|
19
19
|
from pygments.modeline import get_filetype_from_buffer
|
|
20
20
|
from pygments.plugin import find_plugin_lexers
|
|
21
|
-
from pygments.util import ClassNotFound,
|
|
21
|
+
from pygments.util import ClassNotFound, guess_decode
|
|
22
22
|
|
|
23
|
+
COMPAT = {
|
|
24
|
+
'Python3Lexer': 'PythonLexer',
|
|
25
|
+
'Python3TracebackLexer': 'PythonTracebackLexer',
|
|
26
|
+
}
|
|
23
27
|
|
|
24
28
|
__all__ = ['get_lexer_by_name', 'get_lexer_for_filename', 'find_lexer_class',
|
|
25
|
-
'guess_lexer'] + list(LEXERS)
|
|
29
|
+
'guess_lexer', 'load_lexer_from_file'] + list(LEXERS) + list(COMPAT)
|
|
26
30
|
|
|
27
31
|
_lexer_cache = {}
|
|
28
32
|
_pattern_cache = {}
|
|
@@ -48,7 +52,7 @@ def get_all_lexers():
|
|
|
48
52
|
"""Return a generator of tuples in the form ``(name, aliases,
|
|
49
53
|
filenames, mimetypes)`` of all know lexers.
|
|
50
54
|
"""
|
|
51
|
-
for item in
|
|
55
|
+
for item in LEXERS.values():
|
|
52
56
|
yield item[1:]
|
|
53
57
|
for lexer in find_plugin_lexers():
|
|
54
58
|
yield lexer.name, lexer.aliases, lexer.filenames, lexer.mimetypes
|
|
@@ -62,7 +66,7 @@ def find_lexer_class(name):
|
|
|
62
66
|
if name in _lexer_cache:
|
|
63
67
|
return _lexer_cache[name]
|
|
64
68
|
# lookup builtin lexers
|
|
65
|
-
for module_name, lname, aliases, _, _ in
|
|
69
|
+
for module_name, lname, aliases, _, _ in LEXERS.values():
|
|
66
70
|
if name == lname:
|
|
67
71
|
_load_lexers(module_name)
|
|
68
72
|
return _lexer_cache[name]
|
|
@@ -72,7 +76,7 @@ def find_lexer_class(name):
|
|
|
72
76
|
return cls
|
|
73
77
|
|
|
74
78
|
|
|
75
|
-
def find_lexer_class_by_name(
|
|
79
|
+
def find_lexer_class_by_name(_alias):
|
|
76
80
|
"""Lookup a lexer class by alias.
|
|
77
81
|
|
|
78
82
|
Like `get_lexer_by_name`, but does not instantiate the class.
|
|
@@ -82,7 +86,7 @@ def find_lexer_class_by_name(alias):
|
|
|
82
86
|
if not _alias:
|
|
83
87
|
raise ClassNotFound('no lexer for alias %r found' % _alias)
|
|
84
88
|
# lookup builtin lexers
|
|
85
|
-
for module_name, name, aliases, _, _ in
|
|
89
|
+
for module_name, name, aliases, _, _ in LEXERS.values():
|
|
86
90
|
if _alias.lower() in aliases:
|
|
87
91
|
if name not in _lexer_cache:
|
|
88
92
|
_load_lexers(module_name)
|
|
@@ -103,7 +107,7 @@ def get_lexer_by_name(_alias, **options):
|
|
|
103
107
|
raise ClassNotFound('no lexer for alias %r found' % _alias)
|
|
104
108
|
|
|
105
109
|
# lookup builtin lexers
|
|
106
|
-
for module_name, name, aliases, _, _ in
|
|
110
|
+
for module_name, name, aliases, _, _ in LEXERS.values():
|
|
107
111
|
if _alias.lower() in aliases:
|
|
108
112
|
if name not in _lexer_cache:
|
|
109
113
|
_load_lexers(module_name)
|
|
@@ -115,6 +119,41 @@ def get_lexer_by_name(_alias, **options):
|
|
|
115
119
|
raise ClassNotFound('no lexer for alias %r found' % _alias)
|
|
116
120
|
|
|
117
121
|
|
|
122
|
+
def load_lexer_from_file(filename, lexername="CustomLexer", **options):
|
|
123
|
+
"""Load a lexer from a file.
|
|
124
|
+
|
|
125
|
+
This method expects a file located relative to the current working
|
|
126
|
+
directory, which contains a Lexer class. By default, it expects the
|
|
127
|
+
Lexer to be name CustomLexer; you can specify your own class name
|
|
128
|
+
as the second argument to this function.
|
|
129
|
+
|
|
130
|
+
Users should be very careful with the input, because this method
|
|
131
|
+
is equivalent to running eval on the input file.
|
|
132
|
+
|
|
133
|
+
Raises ClassNotFound if there are any problems importing the Lexer.
|
|
134
|
+
|
|
135
|
+
.. versionadded:: 2.2
|
|
136
|
+
"""
|
|
137
|
+
try:
|
|
138
|
+
# This empty dict will contain the namespace for the exec'd file
|
|
139
|
+
custom_namespace = {}
|
|
140
|
+
with open(filename, 'rb') as f:
|
|
141
|
+
exec(f.read(), custom_namespace)
|
|
142
|
+
# Retrieve the class `lexername` from that namespace
|
|
143
|
+
if lexername not in custom_namespace:
|
|
144
|
+
raise ClassNotFound('no valid %s class found in %s' %
|
|
145
|
+
(lexername, filename))
|
|
146
|
+
lexer_class = custom_namespace[lexername]
|
|
147
|
+
# And finally instantiate it with the options
|
|
148
|
+
return lexer_class(**options)
|
|
149
|
+
except IOError as err:
|
|
150
|
+
raise ClassNotFound('cannot read %s: %s' % (filename, err))
|
|
151
|
+
except ClassNotFound:
|
|
152
|
+
raise
|
|
153
|
+
except Exception as err:
|
|
154
|
+
raise ClassNotFound('error when loading custom lexer: %s' % err)
|
|
155
|
+
|
|
156
|
+
|
|
118
157
|
def find_lexer_class_for_filename(_fn, code=None):
|
|
119
158
|
"""Get a lexer for a filename.
|
|
120
159
|
|
|
@@ -125,7 +164,7 @@ def find_lexer_class_for_filename(_fn, code=None):
|
|
|
125
164
|
"""
|
|
126
165
|
matches = []
|
|
127
166
|
fn = basename(_fn)
|
|
128
|
-
for modname, name, _, filenames, _ in
|
|
167
|
+
for modname, name, _, filenames, _ in LEXERS.values():
|
|
129
168
|
for filename in filenames:
|
|
130
169
|
if _fn_matches(fn, filename):
|
|
131
170
|
if name not in _lexer_cache:
|
|
@@ -136,7 +175,7 @@ def find_lexer_class_for_filename(_fn, code=None):
|
|
|
136
175
|
if _fn_matches(fn, filename):
|
|
137
176
|
matches.append((cls, filename))
|
|
138
177
|
|
|
139
|
-
if
|
|
178
|
+
if isinstance(code, bytes):
|
|
140
179
|
# decode it, since all analyse_text functions expect unicode
|
|
141
180
|
code = guess_decode(code)
|
|
142
181
|
|
|
@@ -149,8 +188,8 @@ def find_lexer_class_for_filename(_fn, code=None):
|
|
|
149
188
|
# gets turned into 0.0. Run scripts/detect_missing_analyse_text.py
|
|
150
189
|
# to find lexers which need it overridden.
|
|
151
190
|
if code:
|
|
152
|
-
return cls.analyse_text(code) + bonus
|
|
153
|
-
return cls.priority + bonus
|
|
191
|
+
return cls.analyse_text(code) + bonus, cls.__name__
|
|
192
|
+
return cls.priority + bonus, cls.__name__
|
|
154
193
|
|
|
155
194
|
if matches:
|
|
156
195
|
matches.sort(key=get_rating)
|
|
@@ -177,7 +216,7 @@ def get_lexer_for_mimetype(_mime, **options):
|
|
|
177
216
|
|
|
178
217
|
Raises ClassNotFound if not found.
|
|
179
218
|
"""
|
|
180
|
-
for modname, name, _, _, mimetypes in
|
|
219
|
+
for modname, name, _, _, mimetypes in LEXERS.values():
|
|
181
220
|
if _mime in mimetypes:
|
|
182
221
|
if name not in _lexer_cache:
|
|
183
222
|
_load_lexers(modname)
|
|
@@ -196,8 +235,7 @@ def _iter_lexerclasses(plugins=True):
|
|
|
196
235
|
_load_lexers(module_name)
|
|
197
236
|
yield _lexer_cache[name]
|
|
198
237
|
if plugins:
|
|
199
|
-
|
|
200
|
-
yield lexer
|
|
238
|
+
yield from find_plugin_lexers()
|
|
201
239
|
|
|
202
240
|
|
|
203
241
|
def guess_lexer_for_filename(_fn, _text, **options):
|
|
@@ -254,6 +292,13 @@ def guess_lexer_for_filename(_fn, _text, **options):
|
|
|
254
292
|
def guess_lexer(_text, **options):
|
|
255
293
|
"""Guess a lexer by strong distinctions in the text (eg, shebang)."""
|
|
256
294
|
|
|
295
|
+
if not isinstance(_text, str):
|
|
296
|
+
inencoding = options.get('inencoding', options.get('encoding'))
|
|
297
|
+
if inencoding:
|
|
298
|
+
_text = _text.decode(inencoding or 'utf8')
|
|
299
|
+
else:
|
|
300
|
+
_text, _ = guess_decode(_text)
|
|
301
|
+
|
|
257
302
|
# try to get a vim modeline first
|
|
258
303
|
ft = get_filetype_from_buffer(_text)
|
|
259
304
|
|
|
@@ -285,6 +330,8 @@ class _automodule(types.ModuleType):
|
|
|
285
330
|
cls = _lexer_cache[info[1]]
|
|
286
331
|
setattr(self, name, cls)
|
|
287
332
|
return cls
|
|
333
|
+
if name in COMPAT:
|
|
334
|
+
return getattr(self, COMPAT[name])
|
|
288
335
|
raise AttributeError(name)
|
|
289
336
|
|
|
290
337
|
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
TODO: perl/python script in Asymptote SVN similar to asy-list.pl but only
|
|
11
11
|
for function and variable names.
|
|
12
12
|
|
|
13
|
-
:copyright: Copyright 2006-
|
|
13
|
+
:copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
|
|
14
14
|
:license: BSD, see LICENSE for details.
|
|
15
15
|
"""
|
|
16
16
|
|
|
17
|
-
ASYFUNCNAME =
|
|
17
|
+
ASYFUNCNAME = {
|
|
18
18
|
'AND',
|
|
19
19
|
'Arc',
|
|
20
20
|
'ArcArrow',
|
|
@@ -1038,9 +1038,9 @@ ASYFUNCNAME = set((
|
|
|
1038
1038
|
'ztick',
|
|
1039
1039
|
'ztick3',
|
|
1040
1040
|
'ztrans'
|
|
1041
|
-
|
|
1041
|
+
}
|
|
1042
1042
|
|
|
1043
|
-
ASYVARNAME =
|
|
1043
|
+
ASYVARNAME = {
|
|
1044
1044
|
'AliceBlue',
|
|
1045
1045
|
'Align',
|
|
1046
1046
|
'Allow',
|
|
@@ -1642,4 +1642,4 @@ ASYVARNAME = set((
|
|
|
1642
1642
|
'ylabelwidth',
|
|
1643
1643
|
'zerotickfuzz',
|
|
1644
1644
|
'zerowinding'
|
|
1645
|
-
|
|
1645
|
+
}
|