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,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
Lexers for Makefiles and similar.
|
|
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
|
|
|
@@ -57,8 +57,7 @@ class MakefileLexer(Lexer):
|
|
|
57
57
|
ins.append((len(done), [(0, Comment, line)]))
|
|
58
58
|
else:
|
|
59
59
|
done += line
|
|
60
|
-
|
|
61
|
-
yield item
|
|
60
|
+
yield from do_insertions(ins, lex.get_tokens_unprocessed(done))
|
|
62
61
|
|
|
63
62
|
def analyse_text(text):
|
|
64
63
|
# Many makefiles have $(BIG_CAPS) style variables
|
|
@@ -102,8 +101,8 @@ class BaseMakefileLexer(RegexLexer):
|
|
|
102
101
|
(r'\$\(', Keyword, 'expansion'),
|
|
103
102
|
],
|
|
104
103
|
'expansion': [
|
|
105
|
-
(r'[
|
|
106
|
-
(r'[
|
|
104
|
+
(r'[^\w$().-]+', Text),
|
|
105
|
+
(r'[\w.-]+', Name.Variable),
|
|
107
106
|
(r'\$', Keyword),
|
|
108
107
|
(r'\(', Keyword, '#push'),
|
|
109
108
|
(r'\)', Keyword, '#pop'),
|
|
@@ -196,7 +195,12 @@ class CMakeLexer(RegexLexer):
|
|
|
196
195
|
}
|
|
197
196
|
|
|
198
197
|
def analyse_text(text):
|
|
199
|
-
exp =
|
|
198
|
+
exp = (
|
|
199
|
+
r'^[ \t]*CMAKE_MINIMUM_REQUIRED[ \t]*'
|
|
200
|
+
r'\([ \t]*VERSION[ \t]*\d+(\.\d+)*[ \t]*'
|
|
201
|
+
r'([ \t]FATAL_ERROR)?[ \t]*\)[ \t]*'
|
|
202
|
+
r'(#[^\n]*)?$'
|
|
203
|
+
)
|
|
200
204
|
if re.search(exp, text, flags=re.MULTILINE | re.IGNORECASE):
|
|
201
205
|
return 0.8
|
|
202
206
|
return 0.0
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
Lexers for non-HTML markup languages.
|
|
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
|
|
|
@@ -24,7 +24,7 @@ from pygments.util import get_bool_opt, ClassNotFound
|
|
|
24
24
|
__all__ = ['BBCodeLexer', 'MoinWikiLexer', 'RstLexer', 'TexLexer', 'GroffLexer',
|
|
25
25
|
'MozPreprocHashLexer', 'MozPreprocPercentLexer',
|
|
26
26
|
'MozPreprocXulLexer', 'MozPreprocJavascriptLexer',
|
|
27
|
-
'MozPreprocCssLexer', 'MarkdownLexer']
|
|
27
|
+
'MozPreprocCssLexer', 'MarkdownLexer', 'TiddlyWiki5Lexer']
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class BBCodeLexer(RegexLexer):
|
|
@@ -165,12 +165,11 @@ class RstLexer(RegexLexer):
|
|
|
165
165
|
code += line[indention_size:]
|
|
166
166
|
else:
|
|
167
167
|
code += line
|
|
168
|
-
|
|
169
|
-
yield item
|
|
168
|
+
yield from do_insertions(ins, lexer.get_tokens_unprocessed(code))
|
|
170
169
|
|
|
171
170
|
# from docutils.parsers.rst.states
|
|
172
|
-
closers =
|
|
173
|
-
unicode_delimiters =
|
|
171
|
+
closers = '\'")]}>\u2019\u201d\xbb!?'
|
|
172
|
+
unicode_delimiters = '\u2010\u2011\u2012\u2013\u2014\u00a0'
|
|
174
173
|
end_string_suffix = (r'((?=$)|(?=[-/:.,; \n\x00%s%s]))'
|
|
175
174
|
% (re.escape(unicode_delimiters),
|
|
176
175
|
re.escape(closers)))
|
|
@@ -204,7 +203,7 @@ class RstLexer(RegexLexer):
|
|
|
204
203
|
bygroups(Text, Operator, using(this, state='inline'))),
|
|
205
204
|
# Sourcecode directives
|
|
206
205
|
(r'^( *\.\.)(\s*)((?:source)?code(?:-block)?)(::)([ \t]*)([^\n]+)'
|
|
207
|
-
r'(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\8
|
|
206
|
+
r'(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\8.*)?\n)+)',
|
|
208
207
|
_handle_sourcecode),
|
|
209
208
|
# A directive
|
|
210
209
|
(r'^( *\.\.)(\s*)([\w:-]+?)(::)(?:([ \t]*)(.*))',
|
|
@@ -222,15 +221,14 @@ class RstLexer(RegexLexer):
|
|
|
222
221
|
Punctuation, Text, using(this, state='inline'))),
|
|
223
222
|
# Comments
|
|
224
223
|
(r'^ *\.\..*(\n( +.*\n|\n)+)?', Comment.Preproc),
|
|
225
|
-
# Field list
|
|
226
|
-
(r'^( *)(:[
|
|
227
|
-
|
|
228
|
-
bygroups(Text, Name.Class, Text, Name.Function)),
|
|
224
|
+
# Field list marker
|
|
225
|
+
(r'^( *)(:(?:\\\\|\\:|[^:\n])+:(?=\s))([ \t]*)',
|
|
226
|
+
bygroups(Text, Name.Class, Text)),
|
|
229
227
|
# Definition list
|
|
230
228
|
(r'^(\S.*(?<!::)\n)((?:(?: +.*)\n)+)',
|
|
231
229
|
bygroups(using(this, state='inline'), using(this, state='inline'))),
|
|
232
230
|
# Code blocks
|
|
233
|
-
(r'(::)(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\3
|
|
231
|
+
(r'(::)(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\3.*)?\n)+)',
|
|
234
232
|
bygroups(String.Escape, Text, String, String, Text, String)),
|
|
235
233
|
include('inline'),
|
|
236
234
|
],
|
|
@@ -463,8 +461,7 @@ class MozPreprocXulLexer(DelegatingLexer):
|
|
|
463
461
|
mimetypes = []
|
|
464
462
|
|
|
465
463
|
def __init__(self, **options):
|
|
466
|
-
super(
|
|
467
|
-
XmlLexer, MozPreprocHashLexer, **options)
|
|
464
|
+
super().__init__(XmlLexer, MozPreprocHashLexer, **options)
|
|
468
465
|
|
|
469
466
|
|
|
470
467
|
class MozPreprocJavascriptLexer(DelegatingLexer):
|
|
@@ -480,8 +477,7 @@ class MozPreprocJavascriptLexer(DelegatingLexer):
|
|
|
480
477
|
mimetypes = []
|
|
481
478
|
|
|
482
479
|
def __init__(self, **options):
|
|
483
|
-
super(
|
|
484
|
-
JavascriptLexer, MozPreprocHashLexer, **options)
|
|
480
|
+
super().__init__(JavascriptLexer, MozPreprocHashLexer, **options)
|
|
485
481
|
|
|
486
482
|
|
|
487
483
|
class MozPreprocCssLexer(DelegatingLexer):
|
|
@@ -497,8 +493,7 @@ class MozPreprocCssLexer(DelegatingLexer):
|
|
|
497
493
|
mimetypes = []
|
|
498
494
|
|
|
499
495
|
def __init__(self, **options):
|
|
500
|
-
super(
|
|
501
|
-
CssLexer, MozPreprocPercentLexer, **options)
|
|
496
|
+
super().__init__(CssLexer, MozPreprocPercentLexer, **options)
|
|
502
497
|
|
|
503
498
|
|
|
504
499
|
class MarkdownLexer(RegexLexer):
|
|
@@ -509,7 +504,7 @@ class MarkdownLexer(RegexLexer):
|
|
|
509
504
|
"""
|
|
510
505
|
name = 'markdown'
|
|
511
506
|
aliases = ['md']
|
|
512
|
-
filenames = ['*.md']
|
|
507
|
+
filenames = ['*.md', '*.markdown']
|
|
513
508
|
mimetypes = ["text/x-markdown"]
|
|
514
509
|
flags = re.MULTILINE
|
|
515
510
|
|
|
@@ -520,9 +515,9 @@ class MarkdownLexer(RegexLexer):
|
|
|
520
515
|
from pygments.lexers import get_lexer_by_name
|
|
521
516
|
|
|
522
517
|
# section header
|
|
523
|
-
yield match.start(1), String
|
|
524
|
-
yield match.start(2), String
|
|
525
|
-
yield match.start(3), Text
|
|
518
|
+
yield match.start(1), String.Backtick, match.group(1)
|
|
519
|
+
yield match.start(2), String.Backtick, match.group(2)
|
|
520
|
+
yield match.start(3), Text , match.group(3)
|
|
526
521
|
|
|
527
522
|
# lookup lexer if wanted and existing
|
|
528
523
|
lexer = None
|
|
@@ -536,57 +531,232 @@ class MarkdownLexer(RegexLexer):
|
|
|
536
531
|
# no lexer for this language. handle it like it was a code block
|
|
537
532
|
if lexer is None:
|
|
538
533
|
yield match.start(4), String, code
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
for item in do_insertions([], lexer.get_tokens_unprocessed(code)):
|
|
542
|
-
yield item
|
|
534
|
+
else:
|
|
535
|
+
yield from do_insertions([], lexer.get_tokens_unprocessed(code))
|
|
543
536
|
|
|
544
|
-
yield match.start(5), String
|
|
537
|
+
yield match.start(5), String.Backtick, match.group(5)
|
|
545
538
|
|
|
546
539
|
tokens = {
|
|
547
540
|
'root': [
|
|
548
|
-
# heading with
|
|
549
|
-
(r'
|
|
550
|
-
|
|
541
|
+
# heading with '#' prefix (atx-style)
|
|
542
|
+
(r'(^#[^#].+)(\n)', bygroups(Generic.Heading, Text)),
|
|
543
|
+
# subheading with '#' prefix (atx-style)
|
|
544
|
+
(r'(^#{2,6}[^#].+)(\n)', bygroups(Generic.Subheading, Text)),
|
|
545
|
+
# heading with '=' underlines (Setext-style)
|
|
546
|
+
(r'^(.+)(\n)(=+)(\n)', bygroups(Generic.Heading, Text, Generic.Heading, Text)),
|
|
547
|
+
# subheading with '-' underlines (Setext-style)
|
|
548
|
+
(r'^(.+)(\n)(-+)(\n)', bygroups(Generic.Subheading, Text, Generic.Subheading, Text)),
|
|
551
549
|
# task list
|
|
552
550
|
(r'^(\s*)([*-] )(\[[ xX]\])( .+\n)',
|
|
553
551
|
bygroups(Text, Keyword, Keyword, using(this, state='inline'))),
|
|
554
|
-
# bulleted
|
|
552
|
+
# bulleted list
|
|
555
553
|
(r'^(\s*)([*-])(\s)(.+\n)',
|
|
556
554
|
bygroups(Text, Keyword, Text, using(this, state='inline'))),
|
|
557
|
-
# numbered
|
|
555
|
+
# numbered list
|
|
558
556
|
(r'^(\s*)([0-9]+\.)( .+\n)',
|
|
559
557
|
bygroups(Text, Keyword, using(this, state='inline'))),
|
|
560
558
|
# quote
|
|
561
559
|
(r'^(\s*>\s)(.+\n)', bygroups(Keyword, Generic.Emph)),
|
|
560
|
+
# code block fenced by 3 backticks
|
|
561
|
+
(r'^(\s*```\n(.+\n)+\s*```$)', String.Backtick),
|
|
562
|
+
# code block with language
|
|
563
|
+
(r'^(\s*```)(\w+)(\n)([\w\W]*?)(^\s*```$)', _handle_codeblock),
|
|
564
|
+
# code block indented with 4 spaces or 1 tab
|
|
565
|
+
(r'(\n\n)((\ {4}|\t)(.+\n)+)', bygroups(Text, String.Backtick)),
|
|
566
|
+
|
|
567
|
+
include('inline'),
|
|
568
|
+
],
|
|
569
|
+
'inline': [
|
|
570
|
+
# escape
|
|
571
|
+
(r'\\.', Text),
|
|
572
|
+
# inline code
|
|
573
|
+
(r'([^`])(`[^`\n]+`)', bygroups(Text, String.Backtick)),
|
|
574
|
+
# warning: the following rules eat outer tags.
|
|
575
|
+
# eg. **foo _bar_ baz** => foo and baz are not recognized as bold
|
|
576
|
+
# bold fenced by '**'
|
|
577
|
+
(r'(\*\*[^* \n][^*\n]*\*\*)', bygroups(Generic.Strong)),
|
|
578
|
+
# # bold fenced by '__'
|
|
579
|
+
(r'(\_\_[^_ \n][^_\n]*\_\_)', bygroups(Generic.Strong)),
|
|
580
|
+
# italics fenced by '*'
|
|
581
|
+
(r'(\*[^* \n][^*\n]*\*)', bygroups(Generic.Emph)),
|
|
582
|
+
# italics fenced by '_'
|
|
583
|
+
(r'(\_[^_ \n][^_\n]*\_)', bygroups(Generic.Emph)),
|
|
584
|
+
# strikethrough
|
|
585
|
+
(r'([^~]*)(~~[^~]+~~)', bygroups(Text, Generic.Deleted)),
|
|
586
|
+
# mentions and topics (twitter and github stuff)
|
|
587
|
+
(r'[@#][\w/:]+', Name.Entity),
|
|
588
|
+
# (image?) links eg: 
|
|
589
|
+
(r'(!?\[)([^]]+)(\])(\()([^)]+)(\))',
|
|
590
|
+
bygroups(Text, Name.Tag, Text, Text, Name.Attribute, Text)),
|
|
591
|
+
# reference-style links, e.g.:
|
|
592
|
+
# [an example][id]
|
|
593
|
+
# [id]: http://example.com/
|
|
594
|
+
(r'(\[)([^]]+)(\])(\[)([^]]*)(\])',
|
|
595
|
+
bygroups(Text, Name.Tag, Text, Text, Name.Label, Text)),
|
|
596
|
+
(r'^(\s*\[)([^]]*)(\]:\s*)(.+)',
|
|
597
|
+
bygroups(Text, Name.Label, Text, Name.Attribute)),
|
|
598
|
+
|
|
599
|
+
# general text, must come last!
|
|
600
|
+
(r'[^\\\s]+', Text),
|
|
601
|
+
(r'.', Text),
|
|
602
|
+
],
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
def __init__(self, **options):
|
|
606
|
+
self.handlecodeblocks = get_bool_opt(options, 'handlecodeblocks', True)
|
|
607
|
+
RegexLexer.__init__(self, **options)
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
class TiddlyWiki5Lexer(RegexLexer):
|
|
611
|
+
"""
|
|
612
|
+
For `TiddlyWiki5 <https://tiddlywiki.com/#TiddlerFiles>`_ markup.
|
|
613
|
+
|
|
614
|
+
.. versionadded:: 2.7
|
|
615
|
+
"""
|
|
616
|
+
name = 'tiddler'
|
|
617
|
+
aliases = ['tid']
|
|
618
|
+
filenames = ['*.tid']
|
|
619
|
+
mimetypes = ["text/vnd.tiddlywiki"]
|
|
620
|
+
flags = re.MULTILINE
|
|
621
|
+
|
|
622
|
+
def _handle_codeblock(self, match):
|
|
623
|
+
"""
|
|
624
|
+
match args: 1:backticks, 2:lang_name, 3:newline, 4:code, 5:backticks
|
|
625
|
+
"""
|
|
626
|
+
from pygments.lexers import get_lexer_by_name
|
|
627
|
+
|
|
628
|
+
# section header
|
|
629
|
+
yield match.start(1), String, match.group(1)
|
|
630
|
+
yield match.start(2), String, match.group(2)
|
|
631
|
+
yield match.start(3), Text, match.group(3)
|
|
632
|
+
|
|
633
|
+
# lookup lexer if wanted and existing
|
|
634
|
+
lexer = None
|
|
635
|
+
if self.handlecodeblocks:
|
|
636
|
+
try:
|
|
637
|
+
lexer = get_lexer_by_name(match.group(2).strip())
|
|
638
|
+
except ClassNotFound:
|
|
639
|
+
pass
|
|
640
|
+
code = match.group(4)
|
|
641
|
+
|
|
642
|
+
# no lexer for this language. handle it like it was a code block
|
|
643
|
+
if lexer is None:
|
|
644
|
+
yield match.start(4), String, code
|
|
645
|
+
return
|
|
646
|
+
|
|
647
|
+
yield from do_insertions([], lexer.get_tokens_unprocessed(code))
|
|
648
|
+
|
|
649
|
+
yield match.start(5), String, match.group(5)
|
|
650
|
+
|
|
651
|
+
def _handle_cssblock(self, match):
|
|
652
|
+
"""
|
|
653
|
+
match args: 1:style tag 2:newline, 3:code, 4:closing style tag
|
|
654
|
+
"""
|
|
655
|
+
from pygments.lexers import get_lexer_by_name
|
|
656
|
+
|
|
657
|
+
# section header
|
|
658
|
+
yield match.start(1), String, match.group(1)
|
|
659
|
+
yield match.start(2), String, match.group(2)
|
|
660
|
+
|
|
661
|
+
lexer = None
|
|
662
|
+
if self.handlecodeblocks:
|
|
663
|
+
try:
|
|
664
|
+
lexer = get_lexer_by_name('css')
|
|
665
|
+
except ClassNotFound:
|
|
666
|
+
pass
|
|
667
|
+
code = match.group(3)
|
|
668
|
+
|
|
669
|
+
# no lexer for this language. handle it like it was a code block
|
|
670
|
+
if lexer is None:
|
|
671
|
+
yield match.start(3), String, code
|
|
672
|
+
return
|
|
673
|
+
|
|
674
|
+
yield from do_insertions([], lexer.get_tokens_unprocessed(code))
|
|
675
|
+
|
|
676
|
+
yield match.start(4), String, match.group(4)
|
|
677
|
+
|
|
678
|
+
tokens = {
|
|
679
|
+
'root': [
|
|
680
|
+
# title in metadata section
|
|
681
|
+
(r'^(title)(:\s)(.+\n)', bygroups(Keyword, Text, Generic.Heading)),
|
|
682
|
+
# headings
|
|
683
|
+
(r'^(!)([^!].+\n)', bygroups(Generic.Heading, Text)),
|
|
684
|
+
(r'^(!{2,6})(.+\n)', bygroups(Generic.Subheading, Text)),
|
|
685
|
+
# bulleted or numbered lists or single-line block quotes
|
|
686
|
+
# (can be mixed)
|
|
687
|
+
(r'^(\s*)([*#>]+)(\s*)(.+\n)',
|
|
688
|
+
bygroups(Text, Keyword, Text, using(this, state='inline'))),
|
|
689
|
+
# multi-line block quotes
|
|
690
|
+
(r'^(<<<.*\n)([\w\W]*?)(^<<<.*$)', bygroups(String, Text, String)),
|
|
691
|
+
# table header
|
|
692
|
+
(r'^(\|.*?\|h)$', bygroups(Generic.Strong)),
|
|
693
|
+
# table footer or caption
|
|
694
|
+
(r'^(\|.*?\|[cf])$', bygroups(Generic.Emph)),
|
|
695
|
+
# table class
|
|
696
|
+
(r'^(\|.*?\|k)$', bygroups(Name.Tag)),
|
|
697
|
+
# definitions
|
|
698
|
+
(r'^(;.*)$', bygroups(Generic.Strong)),
|
|
562
699
|
# text block
|
|
563
700
|
(r'^(```\n)([\w\W]*?)(^```$)', bygroups(String, Text, String)),
|
|
564
701
|
# code block with language
|
|
565
702
|
(r'^(```)(\w+)(\n)([\w\W]*?)(^```$)', _handle_codeblock),
|
|
703
|
+
# CSS style block
|
|
704
|
+
(r'^(<style>)(\n)([\w\W]*?)(^</style>$)', _handle_cssblock),
|
|
566
705
|
|
|
706
|
+
include('keywords'),
|
|
567
707
|
include('inline'),
|
|
568
708
|
],
|
|
709
|
+
'keywords': [
|
|
710
|
+
(words((
|
|
711
|
+
'\\define', '\\end', 'caption', 'created', 'modified', 'tags',
|
|
712
|
+
'title', 'type'), prefix=r'^', suffix=r'\b'),
|
|
713
|
+
Keyword),
|
|
714
|
+
],
|
|
569
715
|
'inline': [
|
|
570
716
|
# escape
|
|
571
717
|
(r'\\.', Text),
|
|
718
|
+
# created or modified date
|
|
719
|
+
(r'\d{17}', Number.Integer),
|
|
572
720
|
# italics
|
|
573
|
-
(r'(\s)([
|
|
721
|
+
(r'(\s)(//[^/]+//)((?=\W|\n))',
|
|
722
|
+
bygroups(Text, Generic.Emph, Text)),
|
|
723
|
+
# superscript
|
|
724
|
+
(r'(\s)(\^\^[^\^]+\^\^)', bygroups(Text, Generic.Emph)),
|
|
725
|
+
# subscript
|
|
726
|
+
(r'(\s)(,,[^,]+,,)', bygroups(Text, Generic.Emph)),
|
|
727
|
+
# underscore
|
|
728
|
+
(r'(\s)(__[^_]+__)', bygroups(Text, Generic.Strong)),
|
|
574
729
|
# bold
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
# "proper way" (r'(\s)([*_]{2}[^*_]+[*_]{2})((?=\W|\n))', bygroups(Text, Generic.Strong, Text)),
|
|
730
|
+
(r"(\s)(''[^']+'')((?=\W|\n))",
|
|
731
|
+
bygroups(Text, Generic.Strong, Text)),
|
|
578
732
|
# strikethrough
|
|
579
|
-
(r'(\s)(~~[^~]+~~)((?=\W|\n))',
|
|
733
|
+
(r'(\s)(~~[^~]+~~)((?=\W|\n))',
|
|
734
|
+
bygroups(Text, Generic.Deleted, Text)),
|
|
735
|
+
# TiddlyWiki variables
|
|
736
|
+
(r'<<[^>]+>>', Name.Tag),
|
|
737
|
+
(r'\$\$[^$]+\$\$', Name.Tag),
|
|
738
|
+
(r'\$\([^)]+\)\$', Name.Tag),
|
|
739
|
+
# TiddlyWiki style or class
|
|
740
|
+
(r'^@@.*$', Name.Tag),
|
|
741
|
+
# HTML tags
|
|
742
|
+
(r'</?[^>]+>', Name.Tag),
|
|
580
743
|
# inline code
|
|
581
744
|
(r'`[^`]+`', String.Backtick),
|
|
582
|
-
#
|
|
583
|
-
(r'
|
|
584
|
-
#
|
|
585
|
-
(r'(
|
|
745
|
+
# HTML escaped symbols
|
|
746
|
+
(r'&\S*?;', String.Regex),
|
|
747
|
+
# Wiki links
|
|
748
|
+
(r'(\[{2})([^]\|]+)(\]{2})', bygroups(Text, Name.Tag, Text)),
|
|
749
|
+
# External links
|
|
750
|
+
(r'(\[{2})([^]\|]+)(\|)([^]\|]+)(\]{2})',
|
|
751
|
+
bygroups(Text, Name.Tag, Text, Name.Attribute, Text)),
|
|
752
|
+
# Transclusion
|
|
753
|
+
(r'(\{{2})([^}]+)(\}{2})', bygroups(Text, Name.Tag, Text)),
|
|
754
|
+
# URLs
|
|
755
|
+
(r'(\b.?.?tps?://[^\s"]+)', bygroups(Name.Attribute)),
|
|
586
756
|
|
|
587
757
|
# general text, must come last!
|
|
588
|
-
(r'[
|
|
589
|
-
(r'.', Text)
|
|
758
|
+
(r'[\w]+', Text),
|
|
759
|
+
(r'.', Text)
|
|
590
760
|
],
|
|
591
761
|
}
|
|
592
762
|
|
|
@@ -5,13 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
Lexers for Matlab and related languages.
|
|
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
12
|
import re
|
|
13
13
|
|
|
14
|
-
from pygments.lexer import Lexer, RegexLexer, bygroups, words,
|
|
14
|
+
from pygments.lexer import Lexer, RegexLexer, bygroups, default, words, \
|
|
15
|
+
do_insertions
|
|
15
16
|
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
|
|
16
17
|
Number, Punctuation, Generic, Whitespace
|
|
17
18
|
|
|
@@ -45,33 +46,35 @@ class MatlabLexer(RegexLexer):
|
|
|
45
46
|
# specfun: Special Math functions
|
|
46
47
|
# elmat: Elementary matrices and matrix manipulation
|
|
47
48
|
#
|
|
48
|
-
# taken from Matlab version
|
|
49
|
+
# taken from Matlab version 9.4 (R2018a)
|
|
49
50
|
#
|
|
50
51
|
elfun = ("sin", "sind", "sinh", "asin", "asind", "asinh", "cos", "cosd", "cosh",
|
|
51
52
|
"acos", "acosd", "acosh", "tan", "tand", "tanh", "atan", "atand", "atan2",
|
|
52
|
-
"atanh", "sec", "secd", "sech", "asec", "asecd", "asech", "csc", "cscd",
|
|
53
|
+
"atan2d", "atanh", "sec", "secd", "sech", "asec", "asecd", "asech", "csc", "cscd",
|
|
53
54
|
"csch", "acsc", "acscd", "acsch", "cot", "cotd", "coth", "acot", "acotd",
|
|
54
|
-
"acoth", "hypot", "exp", "expm1", "log", "log1p", "log10", "log2", "pow2",
|
|
55
|
+
"acoth", "hypot", "deg2rad", "rad2deg", "exp", "expm1", "log", "log1p", "log10", "log2", "pow2",
|
|
55
56
|
"realpow", "reallog", "realsqrt", "sqrt", "nthroot", "nextpow2", "abs",
|
|
56
57
|
"angle", "complex", "conj", "imag", "real", "unwrap", "isreal", "cplxpair",
|
|
57
58
|
"fix", "floor", "ceil", "round", "mod", "rem", "sign")
|
|
58
59
|
specfun = ("airy", "besselj", "bessely", "besselh", "besseli", "besselk", "beta",
|
|
59
|
-
"betainc", "betaln", "ellipj", "ellipke", "erf", "erfc", "erfcx",
|
|
60
|
-
"erfinv", "expint", "gamma", "gammainc", "gammaln", "psi", "legendre",
|
|
60
|
+
"betainc", "betaincinv", "betaln", "ellipj", "ellipke", "erf", "erfc", "erfcx",
|
|
61
|
+
"erfinv", "erfcinv", "expint", "gamma", "gammainc", "gammaincinv", "gammaln", "psi", "legendre",
|
|
61
62
|
"cross", "dot", "factor", "isprime", "primes", "gcd", "lcm", "rat",
|
|
62
63
|
"rats", "perms", "nchoosek", "factorial", "cart2sph", "cart2pol",
|
|
63
64
|
"pol2cart", "sph2cart", "hsv2rgb", "rgb2hsv")
|
|
64
|
-
elmat = ("zeros", "ones", "eye", "repmat", "
|
|
65
|
+
elmat = ("zeros", "ones", "eye", "repmat", "repelem", "linspace", "logspace",
|
|
65
66
|
"freqspace", "meshgrid", "accumarray", "size", "length", "ndims", "numel",
|
|
66
|
-
"disp", "isempty", "isequal", "
|
|
67
|
-
"diag", "blkdiag", "tril", "triu", "fliplr", "flipud", "
|
|
67
|
+
"disp", "isempty", "isequal", "isequaln", "cat", "reshape",
|
|
68
|
+
"diag", "blkdiag", "tril", "triu", "fliplr", "flipud", "flip", "rot90",
|
|
68
69
|
"find", "end", "sub2ind", "ind2sub", "bsxfun", "ndgrid", "permute",
|
|
69
70
|
"ipermute", "shiftdim", "circshift", "squeeze", "isscalar", "isvector",
|
|
70
|
-
"
|
|
71
|
-
"isinf", "isfinite", "j", "
|
|
71
|
+
"isrow", "iscolumn", "ismatrix", "eps", "realmax", "realmin", "intmax", "intmin", "flintmax", "pi", "i", "inf", "nan", "isnan",
|
|
72
|
+
"isinf", "isfinite", "j", "true", "false", "compan", "gallery", "hadamard", "hankel",
|
|
72
73
|
"hilb", "invhilb", "magic", "pascal", "rosser", "toeplitz", "vander",
|
|
73
74
|
"wilkinson")
|
|
74
75
|
|
|
76
|
+
_operators = r'-|==|~=|<=|>=|<|>|&&|&|~|\|\|?|\.\*|\*|\+|\.\^|\.\\|\./|/|\\'
|
|
77
|
+
|
|
75
78
|
tokens = {
|
|
76
79
|
'root': [
|
|
77
80
|
# line starting with '!' is sent as a system command. not sure what
|
|
@@ -79,25 +82,40 @@ class MatlabLexer(RegexLexer):
|
|
|
79
82
|
(r'^!.*', String.Other),
|
|
80
83
|
(r'%\{\s*\n', Comment.Multiline, 'blockcomment'),
|
|
81
84
|
(r'%.*$', Comment),
|
|
82
|
-
(r'^\s*function', Keyword, 'deffunc'),
|
|
83
|
-
|
|
84
|
-
# from 'iskeyword' on version
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
(r'^\s*function\b', Keyword, 'deffunc'),
|
|
86
|
+
|
|
87
|
+
# from 'iskeyword' on version 9.4 (R2018a):
|
|
88
|
+
# Check that there is no preceding dot, as keywords are valid field
|
|
89
|
+
# names.
|
|
90
|
+
(words(('break', 'case', 'catch', 'classdef', 'continue', 'else',
|
|
91
|
+
'elseif', 'end', 'for', 'function',
|
|
92
|
+
'global', 'if', 'otherwise', 'parfor',
|
|
93
|
+
'persistent', 'return', 'spmd', 'switch',
|
|
94
|
+
'try', 'while'),
|
|
95
|
+
prefix=r'(?<!\.)', suffix=r'\b'),
|
|
90
96
|
Keyword),
|
|
91
97
|
|
|
92
98
|
("(" + "|".join(elfun + specfun + elmat) + r')\b', Name.Builtin),
|
|
93
99
|
|
|
94
100
|
# line continuation with following comment:
|
|
95
|
-
(r'
|
|
101
|
+
(r'(\.\.\.)(.*)$', bygroups(Keyword, Comment)),
|
|
102
|
+
|
|
103
|
+
# command form:
|
|
104
|
+
# "How MATLAB Recognizes Command Syntax" specifies that an operator
|
|
105
|
+
# is recognized if it is either surrounded by spaces or by no
|
|
106
|
+
# spaces on both sides; only the former case matters for us. (This
|
|
107
|
+
# allows distinguishing `cd ./foo` from `cd ./ foo`.)
|
|
108
|
+
(r'(?:^|(?<=;))(\s*)(\w+)(\s+)(?!=|\(|(?:%s)\s+)' % _operators,
|
|
109
|
+
bygroups(Text, Name, Text), 'commandargs'),
|
|
96
110
|
|
|
97
111
|
# operators:
|
|
98
|
-
(
|
|
99
|
-
|
|
100
|
-
(
|
|
112
|
+
(_operators, Operator),
|
|
113
|
+
|
|
114
|
+
# numbers (must come before punctuation to handle `.5`; cannot use
|
|
115
|
+
# `\b` due to e.g. `5. + .5`).
|
|
116
|
+
(r'(?<!\w)((\d+\.\d*)|(\d*\.\d+))([eEf][+-]?\d+)?(?!\w)', Number.Float),
|
|
117
|
+
(r'\b\d+[eEf][+-]?[0-9]+\b', Number.Float),
|
|
118
|
+
(r'\b\d+\b', Number.Integer),
|
|
101
119
|
|
|
102
120
|
# punctuation:
|
|
103
121
|
(r'\[|\]|\(|\)|\{|\}|:|@|\.|,', Punctuation),
|
|
@@ -107,17 +125,12 @@ class MatlabLexer(RegexLexer):
|
|
|
107
125
|
# (not great, but handles common cases...)
|
|
108
126
|
(r'(?<=[\w)\].])\'+', Operator),
|
|
109
127
|
|
|
110
|
-
(r'(
|
|
111
|
-
(r'\d+[eEf][+-]?[0-9]+', Number.Float),
|
|
112
|
-
(r'\d+', Number.Integer),
|
|
128
|
+
(r'"(""|[^"])*"', String),
|
|
113
129
|
|
|
114
130
|
(r'(?<![\w)\].])\'', String, 'string'),
|
|
115
131
|
(r'[a-zA-Z_]\w*', Name),
|
|
116
132
|
(r'.', Text),
|
|
117
133
|
],
|
|
118
|
-
'string': [
|
|
119
|
-
(r'[^\']*\'', String, '#pop')
|
|
120
|
-
],
|
|
121
134
|
'blockcomment': [
|
|
122
135
|
(r'^\s*%\}', Comment.Multiline, '#pop'),
|
|
123
136
|
(r'^.*\n', Comment.Multiline),
|
|
@@ -131,12 +144,36 @@ class MatlabLexer(RegexLexer):
|
|
|
131
144
|
# function with no args
|
|
132
145
|
(r'(\s*)([a-zA-Z_]\w*)', bygroups(Text, Name.Function), '#pop'),
|
|
133
146
|
],
|
|
147
|
+
'string': [
|
|
148
|
+
(r"[^']*'", String, '#pop'),
|
|
149
|
+
],
|
|
150
|
+
'commandargs': [
|
|
151
|
+
# If an equal sign or other operator is encountered, this
|
|
152
|
+
# isn't a command. It might be a variable assignment or
|
|
153
|
+
# comparison operation with multiple spaces before the
|
|
154
|
+
# equal sign or operator
|
|
155
|
+
(r"=", Punctuation, '#pop'),
|
|
156
|
+
(_operators, Operator, '#pop'),
|
|
157
|
+
(r"[ \t]+", Text),
|
|
158
|
+
("'[^']*'", String),
|
|
159
|
+
(r"[^';\s]+", String),
|
|
160
|
+
(";", Punctuation, '#pop'),
|
|
161
|
+
default('#pop'),
|
|
162
|
+
]
|
|
134
163
|
}
|
|
135
164
|
|
|
136
165
|
def analyse_text(text):
|
|
137
|
-
|
|
166
|
+
# function declaration.
|
|
167
|
+
first_non_comment = next((line for line in text.splitlines()
|
|
168
|
+
if not re.match(r'^\s*%', text)), '').strip()
|
|
169
|
+
if (first_non_comment.startswith('function')
|
|
170
|
+
and '{' not in first_non_comment):
|
|
171
|
+
return 1.
|
|
172
|
+
# comment
|
|
173
|
+
elif re.search(r'^\s*%', text, re.M):
|
|
138
174
|
return 0.2
|
|
139
|
-
|
|
175
|
+
# system cmd
|
|
176
|
+
elif re.search(r'^!\w+', text, re.M):
|
|
140
177
|
return 0.2
|
|
141
178
|
|
|
142
179
|
|
|
@@ -158,6 +195,7 @@ class MatlabSessionLexer(Lexer):
|
|
|
158
195
|
|
|
159
196
|
curcode = ''
|
|
160
197
|
insertions = []
|
|
198
|
+
continuation = False
|
|
161
199
|
|
|
162
200
|
for match in line_re.finditer(text):
|
|
163
201
|
line = match.group()
|
|
@@ -180,21 +218,36 @@ class MatlabSessionLexer(Lexer):
|
|
|
180
218
|
# line = "\n" + line
|
|
181
219
|
token = (0, Generic.Traceback, line)
|
|
182
220
|
insertions.append((idx, [token]))
|
|
183
|
-
|
|
221
|
+
elif continuation:
|
|
222
|
+
# line_start is the length of the most recent prompt symbol
|
|
223
|
+
line_start = len(insertions[-1][-1][-1])
|
|
224
|
+
# Set leading spaces with the length of the prompt to be a generic prompt
|
|
225
|
+
# This keeps code aligned when prompts are removed, say with some Javascript
|
|
226
|
+
if line.startswith(' '*line_start):
|
|
227
|
+
insertions.append((len(curcode),
|
|
228
|
+
[(0, Generic.Prompt, line[:line_start])]))
|
|
229
|
+
curcode += line[line_start:]
|
|
230
|
+
else:
|
|
231
|
+
curcode += line
|
|
184
232
|
else:
|
|
185
233
|
if curcode:
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
yield item
|
|
234
|
+
yield from do_insertions(
|
|
235
|
+
insertions, mlexer.get_tokens_unprocessed(curcode))
|
|
189
236
|
curcode = ''
|
|
190
237
|
insertions = []
|
|
191
238
|
|
|
192
239
|
yield match.start(), Generic.Output, line
|
|
193
240
|
|
|
241
|
+
# Does not allow continuation if a comment is included after the ellipses.
|
|
242
|
+
# Continues any line that ends with ..., even comments (lines that start with %)
|
|
243
|
+
if line.strip().endswith('...'):
|
|
244
|
+
continuation = True
|
|
245
|
+
else:
|
|
246
|
+
continuation = False
|
|
247
|
+
|
|
194
248
|
if curcode: # or item:
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
yield item
|
|
249
|
+
yield from do_insertions(
|
|
250
|
+
insertions, mlexer.get_tokens_unprocessed(curcode))
|
|
198
251
|
|
|
199
252
|
|
|
200
253
|
class OctaveLexer(RegexLexer):
|
|
@@ -536,7 +589,7 @@ class OctaveLexer(RegexLexer):
|
|
|
536
589
|
'root': [
|
|
537
590
|
# We should look into multiline comments
|
|
538
591
|
(r'[%#].*$', Comment),
|
|
539
|
-
(r'^\s*function', Keyword, 'deffunc'),
|
|
592
|
+
(r'^\s*function\b', Keyword, 'deffunc'),
|
|
540
593
|
|
|
541
594
|
# from 'iskeyword' on hg changeset 8cc154f45e37
|
|
542
595
|
(words((
|
|
@@ -594,6 +647,10 @@ class OctaveLexer(RegexLexer):
|
|
|
594
647
|
],
|
|
595
648
|
}
|
|
596
649
|
|
|
650
|
+
def analyse_text(text):
|
|
651
|
+
"""Octave is quite hard to spot, and it looks like Matlab as well."""
|
|
652
|
+
return 0
|
|
653
|
+
|
|
597
654
|
|
|
598
655
|
class ScilabLexer(RegexLexer):
|
|
599
656
|
"""
|
|
@@ -609,7 +666,7 @@ class ScilabLexer(RegexLexer):
|
|
|
609
666
|
tokens = {
|
|
610
667
|
'root': [
|
|
611
668
|
(r'//.*?$', Comment.Single),
|
|
612
|
-
(r'^\s*function', Keyword, 'deffunc'),
|
|
669
|
+
(r'^\s*function\b', Keyword, 'deffunc'),
|
|
613
670
|
|
|
614
671
|
(words((
|
|
615
672
|
'__FILE__', '__LINE__', 'break', 'case', 'catch', 'classdef', 'continue', 'do', 'else',
|