pygments.rb 2.4.1 → 3.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 +4 -4
- data/.github/workflows/ci.yml +8 -8
- data/.github/workflows/release.yml +5 -5
- data/.gitignore +2 -0
- data/.rubocop.yml +1 -1
- data/CHANGELOG.adoc +9 -1
- data/README.adoc +2 -2
- data/lib/pygments/version.rb +1 -1
- data/pygments.rb.gemspec +2 -2
- data/vendor/pygments-main/bin/pygmentize +1 -1
- data/vendor/pygments-main/pygments/__init__.py +2 -2
- data/vendor/pygments-main/pygments/__main__.py +1 -1
- data/vendor/pygments-main/pygments/cmdline.py +12 -12
- data/vendor/pygments-main/pygments/console.py +5 -5
- data/vendor/pygments-main/pygments/filter.py +2 -3
- data/vendor/pygments-main/pygments/filters/__init__.py +4 -4
- data/vendor/pygments-main/pygments/formatter.py +6 -1
- data/vendor/pygments-main/pygments/formatters/__init__.py +7 -8
- data/vendor/pygments-main/pygments/formatters/_mapping.py +0 -0
- data/vendor/pygments-main/pygments/formatters/bbcode.py +2 -2
- data/vendor/pygments-main/pygments/formatters/groff.py +3 -3
- data/vendor/pygments-main/pygments/formatters/html.py +38 -40
- data/vendor/pygments-main/pygments/formatters/img.py +51 -11
- data/vendor/pygments-main/pygments/formatters/irc.py +1 -1
- data/vendor/pygments-main/pygments/formatters/latex.py +24 -27
- data/vendor/pygments-main/pygments/formatters/other.py +3 -4
- data/vendor/pygments-main/pygments/formatters/pangomarkup.py +2 -2
- data/vendor/pygments-main/pygments/formatters/rtf.py +228 -25
- data/vendor/pygments-main/pygments/formatters/svg.py +17 -20
- data/vendor/pygments-main/pygments/formatters/terminal.py +1 -1
- data/vendor/pygments-main/pygments/formatters/terminal256.py +1 -1
- data/vendor/pygments-main/pygments/lexer.py +51 -33
- data/vendor/pygments-main/pygments/lexers/__init__.py +12 -12
- data/vendor/pygments-main/pygments/lexers/_ada_builtins.py +1 -1
- 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 +1 -1
- data/vendor/pygments-main/pygments/lexers/_css_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_julia_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_lilypond_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +5 -5
- data/vendor/pygments-main/pygments/lexers/_luau_builtins.py +62 -0
- data/vendor/pygments-main/pygments/lexers/_mapping.py +41 -11
- data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +3 -3
- data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_php_builtins.py +3 -3
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +5 -5
- data/vendor/pygments-main/pygments/lexers/_qlik_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_scheme_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +4 -4
- data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +3 -3
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +1 -1
- 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 +6 -8
- data/vendor/pygments-main/pygments/lexers/ada.py +3 -3
- data/vendor/pygments-main/pygments/lexers/agile.py +3 -1
- data/vendor/pygments-main/pygments/lexers/algebra.py +9 -13
- data/vendor/pygments-main/pygments/lexers/ambient.py +2 -3
- data/vendor/pygments-main/pygments/lexers/amdgpu.py +3 -3
- data/vendor/pygments-main/pygments/lexers/ampl.py +2 -3
- data/vendor/pygments-main/pygments/lexers/apdlexer.py +4 -3
- data/vendor/pygments-main/pygments/lexers/apl.py +2 -3
- data/vendor/pygments-main/pygments/lexers/archetype.py +8 -12
- data/vendor/pygments-main/pygments/lexers/arrow.py +2 -3
- data/vendor/pygments-main/pygments/lexers/arturo.py +2 -3
- data/vendor/pygments-main/pygments/lexers/asc.py +4 -4
- data/vendor/pygments-main/pygments/lexers/asm.py +28 -15
- data/vendor/pygments-main/pygments/lexers/asn1.py +178 -0
- data/vendor/pygments-main/pygments/lexers/automation.py +6 -8
- data/vendor/pygments-main/pygments/lexers/bare.py +2 -3
- data/vendor/pygments-main/pygments/lexers/basic.py +48 -57
- data/vendor/pygments-main/pygments/lexers/bdd.py +3 -4
- data/vendor/pygments-main/pygments/lexers/berry.py +4 -4
- data/vendor/pygments-main/pygments/lexers/bibtex.py +5 -5
- data/vendor/pygments-main/pygments/lexers/blueprint.py +173 -0
- data/vendor/pygments-main/pygments/lexers/boa.py +4 -4
- data/vendor/pygments-main/pygments/lexers/bqn.py +109 -0
- data/vendor/pygments-main/pygments/lexers/business.py +21 -22
- data/vendor/pygments-main/pygments/lexers/c_cpp.py +9 -4
- data/vendor/pygments-main/pygments/lexers/c_like.py +99 -27
- data/vendor/pygments-main/pygments/lexers/capnproto.py +2 -3
- data/vendor/pygments-main/pygments/lexers/carbon.py +10 -11
- data/vendor/pygments-main/pygments/lexers/cddl.py +8 -9
- data/vendor/pygments-main/pygments/lexers/chapel.py +2 -3
- data/vendor/pygments-main/pygments/lexers/clean.py +2 -1
- data/vendor/pygments-main/pygments/lexers/comal.py +2 -1
- data/vendor/pygments-main/pygments/lexers/compiled.py +2 -1
- data/vendor/pygments-main/pygments/lexers/configs.py +342 -108
- data/vendor/pygments-main/pygments/lexers/console.py +5 -5
- data/vendor/pygments-main/pygments/lexers/cplint.py +2 -3
- data/vendor/pygments-main/pygments/lexers/crystal.py +4 -5
- data/vendor/pygments-main/pygments/lexers/csound.py +6 -8
- data/vendor/pygments-main/pygments/lexers/css.py +5 -5
- data/vendor/pygments-main/pygments/lexers/d.py +4 -3
- data/vendor/pygments-main/pygments/lexers/dalvik.py +2 -3
- data/vendor/pygments-main/pygments/lexers/data.py +8 -12
- data/vendor/pygments-main/pygments/lexers/dax.py +2 -3
- data/vendor/pygments-main/pygments/lexers/devicetree.py +2 -3
- data/vendor/pygments-main/pygments/lexers/diff.py +7 -6
- data/vendor/pygments-main/pygments/lexers/dns.py +109 -0
- data/vendor/pygments-main/pygments/lexers/dotnet.py +19 -14
- data/vendor/pygments-main/pygments/lexers/dsls.py +24 -35
- data/vendor/pygments-main/pygments/lexers/dylan.py +8 -16
- data/vendor/pygments-main/pygments/lexers/ecl.py +2 -3
- data/vendor/pygments-main/pygments/lexers/eiffel.py +3 -4
- data/vendor/pygments-main/pygments/lexers/elm.py +3 -4
- data/vendor/pygments-main/pygments/lexers/elpi.py +28 -21
- data/vendor/pygments-main/pygments/lexers/email.py +3 -3
- data/vendor/pygments-main/pygments/lexers/erlang.py +22 -24
- data/vendor/pygments-main/pygments/lexers/esoteric.py +11 -12
- data/vendor/pygments-main/pygments/lexers/ezhil.py +2 -3
- data/vendor/pygments-main/pygments/lexers/factor.py +2 -3
- data/vendor/pygments-main/pygments/lexers/fantom.py +3 -3
- data/vendor/pygments-main/pygments/lexers/felix.py +9 -10
- data/vendor/pygments-main/pygments/lexers/fift.py +2 -1
- data/vendor/pygments-main/pygments/lexers/floscript.py +2 -3
- data/vendor/pygments-main/pygments/lexers/forth.py +2 -3
- data/vendor/pygments-main/pygments/lexers/fortran.py +6 -7
- data/vendor/pygments-main/pygments/lexers/foxpro.py +3 -3
- data/vendor/pygments-main/pygments/lexers/freefem.py +2 -3
- data/vendor/pygments-main/pygments/lexers/func.py +3 -1
- data/vendor/pygments-main/pygments/lexers/functional.py +2 -1
- data/vendor/pygments-main/pygments/lexers/futhark.py +6 -7
- data/vendor/pygments-main/pygments/lexers/gcodelexer.py +3 -3
- data/vendor/pygments-main/pygments/lexers/gdscript.py +2 -1
- data/vendor/pygments-main/pygments/lexers/go.py +3 -4
- data/vendor/pygments-main/pygments/lexers/grammar_notation.py +6 -9
- data/vendor/pygments-main/pygments/lexers/graph.py +12 -9
- data/vendor/pygments-main/pygments/lexers/graphics.py +13 -17
- data/vendor/pygments-main/pygments/lexers/graphql.py +176 -0
- data/vendor/pygments-main/pygments/lexers/graphviz.py +2 -3
- data/vendor/pygments-main/pygments/lexers/gsql.py +2 -3
- data/vendor/pygments-main/pygments/lexers/haskell.py +27 -32
- data/vendor/pygments-main/pygments/lexers/haxe.py +3 -5
- data/vendor/pygments-main/pygments/lexers/hdl.py +8 -7
- data/vendor/pygments-main/pygments/lexers/hexdump.py +3 -3
- data/vendor/pygments-main/pygments/lexers/html.py +34 -13
- data/vendor/pygments-main/pygments/lexers/idl.py +2 -3
- data/vendor/pygments-main/pygments/lexers/igor.py +305 -290
- data/vendor/pygments-main/pygments/lexers/inferno.py +2 -3
- data/vendor/pygments-main/pygments/lexers/installers.py +7 -9
- data/vendor/pygments-main/pygments/lexers/int_fiction.py +150 -162
- data/vendor/pygments-main/pygments/lexers/iolang.py +2 -3
- data/vendor/pygments-main/pygments/lexers/j.py +2 -3
- data/vendor/pygments-main/pygments/lexers/javascript.py +18 -19
- data/vendor/pygments-main/pygments/lexers/jmespath.py +2 -1
- data/vendor/pygments-main/pygments/lexers/jslt.py +2 -3
- data/vendor/pygments-main/pygments/lexers/jsonnet.py +4 -3
- data/vendor/pygments-main/pygments/lexers/jsx.py +75 -0
- data/vendor/pygments-main/pygments/lexers/julia.py +4 -5
- data/vendor/pygments-main/pygments/lexers/jvm.py +98 -116
- data/vendor/pygments-main/pygments/lexers/kuin.py +2 -3
- data/vendor/pygments-main/pygments/lexers/kusto.py +93 -0
- data/vendor/pygments-main/pygments/lexers/ldap.py +155 -0
- data/vendor/pygments-main/pygments/lexers/lean.py +241 -0
- data/vendor/pygments-main/pygments/lexers/lilypond.py +2 -3
- data/vendor/pygments-main/pygments/lexers/lisp.py +373 -65
- data/vendor/pygments-main/pygments/lexers/macaulay2.py +53 -4
- data/vendor/pygments-main/pygments/lexers/make.py +7 -5
- data/vendor/pygments-main/pygments/lexers/markup.py +242 -91
- data/vendor/pygments-main/pygments/lexers/math.py +2 -1
- data/vendor/pygments-main/pygments/lexers/matlab.py +10 -12
- data/vendor/pygments-main/pygments/lexers/maxima.py +2 -3
- data/vendor/pygments-main/pygments/lexers/meson.py +2 -3
- data/vendor/pygments-main/pygments/lexers/mime.py +4 -4
- data/vendor/pygments-main/pygments/lexers/minecraft.py +24 -27
- data/vendor/pygments-main/pygments/lexers/mips.py +3 -1
- data/vendor/pygments-main/pygments/lexers/ml.py +59 -61
- data/vendor/pygments-main/pygments/lexers/modeling.py +19 -22
- data/vendor/pygments-main/pygments/lexers/modula2.py +2 -3
- data/vendor/pygments-main/pygments/lexers/mojo.py +704 -0
- data/vendor/pygments-main/pygments/lexers/monte.py +2 -3
- data/vendor/pygments-main/pygments/lexers/mosel.py +3 -3
- data/vendor/pygments-main/pygments/lexers/ncl.py +4 -3
- data/vendor/pygments-main/pygments/lexers/nimrod.py +7 -8
- data/vendor/pygments-main/pygments/lexers/nit.py +2 -3
- data/vendor/pygments-main/pygments/lexers/nix.py +40 -31
- data/vendor/pygments-main/pygments/lexers/oberon.py +3 -3
- data/vendor/pygments-main/pygments/lexers/objective.py +14 -6
- data/vendor/pygments-main/pygments/lexers/ooc.py +2 -3
- data/vendor/pygments-main/pygments/lexers/openscad.py +96 -0
- data/vendor/pygments-main/pygments/lexers/other.py +2 -1
- data/vendor/pygments-main/pygments/lexers/parasail.py +2 -3
- data/vendor/pygments-main/pygments/lexers/parsers.py +41 -44
- data/vendor/pygments-main/pygments/lexers/pascal.py +6 -3
- data/vendor/pygments-main/pygments/lexers/pawn.py +5 -5
- data/vendor/pygments-main/pygments/lexers/perl.py +3 -3
- data/vendor/pygments-main/pygments/lexers/phix.py +2 -3
- data/vendor/pygments-main/pygments/lexers/php.py +4 -5
- data/vendor/pygments-main/pygments/lexers/pointless.py +2 -3
- data/vendor/pygments-main/pygments/lexers/pony.py +3 -3
- data/vendor/pygments-main/pygments/lexers/praat.py +2 -3
- data/vendor/pygments-main/pygments/lexers/procfile.py +2 -3
- data/vendor/pygments-main/pygments/lexers/prolog.py +23 -9
- data/vendor/pygments-main/pygments/lexers/promql.py +2 -1
- data/vendor/pygments-main/pygments/lexers/prql.py +251 -0
- data/vendor/pygments-main/pygments/lexers/ptx.py +119 -0
- data/vendor/pygments-main/pygments/lexers/python.py +24 -24
- data/vendor/pygments-main/pygments/lexers/q.py +5 -6
- data/vendor/pygments-main/pygments/lexers/qlik.py +3 -3
- data/vendor/pygments-main/pygments/lexers/qvt.py +5 -3
- data/vendor/pygments-main/pygments/lexers/r.py +8 -6
- data/vendor/pygments-main/pygments/lexers/rdf.py +19 -13
- data/vendor/pygments-main/pygments/lexers/rebol.py +7 -7
- data/vendor/pygments-main/pygments/lexers/resource.py +5 -6
- data/vendor/pygments-main/pygments/lexers/ride.py +4 -5
- data/vendor/pygments-main/pygments/lexers/rita.py +2 -3
- data/vendor/pygments-main/pygments/lexers/rnc.py +2 -3
- data/vendor/pygments-main/pygments/lexers/roboconf.py +5 -5
- data/vendor/pygments-main/pygments/lexers/robotframework.py +2 -3
- data/vendor/pygments-main/pygments/lexers/ruby.py +8 -13
- data/vendor/pygments-main/pygments/lexers/rust.py +9 -10
- data/vendor/pygments-main/pygments/lexers/sas.py +3 -3
- data/vendor/pygments-main/pygments/lexers/savi.py +131 -130
- data/vendor/pygments-main/pygments/lexers/scdoc.py +13 -7
- data/vendor/pygments-main/pygments/lexers/scripting.py +354 -42
- data/vendor/pygments-main/pygments/lexers/sgf.py +2 -3
- data/vendor/pygments-main/pygments/lexers/shell.py +107 -129
- data/vendor/pygments-main/pygments/lexers/sieve.py +3 -3
- data/vendor/pygments-main/pygments/lexers/slash.py +4 -5
- data/vendor/pygments-main/pygments/lexers/smalltalk.py +3 -5
- data/vendor/pygments-main/pygments/lexers/smithy.py +2 -3
- data/vendor/pygments-main/pygments/lexers/smv.py +3 -3
- data/vendor/pygments-main/pygments/lexers/snobol.py +3 -3
- data/vendor/pygments-main/pygments/lexers/solidity.py +3 -3
- data/vendor/pygments-main/pygments/lexers/soong.py +78 -0
- data/vendor/pygments-main/pygments/lexers/sophia.py +3 -4
- data/vendor/pygments-main/pygments/lexers/special.py +8 -3
- data/vendor/pygments-main/pygments/lexers/spice.py +15 -16
- data/vendor/pygments-main/pygments/lexers/sql.py +24 -18
- data/vendor/pygments-main/pygments/lexers/srcinfo.py +3 -3
- data/vendor/pygments-main/pygments/lexers/stata.py +2 -3
- data/vendor/pygments-main/pygments/lexers/supercollider.py +2 -3
- data/vendor/pygments-main/pygments/lexers/tact.py +303 -0
- data/vendor/pygments-main/pygments/lexers/tal.py +13 -10
- data/vendor/pygments-main/pygments/lexers/tcl.py +2 -3
- data/vendor/pygments-main/pygments/lexers/teal.py +2 -3
- data/vendor/pygments-main/pygments/lexers/templates.py +131 -72
- data/vendor/pygments-main/pygments/lexers/teraterm.py +2 -3
- data/vendor/pygments-main/pygments/lexers/testing.py +4 -5
- data/vendor/pygments-main/pygments/lexers/text.py +2 -1
- data/vendor/pygments-main/pygments/lexers/textedit.py +9 -6
- data/vendor/pygments-main/pygments/lexers/textfmts.py +20 -15
- data/vendor/pygments-main/pygments/lexers/theorem.py +41 -115
- data/vendor/pygments-main/pygments/lexers/thingsdb.py +50 -26
- data/vendor/pygments-main/pygments/lexers/tlb.py +3 -1
- data/vendor/pygments-main/pygments/lexers/tls.py +54 -0
- data/vendor/pygments-main/pygments/lexers/tnt.py +2 -3
- data/vendor/pygments-main/pygments/lexers/trafficscript.py +3 -3
- data/vendor/pygments-main/pygments/lexers/typoscript.py +6 -7
- data/vendor/pygments-main/pygments/lexers/typst.py +104 -0
- data/vendor/pygments-main/pygments/lexers/ul4.py +47 -5
- data/vendor/pygments-main/pygments/lexers/unicon.py +9 -7
- data/vendor/pygments-main/pygments/lexers/urbi.py +3 -3
- data/vendor/pygments-main/pygments/lexers/usd.py +6 -11
- data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
- data/vendor/pygments-main/pygments/lexers/verification.py +4 -5
- data/vendor/pygments-main/pygments/lexers/verifpal.py +65 -0
- data/vendor/pygments-main/pygments/lexers/vip.py +150 -0
- data/vendor/pygments-main/pygments/lexers/vyper.py +140 -0
- data/vendor/pygments-main/pygments/lexers/web.py +2 -1
- data/vendor/pygments-main/pygments/lexers/webassembly.py +2 -3
- data/vendor/pygments-main/pygments/lexers/webidl.py +2 -3
- data/vendor/pygments-main/pygments/lexers/webmisc.py +11 -15
- data/vendor/pygments-main/pygments/lexers/wgsl.py +6 -7
- data/vendor/pygments-main/pygments/lexers/whiley.py +2 -3
- data/vendor/pygments-main/pygments/lexers/wowtoc.py +3 -3
- data/vendor/pygments-main/pygments/lexers/wren.py +3 -4
- data/vendor/pygments-main/pygments/lexers/x10.py +6 -7
- data/vendor/pygments-main/pygments/lexers/xorg.py +2 -1
- data/vendor/pygments-main/pygments/lexers/yang.py +2 -3
- data/vendor/pygments-main/pygments/lexers/yara.py +69 -0
- data/vendor/pygments-main/pygments/lexers/zig.py +2 -1
- data/vendor/pygments-main/pygments/modeline.py +4 -4
- data/vendor/pygments-main/pygments/plugin.py +3 -19
- data/vendor/pygments-main/pygments/regexopt.py +1 -1
- data/vendor/pygments-main/pygments/scanner.py +1 -1
- data/vendor/pygments-main/pygments/sphinxext.py +38 -8
- data/vendor/pygments-main/pygments/style.py +8 -2
- data/vendor/pygments-main/pygments/styles/__init__.py +17 -59
- data/vendor/pygments-main/pygments/styles/_mapping.py +54 -0
- data/vendor/pygments-main/pygments/styles/abap.py +5 -1
- data/vendor/pygments-main/pygments/styles/algol.py +5 -1
- data/vendor/pygments-main/pygments/styles/algol_nu.py +5 -1
- data/vendor/pygments-main/pygments/styles/arduino.py +76 -72
- data/vendor/pygments-main/pygments/styles/autumn.py +6 -1
- data/vendor/pygments-main/pygments/styles/borland.py +6 -1
- data/vendor/pygments-main/pygments/styles/bw.py +6 -1
- data/vendor/pygments-main/pygments/styles/coffee.py +80 -0
- data/vendor/pygments-main/pygments/styles/colorful.py +6 -1
- data/vendor/pygments-main/pygments/styles/default.py +6 -1
- data/vendor/pygments-main/pygments/styles/dracula.py +68 -80
- data/vendor/pygments-main/pygments/styles/emacs.py +6 -1
- data/vendor/pygments-main/pygments/styles/friendly.py +6 -1
- data/vendor/pygments-main/pygments/styles/friendly_grayscale.py +6 -1
- data/vendor/pygments-main/pygments/styles/fruity.py +7 -1
- data/vendor/pygments-main/pygments/styles/gh_dark.py +7 -1
- data/vendor/pygments-main/pygments/styles/gruvbox.py +10 -1
- data/vendor/pygments-main/pygments/styles/igor.py +6 -1
- data/vendor/pygments-main/pygments/styles/inkpot.py +7 -2
- data/vendor/pygments-main/pygments/styles/lightbulb.py +110 -0
- data/vendor/pygments-main/pygments/styles/lilypond.py +8 -2
- data/vendor/pygments-main/pygments/styles/lovelace.py +16 -10
- data/vendor/pygments-main/pygments/styles/manni.py +7 -2
- data/vendor/pygments-main/pygments/styles/material.py +21 -14
- data/vendor/pygments-main/pygments/styles/monokai.py +16 -10
- data/vendor/pygments-main/pygments/styles/murphy.py +7 -2
- data/vendor/pygments-main/pygments/styles/native.py +10 -5
- data/vendor/pygments-main/pygments/styles/nord.py +9 -3
- data/vendor/pygments-main/pygments/styles/onedark.py +6 -2
- data/vendor/pygments-main/pygments/styles/paraiso_dark.py +7 -2
- data/vendor/pygments-main/pygments/styles/paraiso_light.py +7 -2
- data/vendor/pygments-main/pygments/styles/pastie.py +7 -1
- data/vendor/pygments-main/pygments/styles/perldoc.py +7 -1
- data/vendor/pygments-main/pygments/styles/rainbow_dash.py +26 -19
- data/vendor/pygments-main/pygments/styles/rrt.py +8 -2
- data/vendor/pygments-main/pygments/styles/sas.py +6 -1
- data/vendor/pygments-main/pygments/styles/solarized.py +9 -1
- data/vendor/pygments-main/pygments/styles/staroffice.py +6 -1
- data/vendor/pygments-main/pygments/styles/stata_dark.py +6 -2
- data/vendor/pygments-main/pygments/styles/stata_light.py +6 -1
- data/vendor/pygments-main/pygments/styles/tango.py +7 -3
- data/vendor/pygments-main/pygments/styles/trac.py +7 -1
- data/vendor/pygments-main/pygments/styles/vim.py +7 -1
- data/vendor/pygments-main/pygments/styles/vs.py +7 -2
- data/vendor/pygments-main/pygments/styles/xcode.py +6 -1
- data/vendor/pygments-main/pygments/styles/zenburn.py +6 -1
- data/vendor/pygments-main/pygments/token.py +2 -1
- data/vendor/pygments-main/pygments/unistring.py +5 -5
- data/vendor/pygments-main/pygments/util.py +13 -19
- data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/METADATA +14 -13
- data/vendor/pygments-main/pygments-2.18.0.dist-info/RECORD +663 -0
- data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/WHEEL +1 -2
- data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info/licenses}/AUTHORS +13 -0
- metadata +39 -15
- data/vendor/pygments-main/Pygments-2.15.1.dist-info/RECORD +0 -614
- data/vendor/pygments-main/Pygments-2.15.1.dist-info/top_level.txt +0 -1
- /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/INSTALLER +0 -0
- /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/REQUESTED +0 -0
- /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/entry_points.txt +0 -0
- /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info/licenses}/LICENSE +0 -0
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
Lexers for configuration file formats.
|
6
6
|
|
7
|
-
:copyright: Copyright 2006-
|
7
|
+
:copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
|
8
8
|
:license: BSD, see LICENSE for details.
|
9
9
|
"""
|
10
10
|
|
@@ -17,8 +17,8 @@ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
|
|
17
17
|
from pygments.lexers.shell import BashLexer
|
18
18
|
from pygments.lexers.data import JsonLexer
|
19
19
|
|
20
|
-
__all__ = ['IniLexer', '
|
21
|
-
'Cfengine3Lexer', 'ApacheConfLexer', 'SquidConfLexer',
|
20
|
+
__all__ = ['IniLexer', 'SystemdLexer', 'DesktopLexer', 'RegeditLexer', 'PropertiesLexer',
|
21
|
+
'KconfigLexer', 'Cfengine3Lexer', 'ApacheConfLexer', 'SquidConfLexer',
|
22
22
|
'NginxConfLexer', 'LighttpdConfLexer', 'DockerLexer',
|
23
23
|
'TerraformLexer', 'TermcapLexer', 'TerminfoLexer',
|
24
24
|
'PkgConfigLexer', 'PacmanConfLexer', 'AugeasLexer', 'TOMLLexer',
|
@@ -34,12 +34,10 @@ class IniLexer(RegexLexer):
|
|
34
34
|
aliases = ['ini', 'cfg', 'dosini']
|
35
35
|
filenames = [
|
36
36
|
'*.ini', '*.cfg', '*.inf', '.editorconfig',
|
37
|
-
# systemd unit files
|
38
|
-
# https://www.freedesktop.org/software/systemd/man/systemd.unit.html
|
39
|
-
'*.service', '*.socket', '*.device', '*.mount', '*.automount',
|
40
|
-
'*.swap', '*.target', '*.path', '*.timer', '*.slice', '*.scope',
|
41
37
|
]
|
42
38
|
mimetypes = ['text/x-ini', 'text/inf']
|
39
|
+
url = 'https://en.wikipedia.org/wiki/INI_file'
|
40
|
+
version_added = ''
|
43
41
|
|
44
42
|
tokens = {
|
45
43
|
'root': [
|
@@ -67,14 +65,88 @@ class IniLexer(RegexLexer):
|
|
67
65
|
npos = text.find('\n')
|
68
66
|
if npos < 3:
|
69
67
|
return False
|
70
|
-
|
68
|
+
if text[0] == '[' and text[npos-1] == ']':
|
69
|
+
return 0.8
|
70
|
+
return False
|
71
|
+
|
72
|
+
|
73
|
+
class DesktopLexer(RegexLexer):
|
74
|
+
"""
|
75
|
+
Lexer for .desktop files.
|
76
|
+
"""
|
77
|
+
|
78
|
+
name = 'Desktop file'
|
79
|
+
url = "https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html"
|
80
|
+
aliases = ['desktop']
|
81
|
+
filenames = ['*.desktop']
|
82
|
+
mimetypes = ['application/x-desktop']
|
83
|
+
version_added = '2.16'
|
84
|
+
|
85
|
+
tokens = {
|
86
|
+
'root': [
|
87
|
+
(r'^[ \t]*\n', Whitespace),
|
88
|
+
(r'^(#.*)(\n)', bygroups(Comment.Single, Whitespace)),
|
89
|
+
(r'(\[[^\]\n]+\])(\n)', bygroups(Keyword, Whitespace)),
|
90
|
+
(r'([-A-Za-z0-9]+)(\[[^\] \t=]+\])?([ \t]*)(=)([ \t]*)([^\n]*)([ \t\n]*\n)',
|
91
|
+
bygroups(Name.Attribute, Name.Namespace, Whitespace, Operator, Whitespace, String, Whitespace)),
|
92
|
+
],
|
93
|
+
}
|
94
|
+
|
95
|
+
def analyse_text(text):
|
96
|
+
if text.startswith("[Desktop Entry]"):
|
97
|
+
return 1.0
|
98
|
+
if re.search(r"^\[Desktop Entry\][ \t]*$", text[:500], re.MULTILINE) is not None:
|
99
|
+
return 0.9
|
100
|
+
return 0.0
|
101
|
+
|
102
|
+
|
103
|
+
class SystemdLexer(RegexLexer):
|
104
|
+
"""
|
105
|
+
Lexer for systemd unit files.
|
106
|
+
"""
|
107
|
+
|
108
|
+
name = 'Systemd'
|
109
|
+
url = "https://www.freedesktop.org/software/systemd/man/systemd.syntax.html"
|
110
|
+
aliases = ['systemd']
|
111
|
+
filenames = [
|
112
|
+
'*.service', '*.socket', '*.device', '*.mount', '*.automount',
|
113
|
+
'*.swap', '*.target', '*.path', '*.timer', '*.slice', '*.scope',
|
114
|
+
]
|
115
|
+
version_added = '2.16'
|
116
|
+
|
117
|
+
tokens = {
|
118
|
+
'root': [
|
119
|
+
(r'^[ \t]*\n', Whitespace),
|
120
|
+
(r'^([;#].*)(\n)', bygroups(Comment.Single, Whitespace)),
|
121
|
+
(r'(\[[^\]\n]+\])(\n)', bygroups(Keyword, Whitespace)),
|
122
|
+
(r'([^=]+)([ \t]*)(=)([ \t]*)([^\n]*)(\\)(\n)',
|
123
|
+
bygroups(Name.Attribute, Whitespace, Operator, Whitespace, String,
|
124
|
+
Text, Whitespace),
|
125
|
+
"value"),
|
126
|
+
(r'([^=]+)([ \t]*)(=)([ \t]*)([^\n]*)(\n)',
|
127
|
+
bygroups(Name.Attribute, Whitespace, Operator, Whitespace, String, Whitespace)),
|
128
|
+
],
|
129
|
+
'value': [
|
130
|
+
# line continuation
|
131
|
+
(r'^([;#].*)(\n)', bygroups(Comment.Single, Whitespace)),
|
132
|
+
(r'([ \t]*)([^\n]*)(\\)(\n)',
|
133
|
+
bygroups(Whitespace, String, Text, Whitespace)),
|
134
|
+
(r'([ \t]*)([^\n]*)(\n)',
|
135
|
+
bygroups(Whitespace, String, Whitespace), "#pop"),
|
136
|
+
],
|
137
|
+
}
|
138
|
+
|
139
|
+
def analyse_text(text):
|
140
|
+
if text.startswith("[Unit]"):
|
141
|
+
return 1.0
|
142
|
+
if re.search(r"^\[Unit\][ \t]*$", text[:500], re.MULTILINE) is not None:
|
143
|
+
return 0.9
|
144
|
+
return 0.0
|
71
145
|
|
72
146
|
|
73
147
|
class RegeditLexer(RegexLexer):
|
74
148
|
"""
|
75
149
|
Lexer for Windows Registry files produced by regedit.
|
76
|
-
|
77
|
-
.. versionadded:: 1.6
|
78
150
|
"""
|
79
151
|
|
80
152
|
name = 'reg'
|
@@ -82,6 +154,7 @@ class RegeditLexer(RegexLexer):
|
|
82
154
|
aliases = ['registry']
|
83
155
|
filenames = ['*.reg']
|
84
156
|
mimetypes = ['text/x-windows-registry']
|
157
|
+
version_added = '1.6'
|
85
158
|
|
86
159
|
tokens = {
|
87
160
|
'root': [
|
@@ -118,14 +191,14 @@ class PropertiesLexer(RegexLexer):
|
|
118
191
|
Lexer for configuration files in Java's properties format.
|
119
192
|
|
120
193
|
Note: trailing whitespace counts as part of the value as per spec
|
121
|
-
|
122
|
-
.. versionadded:: 1.4
|
123
194
|
"""
|
124
195
|
|
125
196
|
name = 'Properties'
|
126
197
|
aliases = ['properties', 'jproperties']
|
127
198
|
filenames = ['*.properties']
|
128
199
|
mimetypes = ['text/x-java-properties']
|
200
|
+
url = 'https://en.wikipedia.org/wiki/.properties'
|
201
|
+
version_added = '1.4'
|
129
202
|
|
130
203
|
tokens = {
|
131
204
|
'root': [
|
@@ -185,29 +258,30 @@ def _rx_indent(level):
|
|
185
258
|
if level == 1:
|
186
259
|
level_repeat = ''
|
187
260
|
else:
|
188
|
-
level_repeat = '{
|
189
|
-
return
|
261
|
+
level_repeat = f'{{{level}}}'
|
262
|
+
return rf'(?:\t| {space_repeat}\t| {{{tab_width}}}){level_repeat}.*\n'
|
190
263
|
|
191
264
|
|
192
265
|
class KconfigLexer(RegexLexer):
|
193
266
|
"""
|
194
267
|
For Linux-style Kconfig files.
|
195
|
-
|
196
|
-
.. versionadded:: 1.6
|
197
268
|
"""
|
198
269
|
|
199
270
|
name = 'Kconfig'
|
200
271
|
aliases = ['kconfig', 'menuconfig', 'linux-config', 'kernel-config']
|
272
|
+
version_added = '1.6'
|
201
273
|
# Adjust this if new kconfig file names appear in your environment
|
202
274
|
filenames = ['Kconfig*', '*Config.in*', 'external.in*',
|
203
275
|
'standard-modules.in']
|
204
276
|
mimetypes = ['text/x-kconfig']
|
277
|
+
url = 'https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html'
|
278
|
+
|
205
279
|
# No re.MULTILINE, indentation-aware help text needs line-by-line handling
|
206
280
|
flags = 0
|
207
281
|
|
208
282
|
def call_indent(level):
|
209
283
|
# If indentation >= {level} is detected, enter state 'indent{level}'
|
210
|
-
return (_rx_indent(level), String.Doc, 'indent
|
284
|
+
return (_rx_indent(level), String.Doc, f'indent{level}')
|
211
285
|
|
212
286
|
def do_indent(level):
|
213
287
|
# Print paragraphs of indentation level >= {level} as String.Doc,
|
@@ -269,8 +343,6 @@ class KconfigLexer(RegexLexer):
|
|
269
343
|
class Cfengine3Lexer(RegexLexer):
|
270
344
|
"""
|
271
345
|
Lexer for CFEngine3 policy files.
|
272
|
-
|
273
|
-
.. versionadded:: 1.5
|
274
346
|
"""
|
275
347
|
|
276
348
|
name = 'CFEngine3'
|
@@ -278,6 +350,7 @@ class Cfengine3Lexer(RegexLexer):
|
|
278
350
|
aliases = ['cfengine3', 'cf3']
|
279
351
|
filenames = ['*.cf']
|
280
352
|
mimetypes = []
|
353
|
+
version_added = '1.5'
|
281
354
|
|
282
355
|
tokens = {
|
283
356
|
'root': [
|
@@ -332,14 +405,14 @@ class ApacheConfLexer(RegexLexer):
|
|
332
405
|
"""
|
333
406
|
Lexer for configuration files following the Apache config file
|
334
407
|
format.
|
335
|
-
|
336
|
-
.. versionadded:: 0.6
|
337
408
|
"""
|
338
409
|
|
339
410
|
name = 'ApacheConf'
|
340
411
|
aliases = ['apacheconf', 'aconf', 'apache']
|
341
412
|
filenames = ['.htaccess', 'apache.conf', 'apache2.conf']
|
342
413
|
mimetypes = ['text/x-apacheconf']
|
414
|
+
url = 'https://httpd.apache.org/docs/current/configuring.html'
|
415
|
+
version_added = '0.6'
|
343
416
|
flags = re.MULTILINE | re.IGNORECASE
|
344
417
|
|
345
418
|
tokens = {
|
@@ -374,8 +447,6 @@ class ApacheConfLexer(RegexLexer):
|
|
374
447
|
class SquidConfLexer(RegexLexer):
|
375
448
|
"""
|
376
449
|
Lexer for squid configuration files.
|
377
|
-
|
378
|
-
.. versionadded:: 0.9
|
379
450
|
"""
|
380
451
|
|
381
452
|
name = 'SquidConf'
|
@@ -383,6 +454,7 @@ class SquidConfLexer(RegexLexer):
|
|
383
454
|
aliases = ['squidconf', 'squid.conf', 'squid']
|
384
455
|
filenames = ['squid.conf']
|
385
456
|
mimetypes = ['text/x-squidconf']
|
457
|
+
version_added = '0.9'
|
386
458
|
flags = re.IGNORECASE
|
387
459
|
|
388
460
|
keywords = (
|
@@ -469,15 +541,14 @@ class SquidConfLexer(RegexLexer):
|
|
469
541
|
"dst", "time", "dstdomain", "ident", "snmp_community",
|
470
542
|
)
|
471
543
|
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
)
|
544
|
+
ipv4_group = r'(\d+|0x[0-9a-f]+)'
|
545
|
+
ipv4 = rf'({ipv4_group}(\.{ipv4_group}){{3}})'
|
546
|
+
ipv6_group = r'([0-9a-f]{0,4})'
|
547
|
+
ipv6 = rf'({ipv6_group}(:{ipv6_group}){{1,7}})'
|
548
|
+
bare_ip = rf'({ipv4}|{ipv6})'
|
549
|
+
# XXX: /integer is a subnet mark, but what is /IP ?
|
550
|
+
# There is no test where it is used.
|
551
|
+
ip = rf'{bare_ip}(/({bare_ip}|\d+))?'
|
481
552
|
|
482
553
|
tokens = {
|
483
554
|
'root': [
|
@@ -490,7 +561,7 @@ class SquidConfLexer(RegexLexer):
|
|
490
561
|
(words(actions_stats, prefix=r'stats/', suffix=r'\b'), String),
|
491
562
|
(words(actions_log, prefix=r'log/', suffix=r'='), String),
|
492
563
|
(words(acls, prefix=r'\b', suffix=r'\b'), Keyword),
|
493
|
-
(
|
564
|
+
(ip, Number.Float),
|
494
565
|
(r'(?:\b\d+\b(?:-\b\d+|%)?)', Number),
|
495
566
|
(r'\S+', Text),
|
496
567
|
],
|
@@ -505,14 +576,13 @@ class SquidConfLexer(RegexLexer):
|
|
505
576
|
class NginxConfLexer(RegexLexer):
|
506
577
|
"""
|
507
578
|
Lexer for Nginx configuration files.
|
508
|
-
|
509
|
-
.. versionadded:: 0.11
|
510
579
|
"""
|
511
580
|
name = 'Nginx configuration file'
|
512
581
|
url = 'http://nginx.net/'
|
513
582
|
aliases = ['nginx']
|
514
583
|
filenames = ['nginx.conf']
|
515
584
|
mimetypes = ['text/x-nginx-conf']
|
585
|
+
version_added = '0.11'
|
516
586
|
|
517
587
|
tokens = {
|
518
588
|
'root': [
|
@@ -552,14 +622,13 @@ class NginxConfLexer(RegexLexer):
|
|
552
622
|
class LighttpdConfLexer(RegexLexer):
|
553
623
|
"""
|
554
624
|
Lexer for Lighttpd configuration files.
|
555
|
-
|
556
|
-
.. versionadded:: 0.11
|
557
625
|
"""
|
558
626
|
name = 'Lighttpd configuration file'
|
559
627
|
url = 'http://lighttpd.net/'
|
560
628
|
aliases = ['lighttpd', 'lighty']
|
561
629
|
filenames = ['lighttpd.conf']
|
562
630
|
mimetypes = ['text/x-lighttpd-conf']
|
631
|
+
version_added = '0.11'
|
563
632
|
|
564
633
|
tokens = {
|
565
634
|
'root': [
|
@@ -581,14 +650,13 @@ class LighttpdConfLexer(RegexLexer):
|
|
581
650
|
class DockerLexer(RegexLexer):
|
582
651
|
"""
|
583
652
|
Lexer for Docker configuration files.
|
584
|
-
|
585
|
-
.. versionadded:: 2.0
|
586
653
|
"""
|
587
654
|
name = 'Docker'
|
588
655
|
url = 'http://docker.io'
|
589
656
|
aliases = ['docker', 'dockerfile']
|
590
657
|
filenames = ['Dockerfile', '*.docker']
|
591
658
|
mimetypes = ['text/x-dockerfile-config']
|
659
|
+
version_added = '2.0'
|
592
660
|
|
593
661
|
_keywords = (r'(?:MAINTAINER|EXPOSE|WORKDIR|USER|STOPSIGNAL)')
|
594
662
|
_bash_keywords = (r'(?:RUN|CMD|ENTRYPOINT|ENV|ARG|LABEL|ADD|COPY)')
|
@@ -600,15 +668,15 @@ class DockerLexer(RegexLexer):
|
|
600
668
|
(r'#.*', Comment),
|
601
669
|
(r'(FROM)([ \t]*)(\S*)([ \t]*)(?:(AS)([ \t]*)(\S*))?',
|
602
670
|
bygroups(Keyword, Whitespace, String, Whitespace, Keyword, Whitespace, String)),
|
603
|
-
(
|
604
|
-
(
|
671
|
+
(rf'(ONBUILD)(\s+)({_lb})', bygroups(Keyword, Whitespace, using(BashLexer))),
|
672
|
+
(rf'(HEALTHCHECK)(\s+)(({_lb}--\w+=\w+{_lb})*)',
|
605
673
|
bygroups(Keyword, Whitespace, using(BashLexer))),
|
606
|
-
(
|
674
|
+
(rf'(VOLUME|ENTRYPOINT|CMD|SHELL)(\s+)({_lb})(\[.*?\])',
|
607
675
|
bygroups(Keyword, Whitespace, using(BashLexer), using(JsonLexer))),
|
608
|
-
(
|
676
|
+
(rf'(LABEL|ENV|ARG)(\s+)(({_lb}\w+=\w+{_lb})*)',
|
609
677
|
bygroups(Keyword, Whitespace, using(BashLexer))),
|
610
|
-
(
|
611
|
-
(
|
678
|
+
(rf'({_keywords}|VOLUME)\b(\s+)(.*)', bygroups(Keyword, Whitespace, String)),
|
679
|
+
(rf'({_bash_keywords})(\s+)', bygroups(Keyword, Whitespace)),
|
612
680
|
(r'(.*\\\n)*.+', using(BashLexer)),
|
613
681
|
]
|
614
682
|
}
|
@@ -617,8 +685,6 @@ class DockerLexer(RegexLexer):
|
|
617
685
|
class TerraformLexer(ExtendedRegexLexer):
|
618
686
|
"""
|
619
687
|
Lexer for terraformi ``.tf`` files.
|
620
|
-
|
621
|
-
.. versionadded:: 2.1
|
622
688
|
"""
|
623
689
|
|
624
690
|
name = 'Terraform'
|
@@ -626,6 +692,7 @@ class TerraformLexer(ExtendedRegexLexer):
|
|
626
692
|
aliases = ['terraform', 'tf', 'hcl']
|
627
693
|
filenames = ['*.tf', '*.hcl']
|
628
694
|
mimetypes = ['application/x-tf', 'application/x-terraform']
|
695
|
+
version_added = '2.1'
|
629
696
|
|
630
697
|
classes = ('backend', 'data', 'module', 'output', 'provider',
|
631
698
|
'provisioner', 'resource', 'variable')
|
@@ -789,13 +856,13 @@ class TermcapLexer(RegexLexer):
|
|
789
856
|
Lexer for termcap database source.
|
790
857
|
|
791
858
|
This is very simple and minimal.
|
792
|
-
|
793
|
-
.. versionadded:: 2.1
|
794
859
|
"""
|
795
860
|
name = 'Termcap'
|
796
861
|
aliases = ['termcap']
|
797
862
|
filenames = ['termcap', 'termcap.src']
|
798
863
|
mimetypes = []
|
864
|
+
url = 'https://en.wikipedia.org/wiki/Termcap'
|
865
|
+
version_added = '2.1'
|
799
866
|
|
800
867
|
# NOTE:
|
801
868
|
# * multiline with trailing backslash
|
@@ -836,13 +903,13 @@ class TerminfoLexer(RegexLexer):
|
|
836
903
|
Lexer for terminfo database source.
|
837
904
|
|
838
905
|
This is very simple and minimal.
|
839
|
-
|
840
|
-
.. versionadded:: 2.1
|
841
906
|
"""
|
842
907
|
name = 'Terminfo'
|
843
908
|
aliases = ['terminfo']
|
844
909
|
filenames = ['terminfo', 'terminfo.src']
|
845
910
|
mimetypes = []
|
911
|
+
url = 'https://en.wikipedia.org/wiki/Terminfo'
|
912
|
+
version_added = '2.1'
|
846
913
|
|
847
914
|
# NOTE:
|
848
915
|
# * multiline with leading whitespace
|
@@ -882,8 +949,6 @@ class PkgConfigLexer(RegexLexer):
|
|
882
949
|
"""
|
883
950
|
Lexer for pkg-config
|
884
951
|
(see also `manual page <http://linux.die.net/man/1/pkg-config>`_).
|
885
|
-
|
886
|
-
.. versionadded:: 2.1
|
887
952
|
"""
|
888
953
|
|
889
954
|
name = 'PkgConfig'
|
@@ -891,6 +956,7 @@ class PkgConfigLexer(RegexLexer):
|
|
891
956
|
aliases = ['pkgconfig']
|
892
957
|
filenames = ['*.pc']
|
893
958
|
mimetypes = []
|
959
|
+
version_added = '2.1'
|
894
960
|
|
895
961
|
tokens = {
|
896
962
|
'root': [
|
@@ -951,8 +1017,6 @@ class PacmanConfLexer(RegexLexer):
|
|
951
1017
|
VerbosePkgLists
|
952
1018
|
|
953
1019
|
These are flags to switch on.
|
954
|
-
|
955
|
-
.. versionadded:: 2.1
|
956
1020
|
"""
|
957
1021
|
|
958
1022
|
name = 'PacmanConf'
|
@@ -960,6 +1024,7 @@ class PacmanConfLexer(RegexLexer):
|
|
960
1024
|
aliases = ['pacmanconf']
|
961
1025
|
filenames = ['pacman.conf']
|
962
1026
|
mimetypes = []
|
1027
|
+
version_added = '2.1'
|
963
1028
|
|
964
1029
|
tokens = {
|
965
1030
|
'root': [
|
@@ -997,13 +1062,12 @@ class PacmanConfLexer(RegexLexer):
|
|
997
1062
|
class AugeasLexer(RegexLexer):
|
998
1063
|
"""
|
999
1064
|
Lexer for Augeas.
|
1000
|
-
|
1001
|
-
.. versionadded:: 2.4
|
1002
1065
|
"""
|
1003
1066
|
name = 'Augeas'
|
1004
1067
|
url = 'http://augeas.net'
|
1005
1068
|
aliases = ['augeas']
|
1006
1069
|
filenames = ['*.aug']
|
1070
|
+
version_added = '2.4'
|
1007
1071
|
|
1008
1072
|
tokens = {
|
1009
1073
|
'root': [
|
@@ -1041,79 +1105,250 @@ class AugeasLexer(RegexLexer):
|
|
1041
1105
|
|
1042
1106
|
class TOMLLexer(RegexLexer):
|
1043
1107
|
"""
|
1044
|
-
Lexer for TOML, a simple language
|
1045
|
-
for config files.
|
1046
|
-
|
1047
|
-
.. versionadded:: 2.4
|
1108
|
+
Lexer for TOML, a simple language for config files.
|
1048
1109
|
"""
|
1049
1110
|
|
1050
1111
|
name = 'TOML'
|
1051
|
-
url = 'https://github.com/toml-lang/toml'
|
1052
1112
|
aliases = ['toml']
|
1053
1113
|
filenames = ['*.toml', 'Pipfile', 'poetry.lock']
|
1114
|
+
mimetypes = ['application/toml']
|
1115
|
+
url = 'https://toml.io'
|
1116
|
+
version_added = '2.4'
|
1117
|
+
|
1118
|
+
# Based on the TOML spec: https://toml.io/en/v1.0.0
|
1119
|
+
|
1120
|
+
# The following is adapted from CPython's tomllib:
|
1121
|
+
_time = r"\d\d:\d\d:\d\d(\.\d+)?"
|
1122
|
+
_datetime = rf"""(?x)
|
1123
|
+
\d\d\d\d-\d\d-\d\d # date, e.g., 1988-10-27
|
1124
|
+
(
|
1125
|
+
[Tt ] {_time} # optional time
|
1126
|
+
(
|
1127
|
+
[Zz]|[+-]\d\d:\d\d # optional time offset
|
1128
|
+
)?
|
1129
|
+
)?
|
1130
|
+
"""
|
1054
1131
|
|
1055
1132
|
tokens = {
|
1056
1133
|
'root': [
|
1057
|
-
#
|
1058
|
-
|
1134
|
+
# Note that we make an effort in order to distinguish
|
1135
|
+
# moments at which we're parsing a key and moments at
|
1136
|
+
# which we're parsing a value. In the TOML code
|
1137
|
+
#
|
1138
|
+
# 1234 = 1234
|
1139
|
+
#
|
1140
|
+
# the first "1234" should be Name, the second Integer.
|
1141
|
+
|
1142
|
+
# Whitespace
|
1143
|
+
(r'\s+', Whitespace),
|
1059
1144
|
|
1060
|
-
#
|
1061
|
-
(r'
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
#
|
1067
|
-
(r'
|
1068
|
-
|
1069
|
-
|
1070
|
-
(r'[
|
1071
|
-
|
1072
|
-
|
1073
|
-
#
|
1074
|
-
|
1075
|
-
|
1076
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
(r'\d+[eE][+-]?[0-9]+j?', Number.Float),
|
1080
|
-
# Handle +-inf, +-infinity, +-nan
|
1081
|
-
(r'[+-]?(?:(inf(?:inity)?)|nan)', Number.Float),
|
1082
|
-
(r'[+-]?\d+', Number.Integer),
|
1083
|
-
|
1084
|
-
# Punctuation
|
1085
|
-
(r'[]{}:(),;[]', Punctuation),
|
1145
|
+
# Comment
|
1146
|
+
(r'#.*', Comment.Single),
|
1147
|
+
|
1148
|
+
# Assignment keys
|
1149
|
+
include('key'),
|
1150
|
+
|
1151
|
+
# After "=", find a value
|
1152
|
+
(r'(=)(\s*)', bygroups(Operator, Whitespace), 'value'),
|
1153
|
+
|
1154
|
+
# Table header
|
1155
|
+
(r'\[\[?', Keyword, 'table-key'),
|
1156
|
+
],
|
1157
|
+
'key': [
|
1158
|
+
# Start of bare key (only ASCII is allowed here).
|
1159
|
+
(r'[A-Za-z0-9_-]+', Name),
|
1160
|
+
# Quoted key
|
1161
|
+
(r'"', String.Double, 'basic-string'),
|
1162
|
+
(r"'", String.Single, 'literal-string'),
|
1163
|
+
# Dots act as separators in keys
|
1086
1164
|
(r'\.', Punctuation),
|
1165
|
+
],
|
1166
|
+
'table-key': [
|
1167
|
+
# This is like 'key', but highlights the name components
|
1168
|
+
# and separating dots as Keyword because it looks better
|
1169
|
+
# when the whole table header is Keyword. We do highlight
|
1170
|
+
# strings as strings though.
|
1171
|
+
# Start of bare key (only ASCII is allowed here).
|
1172
|
+
(r'[A-Za-z0-9_-]+', Keyword),
|
1173
|
+
(r'"', String.Double, 'basic-string'),
|
1174
|
+
(r"'", String.Single, 'literal-string'),
|
1175
|
+
(r'\.', Keyword),
|
1176
|
+
(r'\]\]?', Keyword, '#pop'),
|
1177
|
+
|
1178
|
+
# Inline whitespace allowed
|
1179
|
+
(r'[ \t]+', Whitespace),
|
1180
|
+
],
|
1181
|
+
'value': [
|
1182
|
+
# Datetime, baretime
|
1183
|
+
(_datetime, Literal.Date, '#pop'),
|
1184
|
+
(_time, Literal.Date, '#pop'),
|
1087
1185
|
|
1088
|
-
#
|
1089
|
-
|
1186
|
+
# Recognize as float if there is a fractional part
|
1187
|
+
# and/or an exponent.
|
1188
|
+
(r'[+-]?\d[0-9_]*[eE][+-]?\d[0-9_]*', Number.Float, '#pop'),
|
1189
|
+
(r'[+-]?\d[0-9_]*\.\d[0-9_]*([eE][+-]?\d[0-9_]*)?',
|
1190
|
+
Number.Float, '#pop'),
|
1090
1191
|
|
1091
|
-
|
1192
|
+
# Infinities and NaN
|
1193
|
+
(r'[+-]?(inf|nan)', Number.Float, '#pop'),
|
1194
|
+
|
1195
|
+
# Integers
|
1196
|
+
(r'-?0b[01_]+', Number.Bin, '#pop'),
|
1197
|
+
(r'-?0o[0-7_]+', Number.Oct, '#pop'),
|
1198
|
+
(r'-?0x[0-9a-fA-F_]+', Number.Hex, '#pop'),
|
1199
|
+
(r'[+-]?[0-9_]+', Number.Integer, '#pop'),
|
1200
|
+
|
1201
|
+
# Strings
|
1202
|
+
(r'"""', String.Double, ('#pop', 'multiline-basic-string')),
|
1203
|
+
(r'"', String.Double, ('#pop', 'basic-string')),
|
1204
|
+
(r"'''", String.Single, ('#pop', 'multiline-literal-string')),
|
1205
|
+
(r"'", String.Single, ('#pop', 'literal-string')),
|
1206
|
+
|
1207
|
+
# Booleans
|
1208
|
+
(r'true|false', Keyword.Constant, '#pop'),
|
1209
|
+
|
1210
|
+
# Start of array
|
1211
|
+
(r'\[', Punctuation, ('#pop', 'array')),
|
1212
|
+
|
1213
|
+
# Start of inline table
|
1214
|
+
(r'\{', Punctuation, ('#pop', 'inline-table')),
|
1215
|
+
],
|
1216
|
+
'array': [
|
1217
|
+
# Whitespace, including newlines, is ignored inside arrays,
|
1218
|
+
# and comments are allowed.
|
1219
|
+
(r'\s+', Whitespace),
|
1220
|
+
(r'#.*', Comment.Single),
|
1221
|
+
|
1222
|
+
# Delimiters
|
1223
|
+
(r',', Punctuation),
|
1224
|
+
|
1225
|
+
# End of array
|
1226
|
+
(r'\]', Punctuation, '#pop'),
|
1227
|
+
|
1228
|
+
# Parse a value and come back
|
1229
|
+
default('value'),
|
1230
|
+
],
|
1231
|
+
'inline-table': [
|
1232
|
+
# Note that unlike inline arrays, inline tables do not
|
1233
|
+
# allow newlines or comments.
|
1234
|
+
(r'[ \t]+', Whitespace),
|
1235
|
+
|
1236
|
+
# Keys
|
1237
|
+
include('key'),
|
1238
|
+
|
1239
|
+
# Values
|
1240
|
+
(r'(=)(\s*)', bygroups(Punctuation, Whitespace), 'value'),
|
1241
|
+
|
1242
|
+
# Delimiters
|
1243
|
+
(r',', Punctuation),
|
1244
|
+
|
1245
|
+
# End of inline table
|
1246
|
+
(r'\}', Punctuation, '#pop'),
|
1247
|
+
],
|
1248
|
+
'basic-string': [
|
1249
|
+
(r'"', String.Double, '#pop'),
|
1250
|
+
include('escapes'),
|
1251
|
+
(r'[^"\\]+', String.Double),
|
1252
|
+
],
|
1253
|
+
'literal-string': [
|
1254
|
+
(r".*?'", String.Single, '#pop'),
|
1255
|
+
],
|
1256
|
+
'multiline-basic-string': [
|
1257
|
+
(r'"""', String.Double, '#pop'),
|
1258
|
+
(r'(\\)(\n)', bygroups(String.Escape, Whitespace)),
|
1259
|
+
include('escapes'),
|
1260
|
+
(r'[^"\\]+', String.Double),
|
1261
|
+
(r'"', String.Double),
|
1262
|
+
],
|
1263
|
+
'multiline-literal-string': [
|
1264
|
+
(r"'''", String.Single, '#pop'),
|
1265
|
+
(r"[^']+", String.Single),
|
1266
|
+
(r"'", String.Single),
|
1267
|
+
],
|
1268
|
+
'escapes': [
|
1269
|
+
(r'\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}', String.Escape),
|
1270
|
+
(r'\\.', String.Escape),
|
1271
|
+
],
|
1092
1272
|
}
|
1093
1273
|
|
1094
1274
|
class NestedTextLexer(RegexLexer):
|
1095
1275
|
"""
|
1096
|
-
Lexer for NextedText
|
1097
|
-
format.
|
1276
|
+
Lexer for *NextedText*, a human-friendly data format.
|
1098
1277
|
|
1099
|
-
..
|
1278
|
+
.. versionchanged:: 2.16
|
1279
|
+
Added support for *NextedText* v3.0.
|
1100
1280
|
"""
|
1101
1281
|
|
1102
1282
|
name = 'NestedText'
|
1103
1283
|
url = 'https://nestedtext.org'
|
1104
1284
|
aliases = ['nestedtext', 'nt']
|
1105
1285
|
filenames = ['*.nt']
|
1106
|
-
|
1107
|
-
_quoted_dict_item = r'^(\s*)({0})(.*?)({0}: ?)(.*?)(\s*)$'
|
1286
|
+
version_added = '2.9'
|
1108
1287
|
|
1109
1288
|
tokens = {
|
1110
1289
|
'root': [
|
1111
|
-
|
1112
|
-
(r'^(
|
1113
|
-
|
1114
|
-
|
1115
|
-
(
|
1116
|
-
|
1290
|
+
# Comment: # ...
|
1291
|
+
(r'^([ ]*)(#.*)$', bygroups(Whitespace, Comment)),
|
1292
|
+
|
1293
|
+
# Inline dictionary: {...}
|
1294
|
+
(r'^([ ]*)(\{)', bygroups(Whitespace, Punctuation), 'inline_dict'),
|
1295
|
+
|
1296
|
+
# Inline list: [...]
|
1297
|
+
(r'^([ ]*)(\[)', bygroups(Whitespace, Punctuation), 'inline_list'),
|
1298
|
+
|
1299
|
+
# empty multiline string item: >
|
1300
|
+
(r'^([ ]*)(>)$', bygroups(Whitespace, Punctuation)),
|
1301
|
+
|
1302
|
+
# multiline string item: > ...
|
1303
|
+
(r'^([ ]*)(>)( )(.*?)([ \t]*)$', bygroups(Whitespace, Punctuation, Whitespace, Text, Whitespace)),
|
1304
|
+
|
1305
|
+
# empty list item: -
|
1306
|
+
(r'^([ ]*)(-)$', bygroups(Whitespace, Punctuation)),
|
1307
|
+
|
1308
|
+
# list item: - ...
|
1309
|
+
(r'^([ ]*)(-)( )(.*?)([ \t]*)$', bygroups(Whitespace, Punctuation, Whitespace, Text, Whitespace)),
|
1310
|
+
|
1311
|
+
# empty multiline key item: :
|
1312
|
+
(r'^([ ]*)(:)$', bygroups(Whitespace, Punctuation)),
|
1313
|
+
|
1314
|
+
# multiline key item: : ...
|
1315
|
+
(r'^([ ]*)(:)( )([^\n]*?)([ \t]*)$', bygroups(Whitespace, Punctuation, Whitespace, Name.Tag, Whitespace)),
|
1316
|
+
|
1317
|
+
# empty dict key item: ...:
|
1318
|
+
(r'^([ ]*)([^\{\[\s].*?)(:)$', bygroups(Whitespace, Name.Tag, Punctuation)),
|
1319
|
+
|
1320
|
+
# dict key item: ...: ...
|
1321
|
+
(r'^([ ]*)([^\{\[\s].*?)(:)( )(.*?)([ \t]*)$', bygroups(Whitespace, Name.Tag, Punctuation, Whitespace, Text, Whitespace)),
|
1322
|
+
],
|
1323
|
+
'inline_list': [
|
1324
|
+
include('whitespace'),
|
1325
|
+
(r'[^\{\}\[\],\s]+', Text),
|
1326
|
+
include('inline_value'),
|
1327
|
+
(r',', Punctuation),
|
1328
|
+
(r'\]', Punctuation, '#pop'),
|
1329
|
+
(r'\n', Error, '#pop'),
|
1330
|
+
],
|
1331
|
+
'inline_dict': [
|
1332
|
+
include('whitespace'),
|
1333
|
+
(r'[^\{\}\[\],:\s]+', Name.Tag),
|
1334
|
+
(r':', Punctuation, 'inline_dict_value'),
|
1335
|
+
(r'\}', Punctuation, '#pop'),
|
1336
|
+
(r'\n', Error, '#pop'),
|
1337
|
+
],
|
1338
|
+
'inline_dict_value': [
|
1339
|
+
include('whitespace'),
|
1340
|
+
(r'[^\{\}\[\],:\s]+', Text),
|
1341
|
+
include('inline_value'),
|
1342
|
+
(r',', Punctuation, '#pop'),
|
1343
|
+
(r'\}', Punctuation, '#pop:2'),
|
1344
|
+
],
|
1345
|
+
'inline_value': [
|
1346
|
+
include('whitespace'),
|
1347
|
+
(r'\{', Punctuation, 'inline_dict'),
|
1348
|
+
(r'\[', Punctuation, 'inline_list'),
|
1349
|
+
],
|
1350
|
+
'whitespace': [
|
1351
|
+
(r'[ \t]+', Whitespace),
|
1117
1352
|
],
|
1118
1353
|
}
|
1119
1354
|
|
@@ -1121,14 +1356,13 @@ class NestedTextLexer(RegexLexer):
|
|
1121
1356
|
class SingularityLexer(RegexLexer):
|
1122
1357
|
"""
|
1123
1358
|
Lexer for Singularity definition files.
|
1124
|
-
|
1125
|
-
.. versionadded:: 2.6
|
1126
1359
|
"""
|
1127
1360
|
|
1128
1361
|
name = 'Singularity'
|
1129
1362
|
url = 'https://www.sylabs.io/guides/3.0/user-guide/definition_files.html'
|
1130
1363
|
aliases = ['singularity']
|
1131
1364
|
filenames = ['*.def', 'Singularity']
|
1365
|
+
version_added = '2.6'
|
1132
1366
|
flags = re.IGNORECASE | re.MULTILINE | re.DOTALL
|
1133
1367
|
|
1134
1368
|
_headers = r'^(\s*)(bootstrap|from|osversion|mirrorurl|include|registry|namespace|includecmd)(:)'
|
@@ -1170,13 +1404,13 @@ class UnixConfigLexer(RegexLexer):
|
|
1170
1404
|
* ``/etc/group``
|
1171
1405
|
* ``/etc/passwd``
|
1172
1406
|
* ``/etc/shadow``
|
1173
|
-
|
1174
|
-
.. versionadded:: 2.12
|
1175
1407
|
"""
|
1176
1408
|
|
1177
1409
|
name = 'Unix/Linux config files'
|
1178
1410
|
aliases = ['unixconfig', 'linuxconfig']
|
1179
1411
|
filenames = []
|
1412
|
+
url = 'https://en.wikipedia.org/wiki/Configuration_file#Unix_and_Unix-like_operating_systems'
|
1413
|
+
version_added = '2.12'
|
1180
1414
|
|
1181
1415
|
tokens = {
|
1182
1416
|
'root': [
|