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,26 +4,28 @@
|
|
4
4
|
|
5
5
|
Lexers for non-HTML markup 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.lexers.html import
|
13
|
+
from pygments.lexers.html import XmlLexer
|
14
14
|
from pygments.lexers.javascript import JavascriptLexer
|
15
15
|
from pygments.lexers.css import CssLexer
|
16
|
+
from pygments.lexers.lilypond import LilyPondLexer
|
17
|
+
from pygments.lexers.data import JsonLexer
|
16
18
|
|
17
19
|
from pygments.lexer import RegexLexer, DelegatingLexer, include, bygroups, \
|
18
20
|
using, this, do_insertions, default, words
|
19
21
|
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
|
20
|
-
Number, Punctuation, Generic, Other
|
22
|
+
Number, Punctuation, Generic, Other, Whitespace
|
21
23
|
from pygments.util import get_bool_opt, ClassNotFound
|
22
24
|
|
23
25
|
__all__ = ['BBCodeLexer', 'MoinWikiLexer', 'RstLexer', 'TexLexer', 'GroffLexer',
|
24
26
|
'MozPreprocHashLexer', 'MozPreprocPercentLexer',
|
25
27
|
'MozPreprocXulLexer', 'MozPreprocJavascriptLexer',
|
26
|
-
'MozPreprocCssLexer', 'MarkdownLexer', 'TiddlyWiki5Lexer']
|
28
|
+
'MozPreprocCssLexer', 'MarkdownLexer', 'TiddlyWiki5Lexer', 'WikitextLexer']
|
27
29
|
|
28
30
|
|
29
31
|
class BBCodeLexer(RegexLexer):
|
@@ -106,7 +108,7 @@ class MoinWikiLexer(RegexLexer):
|
|
106
108
|
|
107
109
|
class RstLexer(RegexLexer):
|
108
110
|
"""
|
109
|
-
For
|
111
|
+
For reStructuredText markup.
|
110
112
|
|
111
113
|
.. versionadded:: 0.7
|
112
114
|
|
@@ -121,6 +123,7 @@ class RstLexer(RegexLexer):
|
|
121
123
|
.. versionadded:: 0.8
|
122
124
|
"""
|
123
125
|
name = 'reStructuredText'
|
126
|
+
url = 'https://docutils.sourceforge.io/rst.html'
|
124
127
|
aliases = ['restructuredtext', 'rst', 'rest']
|
125
128
|
filenames = ['*.rst', '*.rest']
|
126
129
|
mimetypes = ["text/x-rst", "text/prs.fallenstein.rst"]
|
@@ -339,7 +342,7 @@ class GroffLexer(RegexLexer):
|
|
339
342
|
|
340
343
|
name = 'Groff'
|
341
344
|
aliases = ['groff', 'nroff', 'man']
|
342
|
-
filenames = ['*.[
|
345
|
+
filenames = ['*.[1-9]', '*.man', '*.1p', '*.3pm']
|
343
346
|
mimetypes = ['application/x-troff', 'text/troff']
|
344
347
|
|
345
348
|
tokens = {
|
@@ -497,11 +500,12 @@ class MozPreprocCssLexer(DelegatingLexer):
|
|
497
500
|
|
498
501
|
class MarkdownLexer(RegexLexer):
|
499
502
|
"""
|
500
|
-
For
|
503
|
+
For Markdown markup.
|
501
504
|
|
502
505
|
.. versionadded:: 2.2
|
503
506
|
"""
|
504
507
|
name = 'Markdown'
|
508
|
+
url = 'https://daringfireball.net/projects/markdown/'
|
505
509
|
aliases = ['markdown', 'md']
|
506
510
|
filenames = ['*.md', '*.markdown']
|
507
511
|
mimetypes = ["text/x-markdown"]
|
@@ -547,13 +551,13 @@ class MarkdownLexer(RegexLexer):
|
|
547
551
|
(r'^(.+)(\n)(-+)(\n)', bygroups(Generic.Subheading, Text, Generic.Subheading, Text)),
|
548
552
|
# task list
|
549
553
|
(r'^(\s*)([*-] )(\[[ xX]\])( .+\n)',
|
550
|
-
bygroups(
|
554
|
+
bygroups(Whitespace, Keyword, Keyword, using(this, state='inline'))),
|
551
555
|
# bulleted list
|
552
556
|
(r'^(\s*)([*-])(\s)(.+\n)',
|
553
|
-
bygroups(
|
557
|
+
bygroups(Whitespace, Keyword, Whitespace, using(this, state='inline'))),
|
554
558
|
# numbered list
|
555
559
|
(r'^(\s*)([0-9]+\.)( .+\n)',
|
556
|
-
bygroups(
|
560
|
+
bygroups(Whitespace, Keyword, using(this, state='inline'))),
|
557
561
|
# quote
|
558
562
|
(r'^(\s*>\s)(.+\n)', bygroups(Keyword, Generic.Emph)),
|
559
563
|
# code block fenced by 3 backticks
|
@@ -606,11 +610,12 @@ class MarkdownLexer(RegexLexer):
|
|
606
610
|
|
607
611
|
class TiddlyWiki5Lexer(RegexLexer):
|
608
612
|
"""
|
609
|
-
For
|
613
|
+
For TiddlyWiki5 markup.
|
610
614
|
|
611
615
|
.. versionadded:: 2.7
|
612
616
|
"""
|
613
617
|
name = 'tiddler'
|
618
|
+
url = 'https://tiddlywiki.com/#TiddlerFiles'
|
614
619
|
aliases = ['tid']
|
615
620
|
filenames = ['*.tid']
|
616
621
|
mimetypes = ["text/vnd.tiddlywiki"]
|
@@ -760,3 +765,739 @@ class TiddlyWiki5Lexer(RegexLexer):
|
|
760
765
|
def __init__(self, **options):
|
761
766
|
self.handlecodeblocks = get_bool_opt(options, 'handlecodeblocks', True)
|
762
767
|
RegexLexer.__init__(self, **options)
|
768
|
+
|
769
|
+
|
770
|
+
class WikitextLexer(RegexLexer):
|
771
|
+
"""
|
772
|
+
For MediaWiki Wikitext.
|
773
|
+
|
774
|
+
Parsing Wikitext is tricky, and results vary between different MediaWiki
|
775
|
+
installations, so we only highlight common syntaxes (built-in or from
|
776
|
+
popular extensions), and also assume templates produce no unbalanced
|
777
|
+
syntaxes.
|
778
|
+
|
779
|
+
.. versionadded:: 2.15
|
780
|
+
"""
|
781
|
+
name = 'Wikitext'
|
782
|
+
url = 'https://www.mediawiki.org/wiki/Wikitext'
|
783
|
+
aliases = ['wikitext', 'mediawiki']
|
784
|
+
filenames = []
|
785
|
+
mimetypes = ['text/x-wiki']
|
786
|
+
flags = re.MULTILINE
|
787
|
+
|
788
|
+
def nowiki_tag_rules(tag_name):
|
789
|
+
return [
|
790
|
+
(r'(?i)(</)({})(\s*)(>)'.format(tag_name), bygroups(Punctuation,
|
791
|
+
Name.Tag, Whitespace, Punctuation), '#pop'),
|
792
|
+
include('entity'),
|
793
|
+
include('text'),
|
794
|
+
]
|
795
|
+
|
796
|
+
def plaintext_tag_rules(tag_name):
|
797
|
+
return [
|
798
|
+
(r'(?si)(.*?)(</)({})(\s*)(>)'.format(tag_name), bygroups(Text,
|
799
|
+
Punctuation, Name.Tag, Whitespace, Punctuation), '#pop'),
|
800
|
+
]
|
801
|
+
|
802
|
+
def delegate_tag_rules(tag_name, lexer):
|
803
|
+
return [
|
804
|
+
(r'(?i)(</)({})(\s*)(>)'.format(tag_name), bygroups(Punctuation,
|
805
|
+
Name.Tag, Whitespace, Punctuation), '#pop'),
|
806
|
+
(r'(?si).+?(?=</{}\s*>)'.format(tag_name), using(lexer)),
|
807
|
+
]
|
808
|
+
|
809
|
+
def text_rules(token):
|
810
|
+
return [
|
811
|
+
(r'\w+', token),
|
812
|
+
(r'[^\S\n]+', token),
|
813
|
+
(r'(?s).', token),
|
814
|
+
]
|
815
|
+
|
816
|
+
def handle_syntaxhighlight(self, match, ctx):
|
817
|
+
from pygments.lexers import get_lexer_by_name
|
818
|
+
|
819
|
+
attr_content = match.group()
|
820
|
+
start = 0
|
821
|
+
index = 0
|
822
|
+
while True:
|
823
|
+
index = attr_content.find('>', start)
|
824
|
+
# Exclude comment end (-->)
|
825
|
+
if attr_content[index-2:index] != '--':
|
826
|
+
break
|
827
|
+
start = index + 1
|
828
|
+
|
829
|
+
if index == -1:
|
830
|
+
# No tag end
|
831
|
+
yield from self.get_tokens_unprocessed(attr_content, stack=['root', 'attr'])
|
832
|
+
return
|
833
|
+
attr = attr_content[:index]
|
834
|
+
yield from self.get_tokens_unprocessed(attr, stack=['root', 'attr'])
|
835
|
+
yield match.start(3) + index, Punctuation, '>'
|
836
|
+
|
837
|
+
lexer = None
|
838
|
+
content = attr_content[index+1:]
|
839
|
+
lang_match = re.findall(r'\blang=("|\'|)(\w+)(\1)', attr)
|
840
|
+
|
841
|
+
if len(lang_match) >= 1:
|
842
|
+
# Pick the last match in case of multiple matches
|
843
|
+
lang = lang_match[-1][1]
|
844
|
+
try:
|
845
|
+
lexer = get_lexer_by_name(lang)
|
846
|
+
except ClassNotFound:
|
847
|
+
pass
|
848
|
+
|
849
|
+
if lexer is None:
|
850
|
+
yield match.start() + index + 1, Text, content
|
851
|
+
else:
|
852
|
+
yield from lexer.get_tokens_unprocessed(content)
|
853
|
+
|
854
|
+
def handle_score(self, match, ctx):
|
855
|
+
attr_content = match.group()
|
856
|
+
start = 0
|
857
|
+
index = 0
|
858
|
+
while True:
|
859
|
+
index = attr_content.find('>', start)
|
860
|
+
# Exclude comment end (-->)
|
861
|
+
if attr_content[index-2:index] != '--':
|
862
|
+
break
|
863
|
+
start = index + 1
|
864
|
+
|
865
|
+
if index == -1:
|
866
|
+
# No tag end
|
867
|
+
yield from self.get_tokens_unprocessed(attr_content, stack=['root', 'attr'])
|
868
|
+
return
|
869
|
+
attr = attr_content[:index]
|
870
|
+
content = attr_content[index+1:]
|
871
|
+
yield from self.get_tokens_unprocessed(attr, stack=['root', 'attr'])
|
872
|
+
yield match.start(3) + index, Punctuation, '>'
|
873
|
+
|
874
|
+
lang_match = re.findall(r'\blang=("|\'|)(\w+)(\1)', attr)
|
875
|
+
# Pick the last match in case of multiple matches
|
876
|
+
lang = lang_match[-1][1] if len(lang_match) >= 1 else 'lilypond'
|
877
|
+
|
878
|
+
if lang == 'lilypond': # Case sensitive
|
879
|
+
yield from LilyPondLexer().get_tokens_unprocessed(content)
|
880
|
+
else: # ABC
|
881
|
+
# FIXME: Use ABC lexer in the future
|
882
|
+
yield match.start() + index + 1, Text, content
|
883
|
+
|
884
|
+
# a-z removed to prevent linter from complaining, REMEMBER to use (?i)
|
885
|
+
title_char = r' %!"$&\'()*,\-./0-9:;=?@A-Z\\\^_`~+\u0080-\uFFFF'
|
886
|
+
nbsp_char = r'(?:\t| |&\#0*160;|&\#[Xx]0*[Aa]0;|[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000])'
|
887
|
+
link_address = r'(?:[0-9.]+|\[[0-9a-f:.]+\]|[^\x00-\x20"<>\[\]\x7F\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFFFD])'
|
888
|
+
link_char_class = r'[^\x00-\x20"<>\[\]\x7F\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFFFD]'
|
889
|
+
double_slashes_i = {
|
890
|
+
'__FORCETOC__', '__NOCONTENTCONVERT__', '__NOCC__', '__NOEDITSECTION__', '__NOGALLERY__',
|
891
|
+
'__NOTITLECONVERT__', '__NOTC__', '__NOTOC__', '__TOC__',
|
892
|
+
}
|
893
|
+
double_slashes = {
|
894
|
+
'__EXPECTUNUSEDCATEGORY__', '__HIDDENCAT__', '__INDEX__', '__NEWSECTIONLINK__',
|
895
|
+
'__NOINDEX__', '__NONEWSECTIONLINK__', '__STATICREDIRECT__', '__NOGLOBAL__',
|
896
|
+
'__DISAMBIG__', '__EXPECTED_UNCONNECTED_PAGE__',
|
897
|
+
}
|
898
|
+
protocols = {
|
899
|
+
'bitcoin:', 'ftp://', 'ftps://', 'geo:', 'git://', 'gopher://', 'http://', 'https://',
|
900
|
+
'irc://', 'ircs://', 'magnet:', 'mailto:', 'mms://', 'news:', 'nntp://', 'redis://',
|
901
|
+
'sftp://', 'sip:', 'sips:', 'sms:', 'ssh://', 'svn://', 'tel:', 'telnet://', 'urn:',
|
902
|
+
'worldwind://', 'xmpp:', '//',
|
903
|
+
}
|
904
|
+
non_relative_protocols = protocols - {'//'}
|
905
|
+
html_tags = {
|
906
|
+
'abbr', 'b', 'bdi', 'bdo', 'big', 'blockquote', 'br', 'caption', 'center', 'cite', 'code',
|
907
|
+
'data', 'dd', 'del', 'dfn', 'div', 'dl', 'dt', 'em', 'font', 'h1', 'h2', 'h3', 'h4', 'h5',
|
908
|
+
'h6', 'hr', 'i', 'ins', 'kbd', 'li', 'link', 'mark', 'meta', 'ol', 'p', 'q', 'rb', 'rp',
|
909
|
+
'rt', 'rtc', 'ruby', 's', 'samp', 'small', 'span', 'strike', 'strong', 'sub', 'sup',
|
910
|
+
'table', 'td', 'th', 'time', 'tr', 'tt', 'u', 'ul', 'var', 'wbr',
|
911
|
+
}
|
912
|
+
parser_tags = {
|
913
|
+
'graph', 'charinsert', 'rss', 'chem', 'categorytree', 'nowiki', 'inputbox', 'math',
|
914
|
+
'hiero', 'score', 'pre', 'ref', 'translate', 'imagemap', 'templatestyles', 'languages',
|
915
|
+
'noinclude', 'mapframe', 'section', 'poem', 'syntaxhighlight', 'includeonly', 'tvar',
|
916
|
+
'onlyinclude', 'templatedata', 'langconvert', 'timeline', 'dynamicpagelist', 'gallery',
|
917
|
+
'maplink', 'ce', 'references',
|
918
|
+
}
|
919
|
+
variant_langs = {
|
920
|
+
# ZhConverter.php
|
921
|
+
'zh', 'zh-hans', 'zh-hant', 'zh-cn', 'zh-hk', 'zh-mo', 'zh-my', 'zh-sg', 'zh-tw',
|
922
|
+
# UnConverter.php
|
923
|
+
'uz', 'uz-latn', 'uz-cyrl',
|
924
|
+
# TlyConverter.php
|
925
|
+
'tly', 'tly-cyrl',
|
926
|
+
# TgConverter.php
|
927
|
+
'tg', 'tg-latn',
|
928
|
+
# SrConverter.php
|
929
|
+
'sr', 'sr-ec', 'sr-el',
|
930
|
+
# ShiConverter.php
|
931
|
+
'shi', 'shi-tfng', 'shi-latn',
|
932
|
+
# ShConverter.php
|
933
|
+
'sh-latn', 'sh-cyrl',
|
934
|
+
# KuConverter.php
|
935
|
+
'ku', 'ku-arab', 'ku-latn',
|
936
|
+
# KkConverter.php
|
937
|
+
'kk', 'kk-cyrl', 'kk-latn', 'kk-arab', 'kk-kz', 'kk-tr', 'kk-cn',
|
938
|
+
# IuConverter.php
|
939
|
+
'iu', 'ike-cans', 'ike-latn',
|
940
|
+
# GanConverter.php
|
941
|
+
'gan', 'gan-hans', 'gan-hant',
|
942
|
+
# EnConverter.php
|
943
|
+
'en', 'en-x-piglatin',
|
944
|
+
# CrhConverter.php
|
945
|
+
'crh', 'crh-cyrl', 'crh-latn',
|
946
|
+
# BanConverter.php
|
947
|
+
'ban', 'ban-bali', 'ban-x-dharma', 'ban-x-palmleaf', 'ban-x-pku',
|
948
|
+
}
|
949
|
+
magic_vars_i = {
|
950
|
+
'ARTICLEPATH', 'INT', 'PAGEID', 'SCRIPTPATH', 'SERVER', 'SERVERNAME', 'STYLEPATH',
|
951
|
+
}
|
952
|
+
magic_vars = {
|
953
|
+
'!', '=', 'BASEPAGENAME', 'BASEPAGENAMEE', 'CASCADINGSOURCES', 'CONTENTLANGUAGE',
|
954
|
+
'CONTENTLANG', 'CURRENTDAY', 'CURRENTDAY2', 'CURRENTDAYNAME', 'CURRENTDOW', 'CURRENTHOUR',
|
955
|
+
'CURRENTMONTH', 'CURRENTMONTH2', 'CURRENTMONTH1', 'CURRENTMONTHABBREV', 'CURRENTMONTHNAME',
|
956
|
+
'CURRENTMONTHNAMEGEN', 'CURRENTTIME', 'CURRENTTIMESTAMP', 'CURRENTVERSION', 'CURRENTWEEK',
|
957
|
+
'CURRENTYEAR', 'DIRECTIONMARK', 'DIRMARK', 'FULLPAGENAME', 'FULLPAGENAMEE', 'LOCALDAY',
|
958
|
+
'LOCALDAY2', 'LOCALDAYNAME', 'LOCALDOW', 'LOCALHOUR', 'LOCALMONTH', 'LOCALMONTH2',
|
959
|
+
'LOCALMONTH1', 'LOCALMONTHABBREV', 'LOCALMONTHNAME', 'LOCALMONTHNAMEGEN', 'LOCALTIME',
|
960
|
+
'LOCALTIMESTAMP', 'LOCALWEEK', 'LOCALYEAR', 'NAMESPACE', 'NAMESPACEE', 'NAMESPACENUMBER',
|
961
|
+
'NUMBEROFACTIVEUSERS', 'NUMBEROFADMINS', 'NUMBEROFARTICLES', 'NUMBEROFEDITS',
|
962
|
+
'NUMBEROFFILES', 'NUMBEROFPAGES', 'NUMBEROFUSERS', 'PAGELANGUAGE', 'PAGENAME', 'PAGENAMEE',
|
963
|
+
'REVISIONDAY', 'REVISIONDAY2', 'REVISIONID', 'REVISIONMONTH', 'REVISIONMONTH1',
|
964
|
+
'REVISIONSIZE', 'REVISIONTIMESTAMP', 'REVISIONUSER', 'REVISIONYEAR', 'ROOTPAGENAME',
|
965
|
+
'ROOTPAGENAMEE', 'SITENAME', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME', 'SUBJECTPAGENAMEE',
|
966
|
+
'ARTICLEPAGENAMEE', 'SUBJECTSPACE', 'ARTICLESPACE', 'SUBJECTSPACEE', 'ARTICLESPACEE',
|
967
|
+
'SUBPAGENAME', 'SUBPAGENAMEE', 'TALKPAGENAME', 'TALKPAGENAMEE', 'TALKSPACE', 'TALKSPACEE',
|
968
|
+
}
|
969
|
+
parser_functions_i = {
|
970
|
+
'ANCHORENCODE', 'BIDI', 'CANONICALURL', 'CANONICALURLE', 'FILEPATH', 'FORMATNUM',
|
971
|
+
'FULLURL', 'FULLURLE', 'GENDER', 'GRAMMAR', 'INT', r'\#LANGUAGE', 'LC', 'LCFIRST', 'LOCALURL',
|
972
|
+
'LOCALURLE', 'NS', 'NSE', 'PADLEFT', 'PADRIGHT', 'PAGEID', 'PLURAL', 'UC', 'UCFIRST',
|
973
|
+
'URLENCODE',
|
974
|
+
}
|
975
|
+
parser_functions = {
|
976
|
+
'BASEPAGENAME', 'BASEPAGENAMEE', 'CASCADINGSOURCES', 'DEFAULTSORT', 'DEFAULTSORTKEY',
|
977
|
+
'DEFAULTCATEGORYSORT', 'FULLPAGENAME', 'FULLPAGENAMEE', 'NAMESPACE', 'NAMESPACEE',
|
978
|
+
'NAMESPACENUMBER', 'NUMBERINGROUP', 'NUMINGROUP', 'NUMBEROFACTIVEUSERS', 'NUMBEROFADMINS',
|
979
|
+
'NUMBEROFARTICLES', 'NUMBEROFEDITS', 'NUMBEROFFILES', 'NUMBEROFPAGES', 'NUMBEROFUSERS',
|
980
|
+
'PAGENAME', 'PAGENAMEE', 'PAGESINCATEGORY', 'PAGESINCAT', 'PAGESIZE', 'PROTECTIONEXPIRY',
|
981
|
+
'PROTECTIONLEVEL', 'REVISIONDAY', 'REVISIONDAY2', 'REVISIONID', 'REVISIONMONTH',
|
982
|
+
'REVISIONMONTH1', 'REVISIONTIMESTAMP', 'REVISIONUSER', 'REVISIONYEAR', 'ROOTPAGENAME',
|
983
|
+
'ROOTPAGENAMEE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME', 'SUBJECTPAGENAMEE',
|
984
|
+
'ARTICLEPAGENAMEE', 'SUBJECTSPACE', 'ARTICLESPACE', 'SUBJECTSPACEE', 'ARTICLESPACEE',
|
985
|
+
'SUBPAGENAME', 'SUBPAGENAMEE', 'TALKPAGENAME', 'TALKPAGENAMEE', 'TALKSPACE', 'TALKSPACEE',
|
986
|
+
'INT', 'DISPLAYTITLE', 'PAGESINNAMESPACE', 'PAGESINNS',
|
987
|
+
}
|
988
|
+
|
989
|
+
tokens = {
|
990
|
+
'root': [
|
991
|
+
# Redirects
|
992
|
+
(r"""(?xi)
|
993
|
+
(\A\s*?)(\#REDIRECT:?) # may contain a colon
|
994
|
+
(\s+)(\[\[) (?=[^\]\n]* \]\]$)
|
995
|
+
""",
|
996
|
+
bygroups(Whitespace, Keyword, Whitespace, Punctuation), 'redirect-inner'),
|
997
|
+
# Subheadings
|
998
|
+
(r'^(={2,6})(.+?)(\1)(\s*$\n)',
|
999
|
+
bygroups(Generic.Subheading, Generic.Subheading, Generic.Subheading, Whitespace)),
|
1000
|
+
# Headings
|
1001
|
+
(r'^(=.+?=)(\s*$\n)',
|
1002
|
+
bygroups(Generic.Heading, Whitespace)),
|
1003
|
+
# Double-slashed magic words
|
1004
|
+
(words(double_slashes_i, prefix=r'(?i)'), Name.Function.Magic),
|
1005
|
+
(words(double_slashes), Name.Function.Magic),
|
1006
|
+
# Raw URLs
|
1007
|
+
(r'(?i)\b(?:{}){}{}*'.format('|'.join(protocols),
|
1008
|
+
link_address, link_char_class), Name.Label),
|
1009
|
+
# Magic links
|
1010
|
+
(r'\b(?:RFC|PMID){}+[0-9]+\b'.format(nbsp_char),
|
1011
|
+
Name.Function.Magic),
|
1012
|
+
(r"""(?x)
|
1013
|
+
\bISBN {nbsp_char}
|
1014
|
+
(?: 97[89] {nbsp_dash}? )?
|
1015
|
+
(?: [0-9] {nbsp_dash}? ){{9}} # escape format()
|
1016
|
+
[0-9Xx]\b
|
1017
|
+
""".format(nbsp_char=nbsp_char, nbsp_dash=f'(?:-|{nbsp_char})'), Name.Function.Magic),
|
1018
|
+
include('list'),
|
1019
|
+
include('inline'),
|
1020
|
+
include('text'),
|
1021
|
+
],
|
1022
|
+
'redirect-inner': [
|
1023
|
+
(r'(\]\])(\s*?\n)', bygroups(Punctuation, Whitespace), '#pop'),
|
1024
|
+
(r'(\#)([^#]*?)', bygroups(Punctuation, Name.Label)),
|
1025
|
+
(r'(?i)[{}]+'.format(title_char), Name.Tag),
|
1026
|
+
],
|
1027
|
+
'list': [
|
1028
|
+
# Description lists
|
1029
|
+
(r'^;', Keyword, 'dt'),
|
1030
|
+
# Ordered lists, unordered lists and indents
|
1031
|
+
(r'^[#:*]+', Keyword),
|
1032
|
+
# Horizontal rules
|
1033
|
+
(r'^-{4,}', Keyword),
|
1034
|
+
],
|
1035
|
+
'inline': [
|
1036
|
+
# Signatures
|
1037
|
+
(r'~{3,5}', Keyword),
|
1038
|
+
# Entities
|
1039
|
+
include('entity'),
|
1040
|
+
# Bold & italic
|
1041
|
+
(r"('')(''')(?!')", bygroups(Generic.Emph,
|
1042
|
+
Generic.Strong), 'inline-italic-bold'),
|
1043
|
+
(r"'''(?!')", Generic.Strong, 'inline-bold'),
|
1044
|
+
(r"''(?!')", Generic.Emph, 'inline-italic'),
|
1045
|
+
# Comments & parameters & templates
|
1046
|
+
include('replaceable'),
|
1047
|
+
# Media links
|
1048
|
+
(
|
1049
|
+
r"""(?xi)
|
1050
|
+
(\[\[)
|
1051
|
+
(File|Image) (:)
|
1052
|
+
([{}]*)
|
1053
|
+
(?: (\#) ([{}]*?) )?
|
1054
|
+
""".format(title_char, f'{title_char}#'),
|
1055
|
+
bygroups(Punctuation, Name.Namespace, Punctuation,
|
1056
|
+
Name.Tag, Punctuation, Name.Label),
|
1057
|
+
'medialink-inner'
|
1058
|
+
),
|
1059
|
+
# Wikilinks
|
1060
|
+
(
|
1061
|
+
r"""(?xi)
|
1062
|
+
(\[\[)(?!{}) # Should not contain URLs
|
1063
|
+
(?: ([{}]*) (:))?
|
1064
|
+
([{}]*?)
|
1065
|
+
(?: (\#) ([{}]*?) )?
|
1066
|
+
(\]\])
|
1067
|
+
""".format('|'.join(protocols), title_char.replace('/', ''),
|
1068
|
+
title_char, f'{title_char}#'),
|
1069
|
+
bygroups(Punctuation, Name.Namespace, Punctuation,
|
1070
|
+
Name.Tag, Punctuation, Name.Label, Punctuation)
|
1071
|
+
),
|
1072
|
+
(
|
1073
|
+
r"""(?xi)
|
1074
|
+
(\[\[)(?!{})
|
1075
|
+
(?: ([{}]*) (:))?
|
1076
|
+
([{}]*?)
|
1077
|
+
(?: (\#) ([{}]*?) )?
|
1078
|
+
(\|)
|
1079
|
+
""".format('|'.join(protocols), title_char.replace('/', ''),
|
1080
|
+
title_char, f'{title_char}#'),
|
1081
|
+
bygroups(Punctuation, Name.Namespace, Punctuation,
|
1082
|
+
Name.Tag, Punctuation, Name.Label, Punctuation),
|
1083
|
+
'wikilink-inner'
|
1084
|
+
),
|
1085
|
+
# External links
|
1086
|
+
(
|
1087
|
+
r"""(?xi)
|
1088
|
+
(\[)
|
1089
|
+
((?:{}) {} {}*)
|
1090
|
+
(\s*)
|
1091
|
+
""".format('|'.join(protocols), link_address, link_char_class),
|
1092
|
+
bygroups(Punctuation, Name.Label, Whitespace),
|
1093
|
+
'extlink-inner'
|
1094
|
+
),
|
1095
|
+
# Tables
|
1096
|
+
(r'^(:*)(\s*?)(\{\|)([^\n]*)$', bygroups(Keyword,
|
1097
|
+
Whitespace, Punctuation, using(this, state=['root', 'attr'])), 'table'),
|
1098
|
+
# HTML tags
|
1099
|
+
(r'(?i)(<)({})\b'.format('|'.join(html_tags)),
|
1100
|
+
bygroups(Punctuation, Name.Tag), 'tag-inner-ordinary'),
|
1101
|
+
(r'(?i)(</)({})\b(\s*)(>)'.format('|'.join(html_tags)),
|
1102
|
+
bygroups(Punctuation, Name.Tag, Whitespace, Punctuation)),
|
1103
|
+
# <nowiki>
|
1104
|
+
(r'(?i)(<)(nowiki)\b', bygroups(Punctuation,
|
1105
|
+
Name.Tag), ('tag-nowiki', 'tag-inner')),
|
1106
|
+
# <pre>
|
1107
|
+
(r'(?i)(<)(pre)\b', bygroups(Punctuation,
|
1108
|
+
Name.Tag), ('tag-pre', 'tag-inner')),
|
1109
|
+
# <categorytree>
|
1110
|
+
(r'(?i)(<)(categorytree)\b', bygroups(
|
1111
|
+
Punctuation, Name.Tag), ('tag-categorytree', 'tag-inner')),
|
1112
|
+
# <hiero>
|
1113
|
+
(r'(?i)(<)(hiero)\b', bygroups(Punctuation,
|
1114
|
+
Name.Tag), ('tag-hiero', 'tag-inner')),
|
1115
|
+
# <math>
|
1116
|
+
(r'(?i)(<)(math)\b', bygroups(Punctuation,
|
1117
|
+
Name.Tag), ('tag-math', 'tag-inner')),
|
1118
|
+
# <chem>
|
1119
|
+
(r'(?i)(<)(chem)\b', bygroups(Punctuation,
|
1120
|
+
Name.Tag), ('tag-chem', 'tag-inner')),
|
1121
|
+
# <ce>
|
1122
|
+
(r'(?i)(<)(ce)\b', bygroups(Punctuation,
|
1123
|
+
Name.Tag), ('tag-ce', 'tag-inner')),
|
1124
|
+
# <charinsert>
|
1125
|
+
(r'(?i)(<)(charinsert)\b', bygroups(
|
1126
|
+
Punctuation, Name.Tag), ('tag-charinsert', 'tag-inner')),
|
1127
|
+
# <templatedata>
|
1128
|
+
(r'(?i)(<)(templatedata)\b', bygroups(
|
1129
|
+
Punctuation, Name.Tag), ('tag-templatedata', 'tag-inner')),
|
1130
|
+
# <gallery>
|
1131
|
+
(r'(?i)(<)(gallery)\b', bygroups(
|
1132
|
+
Punctuation, Name.Tag), ('tag-gallery', 'tag-inner')),
|
1133
|
+
# <graph>
|
1134
|
+
(r'(?i)(<)(gallery)\b', bygroups(
|
1135
|
+
Punctuation, Name.Tag), ('tag-graph', 'tag-inner')),
|
1136
|
+
# <dynamicpagelist>
|
1137
|
+
(r'(?i)(<)(dynamicpagelist)\b', bygroups(
|
1138
|
+
Punctuation, Name.Tag), ('tag-dynamicpagelist', 'tag-inner')),
|
1139
|
+
# <inputbox>
|
1140
|
+
(r'(?i)(<)(inputbox)\b', bygroups(
|
1141
|
+
Punctuation, Name.Tag), ('tag-inputbox', 'tag-inner')),
|
1142
|
+
# <rss>
|
1143
|
+
(r'(?i)(<)(rss)\b', bygroups(
|
1144
|
+
Punctuation, Name.Tag), ('tag-rss', 'tag-inner')),
|
1145
|
+
# <imagemap>
|
1146
|
+
(r'(?i)(<)(imagemap)\b', bygroups(
|
1147
|
+
Punctuation, Name.Tag), ('tag-imagemap', 'tag-inner')),
|
1148
|
+
# <syntaxhighlight>
|
1149
|
+
(r'(?i)(</)(syntaxhighlight)\b(\s*)(>)',
|
1150
|
+
bygroups(Punctuation, Name.Tag, Whitespace, Punctuation)),
|
1151
|
+
(r'(?si)(<)(syntaxhighlight)\b([^>]*?(?<!/)>.*?)(?=</\2\s*>)',
|
1152
|
+
bygroups(Punctuation, Name.Tag, handle_syntaxhighlight)),
|
1153
|
+
# <syntaxhighlight>: Fallback case for self-closing tags
|
1154
|
+
(r'(?i)(<)(syntaxhighlight)\b(\s*?)((?:[^>]|-->)*?)(/\s*?(?<!--)>)', bygroups(
|
1155
|
+
Punctuation, Name.Tag, Whitespace, using(this, state=['root', 'attr']), Punctuation)),
|
1156
|
+
# <source>
|
1157
|
+
(r'(?i)(</)(source)\b(\s*)(>)',
|
1158
|
+
bygroups(Punctuation, Name.Tag, Whitespace, Punctuation)),
|
1159
|
+
(r'(?si)(<)(source)\b([^>]*?(?<!/)>.*?)(?=</\2\s*>)',
|
1160
|
+
bygroups(Punctuation, Name.Tag, handle_syntaxhighlight)),
|
1161
|
+
# <source>: Fallback case for self-closing tags
|
1162
|
+
(r'(?i)(<)(source)\b(\s*?)((?:[^>]|-->)*?)(/\s*?(?<!--)>)', bygroups(
|
1163
|
+
Punctuation, Name.Tag, Whitespace, using(this, state=['root', 'attr']), Punctuation)),
|
1164
|
+
# <score>
|
1165
|
+
(r'(?i)(</)(score)\b(\s*)(>)',
|
1166
|
+
bygroups(Punctuation, Name.Tag, Whitespace, Punctuation)),
|
1167
|
+
(r'(?si)(<)(score)\b([^>]*?(?<!/)>.*?)(?=</\2\s*>)',
|
1168
|
+
bygroups(Punctuation, Name.Tag, handle_score)),
|
1169
|
+
# <score>: Fallback case for self-closing tags
|
1170
|
+
(r'(?i)(<)(score)\b(\s*?)((?:[^>]|-->)*?)(/\s*?(?<!--)>)', bygroups(
|
1171
|
+
Punctuation, Name.Tag, Whitespace, using(this, state=['root', 'attr']), Punctuation)),
|
1172
|
+
# Other parser tags
|
1173
|
+
(r'(?i)(<)({})\b'.format('|'.join(parser_tags)),
|
1174
|
+
bygroups(Punctuation, Name.Tag), 'tag-inner-ordinary'),
|
1175
|
+
(r'(?i)(</)({})\b(\s*)(>)'.format('|'.join(parser_tags)),
|
1176
|
+
bygroups(Punctuation, Name.Tag, Whitespace, Punctuation)),
|
1177
|
+
# LanguageConverter markups
|
1178
|
+
(
|
1179
|
+
r"""(?xi)
|
1180
|
+
(-\{{) # Escape format()
|
1181
|
+
(?: ([^|]) (\|))?
|
1182
|
+
(?: (\s* (?:{variants}) \s*) (=>))?
|
1183
|
+
(\s* (?:{variants}) \s*) (:)
|
1184
|
+
""".format(variants='|'.join(variant_langs)),
|
1185
|
+
bygroups(Punctuation, Keyword, Punctuation,
|
1186
|
+
Name.Label, Operator, Name.Label, Punctuation),
|
1187
|
+
'lc-inner'
|
1188
|
+
),
|
1189
|
+
(r'-\{', Punctuation, 'lc-raw'),
|
1190
|
+
],
|
1191
|
+
'wikilink-inner': [
|
1192
|
+
# Quit in case of another wikilink
|
1193
|
+
(r'(?=\[\[)', Punctuation, '#pop'),
|
1194
|
+
(r'\]\]', Punctuation, '#pop'),
|
1195
|
+
include('inline'),
|
1196
|
+
include('text'),
|
1197
|
+
],
|
1198
|
+
'medialink-inner': [
|
1199
|
+
(r'\]\]', Punctuation, '#pop'),
|
1200
|
+
(r'(\|)([^\n=|]*)(=)',
|
1201
|
+
bygroups(Punctuation, Name.Attribute, Operator)),
|
1202
|
+
(r'\|', Punctuation),
|
1203
|
+
include('inline'),
|
1204
|
+
include('text'),
|
1205
|
+
],
|
1206
|
+
'quote-common': [
|
1207
|
+
# Quit in case of link/template endings
|
1208
|
+
(r'(?=\]\]|\{\{|\}\})', Punctuation, '#pop'),
|
1209
|
+
(r'\n', Text, '#pop'),
|
1210
|
+
],
|
1211
|
+
'inline-italic': [
|
1212
|
+
include('quote-common'),
|
1213
|
+
(r"('')(''')(?!')", bygroups(Generic.Emph,
|
1214
|
+
Generic.Strong), ('#pop', 'inline-bold')),
|
1215
|
+
(r"'''(?!')", Generic.Strong, ('#pop', 'inline-italic-bold')),
|
1216
|
+
(r"''(?!')", Generic.Emph, '#pop'),
|
1217
|
+
include('inline'),
|
1218
|
+
include('text-italic'),
|
1219
|
+
],
|
1220
|
+
'inline-bold': [
|
1221
|
+
include('quote-common'),
|
1222
|
+
(r"(''')('')(?!')", bygroups(
|
1223
|
+
Generic.Strong, Generic.Emph), ('#pop', 'inline-italic')),
|
1224
|
+
(r"'''(?!')", Generic.Strong, '#pop'),
|
1225
|
+
(r"''(?!')", Generic.Emph, ('#pop', 'inline-bold-italic')),
|
1226
|
+
include('inline'),
|
1227
|
+
include('text-bold'),
|
1228
|
+
],
|
1229
|
+
'inline-bold-italic': [
|
1230
|
+
include('quote-common'),
|
1231
|
+
(r"('')(''')(?!')", bygroups(Generic.Emph,
|
1232
|
+
Generic.Strong), '#pop'),
|
1233
|
+
(r"'''(?!')", Generic.Strong, ('#pop', 'inline-italic')),
|
1234
|
+
(r"''(?!')", Generic.Emph, ('#pop', 'inline-bold')),
|
1235
|
+
include('inline'),
|
1236
|
+
include('text-italic'),
|
1237
|
+
],
|
1238
|
+
'inline-italic-bold': [
|
1239
|
+
include('quote-common'),
|
1240
|
+
(r"(''')('')(?!')", bygroups(
|
1241
|
+
Generic.Strong, Generic.Emph), '#pop'),
|
1242
|
+
(r"'''(?!')", Generic.Strong, ('#pop', 'inline-italic')),
|
1243
|
+
(r"''(?!')", Generic.Emph, ('#pop', 'inline-bold')),
|
1244
|
+
include('text-bold'),
|
1245
|
+
],
|
1246
|
+
'lc-inner': [
|
1247
|
+
(
|
1248
|
+
r"""(?xi)
|
1249
|
+
(;)
|
1250
|
+
(?: (\s* (?:{variants}) \s*) (=>))?
|
1251
|
+
(\s* (?:{variants}) \s*) (:)
|
1252
|
+
""".format(variants='|'.join(variant_langs)),
|
1253
|
+
bygroups(Punctuation, Name.Label,
|
1254
|
+
Operator, Name.Label, Punctuation)
|
1255
|
+
),
|
1256
|
+
(r';?\s*?\}-', Punctuation, '#pop'),
|
1257
|
+
include('inline'),
|
1258
|
+
include('text'),
|
1259
|
+
],
|
1260
|
+
'lc-raw': [
|
1261
|
+
(r'\}-', Punctuation, '#pop'),
|
1262
|
+
include('inline'),
|
1263
|
+
include('text'),
|
1264
|
+
],
|
1265
|
+
'replaceable': [
|
1266
|
+
# Comments
|
1267
|
+
(r'<!--[\s\S]*?(?:-->|\Z)', Comment.Multiline),
|
1268
|
+
# Parameters
|
1269
|
+
(
|
1270
|
+
r"""(?x)
|
1271
|
+
(\{{3})
|
1272
|
+
([^|]*?)
|
1273
|
+
(?=\}{3}|\|)
|
1274
|
+
""",
|
1275
|
+
bygroups(Punctuation, Name.Variable),
|
1276
|
+
'parameter-inner',
|
1277
|
+
),
|
1278
|
+
# Magic variables
|
1279
|
+
(r'(?i)(\{\{)(\s*)(%s)(\s*)(\}\})' % '|'.join(magic_vars_i),
|
1280
|
+
bygroups(Punctuation, Whitespace, Name.Function, Whitespace, Punctuation)),
|
1281
|
+
(r'(\{\{)(\s*)(%s)(\s*)(\}\})' % '|'.join(magic_vars),
|
1282
|
+
bygroups(Punctuation, Whitespace, Name.Function, Whitespace, Punctuation)),
|
1283
|
+
# Parser functions & templates
|
1284
|
+
(r'\{\{', Punctuation, 'template-begin-space'),
|
1285
|
+
# <tvar> legacy syntax
|
1286
|
+
(r'(?i)(<)(tvar)\b(\|)([^>]*?)(>)', bygroups(Punctuation,
|
1287
|
+
Name.Tag, Punctuation, String, Punctuation)),
|
1288
|
+
(r'</>', Punctuation, '#pop'),
|
1289
|
+
# <tvar>
|
1290
|
+
(r'(?i)(<)(tvar)\b', bygroups(Punctuation, Name.Tag), 'tag-inner-ordinary'),
|
1291
|
+
(r'(?i)(</)(tvar)\b(\s*)(>)',
|
1292
|
+
bygroups(Punctuation, Name.Tag, Whitespace, Punctuation)),
|
1293
|
+
],
|
1294
|
+
'parameter-inner': [
|
1295
|
+
(r'\}{3}', Punctuation, '#pop'),
|
1296
|
+
(r'\|', Punctuation),
|
1297
|
+
include('inline'),
|
1298
|
+
include('text'),
|
1299
|
+
],
|
1300
|
+
'template-begin-space': [
|
1301
|
+
# Templates allow line breaks at the beginning, and due to how MediaWiki handles
|
1302
|
+
# comments, an extra state is required to handle things like {{\n<!---->\n name}}
|
1303
|
+
(r'<!--[\s\S]*?(?:-->|\Z)', Comment.Multiline),
|
1304
|
+
(r'\s+', Whitespace),
|
1305
|
+
# Parser functions
|
1306
|
+
(
|
1307
|
+
r'(?i)(\#[%s]*?|%s)(:)' % (title_char,
|
1308
|
+
'|'.join(parser_functions_i)),
|
1309
|
+
bygroups(Name.Function, Punctuation), ('#pop', 'template-inner')
|
1310
|
+
),
|
1311
|
+
(
|
1312
|
+
r'(%s)(:)' % ('|'.join(parser_functions)),
|
1313
|
+
bygroups(Name.Function, Punctuation), ('#pop', 'template-inner')
|
1314
|
+
),
|
1315
|
+
# Templates
|
1316
|
+
(
|
1317
|
+
r'(?i)([%s]*?)(:)' % title_char,
|
1318
|
+
bygroups(Name.Namespace, Punctuation), ('#pop', 'template-name')
|
1319
|
+
),
|
1320
|
+
default(('#pop', 'template-name'),),
|
1321
|
+
],
|
1322
|
+
'template-name': [
|
1323
|
+
(r'(\s*?)(\|)', bygroups(Text, Punctuation), ('#pop', 'template-inner')),
|
1324
|
+
(r'\}\}', Punctuation, '#pop'),
|
1325
|
+
(r'\n', Text, '#pop'),
|
1326
|
+
include('replaceable'),
|
1327
|
+
*text_rules(Name.Tag),
|
1328
|
+
],
|
1329
|
+
'template-inner': [
|
1330
|
+
(r'\}\}', Punctuation, '#pop'),
|
1331
|
+
(r'\|', Punctuation),
|
1332
|
+
(
|
1333
|
+
r"""(?x)
|
1334
|
+
(?<=\|)
|
1335
|
+
( (?: (?! \{\{ | \}\} )[^=\|<])*? ) # Exclude templates and tags
|
1336
|
+
(=)
|
1337
|
+
""",
|
1338
|
+
bygroups(Name.Label, Operator)
|
1339
|
+
),
|
1340
|
+
include('inline'),
|
1341
|
+
include('text'),
|
1342
|
+
],
|
1343
|
+
'table': [
|
1344
|
+
# Use [ \t\n\r\0\x0B] instead of \s to follow PHP trim() behavior
|
1345
|
+
# Endings
|
1346
|
+
(r'^([ \t\n\r\0\x0B]*?)(\|\})',
|
1347
|
+
bygroups(Whitespace, Punctuation), '#pop'),
|
1348
|
+
# Table rows
|
1349
|
+
(r'^([ \t\n\r\0\x0B]*?)(\|-+)(.*)$', bygroups(Whitespace, Punctuation,
|
1350
|
+
using(this, state=['root', 'attr']))),
|
1351
|
+
# Captions
|
1352
|
+
(
|
1353
|
+
r"""(?x)
|
1354
|
+
^([ \t\n\r\0\x0B]*?)(\|\+)
|
1355
|
+
# Exclude links, template and tags
|
1356
|
+
(?: ( (?: (?! \[\[ | \{\{ )[^|\n<] )*? )(\|) )?
|
1357
|
+
(.*?)$
|
1358
|
+
""",
|
1359
|
+
bygroups(Whitespace, Punctuation, using(this, state=[
|
1360
|
+
'root', 'attr']), Punctuation, Generic.Heading),
|
1361
|
+
),
|
1362
|
+
# Table data
|
1363
|
+
(
|
1364
|
+
r"""(?x)
|
1365
|
+
( ^(?:[ \t\n\r\0\x0B]*?)\| | \|\| )
|
1366
|
+
(?: ( (?: (?! \[\[ | \{\{ )[^|\n<] )*? )(\|)(?!\|) )?
|
1367
|
+
""",
|
1368
|
+
bygroups(Punctuation, using(this, state=[
|
1369
|
+
'root', 'attr']), Punctuation),
|
1370
|
+
),
|
1371
|
+
# Table headers
|
1372
|
+
(
|
1373
|
+
r"""(?x)
|
1374
|
+
( ^(?:[ \t\n\r\0\x0B]*?)! )
|
1375
|
+
(?: ( (?: (?! \[\[ | \{\{ )[^|\n<] )*? )(\|)(?!\|) )?
|
1376
|
+
""",
|
1377
|
+
bygroups(Punctuation, using(this, state=[
|
1378
|
+
'root', 'attr']), Punctuation),
|
1379
|
+
'table-header',
|
1380
|
+
),
|
1381
|
+
include('list'),
|
1382
|
+
include('inline'),
|
1383
|
+
include('text'),
|
1384
|
+
],
|
1385
|
+
'table-header': [
|
1386
|
+
# Requires another state for || handling inside headers
|
1387
|
+
(r'\n', Text, '#pop'),
|
1388
|
+
(
|
1389
|
+
r"""(?x)
|
1390
|
+
(!!|\|\|)
|
1391
|
+
(?:
|
1392
|
+
( (?: (?! \[\[ | \{\{ )[^|\n<] )*? )
|
1393
|
+
(\|)(?!\|)
|
1394
|
+
)?
|
1395
|
+
""",
|
1396
|
+
bygroups(Punctuation, using(this, state=[
|
1397
|
+
'root', 'attr']), Punctuation)
|
1398
|
+
),
|
1399
|
+
*text_rules(Generic.Subheading),
|
1400
|
+
],
|
1401
|
+
'entity': [
|
1402
|
+
(r'&\S*?;', Name.Entity),
|
1403
|
+
],
|
1404
|
+
'dt': [
|
1405
|
+
(r'\n', Text, '#pop'),
|
1406
|
+
include('inline'),
|
1407
|
+
(r':', Keyword, '#pop'),
|
1408
|
+
include('text'),
|
1409
|
+
],
|
1410
|
+
'extlink-inner': [
|
1411
|
+
(r'\]', Punctuation, '#pop'),
|
1412
|
+
include('inline'),
|
1413
|
+
include('text'),
|
1414
|
+
],
|
1415
|
+
'nowiki-ish': [
|
1416
|
+
include('entity'),
|
1417
|
+
include('text'),
|
1418
|
+
],
|
1419
|
+
'attr': [
|
1420
|
+
include('replaceable'),
|
1421
|
+
(r'\s+', Whitespace),
|
1422
|
+
(r'(=)(\s*)(")', bygroups(Operator, Whitespace, String.Double), 'attr-val-2'),
|
1423
|
+
(r"(=)(\s*)(')", bygroups(Operator, Whitespace, String.Single), 'attr-val-1'),
|
1424
|
+
(r'(=)(\s*)', bygroups(Operator, Whitespace), 'attr-val-0'),
|
1425
|
+
(r'[\w:-]+', Name.Attribute),
|
1426
|
+
|
1427
|
+
],
|
1428
|
+
'attr-val-0': [
|
1429
|
+
(r'\s', Whitespace, '#pop'),
|
1430
|
+
include('replaceable'),
|
1431
|
+
*text_rules(String),
|
1432
|
+
],
|
1433
|
+
'attr-val-1': [
|
1434
|
+
(r"'", String.Single, '#pop'),
|
1435
|
+
include('replaceable'),
|
1436
|
+
*text_rules(String.Single),
|
1437
|
+
],
|
1438
|
+
'attr-val-2': [
|
1439
|
+
(r'"', String.Double, '#pop'),
|
1440
|
+
include('replaceable'),
|
1441
|
+
*text_rules(String.Double),
|
1442
|
+
],
|
1443
|
+
'tag-inner-ordinary': [
|
1444
|
+
(r'/?\s*>', Punctuation, '#pop'),
|
1445
|
+
include('tag-attr'),
|
1446
|
+
],
|
1447
|
+
'tag-inner': [
|
1448
|
+
# Return to root state for self-closing tags
|
1449
|
+
(r'/\s*>', Punctuation, '#pop:2'),
|
1450
|
+
(r'\s*>', Punctuation, '#pop'),
|
1451
|
+
include('tag-attr'),
|
1452
|
+
],
|
1453
|
+
# There states below are just like their non-tag variants, the key difference is
|
1454
|
+
# they forcibly quit when encountering tag closing markup
|
1455
|
+
'tag-attr': [
|
1456
|
+
include('replaceable'),
|
1457
|
+
(r'\s+', Whitespace),
|
1458
|
+
(r'(=)(\s*)(")', bygroups(Operator,
|
1459
|
+
Whitespace, String.Double), 'tag-attr-val-2'),
|
1460
|
+
(r"(=)(\s*)(')", bygroups(Operator,
|
1461
|
+
Whitespace, String.Single), 'tag-attr-val-1'),
|
1462
|
+
(r'(=)(\s*)', bygroups(Operator, Whitespace), 'tag-attr-val-0'),
|
1463
|
+
(r'[\w:-]+', Name.Attribute),
|
1464
|
+
|
1465
|
+
],
|
1466
|
+
'tag-attr-val-0': [
|
1467
|
+
(r'\s', Whitespace, '#pop'),
|
1468
|
+
(r'/?>', Punctuation, '#pop:2'),
|
1469
|
+
include('replaceable'),
|
1470
|
+
*text_rules(String),
|
1471
|
+
],
|
1472
|
+
'tag-attr-val-1': [
|
1473
|
+
(r"'", String.Single, '#pop'),
|
1474
|
+
(r'/?>', Punctuation, '#pop:2'),
|
1475
|
+
include('replaceable'),
|
1476
|
+
*text_rules(String.Single),
|
1477
|
+
],
|
1478
|
+
'tag-attr-val-2': [
|
1479
|
+
(r'"', String.Double, '#pop'),
|
1480
|
+
(r'/?>', Punctuation, '#pop:2'),
|
1481
|
+
include('replaceable'),
|
1482
|
+
*text_rules(String.Double),
|
1483
|
+
],
|
1484
|
+
'tag-nowiki': nowiki_tag_rules('nowiki'),
|
1485
|
+
'tag-pre': nowiki_tag_rules('pre'),
|
1486
|
+
'tag-categorytree': plaintext_tag_rules('categorytree'),
|
1487
|
+
'tag-dynamicpagelist': plaintext_tag_rules('dynamicpagelist'),
|
1488
|
+
'tag-hiero': plaintext_tag_rules('hiero'),
|
1489
|
+
'tag-inputbox': plaintext_tag_rules('inputbox'),
|
1490
|
+
'tag-imagemap': plaintext_tag_rules('imagemap'),
|
1491
|
+
'tag-charinsert': plaintext_tag_rules('charinsert'),
|
1492
|
+
'tag-timeline': plaintext_tag_rules('timeline'),
|
1493
|
+
'tag-gallery': plaintext_tag_rules('gallery'),
|
1494
|
+
'tag-graph': plaintext_tag_rules('graph'),
|
1495
|
+
'tag-rss': plaintext_tag_rules('rss'),
|
1496
|
+
'tag-math': delegate_tag_rules('math', TexLexer),
|
1497
|
+
'tag-chem': delegate_tag_rules('chem', TexLexer),
|
1498
|
+
'tag-ce': delegate_tag_rules('ce', TexLexer),
|
1499
|
+
'tag-templatedata': delegate_tag_rules('templatedata', JsonLexer),
|
1500
|
+
'text-italic': text_rules(Generic.Emph),
|
1501
|
+
'text-bold': text_rules(Generic.Strong),
|
1502
|
+
'text': text_rules(Text),
|
1503
|
+
}
|