pygments.rb 2.3.1 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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,28 +4,43 @@
|
|
4
4
|
|
5
5
|
Lexers for Pascal family 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
|
|
11
11
|
import re
|
12
12
|
|
13
|
-
from pygments.lexer import Lexer
|
14
|
-
using, this, default
|
13
|
+
from pygments.lexer import Lexer
|
15
14
|
from pygments.util import get_bool_opt, get_list_opt
|
16
15
|
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
|
17
|
-
Number, Punctuation, Error
|
16
|
+
Number, Punctuation, Error, Whitespace
|
18
17
|
from pygments.scanner import Scanner
|
19
18
|
|
20
19
|
# compatibility import
|
21
20
|
from pygments.lexers.modula2 import Modula2Lexer
|
22
21
|
|
23
|
-
__all__ = ['DelphiLexer', '
|
22
|
+
__all__ = ['DelphiLexer', 'PortugolLexer']
|
23
|
+
|
24
|
+
|
25
|
+
class PortugolLexer(Lexer):
|
26
|
+
"""For Portugol, a Pascal dialect with keywords in Portuguese."""
|
27
|
+
name = 'Portugol'
|
28
|
+
aliases = ['portugol']
|
29
|
+
filenames = ['*.alg', '*.portugol']
|
30
|
+
mimetypes = []
|
31
|
+
url = "https://www.apoioinformatica.inf.br/produtos/visualg/linguagem"
|
32
|
+
|
33
|
+
def __init__(self, **options):
|
34
|
+
Lexer.__init__(self, **options)
|
35
|
+
self.lexer = DelphiLexer(**options, portugol=True)
|
36
|
+
|
37
|
+
def get_tokens_unprocessed(self, text):
|
38
|
+
return self.lexer.get_tokens_unprocessed(text)
|
24
39
|
|
25
40
|
|
26
41
|
class DelphiLexer(Lexer):
|
27
42
|
"""
|
28
|
-
For
|
43
|
+
For Delphi (Borland Object Pascal),
|
29
44
|
Turbo Pascal and Free Pascal source code.
|
30
45
|
|
31
46
|
Additional options accepted:
|
@@ -297,18 +312,109 @@ class DelphiLexer(Lexer):
|
|
297
312
|
'xlatb', 'xor'
|
298
313
|
}
|
299
314
|
|
315
|
+
PORTUGOL_KEYWORDS = (
|
316
|
+
'aleatorio',
|
317
|
+
'algoritmo',
|
318
|
+
'arquivo',
|
319
|
+
'ate',
|
320
|
+
'caso',
|
321
|
+
'cronometro',
|
322
|
+
'debug',
|
323
|
+
'e',
|
324
|
+
'eco',
|
325
|
+
'enquanto',
|
326
|
+
'entao',
|
327
|
+
'escolha',
|
328
|
+
'escreva',
|
329
|
+
'escreval',
|
330
|
+
'faca',
|
331
|
+
'falso',
|
332
|
+
'fimalgoritmo',
|
333
|
+
'fimenquanto',
|
334
|
+
'fimescolha',
|
335
|
+
'fimfuncao',
|
336
|
+
'fimpara',
|
337
|
+
'fimprocedimento',
|
338
|
+
'fimrepita',
|
339
|
+
'fimse',
|
340
|
+
'funcao',
|
341
|
+
'inicio',
|
342
|
+
'int',
|
343
|
+
'interrompa',
|
344
|
+
'leia',
|
345
|
+
'limpatela',
|
346
|
+
'mod',
|
347
|
+
'nao',
|
348
|
+
'ou',
|
349
|
+
'outrocaso',
|
350
|
+
'para',
|
351
|
+
'passo',
|
352
|
+
'pausa',
|
353
|
+
'procedimento',
|
354
|
+
'repita',
|
355
|
+
'retorne',
|
356
|
+
'se',
|
357
|
+
'senao',
|
358
|
+
'timer',
|
359
|
+
'var',
|
360
|
+
'vetor',
|
361
|
+
'verdadeiro',
|
362
|
+
'xou',
|
363
|
+
'div',
|
364
|
+
'mod',
|
365
|
+
'abs',
|
366
|
+
'arccos',
|
367
|
+
'arcsen',
|
368
|
+
'arctan',
|
369
|
+
'cos',
|
370
|
+
'cotan',
|
371
|
+
'Exp',
|
372
|
+
'grauprad',
|
373
|
+
'int',
|
374
|
+
'log',
|
375
|
+
'logn',
|
376
|
+
'pi',
|
377
|
+
'quad',
|
378
|
+
'radpgrau',
|
379
|
+
'raizq',
|
380
|
+
'rand',
|
381
|
+
'randi',
|
382
|
+
'sen',
|
383
|
+
'Tan',
|
384
|
+
'asc',
|
385
|
+
'carac',
|
386
|
+
'caracpnum',
|
387
|
+
'compr',
|
388
|
+
'copia',
|
389
|
+
'maiusc',
|
390
|
+
'minusc',
|
391
|
+
'numpcarac',
|
392
|
+
'pos',
|
393
|
+
)
|
394
|
+
|
395
|
+
PORTUGOL_BUILTIN_TYPES = {
|
396
|
+
'inteiro', 'real', 'caractere', 'logico'
|
397
|
+
}
|
398
|
+
|
300
399
|
def __init__(self, **options):
|
301
400
|
Lexer.__init__(self, **options)
|
302
401
|
self.keywords = set()
|
303
|
-
if get_bool_opt(options, 'turbopascal', True):
|
304
|
-
self.keywords.update(self.TURBO_PASCAL_KEYWORDS)
|
305
|
-
if get_bool_opt(options, 'delphi', True):
|
306
|
-
self.keywords.update(self.DELPHI_KEYWORDS)
|
307
|
-
if get_bool_opt(options, 'freepascal', True):
|
308
|
-
self.keywords.update(self.FREE_PASCAL_KEYWORDS)
|
309
402
|
self.builtins = set()
|
310
|
-
|
311
|
-
self.
|
403
|
+
if get_bool_opt(options, 'portugol', False):
|
404
|
+
self.keywords.update(self.PORTUGOL_KEYWORDS)
|
405
|
+
self.builtins.update(self.PORTUGOL_BUILTIN_TYPES)
|
406
|
+
self.is_portugol = True
|
407
|
+
else:
|
408
|
+
self.is_portugol = False
|
409
|
+
|
410
|
+
if get_bool_opt(options, 'turbopascal', True):
|
411
|
+
self.keywords.update(self.TURBO_PASCAL_KEYWORDS)
|
412
|
+
if get_bool_opt(options, 'delphi', True):
|
413
|
+
self.keywords.update(self.DELPHI_KEYWORDS)
|
414
|
+
if get_bool_opt(options, 'freepascal', True):
|
415
|
+
self.keywords.update(self.FREE_PASCAL_KEYWORDS)
|
416
|
+
for unit in get_list_opt(options, 'units', list(self.BUILTIN_UNITS)):
|
417
|
+
self.builtins.update(self.BUILTIN_UNITS[unit])
|
312
418
|
|
313
419
|
def get_tokens_unprocessed(self, text):
|
314
420
|
scanner = Scanner(text, re.DOTALL | re.MULTILINE | re.IGNORECASE)
|
@@ -327,15 +433,17 @@ class DelphiLexer(Lexer):
|
|
327
433
|
|
328
434
|
if stack[-1] == 'initial':
|
329
435
|
if scanner.scan(r'\s+'):
|
330
|
-
token =
|
331
|
-
elif scanner.scan(r'\{.*?\}|\(\*.*?\*\)'):
|
436
|
+
token = Whitespace
|
437
|
+
elif not self.is_portugol and scanner.scan(r'\{.*?\}|\(\*.*?\*\)'):
|
332
438
|
if scanner.match.startswith('$'):
|
333
439
|
token = Comment.Preproc
|
334
440
|
else:
|
335
441
|
token = Comment.Multiline
|
336
442
|
elif scanner.scan(r'//.*?$'):
|
337
443
|
token = Comment.Single
|
338
|
-
elif scanner.scan(r'
|
444
|
+
elif self.is_portugol and scanner.scan(r'(<\-)|(>=)|(<=)|%|<|>|-|\+|\*|\=|(<>)|\/|\.|:|,'):
|
445
|
+
token = Operator
|
446
|
+
elif not self.is_portugol and scanner.scan(r'[-+*\/=<>:;,.@\^]'):
|
339
447
|
token = Operator
|
340
448
|
# stop label highlighting on next ";"
|
341
449
|
if collect_labels and scanner.match == ';':
|
@@ -363,37 +471,42 @@ class DelphiLexer(Lexer):
|
|
363
471
|
elif lowercase_name in self.keywords:
|
364
472
|
token = Keyword
|
365
473
|
# if we are in a special block and a
|
366
|
-
# block ending keyword
|
474
|
+
# block ending keyword occurs (and the parenthesis
|
367
475
|
# is balanced) we end the current block context
|
368
|
-
if
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
in_property_block
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
476
|
+
if self.is_portugol:
|
477
|
+
if lowercase_name in ('funcao', 'procedimento'):
|
478
|
+
in_function_block = True
|
479
|
+
next_token_is_function = True
|
480
|
+
else:
|
481
|
+
if (in_function_block or in_property_block) and \
|
482
|
+
lowercase_name in self.BLOCK_KEYWORDS and \
|
483
|
+
brace_balance[0] <= 0 and \
|
484
|
+
brace_balance[1] <= 0:
|
485
|
+
in_function_block = False
|
486
|
+
in_property_block = False
|
487
|
+
brace_balance = [0, 0]
|
488
|
+
block_labels = set()
|
489
|
+
if lowercase_name in ('label', 'goto'):
|
490
|
+
collect_labels = True
|
491
|
+
elif lowercase_name == 'asm':
|
492
|
+
stack.append('asm')
|
493
|
+
elif lowercase_name == 'property':
|
494
|
+
in_property_block = True
|
495
|
+
next_token_is_property = True
|
496
|
+
elif lowercase_name in ('procedure', 'operator',
|
497
|
+
'function', 'constructor',
|
498
|
+
'destructor'):
|
499
|
+
in_function_block = True
|
500
|
+
next_token_is_function = True
|
388
501
|
# we are in a function block and the current name
|
389
502
|
# is in the set of registered modifiers. highlight
|
390
503
|
# it as pseudo keyword
|
391
|
-
elif in_function_block and \
|
504
|
+
elif not self.is_portugol and in_function_block and \
|
392
505
|
lowercase_name in self.FUNCTION_MODIFIERS:
|
393
506
|
token = Keyword.Pseudo
|
394
507
|
# if we are in a property highlight some more
|
395
508
|
# modifiers
|
396
|
-
elif in_property_block and \
|
509
|
+
elif not self.is_portugol and in_property_block and \
|
397
510
|
lowercase_name in ('read', 'write'):
|
398
511
|
token = Keyword.Pseudo
|
399
512
|
next_token_is_function = True
|
@@ -404,40 +517,49 @@ class DelphiLexer(Lexer):
|
|
404
517
|
# Look if the next token is a dot. If yes it's
|
405
518
|
# not a function, but a class name and the
|
406
519
|
# part after the dot a function name
|
407
|
-
if scanner.test(r'\s*\.\s*'):
|
520
|
+
if not self.is_portugol and scanner.test(r'\s*\.\s*'):
|
408
521
|
token = Name.Class
|
409
522
|
# it's not a dot, our job is done
|
410
523
|
else:
|
411
524
|
token = Name.Function
|
412
525
|
next_token_is_function = False
|
526
|
+
|
527
|
+
if self.is_portugol:
|
528
|
+
block_labels.add(scanner.match.lower())
|
529
|
+
|
413
530
|
# same for properties
|
414
|
-
elif next_token_is_property:
|
531
|
+
elif not self.is_portugol and next_token_is_property:
|
415
532
|
token = Name.Property
|
416
533
|
next_token_is_property = False
|
417
534
|
# Highlight this token as label and add it
|
418
535
|
# to the list of known labels
|
419
|
-
elif collect_labels:
|
536
|
+
elif not self.is_portugol and collect_labels:
|
420
537
|
token = Name.Label
|
421
538
|
block_labels.add(scanner.match.lower())
|
422
539
|
# name is in list of known labels
|
423
540
|
elif lowercase_name in block_labels:
|
424
541
|
token = Name.Label
|
425
|
-
elif lowercase_name in self.
|
542
|
+
elif self.is_portugol and lowercase_name in self.PORTUGOL_BUILTIN_TYPES:
|
426
543
|
token = Keyword.Type
|
427
|
-
elif lowercase_name in self.
|
544
|
+
elif not self.is_portugol and lowercase_name in self.BUILTIN_TYPES:
|
545
|
+
token = Keyword.Type
|
546
|
+
elif not self.is_portugol and lowercase_name in self.DIRECTIVES:
|
428
547
|
token = Keyword.Pseudo
|
429
548
|
# builtins are just builtins if the token
|
430
549
|
# before isn't a dot
|
431
|
-
elif not was_dot and lowercase_name in self.builtins:
|
550
|
+
elif not self.is_portugol and not was_dot and lowercase_name in self.builtins:
|
432
551
|
token = Name.Builtin
|
433
552
|
else:
|
434
553
|
token = Name
|
435
|
-
elif scanner.scan(r"
|
554
|
+
elif self.is_portugol and scanner.scan(r"\""):
|
436
555
|
token = String
|
437
556
|
stack.append('string')
|
438
|
-
elif scanner.scan(r'
|
557
|
+
elif not self.is_portugol and scanner.scan(r"'"):
|
558
|
+
token = String
|
559
|
+
stack.append('string')
|
560
|
+
elif not self.is_portugol and scanner.scan(r'\#(\d+|\$[0-9A-Fa-f]+)'):
|
439
561
|
token = String.Char
|
440
|
-
elif scanner.scan(r'\$[0-9A-Fa-f]+'):
|
562
|
+
elif not self.is_portugol and scanner.scan(r'\$[0-9A-Fa-f]+'):
|
441
563
|
token = Number.Hex
|
442
564
|
elif scanner.scan(r'\d+(?![eE]|\.[^.])'):
|
443
565
|
token = Number.Integer
|
@@ -450,20 +572,31 @@ class DelphiLexer(Lexer):
|
|
450
572
|
scanner.get_char()
|
451
573
|
|
452
574
|
elif stack[-1] == 'string':
|
453
|
-
if
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
575
|
+
if self.is_portugol:
|
576
|
+
if scanner.scan(r"''"):
|
577
|
+
token = String.Escape
|
578
|
+
elif scanner.scan(r"\""):
|
579
|
+
token = String
|
580
|
+
stack.pop()
|
581
|
+
elif scanner.scan(r"[^\"]*"):
|
582
|
+
token = String
|
583
|
+
else:
|
584
|
+
scanner.get_char()
|
585
|
+
stack.pop()
|
460
586
|
else:
|
461
|
-
scanner.
|
462
|
-
|
463
|
-
|
464
|
-
|
587
|
+
if scanner.scan(r"''"):
|
588
|
+
token = String.Escape
|
589
|
+
elif scanner.scan(r"'"):
|
590
|
+
token = String
|
591
|
+
stack.pop()
|
592
|
+
elif scanner.scan(r"[^']*"):
|
593
|
+
token = String
|
594
|
+
else:
|
595
|
+
scanner.get_char()
|
596
|
+
stack.pop()
|
597
|
+
elif not self.is_portugol and stack[-1] == 'asm':
|
465
598
|
if scanner.scan(r'\s+'):
|
466
|
-
token =
|
599
|
+
token = Whitespace
|
467
600
|
elif scanner.scan(r'end'):
|
468
601
|
token = Keyword
|
469
602
|
stack.pop()
|
@@ -502,142 +635,7 @@ class DelphiLexer(Lexer):
|
|
502
635
|
stack.pop()
|
503
636
|
|
504
637
|
# save the dot!!!11
|
505
|
-
if scanner.match.strip():
|
638
|
+
if not self.is_portugol and scanner.match.strip():
|
506
639
|
was_dot = scanner.match == '.'
|
507
|
-
yield scanner.start_pos, token, scanner.match or ''
|
508
|
-
|
509
|
-
|
510
|
-
class AdaLexer(RegexLexer):
|
511
|
-
"""
|
512
|
-
For Ada source code.
|
513
|
-
|
514
|
-
.. versionadded:: 1.3
|
515
|
-
"""
|
516
640
|
|
517
|
-
|
518
|
-
aliases = ['ada', 'ada95', 'ada2005']
|
519
|
-
filenames = ['*.adb', '*.ads', '*.ada']
|
520
|
-
mimetypes = ['text/x-ada']
|
521
|
-
|
522
|
-
flags = re.MULTILINE | re.IGNORECASE
|
523
|
-
|
524
|
-
tokens = {
|
525
|
-
'root': [
|
526
|
-
(r'[^\S\n]+', Text),
|
527
|
-
(r'--.*?\n', Comment.Single),
|
528
|
-
(r'[^\S\n]+', Text),
|
529
|
-
(r'function|procedure|entry', Keyword.Declaration, 'subprogram'),
|
530
|
-
(r'(subtype|type)(\s+)(\w+)',
|
531
|
-
bygroups(Keyword.Declaration, Text, Keyword.Type), 'type_def'),
|
532
|
-
(r'task|protected', Keyword.Declaration),
|
533
|
-
(r'(subtype)(\s+)', bygroups(Keyword.Declaration, Text)),
|
534
|
-
(r'(end)(\s+)', bygroups(Keyword.Reserved, Text), 'end'),
|
535
|
-
(r'(pragma)(\s+)(\w+)', bygroups(Keyword.Reserved, Text,
|
536
|
-
Comment.Preproc)),
|
537
|
-
(r'(true|false|null)\b', Keyword.Constant),
|
538
|
-
(words((
|
539
|
-
'Address', 'Byte', 'Boolean', 'Character', 'Controlled', 'Count',
|
540
|
-
'Cursor', 'Duration', 'File_Mode', 'File_Type', 'Float', 'Generator',
|
541
|
-
'Integer', 'Long_Float', 'Long_Integer', 'Long_Long_Float',
|
542
|
-
'Long_Long_Integer', 'Natural', 'Positive', 'Reference_Type',
|
543
|
-
'Short_Float', 'Short_Integer', 'Short_Short_Float',
|
544
|
-
'Short_Short_Integer', 'String', 'Wide_Character', 'Wide_String'),
|
545
|
-
suffix=r'\b'),
|
546
|
-
Keyword.Type),
|
547
|
-
(r'(and(\s+then)?|in|mod|not|or(\s+else)|rem)\b', Operator.Word),
|
548
|
-
(r'generic|private', Keyword.Declaration),
|
549
|
-
(r'package', Keyword.Declaration, 'package'),
|
550
|
-
(r'array\b', Keyword.Reserved, 'array_def'),
|
551
|
-
(r'(with|use)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
|
552
|
-
(r'(\w+)(\s*)(:)(\s*)(constant)',
|
553
|
-
bygroups(Name.Constant, Text, Punctuation, Text,
|
554
|
-
Keyword.Reserved)),
|
555
|
-
(r'<<\w+>>', Name.Label),
|
556
|
-
(r'(\w+)(\s*)(:)(\s*)(declare|begin|loop|for|while)',
|
557
|
-
bygroups(Name.Label, Text, Punctuation, Text, Keyword.Reserved)),
|
558
|
-
(words((
|
559
|
-
'abort', 'abs', 'abstract', 'accept', 'access', 'aliased', 'all',
|
560
|
-
'array', 'at', 'begin', 'body', 'case', 'constant', 'declare',
|
561
|
-
'delay', 'delta', 'digits', 'do', 'else', 'elsif', 'end', 'entry',
|
562
|
-
'exception', 'exit', 'interface', 'for', 'goto', 'if', 'is', 'limited',
|
563
|
-
'loop', 'new', 'null', 'of', 'or', 'others', 'out', 'overriding',
|
564
|
-
'pragma', 'protected', 'raise', 'range', 'record', 'renames', 'requeue',
|
565
|
-
'return', 'reverse', 'select', 'separate', 'some', 'subtype',
|
566
|
-
'synchronized', 'task', 'tagged', 'terminate', 'then', 'type', 'until',
|
567
|
-
'when', 'while', 'xor'), prefix=r'\b', suffix=r'\b'),
|
568
|
-
Keyword.Reserved),
|
569
|
-
(r'"[^"]*"', String),
|
570
|
-
include('attribute'),
|
571
|
-
include('numbers'),
|
572
|
-
(r"'[^']'", String.Character),
|
573
|
-
(r'(\w+)(\s*|[(,])', bygroups(Name, using(this))),
|
574
|
-
(r"(<>|=>|:=|[()|:;,.'])", Punctuation),
|
575
|
-
(r'[*<>+=/&-]', Operator),
|
576
|
-
(r'\n+', Text),
|
577
|
-
],
|
578
|
-
'numbers': [
|
579
|
-
(r'[0-9_]+#[0-9a-f_\.]+#', Number.Hex),
|
580
|
-
(r'[0-9_]+\.[0-9_]*', Number.Float),
|
581
|
-
(r'[0-9_]+', Number.Integer),
|
582
|
-
],
|
583
|
-
'attribute': [
|
584
|
-
(r"(')(\w+)", bygroups(Punctuation, Name.Attribute)),
|
585
|
-
],
|
586
|
-
'subprogram': [
|
587
|
-
(r'\(', Punctuation, ('#pop', 'formal_part')),
|
588
|
-
(r';', Punctuation, '#pop'),
|
589
|
-
(r'is\b', Keyword.Reserved, '#pop'),
|
590
|
-
(r'"[^"]+"|\w+', Name.Function),
|
591
|
-
include('root'),
|
592
|
-
],
|
593
|
-
'end': [
|
594
|
-
('(if|case|record|loop|select)', Keyword.Reserved),
|
595
|
-
(r'"[^"]+"|[\w.]+', Name.Function),
|
596
|
-
(r'\s+', Text),
|
597
|
-
(';', Punctuation, '#pop'),
|
598
|
-
],
|
599
|
-
'type_def': [
|
600
|
-
(r';', Punctuation, '#pop'),
|
601
|
-
(r'\(', Punctuation, 'formal_part'),
|
602
|
-
(r'with|and|use', Keyword.Reserved),
|
603
|
-
(r'array\b', Keyword.Reserved, ('#pop', 'array_def')),
|
604
|
-
(r'record\b', Keyword.Reserved, ('record_def')),
|
605
|
-
(r'(null record)(;)', bygroups(Keyword.Reserved, Punctuation), '#pop'),
|
606
|
-
include('root'),
|
607
|
-
],
|
608
|
-
'array_def': [
|
609
|
-
(r';', Punctuation, '#pop'),
|
610
|
-
(r'(\w+)(\s+)(range)', bygroups(Keyword.Type, Text, Keyword.Reserved)),
|
611
|
-
include('root'),
|
612
|
-
],
|
613
|
-
'record_def': [
|
614
|
-
(r'end record', Keyword.Reserved, '#pop'),
|
615
|
-
include('root'),
|
616
|
-
],
|
617
|
-
'import': [
|
618
|
-
(r'[\w.]+', Name.Namespace, '#pop'),
|
619
|
-
default('#pop'),
|
620
|
-
],
|
621
|
-
'formal_part': [
|
622
|
-
(r'\)', Punctuation, '#pop'),
|
623
|
-
(r'\w+', Name.Variable),
|
624
|
-
(r',|:[^=]', Punctuation),
|
625
|
-
(r'(in|not|null|out|access)\b', Keyword.Reserved),
|
626
|
-
include('root'),
|
627
|
-
],
|
628
|
-
'package': [
|
629
|
-
('body', Keyword.Declaration),
|
630
|
-
(r'is\s+new|renames', Keyword.Reserved),
|
631
|
-
('is', Keyword.Reserved, '#pop'),
|
632
|
-
(';', Punctuation, '#pop'),
|
633
|
-
(r'\(', Punctuation, 'package_instantiation'),
|
634
|
-
(r'([\w.]+)', Name.Class),
|
635
|
-
include('root'),
|
636
|
-
],
|
637
|
-
'package_instantiation': [
|
638
|
-
(r'("[^"]+"|\w+)(\s+)(=>)', bygroups(Name.Variable, Text, Punctuation)),
|
639
|
-
(r'[\w.\'"]', Text),
|
640
|
-
(r'\)', Punctuation, '#pop'),
|
641
|
-
include('root'),
|
642
|
-
],
|
643
|
-
}
|
641
|
+
yield scanner.start_pos, token, scanner.match or ''
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
Lexers for Perl, Raku and related 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
|
|
@@ -13,7 +13,7 @@ import re
|
|
13
13
|
from pygments.lexer import RegexLexer, ExtendedRegexLexer, include, bygroups, \
|
14
14
|
using, this, default, words
|
15
15
|
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
|
16
|
-
Number, Punctuation
|
16
|
+
Number, Punctuation, Whitespace
|
17
17
|
from pygments.util import shebang_matches
|
18
18
|
|
19
19
|
__all__ = ['PerlLexer', 'Perl6Lexer']
|
@@ -21,10 +21,11 @@ __all__ = ['PerlLexer', 'Perl6Lexer']
|
|
21
21
|
|
22
22
|
class PerlLexer(RegexLexer):
|
23
23
|
"""
|
24
|
-
For
|
24
|
+
For Perl source code.
|
25
25
|
"""
|
26
26
|
|
27
27
|
name = 'Perl'
|
28
|
+
url = 'https://www.perl.org'
|
28
29
|
aliases = ['perl', 'pl']
|
29
30
|
filenames = ['*.pl', '*.pm', '*.t', '*.perl']
|
30
31
|
mimetypes = ['text/x-perl', 'application/x-perl']
|
@@ -55,7 +56,7 @@ class PerlLexer(RegexLexer):
|
|
55
56
|
'CHECK', 'INIT', 'END', 'return'), suffix=r'\b'),
|
56
57
|
Keyword),
|
57
58
|
(r'(format)(\s+)(\w+)(\s*)(=)(\s*\n)',
|
58
|
-
bygroups(Keyword,
|
59
|
+
bygroups(Keyword, Whitespace, Name, Whitespace, Punctuation, Whitespace), 'format'),
|
59
60
|
(r'(eq|lt|gt|le|ge|ne|not|and|or|cmp)\b', Operator.Word),
|
60
61
|
# common delimiters
|
61
62
|
(r's/(\\\\|\\[^\\]|[^\\/])*/(\\\\|\\[^\\]|[^\\/])*/[egimosx]*',
|
@@ -78,7 +79,7 @@ class PerlLexer(RegexLexer):
|
|
78
79
|
(r'm(?=[/!\\{<\[(@%$])', String.Regex, 'balanced-regex'),
|
79
80
|
(r'((?<==~)|(?<=\())\s*/(\\\\|\\[^\\]|[^\\/])*/[gcimosx]*',
|
80
81
|
String.Regex),
|
81
|
-
(r'\s+',
|
82
|
+
(r'\s+', Whitespace),
|
82
83
|
(words((
|
83
84
|
'abs', 'accept', 'alarm', 'atan2', 'bind', 'binmode', 'bless', 'caller', 'chdir',
|
84
85
|
'chmod', 'chomp', 'chop', 'chown', 'chr', 'chroot', 'close', 'closedir', 'connect',
|
@@ -109,7 +110,7 @@ class PerlLexer(RegexLexer):
|
|
109
110
|
Name.Builtin),
|
110
111
|
(r'((__(DATA|DIE|WARN)__)|(STD(IN|OUT|ERR)))\b', Name.Builtin.Pseudo),
|
111
112
|
(r'(<<)([\'"]?)([a-zA-Z_]\w*)(\2;?\n.*?\n)(\3)(\n)',
|
112
|
-
bygroups(String, String, String.Delimiter, String, String.Delimiter,
|
113
|
+
bygroups(String, String, String.Delimiter, String, String.Delimiter, Whitespace)),
|
113
114
|
(r'__END__', Comment.Preproc, 'end-part'),
|
114
115
|
(r'\$\^[ADEFHILMOPSTWX]', Name.Variable.Global),
|
115
116
|
(r"\$[\\\"\[\]'&`+*.,;=%~?@$!<>(^|/-](?!\w)", Name.Variable.Global),
|
@@ -131,10 +132,10 @@ class PerlLexer(RegexLexer):
|
|
131
132
|
(r'(q|qq|qw|qr|qx)\<', String.Other, 'lt-string'),
|
132
133
|
(r'(q|qq|qw|qr|qx)([\W_])(.|\n)*?\2', String.Other),
|
133
134
|
(r'(package)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)',
|
134
|
-
bygroups(Keyword,
|
135
|
+
bygroups(Keyword, Whitespace, Name.Namespace)),
|
135
136
|
(r'(use|require|no)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)',
|
136
|
-
bygroups(Keyword,
|
137
|
-
(r'(sub)(\s+)', bygroups(Keyword,
|
137
|
+
bygroups(Keyword, Whitespace, Name.Namespace)),
|
138
|
+
(r'(sub)(\s+)', bygroups(Keyword, Whitespace), 'funcname'),
|
138
139
|
(words((
|
139
140
|
'no', 'package', 'require', 'use'), suffix=r'\b'),
|
140
141
|
Keyword),
|
@@ -150,7 +151,7 @@ class PerlLexer(RegexLexer):
|
|
150
151
|
(r'[^\n]*\n', String.Interpol),
|
151
152
|
],
|
152
153
|
'varname': [
|
153
|
-
(r'\s+',
|
154
|
+
(r'\s+', Whitespace),
|
154
155
|
(r'\{', Punctuation, '#pop'), # hash syntax?
|
155
156
|
(r'\)|,', Punctuation, '#pop'), # argument specifier
|
156
157
|
(r'\w+::', Name.Namespace),
|
@@ -165,9 +166,9 @@ class PerlLexer(RegexLexer):
|
|
165
166
|
],
|
166
167
|
'funcname': [
|
167
168
|
(r'[a-zA-Z_]\w*[!?]?', Name.Function),
|
168
|
-
(r'\s+',
|
169
|
+
(r'\s+', Whitespace),
|
169
170
|
# argument declaration
|
170
|
-
(r'(\([$@%]*\))(\s*)', bygroups(Punctuation,
|
171
|
+
(r'(\([$@%]*\))(\s*)', bygroups(Punctuation, Whitespace)),
|
171
172
|
(r';', Punctuation, '#pop'),
|
172
173
|
(r'.*?\{', Punctuation, '#pop'),
|
173
174
|
],
|
@@ -223,18 +224,19 @@ class PerlLexer(RegexLexer):
|
|
223
224
|
|
224
225
|
class Perl6Lexer(ExtendedRegexLexer):
|
225
226
|
"""
|
226
|
-
For
|
227
|
+
For Raku (a.k.a. Perl 6) source code.
|
227
228
|
|
228
229
|
.. versionadded:: 2.0
|
229
230
|
"""
|
230
231
|
|
231
232
|
name = 'Perl6'
|
233
|
+
url = 'https://www.raku.org'
|
232
234
|
aliases = ['perl6', 'pl6', 'raku']
|
233
235
|
filenames = ['*.pl', '*.pm', '*.nqp', '*.p6', '*.6pl', '*.p6l', '*.pl6',
|
234
236
|
'*.6pm', '*.p6m', '*.pm6', '*.t', '*.raku', '*.rakumod',
|
235
237
|
'*.rakutest', '*.rakudoc']
|
236
238
|
mimetypes = ['text/x-perl6', 'application/x-perl6']
|
237
|
-
flags = re.MULTILINE | re.DOTALL
|
239
|
+
flags = re.MULTILINE | re.DOTALL
|
238
240
|
|
239
241
|
PERL6_IDENTIFIER_RANGE = r"['\w:-]"
|
240
242
|
|
@@ -605,7 +607,7 @@ class Perl6Lexer(ExtendedRegexLexer):
|
|
605
607
|
(r'(regex|token|rule)(?!' + PERL6_IDENTIFIER_RANGE + r')(\s*' + PERL6_IDENTIFIER_RANGE + '+)?',
|
606
608
|
bygroups(Keyword, Name), 'pre-token'),
|
607
609
|
# deal with a special case in the Perl 6 grammar (role q { ... })
|
608
|
-
(r'(role)(\s+)(q)(\s*)', bygroups(Keyword,
|
610
|
+
(r'(role)(\s+)(q)(\s*)', bygroups(Keyword, Whitespace, Name, Whitespace)),
|
609
611
|
(_build_word_match(PERL6_KEYWORDS, PERL6_IDENTIFIER_RANGE), Keyword),
|
610
612
|
(_build_word_match(PERL6_BUILTIN_CLASSES, PERL6_IDENTIFIER_RANGE, suffix='(?::[UD])?'),
|
611
613
|
Name.Builtin),
|