pygments.rb 2.3.1 → 2.4.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 +4 -4
- data/.github/workflows/ci.yml +1 -1
- data/.rubocop.yml +7 -0
- data/CHANGELOG.adoc +4 -0
- data/README.adoc +1 -1
- data/bench.rb +1 -1
- data/lib/pygments/popen.rb +3 -7
- data/lib/pygments/version.rb +1 -1
- data/pygments.rb.gemspec +2 -2
- data/test/test_pygments.rb +0 -19
- data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/AUTHORS +21 -1
- data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/LICENSE +1 -1
- data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/METADATA +19 -11
- data/vendor/pygments-main/Pygments-2.15.1.dist-info/RECORD +614 -0
- data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/WHEEL +1 -1
- data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/entry_points.txt +0 -1
- data/vendor/pygments-main/bin/pygmentize +1 -1
- data/vendor/pygments-main/pygments/__init__.py +20 -22
- data/vendor/pygments-main/pygments/__main__.py +1 -1
- data/vendor/pygments-main/pygments/cmdline.py +74 -8
- data/vendor/pygments-main/pygments/console.py +1 -1
- data/vendor/pygments-main/pygments/filter.py +1 -1
- data/vendor/pygments-main/pygments/filters/__init__.py +6 -3
- data/vendor/pygments-main/pygments/formatter.py +41 -11
- data/vendor/pygments-main/pygments/formatters/__init__.py +21 -16
- data/vendor/pygments-main/pygments/formatters/_mapping.py +5 -65
- data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
- data/vendor/pygments-main/pygments/formatters/groff.py +170 -0
- data/vendor/pygments-main/pygments/formatters/html.py +54 -32
- data/vendor/pygments-main/pygments/formatters/img.py +9 -5
- data/vendor/pygments-main/pygments/formatters/irc.py +6 -33
- data/vendor/pygments-main/pygments/formatters/latex.py +24 -14
- data/vendor/pygments-main/pygments/formatters/other.py +1 -1
- data/vendor/pygments-main/pygments/formatters/pangomarkup.py +1 -1
- data/vendor/pygments-main/pygments/formatters/rtf.py +1 -1
- data/vendor/pygments-main/pygments/formatters/svg.py +1 -1
- data/vendor/pygments-main/pygments/formatters/terminal.py +1 -3
- data/vendor/pygments-main/pygments/formatters/terminal256.py +2 -4
- data/vendor/pygments-main/pygments/lexer.py +101 -32
- data/vendor/pygments-main/pygments/lexers/__init__.py +50 -29
- data/vendor/pygments-main/pygments/lexers/_ada_builtins.py +103 -0
- data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +2 -2
- data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +21 -6
- data/vendor/pygments-main/pygments/lexers/_css_builtins.py +558 -0
- data/vendor/pygments-main/pygments/lexers/_julia_builtins.py +10 -0
- data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_lilypond_builtins.py +4932 -0
- data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +11 -18
- data/vendor/pygments-main/pygments/lexers/_mapping.py +71 -82
- data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +58 -4
- data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_php_builtins.py +408 -1835
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +70 -8
- data/vendor/pygments-main/pygments/lexers/_qlik_builtins.py +666 -0
- data/vendor/pygments-main/pygments/lexers/_scheme_builtins.py +1609 -0
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3 -3
- data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +9 -18
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +185 -94
- data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/actionscript.py +15 -14
- data/vendor/pygments-main/pygments/lexers/ada.py +144 -0
- data/vendor/pygments-main/pygments/lexers/agile.py +1 -1
- data/vendor/pygments-main/pygments/lexers/algebra.py +72 -9
- data/vendor/pygments-main/pygments/lexers/ambient.py +8 -7
- data/vendor/pygments-main/pygments/lexers/amdgpu.py +4 -3
- data/vendor/pygments-main/pygments/lexers/ampl.py +10 -8
- data/vendor/pygments-main/pygments/lexers/apdlexer.py +164 -20
- data/vendor/pygments-main/pygments/lexers/apl.py +6 -5
- data/vendor/pygments-main/pygments/lexers/archetype.py +23 -21
- data/vendor/pygments-main/pygments/lexers/arrow.py +10 -9
- data/vendor/pygments-main/pygments/lexers/arturo.py +250 -0
- data/vendor/pygments-main/pygments/lexers/asc.py +9 -5
- data/vendor/pygments-main/pygments/lexers/asm.py +68 -63
- data/vendor/pygments-main/pygments/lexers/automation.py +7 -5
- data/vendor/pygments-main/pygments/lexers/bare.py +20 -21
- data/vendor/pygments-main/pygments/lexers/basic.py +45 -41
- data/vendor/pygments-main/pygments/lexers/bdd.py +58 -0
- data/vendor/pygments-main/pygments/lexers/berry.py +99 -0
- data/vendor/pygments-main/pygments/lexers/bibtex.py +6 -6
- data/vendor/pygments-main/pygments/lexers/boa.py +4 -8
- data/vendor/pygments-main/pygments/lexers/business.py +18 -18
- data/vendor/pygments-main/pygments/lexers/c_cpp.py +80 -40
- data/vendor/pygments-main/pygments/lexers/c_like.py +21 -19
- data/vendor/pygments-main/pygments/lexers/capnproto.py +6 -8
- data/vendor/pygments-main/pygments/lexers/carbon.py +96 -0
- data/vendor/pygments-main/pygments/lexers/cddl.py +16 -33
- data/vendor/pygments-main/pygments/lexers/chapel.py +14 -9
- data/vendor/pygments-main/pygments/lexers/clean.py +3 -2
- data/vendor/pygments-main/pygments/lexers/comal.py +80 -0
- data/vendor/pygments-main/pygments/lexers/compiled.py +3 -2
- data/vendor/pygments-main/pygments/lexers/configs.py +235 -120
- data/vendor/pygments-main/pygments/lexers/console.py +5 -4
- data/vendor/pygments-main/pygments/lexers/cplint.py +44 -0
- data/vendor/pygments-main/pygments/lexers/crystal.py +22 -23
- data/vendor/pygments-main/pygments/lexers/csound.py +19 -17
- data/vendor/pygments-main/pygments/lexers/css.py +67 -159
- data/vendor/pygments-main/pygments/lexers/d.py +15 -12
- data/vendor/pygments-main/pygments/lexers/dalvik.py +14 -11
- data/vendor/pygments-main/pygments/lexers/data.py +119 -49
- data/vendor/pygments-main/pygments/lexers/dax.py +136 -0
- data/vendor/pygments-main/pygments/lexers/devicetree.py +9 -8
- data/vendor/pygments-main/pygments/lexers/diff.py +23 -19
- data/vendor/pygments-main/pygments/lexers/dotnet.py +216 -81
- data/vendor/pygments-main/pygments/lexers/dsls.py +86 -64
- data/vendor/pygments-main/pygments/lexers/dylan.py +16 -15
- data/vendor/pygments-main/pygments/lexers/ecl.py +46 -38
- data/vendor/pygments-main/pygments/lexers/eiffel.py +15 -10
- data/vendor/pygments-main/pygments/lexers/elm.py +12 -8
- data/vendor/pygments-main/pygments/lexers/elpi.py +165 -0
- data/vendor/pygments-main/pygments/lexers/email.py +21 -39
- data/vendor/pygments-main/pygments/lexers/erlang.py +21 -22
- data/vendor/pygments-main/pygments/lexers/esoteric.py +28 -30
- data/vendor/pygments-main/pygments/lexers/ezhil.py +10 -9
- data/vendor/pygments-main/pygments/lexers/factor.py +104 -83
- data/vendor/pygments-main/pygments/lexers/fantom.py +31 -29
- data/vendor/pygments-main/pygments/lexers/felix.py +18 -14
- data/vendor/pygments-main/pygments/lexers/fift.py +67 -0
- data/vendor/pygments-main/pygments/lexers/floscript.py +7 -7
- data/vendor/pygments-main/pygments/lexers/forth.py +8 -6
- data/vendor/pygments-main/pygments/lexers/fortran.py +16 -11
- data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -2
- data/vendor/pygments-main/pygments/lexers/freefem.py +7 -10
- data/vendor/pygments-main/pygments/lexers/func.py +108 -0
- data/vendor/pygments-main/pygments/lexers/functional.py +1 -1
- data/vendor/pygments-main/pygments/lexers/futhark.py +12 -17
- data/vendor/pygments-main/pygments/lexers/gcodelexer.py +1 -2
- data/vendor/pygments-main/pygments/lexers/gdscript.py +76 -233
- data/vendor/pygments-main/pygments/lexers/go.py +12 -14
- data/vendor/pygments-main/pygments/lexers/grammar_notation.py +22 -26
- data/vendor/pygments-main/pygments/lexers/graph.py +36 -15
- data/vendor/pygments-main/pygments/lexers/graphics.py +37 -38
- data/vendor/pygments-main/pygments/lexers/graphviz.py +2 -1
- data/vendor/pygments-main/pygments/lexers/gsql.py +39 -27
- data/vendor/pygments-main/pygments/lexers/haskell.py +73 -71
- data/vendor/pygments-main/pygments/lexers/haxe.py +13 -11
- data/vendor/pygments-main/pygments/lexers/hdl.py +31 -34
- data/vendor/pygments-main/pygments/lexers/hexdump.py +21 -21
- data/vendor/pygments-main/pygments/lexers/html.py +11 -19
- data/vendor/pygments-main/pygments/lexers/idl.py +10 -5
- data/vendor/pygments-main/pygments/lexers/igor.py +3 -2
- data/vendor/pygments-main/pygments/lexers/inferno.py +9 -8
- data/vendor/pygments-main/pygments/lexers/installers.py +39 -33
- data/vendor/pygments-main/pygments/lexers/int_fiction.py +35 -20
- data/vendor/pygments-main/pygments/lexers/iolang.py +9 -9
- data/vendor/pygments-main/pygments/lexers/j.py +20 -13
- data/vendor/pygments-main/pygments/lexers/javascript.py +183 -149
- data/vendor/pygments-main/pygments/lexers/jmespath.py +68 -0
- data/vendor/pygments-main/pygments/lexers/jslt.py +4 -3
- data/vendor/pygments-main/pygments/lexers/jsonnet.py +168 -0
- data/vendor/pygments-main/pygments/lexers/julia.py +44 -32
- data/vendor/pygments-main/pygments/lexers/jvm.py +161 -140
- data/vendor/pygments-main/pygments/lexers/kuin.py +93 -59
- data/vendor/pygments-main/pygments/lexers/lilypond.py +226 -0
- data/vendor/pygments-main/pygments/lexers/lisp.py +244 -107
- data/vendor/pygments-main/pygments/lexers/macaulay2.py +1739 -0
- data/vendor/pygments-main/pygments/lexers/make.py +21 -16
- data/vendor/pygments-main/pygments/lexers/markup.py +752 -11
- data/vendor/pygments-main/pygments/lexers/math.py +1 -1
- data/vendor/pygments-main/pygments/lexers/matlab.py +18 -3
- data/vendor/pygments-main/pygments/lexers/maxima.py +85 -0
- data/vendor/pygments-main/pygments/lexers/meson.py +10 -25
- data/vendor/pygments-main/pygments/lexers/mime.py +2 -2
- data/vendor/pygments-main/pygments/lexers/minecraft.py +394 -0
- data/vendor/pygments-main/pygments/lexers/mips.py +128 -0
- data/vendor/pygments-main/pygments/lexers/ml.py +9 -6
- data/vendor/pygments-main/pygments/lexers/modeling.py +12 -8
- data/vendor/pygments-main/pygments/lexers/modula2.py +3 -2
- data/vendor/pygments-main/pygments/lexers/monte.py +3 -2
- data/vendor/pygments-main/pygments/lexers/mosel.py +1 -1
- data/vendor/pygments-main/pygments/lexers/ncl.py +1 -1
- data/vendor/pygments-main/pygments/lexers/nimrod.py +62 -20
- data/vendor/pygments-main/pygments/lexers/nit.py +3 -2
- data/vendor/pygments-main/pygments/lexers/nix.py +5 -5
- data/vendor/pygments-main/pygments/lexers/oberon.py +2 -2
- data/vendor/pygments-main/pygments/lexers/objective.py +6 -4
- data/vendor/pygments-main/pygments/lexers/ooc.py +3 -2
- data/vendor/pygments-main/pygments/lexers/other.py +1 -1
- data/vendor/pygments-main/pygments/lexers/parasail.py +3 -2
- data/vendor/pygments-main/pygments/lexers/parsers.py +23 -21
- data/vendor/pygments-main/pygments/lexers/pascal.py +196 -198
- data/vendor/pygments-main/pygments/lexers/pawn.py +1 -1
- data/vendor/pygments-main/pygments/lexers/perl.py +17 -15
- data/vendor/pygments-main/pygments/lexers/phix.py +364 -0
- data/vendor/pygments-main/pygments/lexers/php.py +35 -20
- data/vendor/pygments-main/pygments/lexers/pointless.py +3 -2
- data/vendor/pygments-main/pygments/lexers/pony.py +1 -1
- data/vendor/pygments-main/pygments/lexers/praat.py +41 -38
- data/vendor/pygments-main/pygments/lexers/procfile.py +2 -3
- data/vendor/pygments-main/pygments/lexers/prolog.py +7 -8
- data/vendor/pygments-main/pygments/lexers/promql.py +5 -12
- data/vendor/pygments-main/pygments/lexers/python.py +145 -119
- data/vendor/pygments-main/pygments/lexers/q.py +188 -0
- data/vendor/pygments-main/pygments/lexers/qlik.py +117 -0
- data/vendor/pygments-main/pygments/lexers/qvt.py +1 -1
- data/vendor/pygments-main/pygments/lexers/r.py +4 -4
- data/vendor/pygments-main/pygments/lexers/rdf.py +3 -3
- data/vendor/pygments-main/pygments/lexers/rebol.py +1 -12
- data/vendor/pygments-main/pygments/lexers/resource.py +1 -1
- data/vendor/pygments-main/pygments/lexers/ride.py +3 -2
- data/vendor/pygments-main/pygments/lexers/rita.py +43 -0
- data/vendor/pygments-main/pygments/lexers/rnc.py +3 -2
- data/vendor/pygments-main/pygments/lexers/roboconf.py +3 -3
- data/vendor/pygments-main/pygments/lexers/robotframework.py +6 -5
- data/vendor/pygments-main/pygments/lexers/ruby.py +24 -24
- data/vendor/pygments-main/pygments/lexers/rust.py +3 -2
- data/vendor/pygments-main/pygments/lexers/sas.py +2 -2
- data/vendor/pygments-main/pygments/lexers/savi.py +170 -0
- data/vendor/pygments-main/pygments/lexers/scdoc.py +4 -7
- data/vendor/pygments-main/pygments/lexers/scripting.py +24 -21
- data/vendor/pygments-main/pygments/lexers/sgf.py +6 -6
- data/vendor/pygments-main/pygments/lexers/shell.py +29 -21
- data/vendor/pygments-main/pygments/lexers/sieve.py +14 -4
- data/vendor/pygments-main/pygments/lexers/slash.py +1 -1
- data/vendor/pygments-main/pygments/lexers/smalltalk.py +5 -3
- data/vendor/pygments-main/pygments/lexers/smithy.py +5 -6
- data/vendor/pygments-main/pygments/lexers/smv.py +1 -1
- data/vendor/pygments-main/pygments/lexers/snobol.py +1 -1
- data/vendor/pygments-main/pygments/lexers/solidity.py +3 -7
- data/vendor/pygments-main/pygments/lexers/sophia.py +103 -0
- data/vendor/pygments-main/pygments/lexers/special.py +2 -5
- data/vendor/pygments-main/pygments/lexers/spice.py +71 -0
- data/vendor/pygments-main/pygments/lexers/sql.py +212 -17
- data/vendor/pygments-main/pygments/lexers/srcinfo.py +62 -0
- data/vendor/pygments-main/pygments/lexers/stata.py +4 -3
- data/vendor/pygments-main/pygments/lexers/supercollider.py +4 -3
- data/vendor/pygments-main/pygments/lexers/tal.py +74 -0
- data/vendor/pygments-main/pygments/lexers/tcl.py +21 -16
- data/vendor/pygments-main/pygments/lexers/teal.py +9 -8
- data/vendor/pygments-main/pygments/lexers/templates.py +62 -29
- data/vendor/pygments-main/pygments/lexers/teraterm.py +12 -20
- data/vendor/pygments-main/pygments/lexers/testing.py +6 -2
- data/vendor/pygments-main/pygments/lexers/text.py +3 -2
- data/vendor/pygments-main/pygments/lexers/textedit.py +41 -7
- data/vendor/pygments-main/pygments/lexers/textfmts.py +7 -5
- data/vendor/pygments-main/pygments/lexers/theorem.py +42 -36
- data/vendor/pygments-main/pygments/lexers/thingsdb.py +2 -4
- data/vendor/pygments-main/pygments/lexers/tlb.py +57 -0
- data/vendor/pygments-main/pygments/lexers/tnt.py +3 -4
- data/vendor/pygments-main/pygments/lexers/trafficscript.py +2 -4
- data/vendor/pygments-main/pygments/lexers/typoscript.py +2 -3
- data/vendor/pygments-main/pygments/lexers/ul4.py +267 -0
- data/vendor/pygments-main/pygments/lexers/unicon.py +1 -1
- data/vendor/pygments-main/pygments/lexers/urbi.py +4 -4
- data/vendor/pygments-main/pygments/lexers/usd.py +2 -1
- data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
- data/vendor/pygments-main/pygments/lexers/verification.py +4 -3
- data/vendor/pygments-main/pygments/lexers/web.py +1 -1
- data/vendor/pygments-main/pygments/lexers/webassembly.py +5 -5
- data/vendor/pygments-main/pygments/lexers/webidl.py +2 -1
- data/vendor/pygments-main/pygments/lexers/webmisc.py +90 -71
- data/vendor/pygments-main/pygments/lexers/wgsl.py +407 -0
- data/vendor/pygments-main/pygments/lexers/whiley.py +2 -1
- data/vendor/pygments-main/pygments/lexers/wowtoc.py +120 -0
- data/vendor/pygments-main/pygments/lexers/wren.py +99 -0
- data/vendor/pygments-main/pygments/lexers/x10.py +5 -6
- data/vendor/pygments-main/pygments/lexers/xorg.py +3 -2
- data/vendor/pygments-main/pygments/lexers/yang.py +6 -5
- data/vendor/pygments-main/pygments/lexers/zig.py +3 -2
- data/vendor/pygments-main/pygments/modeline.py +1 -1
- data/vendor/pygments-main/pygments/plugin.py +28 -9
- 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 +63 -1
- data/vendor/pygments-main/pygments/style.py +7 -1
- data/vendor/pygments-main/pygments/styles/__init__.py +19 -5
- data/vendor/pygments-main/pygments/styles/abap.py +2 -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 -3
- data/vendor/pygments-main/pygments/styles/borland.py +1 -3
- data/vendor/pygments-main/pygments/styles/bw.py +1 -2
- data/vendor/pygments-main/pygments/styles/colorful.py +1 -3
- data/vendor/pygments-main/pygments/styles/default.py +13 -14
- data/vendor/pygments-main/pygments/styles/dracula.py +102 -0
- 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/friendly_grayscale.py +75 -0
- data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
- data/vendor/pygments-main/pygments/styles/gh_dark.py +107 -0
- data/vendor/pygments-main/pygments/styles/gruvbox.py +4 -2
- data/vendor/pygments-main/pygments/styles/igor.py +1 -2
- data/vendor/pygments-main/pygments/styles/inkpot.py +3 -2
- data/vendor/pygments-main/pygments/styles/lilypond.py +56 -0
- data/vendor/pygments-main/pygments/styles/lovelace.py +1 -3
- data/vendor/pygments-main/pygments/styles/manni.py +1 -1
- data/vendor/pygments-main/pygments/styles/material.py +1 -2
- data/vendor/pygments-main/pygments/styles/monokai.py +3 -3
- data/vendor/pygments-main/pygments/styles/murphy.py +1 -3
- data/vendor/pygments-main/pygments/styles/native.py +11 -11
- data/vendor/pygments-main/pygments/styles/nord.py +150 -0
- data/vendor/pygments-main/pygments/styles/onedark.py +59 -0
- data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -6
- data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -6
- data/vendor/pygments-main/pygments/styles/pastie.py +1 -3
- data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
- data/vendor/pygments-main/pygments/styles/rainbow_dash.py +3 -3
- data/vendor/pygments-main/pygments/styles/rrt.py +3 -2
- data/vendor/pygments-main/pygments/styles/sas.py +2 -4
- data/vendor/pygments-main/pygments/styles/solarized.py +1 -1
- data/vendor/pygments-main/pygments/styles/staroffice.py +26 -0
- data/vendor/pygments-main/pygments/styles/stata_dark.py +4 -6
- data/vendor/pygments-main/pygments/styles/stata_light.py +1 -2
- data/vendor/pygments-main/pygments/styles/tango.py +2 -3
- data/vendor/pygments-main/pygments/styles/trac.py +1 -3
- 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 -3
- data/vendor/pygments-main/pygments/styles/zenburn.py +4 -6
- data/vendor/pygments-main/pygments/token.py +2 -1
- data/vendor/pygments-main/pygments/unistring.py +4 -6
- data/vendor/pygments-main/pygments/util.py +27 -5
- metadata +59 -14
- data/vendor/pygments-main/Pygments-2.10.0.dist-info/RECORD +0 -524
- /data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/INSTALLER +0 -0
- /data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/REQUESTED +0 -0
- /data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/top_level.txt +0 -0
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
Lexers for Lispy languages.
|
6
6
|
|
7
|
-
:copyright: Copyright 2006-
|
7
|
+
:copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
|
8
8
|
:license: BSD, see LICENSE for details.
|
9
9
|
"""
|
10
10
|
|
@@ -12,10 +12,12 @@ import re
|
|
12
12
|
|
13
13
|
from pygments.lexer import RegexLexer, include, bygroups, words, default
|
14
14
|
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
|
15
|
-
Number, Punctuation, Literal, Error
|
15
|
+
Number, Punctuation, Literal, Error, Whitespace
|
16
16
|
|
17
17
|
from pygments.lexers.python import PythonLexer
|
18
18
|
|
19
|
+
from pygments.lexers._scheme_builtins import scheme_keywords, scheme_builtins
|
20
|
+
|
19
21
|
__all__ = ['SchemeLexer', 'CommonLispLexer', 'HyLexer', 'RacketLexer',
|
20
22
|
'NewLispLexer', 'EmacsLispLexer', 'ShenLexer', 'CPSALexer',
|
21
23
|
'XtlangLexer', 'FennelLexer']
|
@@ -23,10 +25,7 @@ __all__ = ['SchemeLexer', 'CommonLispLexer', 'HyLexer', 'RacketLexer',
|
|
23
25
|
|
24
26
|
class SchemeLexer(RegexLexer):
|
25
27
|
"""
|
26
|
-
A Scheme lexer
|
27
|
-
needed to highlight scheme code.
|
28
|
-
This lexer could be most probably easily subclassed to parse
|
29
|
-
other LISP-Dialects like Common Lisp, Emacs Lisp or AutoLisp.
|
28
|
+
A Scheme lexer.
|
30
29
|
|
31
30
|
This parser is checked with pastes from the LISP pastebin
|
32
31
|
at http://paste.lisp.org/ to cover as much syntax as possible.
|
@@ -36,119 +35,229 @@ class SchemeLexer(RegexLexer):
|
|
36
35
|
.. versionadded:: 0.6
|
37
36
|
"""
|
38
37
|
name = 'Scheme'
|
38
|
+
url = 'http://www.scheme-reports.org/'
|
39
39
|
aliases = ['scheme', 'scm']
|
40
40
|
filenames = ['*.scm', '*.ss']
|
41
41
|
mimetypes = ['text/x-scheme', 'application/x-scheme']
|
42
42
|
|
43
|
-
|
44
|
-
# syntax file.
|
45
|
-
keywords = (
|
46
|
-
'lambda', 'define', 'if', 'else', 'cond', 'and', 'or', 'case', 'let',
|
47
|
-
'let*', 'letrec', 'begin', 'do', 'delay', 'set!', '=>', 'quote',
|
48
|
-
'quasiquote', 'unquote', 'unquote-splicing', 'define-syntax',
|
49
|
-
'let-syntax', 'letrec-syntax', 'syntax-rules'
|
50
|
-
)
|
51
|
-
builtins = (
|
52
|
-
'*', '+', '-', '/', '<', '<=', '=', '>', '>=', 'abs', 'acos', 'angle',
|
53
|
-
'append', 'apply', 'asin', 'assoc', 'assq', 'assv', 'atan',
|
54
|
-
'boolean?', 'caaaar', 'caaadr', 'caaar', 'caadar', 'caaddr', 'caadr',
|
55
|
-
'caar', 'cadaar', 'cadadr', 'cadar', 'caddar', 'cadddr', 'caddr',
|
56
|
-
'cadr', 'call-with-current-continuation', 'call-with-input-file',
|
57
|
-
'call-with-output-file', 'call-with-values', 'call/cc', 'car',
|
58
|
-
'cdaaar', 'cdaadr', 'cdaar', 'cdadar', 'cdaddr', 'cdadr', 'cdar',
|
59
|
-
'cddaar', 'cddadr', 'cddar', 'cdddar', 'cddddr', 'cdddr', 'cddr',
|
60
|
-
'cdr', 'ceiling', 'char->integer', 'char-alphabetic?', 'char-ci<=?',
|
61
|
-
'char-ci<?', 'char-ci=?', 'char-ci>=?', 'char-ci>?', 'char-downcase',
|
62
|
-
'char-lower-case?', 'char-numeric?', 'char-ready?', 'char-upcase',
|
63
|
-
'char-upper-case?', 'char-whitespace?', 'char<=?', 'char<?', 'char=?',
|
64
|
-
'char>=?', 'char>?', 'char?', 'close-input-port', 'close-output-port',
|
65
|
-
'complex?', 'cons', 'cos', 'current-input-port', 'current-output-port',
|
66
|
-
'denominator', 'display', 'dynamic-wind', 'eof-object?', 'eq?',
|
67
|
-
'equal?', 'eqv?', 'eval', 'even?', 'exact->inexact', 'exact?', 'exp',
|
68
|
-
'expt', 'floor', 'for-each', 'force', 'gcd', 'imag-part',
|
69
|
-
'inexact->exact', 'inexact?', 'input-port?', 'integer->char',
|
70
|
-
'integer?', 'interaction-environment', 'lcm', 'length', 'list',
|
71
|
-
'list->string', 'list->vector', 'list-ref', 'list-tail', 'list?',
|
72
|
-
'load', 'log', 'magnitude', 'make-polar', 'make-rectangular',
|
73
|
-
'make-string', 'make-vector', 'map', 'max', 'member', 'memq', 'memv',
|
74
|
-
'min', 'modulo', 'negative?', 'newline', 'not', 'null-environment',
|
75
|
-
'null?', 'number->string', 'number?', 'numerator', 'odd?',
|
76
|
-
'open-input-file', 'open-output-file', 'output-port?', 'pair?',
|
77
|
-
'peek-char', 'port?', 'positive?', 'procedure?', 'quotient',
|
78
|
-
'rational?', 'rationalize', 'read', 'read-char', 'real-part', 'real?',
|
79
|
-
'remainder', 'reverse', 'round', 'scheme-report-environment',
|
80
|
-
'set-car!', 'set-cdr!', 'sin', 'sqrt', 'string', 'string->list',
|
81
|
-
'string->number', 'string->symbol', 'string-append', 'string-ci<=?',
|
82
|
-
'string-ci<?', 'string-ci=?', 'string-ci>=?', 'string-ci>?',
|
83
|
-
'string-copy', 'string-fill!', 'string-length', 'string-ref',
|
84
|
-
'string-set!', 'string<=?', 'string<?', 'string=?', 'string>=?',
|
85
|
-
'string>?', 'string?', 'substring', 'symbol->string', 'symbol?',
|
86
|
-
'tan', 'transcript-off', 'transcript-on', 'truncate', 'values',
|
87
|
-
'vector', 'vector->list', 'vector-fill!', 'vector-length',
|
88
|
-
'vector-ref', 'vector-set!', 'vector?', 'with-input-from-file',
|
89
|
-
'with-output-to-file', 'write', 'write-char', 'zero?'
|
90
|
-
)
|
43
|
+
flags = re.DOTALL | re.MULTILINE
|
91
44
|
|
92
45
|
# valid names for identifiers
|
93
46
|
# well, names can only not consist fully of numbers
|
94
47
|
# but this should be good enough for now
|
95
48
|
valid_name = r'[\w!$%&*+,/:<=>?@^~|-]+'
|
96
49
|
|
50
|
+
# Use within verbose regexes
|
51
|
+
token_end = r'''
|
52
|
+
(?=
|
53
|
+
\s # whitespace
|
54
|
+
| ; # comment
|
55
|
+
| \#[;|!] # fancy comments
|
56
|
+
| [)\]] # end delimiters
|
57
|
+
| $ # end of file
|
58
|
+
)
|
59
|
+
'''
|
60
|
+
|
61
|
+
# Recognizing builtins.
|
62
|
+
def get_tokens_unprocessed(self, text):
|
63
|
+
for index, token, value in super().get_tokens_unprocessed(text):
|
64
|
+
if token is Name.Function or token is Name.Variable:
|
65
|
+
if value in scheme_keywords:
|
66
|
+
yield index, Keyword, value
|
67
|
+
elif value in scheme_builtins:
|
68
|
+
yield index, Name.Builtin, value
|
69
|
+
else:
|
70
|
+
yield index, token, value
|
71
|
+
else:
|
72
|
+
yield index, token, value
|
73
|
+
|
74
|
+
# Scheme has funky syntactic rules for numbers. These are all
|
75
|
+
# valid number literals: 5.0e55|14, 14/13, -1+5j, +1@5, #b110,
|
76
|
+
# #o#Iinf.0-nan.0i. This is adapted from the formal grammar given
|
77
|
+
# in http://www.r6rs.org/final/r6rs.pdf, section 4.2.1. Take a
|
78
|
+
# deep breath ...
|
79
|
+
|
80
|
+
# It would be simpler if we could just not bother about invalid
|
81
|
+
# numbers like #b35. But we cannot parse 'abcdef' without #x as a
|
82
|
+
# number.
|
83
|
+
|
84
|
+
number_rules = {}
|
85
|
+
for base in (2, 8, 10, 16):
|
86
|
+
if base == 2:
|
87
|
+
digit = r'[01]'
|
88
|
+
radix = r'( \#[bB] )'
|
89
|
+
elif base == 8:
|
90
|
+
digit = r'[0-7]'
|
91
|
+
radix = r'( \#[oO] )'
|
92
|
+
elif base == 10:
|
93
|
+
digit = r'[0-9]'
|
94
|
+
radix = r'( (\#[dD])? )'
|
95
|
+
elif base == 16:
|
96
|
+
digit = r'[0-9a-fA-F]'
|
97
|
+
radix = r'( \#[xX] )'
|
98
|
+
|
99
|
+
# Radix, optional exactness indicator.
|
100
|
+
prefix = rf'''
|
101
|
+
(
|
102
|
+
{radix} (\#[iIeE])?
|
103
|
+
| \#[iIeE] {radix}
|
104
|
+
)
|
105
|
+
'''
|
106
|
+
|
107
|
+
# Simple unsigned number or fraction.
|
108
|
+
ureal = rf'''
|
109
|
+
(
|
110
|
+
{digit}+
|
111
|
+
( / {digit}+ )?
|
112
|
+
)
|
113
|
+
'''
|
114
|
+
|
115
|
+
# Add decimal numbers.
|
116
|
+
if base == 10:
|
117
|
+
decimal = r'''
|
118
|
+
(
|
119
|
+
# Decimal part
|
120
|
+
(
|
121
|
+
[0-9]+ ([.][0-9]*)?
|
122
|
+
| [.][0-9]+
|
123
|
+
)
|
124
|
+
|
125
|
+
# Optional exponent
|
126
|
+
(
|
127
|
+
[eEsSfFdDlL] [+-]? [0-9]+
|
128
|
+
)?
|
129
|
+
|
130
|
+
# Optional mantissa width
|
131
|
+
(
|
132
|
+
\|[0-9]+
|
133
|
+
)?
|
134
|
+
)
|
135
|
+
'''
|
136
|
+
ureal = rf'''
|
137
|
+
(
|
138
|
+
{decimal} (?!/)
|
139
|
+
| {ureal}
|
140
|
+
)
|
141
|
+
'''
|
142
|
+
|
143
|
+
naninf = r'(nan.0|inf.0)'
|
144
|
+
|
145
|
+
real = rf'''
|
146
|
+
(
|
147
|
+
[+-] {naninf} # Sign mandatory
|
148
|
+
| [+-]? {ureal} # Sign optional
|
149
|
+
)
|
150
|
+
'''
|
151
|
+
|
152
|
+
complex_ = rf'''
|
153
|
+
(
|
154
|
+
{real}? [+-] ({naninf}|{ureal})? i
|
155
|
+
| {real} (@ {real})?
|
156
|
+
|
157
|
+
)
|
158
|
+
'''
|
159
|
+
|
160
|
+
num = rf'''(?x)
|
161
|
+
(
|
162
|
+
{prefix}
|
163
|
+
{complex_}
|
164
|
+
)
|
165
|
+
# Need to ensure we have a full token. 1+ is not a
|
166
|
+
# number followed by something else, but a function
|
167
|
+
# name.
|
168
|
+
{token_end}
|
169
|
+
'''
|
170
|
+
|
171
|
+
number_rules[base] = num
|
172
|
+
|
173
|
+
# If you have a headache now, say thanks to RnRS editors.
|
174
|
+
|
175
|
+
# Doing it this way is simpler than splitting the number(10)
|
176
|
+
# regex in a floating-point and a no-floating-point version.
|
177
|
+
def decimal_cb(self, match):
|
178
|
+
if '.' in match.group():
|
179
|
+
token_type = Number.Float # includes [+-](inf|nan).0
|
180
|
+
else:
|
181
|
+
token_type = Number.Integer
|
182
|
+
yield match.start(), token_type, match.group()
|
183
|
+
|
184
|
+
# --
|
185
|
+
|
186
|
+
# The 'scheme-root' state parses as many expressions as needed, always
|
187
|
+
# delegating to the 'scheme-value' state. The latter parses one complete
|
188
|
+
# expression and immediately pops back. This is needed for the LilyPondLexer.
|
189
|
+
# When LilyPond encounters a #, it starts parsing embedded Scheme code, and
|
190
|
+
# returns to normal syntax after one expression. We implement this
|
191
|
+
# by letting the LilyPondLexer subclass the SchemeLexer. When it finds
|
192
|
+
# the #, the LilyPondLexer goes to the 'value' state, which then pops back
|
193
|
+
# to LilyPondLexer. The 'root' state of the SchemeLexer merely delegates the
|
194
|
+
# work to 'scheme-root'; this is so that LilyPondLexer can inherit
|
195
|
+
# 'scheme-root' and redefine 'root'.
|
196
|
+
|
97
197
|
tokens = {
|
98
198
|
'root': [
|
199
|
+
default('scheme-root'),
|
200
|
+
],
|
201
|
+
'scheme-root': [
|
202
|
+
default('value'),
|
203
|
+
],
|
204
|
+
'value': [
|
99
205
|
# the comments
|
100
206
|
# and going to the end of the line
|
101
|
-
(r'
|
207
|
+
(r';.*?$', Comment.Single),
|
102
208
|
# multi-line comment
|
103
209
|
(r'#\|', Comment.Multiline, 'multiline-comment'),
|
104
|
-
# commented form (entire sexpr
|
105
|
-
(r'
|
210
|
+
# commented form (entire sexpr following)
|
211
|
+
(r'#;[([]', Comment, 'commented-form'),
|
212
|
+
# commented datum
|
213
|
+
(r'#;', Comment, 'commented-datum'),
|
106
214
|
# signifies that the program text that follows is written with the
|
107
215
|
# lexical and datum syntax described in r6rs
|
108
216
|
(r'#!r6rs', Comment),
|
109
217
|
|
110
218
|
# whitespaces - usually not relevant
|
111
|
-
(r'\s+',
|
219
|
+
(r'\s+', Whitespace),
|
112
220
|
|
113
221
|
# numbers
|
114
|
-
(
|
115
|
-
(
|
116
|
-
|
117
|
-
|
118
|
-
# (r'(#e|#i|#b|#o|#d|#x)[\d.]+', Number),
|
222
|
+
(number_rules[2], Number.Bin, '#pop'),
|
223
|
+
(number_rules[8], Number.Oct, '#pop'),
|
224
|
+
(number_rules[10], decimal_cb, '#pop'),
|
225
|
+
(number_rules[16], Number.Hex, '#pop'),
|
119
226
|
|
120
|
-
# strings, symbols and characters
|
121
|
-
(r'"
|
122
|
-
(r"'" + valid_name, String.Symbol),
|
123
|
-
(r
|
227
|
+
# strings, symbols, keywords and characters
|
228
|
+
(r'"', String, 'string'),
|
229
|
+
(r"'" + valid_name, String.Symbol, "#pop"),
|
230
|
+
(r'#:' + valid_name, Keyword.Declaration, '#pop'),
|
231
|
+
(r"#\\([()/'\"._!§$%& ?=+-]|[a-zA-Z0-9]+)", String.Char, "#pop"),
|
124
232
|
|
125
233
|
# constants
|
126
|
-
(r'(#t|#f)', Name.Constant),
|
234
|
+
(r'(#t|#f)', Name.Constant, '#pop'),
|
127
235
|
|
128
236
|
# special operators
|
129
237
|
(r"('|#|`|,@|,|\.)", Operator),
|
130
238
|
|
131
|
-
# highlight the keywords
|
132
|
-
('(%s)' % '|'.join(re.escape(entry) + ' ' for entry in keywords),
|
133
|
-
Keyword),
|
134
|
-
|
135
239
|
# first variable in a quoted string like
|
136
240
|
# '(this is syntactic sugar)
|
137
|
-
(r"(?<='\()" + valid_name, Name.Variable),
|
138
|
-
(r"(?<=#\()" + valid_name, Name.Variable),
|
241
|
+
(r"(?<='\()" + valid_name, Name.Variable, '#pop'),
|
242
|
+
(r"(?<=#\()" + valid_name, Name.Variable, '#pop'),
|
139
243
|
|
140
|
-
#
|
141
|
-
|
142
|
-
|
244
|
+
# Functions -- note that this also catches variables
|
245
|
+
# defined in let/let*, but there is little that can
|
246
|
+
# be done about it.
|
247
|
+
(r'(?<=\()' + valid_name, Name.Function, '#pop'),
|
143
248
|
|
144
|
-
# the remaining functions
|
145
|
-
(r'(?<=\()' + valid_name, Name.Function),
|
146
249
|
# find the remaining variables
|
147
|
-
(valid_name, Name.Variable),
|
250
|
+
(valid_name, Name.Variable, '#pop'),
|
148
251
|
|
149
252
|
# the famous parentheses!
|
150
|
-
|
151
|
-
|
253
|
+
|
254
|
+
# Push scheme-root to enter a state that will parse as many things
|
255
|
+
# as needed in the parentheses.
|
256
|
+
(r'[([]', Punctuation, 'scheme-root'),
|
257
|
+
# Pop one 'value', one 'scheme-root', and yet another 'value', so
|
258
|
+
# we get back to a state parsing expressions as needed in the
|
259
|
+
# enclosing context.
|
260
|
+
(r'[)\]]', Punctuation, '#pop:3'),
|
152
261
|
],
|
153
262
|
'multiline-comment': [
|
154
263
|
(r'#\|', Comment.Multiline, '#push'),
|
@@ -157,10 +266,30 @@ class SchemeLexer(RegexLexer):
|
|
157
266
|
(r'[|#]', Comment.Multiline),
|
158
267
|
],
|
159
268
|
'commented-form': [
|
160
|
-
(r'
|
161
|
-
(r'\
|
162
|
-
(r'[^()]+', Comment),
|
269
|
+
(r'[([]', Comment, '#push'),
|
270
|
+
(r'[)\]]', Comment, '#pop'),
|
271
|
+
(r'[^()[\]]+', Comment),
|
272
|
+
],
|
273
|
+
'commented-datum': [
|
274
|
+
(rf'(?x).*?{token_end}', Comment, '#pop'),
|
163
275
|
],
|
276
|
+
'string': [
|
277
|
+
# Pops back from 'string', and pops 'value' as well.
|
278
|
+
('"', String, '#pop:2'),
|
279
|
+
# Hex escape sequences, R6RS-style.
|
280
|
+
(r'\\x[0-9a-fA-F]+;', String.Escape),
|
281
|
+
# We try R6RS style first, but fall back to Guile-style.
|
282
|
+
(r'\\x[0-9a-fA-F]{2}', String.Escape),
|
283
|
+
# Other special escape sequences implemented by Guile.
|
284
|
+
(r'\\u[0-9a-fA-F]{4}', String.Escape),
|
285
|
+
(r'\\U[0-9a-fA-F]{6}', String.Escape),
|
286
|
+
# Escape sequences are not overly standardized. Recognizing
|
287
|
+
# a single character after the backslash should be good enough.
|
288
|
+
# NB: we have DOTALL.
|
289
|
+
(r'\\.', String.Escape),
|
290
|
+
# The rest
|
291
|
+
(r'[^\\"]+', String),
|
292
|
+
]
|
164
293
|
}
|
165
294
|
|
166
295
|
|
@@ -171,6 +300,7 @@ class CommonLispLexer(RegexLexer):
|
|
171
300
|
.. versionadded:: 0.9
|
172
301
|
"""
|
173
302
|
name = 'Common Lisp'
|
303
|
+
url = 'https://lisp-lang.org/'
|
174
304
|
aliases = ['common-lisp', 'cl', 'lisp']
|
175
305
|
filenames = ['*.cl', '*.lisp']
|
176
306
|
mimetypes = ['text/x-common-lisp']
|
@@ -245,7 +375,7 @@ class CommonLispLexer(RegexLexer):
|
|
245
375
|
],
|
246
376
|
'body': [
|
247
377
|
# whitespace
|
248
|
-
(r'\s+',
|
378
|
+
(r'\s+', Whitespace),
|
249
379
|
|
250
380
|
# single-line comment
|
251
381
|
(r';.*$', Comment.Single),
|
@@ -344,11 +474,12 @@ class CommonLispLexer(RegexLexer):
|
|
344
474
|
|
345
475
|
class HyLexer(RegexLexer):
|
346
476
|
"""
|
347
|
-
Lexer for
|
477
|
+
Lexer for Hy source code.
|
348
478
|
|
349
479
|
.. versionadded:: 2.0
|
350
480
|
"""
|
351
481
|
name = 'Hy'
|
482
|
+
url = 'http://hylang.org/'
|
352
483
|
aliases = ['hylang']
|
353
484
|
filenames = ['*.hy']
|
354
485
|
mimetypes = ['text/x-hy', 'application/x-hy']
|
@@ -393,7 +524,8 @@ class HyLexer(RegexLexer):
|
|
393
524
|
(r';.*$', Comment.Single),
|
394
525
|
|
395
526
|
# whitespaces - usually not relevant
|
396
|
-
(r'
|
527
|
+
(r',+', Text),
|
528
|
+
(r'\s+', Whitespace),
|
397
529
|
|
398
530
|
# numbers
|
399
531
|
(r'-?\d+\.\d+', Number.Float),
|
@@ -457,13 +589,14 @@ class HyLexer(RegexLexer):
|
|
457
589
|
|
458
590
|
class RacketLexer(RegexLexer):
|
459
591
|
"""
|
460
|
-
Lexer for
|
592
|
+
Lexer for Racket source code (formerly
|
461
593
|
known as PLT Scheme).
|
462
594
|
|
463
595
|
.. versionadded:: 1.6
|
464
596
|
"""
|
465
597
|
|
466
598
|
name = 'Racket'
|
599
|
+
url = 'http://racket-lang.org/'
|
467
600
|
aliases = ['racket', 'rkt']
|
468
601
|
filenames = ['*.rkt', '*.rktd', '*.rktl']
|
469
602
|
mimetypes = ['text/x-racket', 'application/x-racket']
|
@@ -1273,7 +1406,7 @@ class RacketLexer(RegexLexer):
|
|
1273
1406
|
(r'#\|', Comment.Multiline, 'block-comment'),
|
1274
1407
|
|
1275
1408
|
# Whitespaces
|
1276
|
-
(r'(?u)\s+',
|
1409
|
+
(r'(?u)\s+', Whitespace),
|
1277
1410
|
|
1278
1411
|
# Numbers: Keep in mind Racket reader hash prefixes, which
|
1279
1412
|
# can denote the base or the type. These don't map neatly
|
@@ -1322,7 +1455,7 @@ class RacketLexer(RegexLexer):
|
|
1322
1455
|
(r'#(true|false|[tTfF])', Name.Constant, '#pop'),
|
1323
1456
|
|
1324
1457
|
# Keyword argument names (e.g. #:keyword)
|
1325
|
-
(r'
|
1458
|
+
(r'#:%s' % _symbol, Keyword.Declaration, '#pop'),
|
1326
1459
|
|
1327
1460
|
# Reader extensions
|
1328
1461
|
(r'(#lang |#!)(\S+)',
|
@@ -1351,9 +1484,9 @@ class RacketLexer(RegexLexer):
|
|
1351
1484
|
(r'quasiquote(?=[%s])' % _delimiters, Keyword,
|
1352
1485
|
('#pop', 'quasiquoted-datum')),
|
1353
1486
|
(_opening_parenthesis, Punctuation, ('#pop', 'unquoted-list')),
|
1354
|
-
(words(_keywords,
|
1487
|
+
(words(_keywords, suffix='(?=[%s])' % _delimiters),
|
1355
1488
|
Keyword, '#pop'),
|
1356
|
-
(words(_builtins,
|
1489
|
+
(words(_builtins, suffix='(?=[%s])' % _delimiters),
|
1357
1490
|
Name.Builtin, '#pop'),
|
1358
1491
|
(_symbol, Name, '#pop'),
|
1359
1492
|
include('datum*')
|
@@ -1399,17 +1532,18 @@ class RacketLexer(RegexLexer):
|
|
1399
1532
|
|
1400
1533
|
class NewLispLexer(RegexLexer):
|
1401
1534
|
"""
|
1402
|
-
For
|
1535
|
+
For newLISP source code (version 10.3.0).
|
1403
1536
|
|
1404
1537
|
.. versionadded:: 1.5
|
1405
1538
|
"""
|
1406
1539
|
|
1407
1540
|
name = 'NewLisp'
|
1541
|
+
url = 'http://www.newlisp.org/'
|
1408
1542
|
aliases = ['newlisp']
|
1409
1543
|
filenames = ['*.lsp', '*.nl', '*.kif']
|
1410
1544
|
mimetypes = ['text/x-newlisp', 'application/x-newlisp']
|
1411
1545
|
|
1412
|
-
flags = re.IGNORECASE | re.MULTILINE
|
1546
|
+
flags = re.IGNORECASE | re.MULTILINE
|
1413
1547
|
|
1414
1548
|
# list of built-in functions for newLISP version 10.3
|
1415
1549
|
builtins = (
|
@@ -1486,7 +1620,7 @@ class NewLispLexer(RegexLexer):
|
|
1486
1620
|
(r'#.*$', Comment.Single),
|
1487
1621
|
|
1488
1622
|
# whitespace
|
1489
|
-
(r'\s+',
|
1623
|
+
(r'\s+', Whitespace),
|
1490
1624
|
|
1491
1625
|
# strings, symbols and characters
|
1492
1626
|
(r'"(\\\\|\\[^\\]|[^"\\])*"', String),
|
@@ -2098,7 +2232,7 @@ class EmacsLispLexer(RegexLexer):
|
|
2098
2232
|
],
|
2099
2233
|
'body': [
|
2100
2234
|
# whitespace
|
2101
|
-
(r'\s+',
|
2235
|
+
(r'\s+', Whitespace),
|
2102
2236
|
|
2103
2237
|
# single-line comment
|
2104
2238
|
(r';.*$', Comment.Single),
|
@@ -2175,11 +2309,12 @@ class EmacsLispLexer(RegexLexer):
|
|
2175
2309
|
|
2176
2310
|
class ShenLexer(RegexLexer):
|
2177
2311
|
"""
|
2178
|
-
Lexer for
|
2312
|
+
Lexer for Shen source code.
|
2179
2313
|
|
2180
2314
|
.. versionadded:: 2.1
|
2181
2315
|
"""
|
2182
2316
|
name = 'Shen'
|
2317
|
+
url = 'http://shenlanguage.org/'
|
2183
2318
|
aliases = ['shen']
|
2184
2319
|
filenames = ['*.shen']
|
2185
2320
|
mimetypes = ['text/x-shen', 'application/x-shen']
|
@@ -2245,7 +2380,7 @@ class ShenLexer(RegexLexer):
|
|
2245
2380
|
'root': [
|
2246
2381
|
(r'(?s)\\\*.*?\*\\', Comment.Multiline), # \* ... *\
|
2247
2382
|
(r'\\\\.*', Comment.Single), # \\ ...
|
2248
|
-
(r'\s+',
|
2383
|
+
(r'\s+', Whitespace),
|
2249
2384
|
(r'_{5,}', Punctuation),
|
2250
2385
|
(r'={5,}', Punctuation),
|
2251
2386
|
(r'(;|:=|\||--?>|<--?)', Punctuation),
|
@@ -2267,7 +2402,7 @@ class ShenLexer(RegexLexer):
|
|
2267
2402
|
return tokens
|
2268
2403
|
|
2269
2404
|
def _relevant(self, token):
|
2270
|
-
return token not in (Text, Comment.Single, Comment.Multiline)
|
2405
|
+
return token not in (Text, Whitespace, Comment.Single, Comment.Multiline)
|
2271
2406
|
|
2272
2407
|
def _process_declarations(self, tokens):
|
2273
2408
|
opening_paren = False
|
@@ -2337,7 +2472,7 @@ class ShenLexer(RegexLexer):
|
|
2337
2472
|
yield index, token, value
|
2338
2473
|
|
2339
2474
|
|
2340
|
-
class CPSALexer(
|
2475
|
+
class CPSALexer(RegexLexer):
|
2341
2476
|
"""
|
2342
2477
|
A CPSA lexer based on the CPSA language as of version 2.2.12
|
2343
2478
|
|
@@ -2372,7 +2507,7 @@ class CPSALexer(SchemeLexer):
|
|
2372
2507
|
(r';.*$', Comment.Single),
|
2373
2508
|
|
2374
2509
|
# whitespaces - usually not relevant
|
2375
|
-
(r'\s+',
|
2510
|
+
(r'\s+', Whitespace),
|
2376
2511
|
|
2377
2512
|
# numbers
|
2378
2513
|
(r'-?\d+\.\d+', Number.Float),
|
@@ -2416,8 +2551,7 @@ class CPSALexer(SchemeLexer):
|
|
2416
2551
|
|
2417
2552
|
|
2418
2553
|
class XtlangLexer(RegexLexer):
|
2419
|
-
"""An xtlang lexer for the
|
2420
|
-
<http://extempore.moso.com.au>`_.
|
2554
|
+
"""An xtlang lexer for the Extempore programming environment.
|
2421
2555
|
|
2422
2556
|
This is a mixture of Scheme and xtlang, really. Keyword lists are
|
2423
2557
|
taken from the Extempore Emacs mode
|
@@ -2426,6 +2560,7 @@ class XtlangLexer(RegexLexer):
|
|
2426
2560
|
.. versionadded:: 2.2
|
2427
2561
|
"""
|
2428
2562
|
name = 'xtlang'
|
2563
|
+
url = 'http://extempore.moso.com.au'
|
2429
2564
|
aliases = ['extempore']
|
2430
2565
|
filenames = ['*.xtm']
|
2431
2566
|
mimetypes = []
|
@@ -2585,7 +2720,7 @@ class XtlangLexer(RegexLexer):
|
|
2585
2720
|
(r';.*$', Comment.Single),
|
2586
2721
|
|
2587
2722
|
# whitespaces - usually not relevant
|
2588
|
-
(r'\s+',
|
2723
|
+
(r'\s+', Whitespace),
|
2589
2724
|
|
2590
2725
|
# numbers
|
2591
2726
|
(r'-?\d+\.\d+', Number.Float),
|
@@ -2620,7 +2755,7 @@ class XtlangLexer(RegexLexer):
|
|
2620
2755
|
|
2621
2756
|
|
2622
2757
|
class FennelLexer(RegexLexer):
|
2623
|
-
"""A lexer for the
|
2758
|
+
"""A lexer for the Fennel programming language.
|
2624
2759
|
|
2625
2760
|
Fennel compiles to Lua, so all the Lua builtins are recognized as well
|
2626
2761
|
as the special forms that are particular to the Fennel compiler.
|
@@ -2628,6 +2763,7 @@ class FennelLexer(RegexLexer):
|
|
2628
2763
|
.. versionadded:: 2.3
|
2629
2764
|
"""
|
2630
2765
|
name = 'Fennel'
|
2766
|
+
url = 'https://fennel-lang.org'
|
2631
2767
|
aliases = ['fennel', 'fnl']
|
2632
2768
|
filenames = ['*.fnl']
|
2633
2769
|
|
@@ -2666,7 +2802,8 @@ class FennelLexer(RegexLexer):
|
|
2666
2802
|
# the only comment form is a semicolon; goes to the end of the line
|
2667
2803
|
(r';.*$', Comment.Single),
|
2668
2804
|
|
2669
|
-
(r'
|
2805
|
+
(r',+', Text),
|
2806
|
+
(r'\s+', Whitespace),
|
2670
2807
|
(r'-?\d+\.\d+', Number.Float),
|
2671
2808
|
(r'-?\d+', Number.Integer),
|
2672
2809
|
|