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.
Files changed (324) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +1 -1
  3. data/.rubocop.yml +7 -0
  4. data/CHANGELOG.adoc +4 -0
  5. data/README.adoc +1 -1
  6. data/bench.rb +1 -1
  7. data/lib/pygments/popen.rb +3 -7
  8. data/lib/pygments/version.rb +1 -1
  9. data/pygments.rb.gemspec +2 -2
  10. data/test/test_pygments.rb +0 -19
  11. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/AUTHORS +21 -1
  12. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/LICENSE +1 -1
  13. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/METADATA +19 -11
  14. data/vendor/pygments-main/Pygments-2.15.1.dist-info/RECORD +614 -0
  15. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/WHEEL +1 -1
  16. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/entry_points.txt +0 -1
  17. data/vendor/pygments-main/bin/pygmentize +1 -1
  18. data/vendor/pygments-main/pygments/__init__.py +20 -22
  19. data/vendor/pygments-main/pygments/__main__.py +1 -1
  20. data/vendor/pygments-main/pygments/cmdline.py +74 -8
  21. data/vendor/pygments-main/pygments/console.py +1 -1
  22. data/vendor/pygments-main/pygments/filter.py +1 -1
  23. data/vendor/pygments-main/pygments/filters/__init__.py +6 -3
  24. data/vendor/pygments-main/pygments/formatter.py +41 -11
  25. data/vendor/pygments-main/pygments/formatters/__init__.py +21 -16
  26. data/vendor/pygments-main/pygments/formatters/_mapping.py +5 -65
  27. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  28. data/vendor/pygments-main/pygments/formatters/groff.py +170 -0
  29. data/vendor/pygments-main/pygments/formatters/html.py +54 -32
  30. data/vendor/pygments-main/pygments/formatters/img.py +9 -5
  31. data/vendor/pygments-main/pygments/formatters/irc.py +6 -33
  32. data/vendor/pygments-main/pygments/formatters/latex.py +24 -14
  33. data/vendor/pygments-main/pygments/formatters/other.py +1 -1
  34. data/vendor/pygments-main/pygments/formatters/pangomarkup.py +1 -1
  35. data/vendor/pygments-main/pygments/formatters/rtf.py +1 -1
  36. data/vendor/pygments-main/pygments/formatters/svg.py +1 -1
  37. data/vendor/pygments-main/pygments/formatters/terminal.py +1 -3
  38. data/vendor/pygments-main/pygments/formatters/terminal256.py +2 -4
  39. data/vendor/pygments-main/pygments/lexer.py +101 -32
  40. data/vendor/pygments-main/pygments/lexers/__init__.py +50 -29
  41. data/vendor/pygments-main/pygments/lexers/_ada_builtins.py +103 -0
  42. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1 -1
  43. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +1 -1
  44. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +2 -2
  45. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +21 -6
  46. data/vendor/pygments-main/pygments/lexers/_css_builtins.py +558 -0
  47. data/vendor/pygments-main/pygments/lexers/_julia_builtins.py +10 -0
  48. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -1
  49. data/vendor/pygments-main/pygments/lexers/_lilypond_builtins.py +4932 -0
  50. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +11 -18
  51. data/vendor/pygments-main/pygments/lexers/_mapping.py +71 -82
  52. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -1
  53. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +58 -4
  54. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
  55. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +408 -1835
  56. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +70 -8
  57. data/vendor/pygments-main/pygments/lexers/_qlik_builtins.py +666 -0
  58. data/vendor/pygments-main/pygments/lexers/_scheme_builtins.py +1609 -0
  59. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3 -3
  60. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +9 -18
  61. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +185 -94
  62. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +1 -1
  63. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
  64. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +1 -1
  65. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +1 -1
  66. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
  67. data/vendor/pygments-main/pygments/lexers/actionscript.py +15 -14
  68. data/vendor/pygments-main/pygments/lexers/ada.py +144 -0
  69. data/vendor/pygments-main/pygments/lexers/agile.py +1 -1
  70. data/vendor/pygments-main/pygments/lexers/algebra.py +72 -9
  71. data/vendor/pygments-main/pygments/lexers/ambient.py +8 -7
  72. data/vendor/pygments-main/pygments/lexers/amdgpu.py +4 -3
  73. data/vendor/pygments-main/pygments/lexers/ampl.py +10 -8
  74. data/vendor/pygments-main/pygments/lexers/apdlexer.py +164 -20
  75. data/vendor/pygments-main/pygments/lexers/apl.py +6 -5
  76. data/vendor/pygments-main/pygments/lexers/archetype.py +23 -21
  77. data/vendor/pygments-main/pygments/lexers/arrow.py +10 -9
  78. data/vendor/pygments-main/pygments/lexers/arturo.py +250 -0
  79. data/vendor/pygments-main/pygments/lexers/asc.py +9 -5
  80. data/vendor/pygments-main/pygments/lexers/asm.py +68 -63
  81. data/vendor/pygments-main/pygments/lexers/automation.py +7 -5
  82. data/vendor/pygments-main/pygments/lexers/bare.py +20 -21
  83. data/vendor/pygments-main/pygments/lexers/basic.py +45 -41
  84. data/vendor/pygments-main/pygments/lexers/bdd.py +58 -0
  85. data/vendor/pygments-main/pygments/lexers/berry.py +99 -0
  86. data/vendor/pygments-main/pygments/lexers/bibtex.py +6 -6
  87. data/vendor/pygments-main/pygments/lexers/boa.py +4 -8
  88. data/vendor/pygments-main/pygments/lexers/business.py +18 -18
  89. data/vendor/pygments-main/pygments/lexers/c_cpp.py +80 -40
  90. data/vendor/pygments-main/pygments/lexers/c_like.py +21 -19
  91. data/vendor/pygments-main/pygments/lexers/capnproto.py +6 -8
  92. data/vendor/pygments-main/pygments/lexers/carbon.py +96 -0
  93. data/vendor/pygments-main/pygments/lexers/cddl.py +16 -33
  94. data/vendor/pygments-main/pygments/lexers/chapel.py +14 -9
  95. data/vendor/pygments-main/pygments/lexers/clean.py +3 -2
  96. data/vendor/pygments-main/pygments/lexers/comal.py +80 -0
  97. data/vendor/pygments-main/pygments/lexers/compiled.py +3 -2
  98. data/vendor/pygments-main/pygments/lexers/configs.py +235 -120
  99. data/vendor/pygments-main/pygments/lexers/console.py +5 -4
  100. data/vendor/pygments-main/pygments/lexers/cplint.py +44 -0
  101. data/vendor/pygments-main/pygments/lexers/crystal.py +22 -23
  102. data/vendor/pygments-main/pygments/lexers/csound.py +19 -17
  103. data/vendor/pygments-main/pygments/lexers/css.py +67 -159
  104. data/vendor/pygments-main/pygments/lexers/d.py +15 -12
  105. data/vendor/pygments-main/pygments/lexers/dalvik.py +14 -11
  106. data/vendor/pygments-main/pygments/lexers/data.py +119 -49
  107. data/vendor/pygments-main/pygments/lexers/dax.py +136 -0
  108. data/vendor/pygments-main/pygments/lexers/devicetree.py +9 -8
  109. data/vendor/pygments-main/pygments/lexers/diff.py +23 -19
  110. data/vendor/pygments-main/pygments/lexers/dotnet.py +216 -81
  111. data/vendor/pygments-main/pygments/lexers/dsls.py +86 -64
  112. data/vendor/pygments-main/pygments/lexers/dylan.py +16 -15
  113. data/vendor/pygments-main/pygments/lexers/ecl.py +46 -38
  114. data/vendor/pygments-main/pygments/lexers/eiffel.py +15 -10
  115. data/vendor/pygments-main/pygments/lexers/elm.py +12 -8
  116. data/vendor/pygments-main/pygments/lexers/elpi.py +165 -0
  117. data/vendor/pygments-main/pygments/lexers/email.py +21 -39
  118. data/vendor/pygments-main/pygments/lexers/erlang.py +21 -22
  119. data/vendor/pygments-main/pygments/lexers/esoteric.py +28 -30
  120. data/vendor/pygments-main/pygments/lexers/ezhil.py +10 -9
  121. data/vendor/pygments-main/pygments/lexers/factor.py +104 -83
  122. data/vendor/pygments-main/pygments/lexers/fantom.py +31 -29
  123. data/vendor/pygments-main/pygments/lexers/felix.py +18 -14
  124. data/vendor/pygments-main/pygments/lexers/fift.py +67 -0
  125. data/vendor/pygments-main/pygments/lexers/floscript.py +7 -7
  126. data/vendor/pygments-main/pygments/lexers/forth.py +8 -6
  127. data/vendor/pygments-main/pygments/lexers/fortran.py +16 -11
  128. data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -2
  129. data/vendor/pygments-main/pygments/lexers/freefem.py +7 -10
  130. data/vendor/pygments-main/pygments/lexers/func.py +108 -0
  131. data/vendor/pygments-main/pygments/lexers/functional.py +1 -1
  132. data/vendor/pygments-main/pygments/lexers/futhark.py +12 -17
  133. data/vendor/pygments-main/pygments/lexers/gcodelexer.py +1 -2
  134. data/vendor/pygments-main/pygments/lexers/gdscript.py +76 -233
  135. data/vendor/pygments-main/pygments/lexers/go.py +12 -14
  136. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +22 -26
  137. data/vendor/pygments-main/pygments/lexers/graph.py +36 -15
  138. data/vendor/pygments-main/pygments/lexers/graphics.py +37 -38
  139. data/vendor/pygments-main/pygments/lexers/graphviz.py +2 -1
  140. data/vendor/pygments-main/pygments/lexers/gsql.py +39 -27
  141. data/vendor/pygments-main/pygments/lexers/haskell.py +73 -71
  142. data/vendor/pygments-main/pygments/lexers/haxe.py +13 -11
  143. data/vendor/pygments-main/pygments/lexers/hdl.py +31 -34
  144. data/vendor/pygments-main/pygments/lexers/hexdump.py +21 -21
  145. data/vendor/pygments-main/pygments/lexers/html.py +11 -19
  146. data/vendor/pygments-main/pygments/lexers/idl.py +10 -5
  147. data/vendor/pygments-main/pygments/lexers/igor.py +3 -2
  148. data/vendor/pygments-main/pygments/lexers/inferno.py +9 -8
  149. data/vendor/pygments-main/pygments/lexers/installers.py +39 -33
  150. data/vendor/pygments-main/pygments/lexers/int_fiction.py +35 -20
  151. data/vendor/pygments-main/pygments/lexers/iolang.py +9 -9
  152. data/vendor/pygments-main/pygments/lexers/j.py +20 -13
  153. data/vendor/pygments-main/pygments/lexers/javascript.py +183 -149
  154. data/vendor/pygments-main/pygments/lexers/jmespath.py +68 -0
  155. data/vendor/pygments-main/pygments/lexers/jslt.py +4 -3
  156. data/vendor/pygments-main/pygments/lexers/jsonnet.py +168 -0
  157. data/vendor/pygments-main/pygments/lexers/julia.py +44 -32
  158. data/vendor/pygments-main/pygments/lexers/jvm.py +161 -140
  159. data/vendor/pygments-main/pygments/lexers/kuin.py +93 -59
  160. data/vendor/pygments-main/pygments/lexers/lilypond.py +226 -0
  161. data/vendor/pygments-main/pygments/lexers/lisp.py +244 -107
  162. data/vendor/pygments-main/pygments/lexers/macaulay2.py +1739 -0
  163. data/vendor/pygments-main/pygments/lexers/make.py +21 -16
  164. data/vendor/pygments-main/pygments/lexers/markup.py +752 -11
  165. data/vendor/pygments-main/pygments/lexers/math.py +1 -1
  166. data/vendor/pygments-main/pygments/lexers/matlab.py +18 -3
  167. data/vendor/pygments-main/pygments/lexers/maxima.py +85 -0
  168. data/vendor/pygments-main/pygments/lexers/meson.py +10 -25
  169. data/vendor/pygments-main/pygments/lexers/mime.py +2 -2
  170. data/vendor/pygments-main/pygments/lexers/minecraft.py +394 -0
  171. data/vendor/pygments-main/pygments/lexers/mips.py +128 -0
  172. data/vendor/pygments-main/pygments/lexers/ml.py +9 -6
  173. data/vendor/pygments-main/pygments/lexers/modeling.py +12 -8
  174. data/vendor/pygments-main/pygments/lexers/modula2.py +3 -2
  175. data/vendor/pygments-main/pygments/lexers/monte.py +3 -2
  176. data/vendor/pygments-main/pygments/lexers/mosel.py +1 -1
  177. data/vendor/pygments-main/pygments/lexers/ncl.py +1 -1
  178. data/vendor/pygments-main/pygments/lexers/nimrod.py +62 -20
  179. data/vendor/pygments-main/pygments/lexers/nit.py +3 -2
  180. data/vendor/pygments-main/pygments/lexers/nix.py +5 -5
  181. data/vendor/pygments-main/pygments/lexers/oberon.py +2 -2
  182. data/vendor/pygments-main/pygments/lexers/objective.py +6 -4
  183. data/vendor/pygments-main/pygments/lexers/ooc.py +3 -2
  184. data/vendor/pygments-main/pygments/lexers/other.py +1 -1
  185. data/vendor/pygments-main/pygments/lexers/parasail.py +3 -2
  186. data/vendor/pygments-main/pygments/lexers/parsers.py +23 -21
  187. data/vendor/pygments-main/pygments/lexers/pascal.py +196 -198
  188. data/vendor/pygments-main/pygments/lexers/pawn.py +1 -1
  189. data/vendor/pygments-main/pygments/lexers/perl.py +17 -15
  190. data/vendor/pygments-main/pygments/lexers/phix.py +364 -0
  191. data/vendor/pygments-main/pygments/lexers/php.py +35 -20
  192. data/vendor/pygments-main/pygments/lexers/pointless.py +3 -2
  193. data/vendor/pygments-main/pygments/lexers/pony.py +1 -1
  194. data/vendor/pygments-main/pygments/lexers/praat.py +41 -38
  195. data/vendor/pygments-main/pygments/lexers/procfile.py +2 -3
  196. data/vendor/pygments-main/pygments/lexers/prolog.py +7 -8
  197. data/vendor/pygments-main/pygments/lexers/promql.py +5 -12
  198. data/vendor/pygments-main/pygments/lexers/python.py +145 -119
  199. data/vendor/pygments-main/pygments/lexers/q.py +188 -0
  200. data/vendor/pygments-main/pygments/lexers/qlik.py +117 -0
  201. data/vendor/pygments-main/pygments/lexers/qvt.py +1 -1
  202. data/vendor/pygments-main/pygments/lexers/r.py +4 -4
  203. data/vendor/pygments-main/pygments/lexers/rdf.py +3 -3
  204. data/vendor/pygments-main/pygments/lexers/rebol.py +1 -12
  205. data/vendor/pygments-main/pygments/lexers/resource.py +1 -1
  206. data/vendor/pygments-main/pygments/lexers/ride.py +3 -2
  207. data/vendor/pygments-main/pygments/lexers/rita.py +43 -0
  208. data/vendor/pygments-main/pygments/lexers/rnc.py +3 -2
  209. data/vendor/pygments-main/pygments/lexers/roboconf.py +3 -3
  210. data/vendor/pygments-main/pygments/lexers/robotframework.py +6 -5
  211. data/vendor/pygments-main/pygments/lexers/ruby.py +24 -24
  212. data/vendor/pygments-main/pygments/lexers/rust.py +3 -2
  213. data/vendor/pygments-main/pygments/lexers/sas.py +2 -2
  214. data/vendor/pygments-main/pygments/lexers/savi.py +170 -0
  215. data/vendor/pygments-main/pygments/lexers/scdoc.py +4 -7
  216. data/vendor/pygments-main/pygments/lexers/scripting.py +24 -21
  217. data/vendor/pygments-main/pygments/lexers/sgf.py +6 -6
  218. data/vendor/pygments-main/pygments/lexers/shell.py +29 -21
  219. data/vendor/pygments-main/pygments/lexers/sieve.py +14 -4
  220. data/vendor/pygments-main/pygments/lexers/slash.py +1 -1
  221. data/vendor/pygments-main/pygments/lexers/smalltalk.py +5 -3
  222. data/vendor/pygments-main/pygments/lexers/smithy.py +5 -6
  223. data/vendor/pygments-main/pygments/lexers/smv.py +1 -1
  224. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -1
  225. data/vendor/pygments-main/pygments/lexers/solidity.py +3 -7
  226. data/vendor/pygments-main/pygments/lexers/sophia.py +103 -0
  227. data/vendor/pygments-main/pygments/lexers/special.py +2 -5
  228. data/vendor/pygments-main/pygments/lexers/spice.py +71 -0
  229. data/vendor/pygments-main/pygments/lexers/sql.py +212 -17
  230. data/vendor/pygments-main/pygments/lexers/srcinfo.py +62 -0
  231. data/vendor/pygments-main/pygments/lexers/stata.py +4 -3
  232. data/vendor/pygments-main/pygments/lexers/supercollider.py +4 -3
  233. data/vendor/pygments-main/pygments/lexers/tal.py +74 -0
  234. data/vendor/pygments-main/pygments/lexers/tcl.py +21 -16
  235. data/vendor/pygments-main/pygments/lexers/teal.py +9 -8
  236. data/vendor/pygments-main/pygments/lexers/templates.py +62 -29
  237. data/vendor/pygments-main/pygments/lexers/teraterm.py +12 -20
  238. data/vendor/pygments-main/pygments/lexers/testing.py +6 -2
  239. data/vendor/pygments-main/pygments/lexers/text.py +3 -2
  240. data/vendor/pygments-main/pygments/lexers/textedit.py +41 -7
  241. data/vendor/pygments-main/pygments/lexers/textfmts.py +7 -5
  242. data/vendor/pygments-main/pygments/lexers/theorem.py +42 -36
  243. data/vendor/pygments-main/pygments/lexers/thingsdb.py +2 -4
  244. data/vendor/pygments-main/pygments/lexers/tlb.py +57 -0
  245. data/vendor/pygments-main/pygments/lexers/tnt.py +3 -4
  246. data/vendor/pygments-main/pygments/lexers/trafficscript.py +2 -4
  247. data/vendor/pygments-main/pygments/lexers/typoscript.py +2 -3
  248. data/vendor/pygments-main/pygments/lexers/ul4.py +267 -0
  249. data/vendor/pygments-main/pygments/lexers/unicon.py +1 -1
  250. data/vendor/pygments-main/pygments/lexers/urbi.py +4 -4
  251. data/vendor/pygments-main/pygments/lexers/usd.py +2 -1
  252. data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
  253. data/vendor/pygments-main/pygments/lexers/verification.py +4 -3
  254. data/vendor/pygments-main/pygments/lexers/web.py +1 -1
  255. data/vendor/pygments-main/pygments/lexers/webassembly.py +5 -5
  256. data/vendor/pygments-main/pygments/lexers/webidl.py +2 -1
  257. data/vendor/pygments-main/pygments/lexers/webmisc.py +90 -71
  258. data/vendor/pygments-main/pygments/lexers/wgsl.py +407 -0
  259. data/vendor/pygments-main/pygments/lexers/whiley.py +2 -1
  260. data/vendor/pygments-main/pygments/lexers/wowtoc.py +120 -0
  261. data/vendor/pygments-main/pygments/lexers/wren.py +99 -0
  262. data/vendor/pygments-main/pygments/lexers/x10.py +5 -6
  263. data/vendor/pygments-main/pygments/lexers/xorg.py +3 -2
  264. data/vendor/pygments-main/pygments/lexers/yang.py +6 -5
  265. data/vendor/pygments-main/pygments/lexers/zig.py +3 -2
  266. data/vendor/pygments-main/pygments/modeline.py +1 -1
  267. data/vendor/pygments-main/pygments/plugin.py +28 -9
  268. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  269. data/vendor/pygments-main/pygments/scanner.py +2 -2
  270. data/vendor/pygments-main/pygments/sphinxext.py +63 -1
  271. data/vendor/pygments-main/pygments/style.py +7 -1
  272. data/vendor/pygments-main/pygments/styles/__init__.py +19 -5
  273. data/vendor/pygments-main/pygments/styles/abap.py +2 -2
  274. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  275. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  276. data/vendor/pygments-main/pygments/styles/arduino.py +2 -3
  277. data/vendor/pygments-main/pygments/styles/autumn.py +1 -3
  278. data/vendor/pygments-main/pygments/styles/borland.py +1 -3
  279. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  280. data/vendor/pygments-main/pygments/styles/colorful.py +1 -3
  281. data/vendor/pygments-main/pygments/styles/default.py +13 -14
  282. data/vendor/pygments-main/pygments/styles/dracula.py +102 -0
  283. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  284. data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
  285. data/vendor/pygments-main/pygments/styles/friendly_grayscale.py +75 -0
  286. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  287. data/vendor/pygments-main/pygments/styles/gh_dark.py +107 -0
  288. data/vendor/pygments-main/pygments/styles/gruvbox.py +4 -2
  289. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  290. data/vendor/pygments-main/pygments/styles/inkpot.py +3 -2
  291. data/vendor/pygments-main/pygments/styles/lilypond.py +56 -0
  292. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -3
  293. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  294. data/vendor/pygments-main/pygments/styles/material.py +1 -2
  295. data/vendor/pygments-main/pygments/styles/monokai.py +3 -3
  296. data/vendor/pygments-main/pygments/styles/murphy.py +1 -3
  297. data/vendor/pygments-main/pygments/styles/native.py +11 -11
  298. data/vendor/pygments-main/pygments/styles/nord.py +150 -0
  299. data/vendor/pygments-main/pygments/styles/onedark.py +59 -0
  300. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -6
  301. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -6
  302. data/vendor/pygments-main/pygments/styles/pastie.py +1 -3
  303. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  304. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +3 -3
  305. data/vendor/pygments-main/pygments/styles/rrt.py +3 -2
  306. data/vendor/pygments-main/pygments/styles/sas.py +2 -4
  307. data/vendor/pygments-main/pygments/styles/solarized.py +1 -1
  308. data/vendor/pygments-main/pygments/styles/staroffice.py +26 -0
  309. data/vendor/pygments-main/pygments/styles/stata_dark.py +4 -6
  310. data/vendor/pygments-main/pygments/styles/stata_light.py +1 -2
  311. data/vendor/pygments-main/pygments/styles/tango.py +2 -3
  312. data/vendor/pygments-main/pygments/styles/trac.py +1 -3
  313. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  314. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  315. data/vendor/pygments-main/pygments/styles/xcode.py +1 -3
  316. data/vendor/pygments-main/pygments/styles/zenburn.py +4 -6
  317. data/vendor/pygments-main/pygments/token.py +2 -1
  318. data/vendor/pygments-main/pygments/unistring.py +4 -6
  319. data/vendor/pygments-main/pygments/util.py +27 -5
  320. metadata +59 -14
  321. data/vendor/pygments-main/Pygments-2.10.0.dist-info/RECORD +0 -524
  322. /data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/INSTALLER +0 -0
  323. /data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/REQUESTED +0 -0
  324. /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-2021 by the Pygments team, see AUTHORS.
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 HtmlLexer, XmlLexer
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 `reStructuredText <http://docutils.sf.net/rst.html>`_ markup.
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 = ['*.[1234567]', '*.man']
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 `Markdown <https://help.github.com/categories/writing-on-github/>`_ markup.
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(Text, Keyword, Keyword, using(this, state='inline'))),
554
+ bygroups(Whitespace, Keyword, Keyword, using(this, state='inline'))),
551
555
  # bulleted list
552
556
  (r'^(\s*)([*-])(\s)(.+\n)',
553
- bygroups(Text, Keyword, Text, using(this, state='inline'))),
557
+ bygroups(Whitespace, Keyword, Whitespace, using(this, state='inline'))),
554
558
  # numbered list
555
559
  (r'^(\s*)([0-9]+\.)( .+\n)',
556
- bygroups(Text, Keyword, using(this, state='inline'))),
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 `TiddlyWiki5 <https://tiddlywiki.com/#TiddlerFiles>`_ markup.
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|&nbsp;|&\#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
+ }