pygments.rb 2.4.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (348) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +8 -8
  3. data/.github/workflows/release.yml +5 -5
  4. data/.gitignore +2 -0
  5. data/.rubocop.yml +1 -1
  6. data/CHANGELOG.adoc +9 -1
  7. data/README.adoc +2 -2
  8. data/lib/pygments/version.rb +1 -1
  9. data/pygments.rb.gemspec +2 -2
  10. data/vendor/pygments-main/bin/pygmentize +1 -1
  11. data/vendor/pygments-main/pygments/__init__.py +2 -2
  12. data/vendor/pygments-main/pygments/__main__.py +1 -1
  13. data/vendor/pygments-main/pygments/cmdline.py +12 -12
  14. data/vendor/pygments-main/pygments/console.py +5 -5
  15. data/vendor/pygments-main/pygments/filter.py +2 -3
  16. data/vendor/pygments-main/pygments/filters/__init__.py +4 -4
  17. data/vendor/pygments-main/pygments/formatter.py +6 -1
  18. data/vendor/pygments-main/pygments/formatters/__init__.py +7 -8
  19. data/vendor/pygments-main/pygments/formatters/_mapping.py +0 -0
  20. data/vendor/pygments-main/pygments/formatters/bbcode.py +2 -2
  21. data/vendor/pygments-main/pygments/formatters/groff.py +3 -3
  22. data/vendor/pygments-main/pygments/formatters/html.py +38 -40
  23. data/vendor/pygments-main/pygments/formatters/img.py +51 -11
  24. data/vendor/pygments-main/pygments/formatters/irc.py +1 -1
  25. data/vendor/pygments-main/pygments/formatters/latex.py +24 -27
  26. data/vendor/pygments-main/pygments/formatters/other.py +3 -4
  27. data/vendor/pygments-main/pygments/formatters/pangomarkup.py +2 -2
  28. data/vendor/pygments-main/pygments/formatters/rtf.py +228 -25
  29. data/vendor/pygments-main/pygments/formatters/svg.py +17 -20
  30. data/vendor/pygments-main/pygments/formatters/terminal.py +1 -1
  31. data/vendor/pygments-main/pygments/formatters/terminal256.py +1 -1
  32. data/vendor/pygments-main/pygments/lexer.py +51 -33
  33. data/vendor/pygments-main/pygments/lexers/__init__.py +12 -12
  34. data/vendor/pygments-main/pygments/lexers/_ada_builtins.py +1 -1
  35. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1 -1
  36. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +1 -1
  37. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +2 -2
  38. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1 -1
  39. data/vendor/pygments-main/pygments/lexers/_css_builtins.py +1 -1
  40. data/vendor/pygments-main/pygments/lexers/_julia_builtins.py +1 -1
  41. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -1
  42. data/vendor/pygments-main/pygments/lexers/_lilypond_builtins.py +1 -1
  43. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +5 -5
  44. data/vendor/pygments-main/pygments/lexers/_luau_builtins.py +62 -0
  45. data/vendor/pygments-main/pygments/lexers/_mapping.py +41 -11
  46. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -1
  47. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +3 -3
  48. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
  49. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +3 -3
  50. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +5 -5
  51. data/vendor/pygments-main/pygments/lexers/_qlik_builtins.py +1 -1
  52. data/vendor/pygments-main/pygments/lexers/_scheme_builtins.py +1 -1
  53. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +4 -4
  54. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +3 -3
  55. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +1 -1
  56. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +1 -1
  57. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
  58. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +1 -1
  59. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +1 -1
  60. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
  61. data/vendor/pygments-main/pygments/lexers/actionscript.py +6 -8
  62. data/vendor/pygments-main/pygments/lexers/ada.py +3 -3
  63. data/vendor/pygments-main/pygments/lexers/agile.py +3 -1
  64. data/vendor/pygments-main/pygments/lexers/algebra.py +9 -13
  65. data/vendor/pygments-main/pygments/lexers/ambient.py +2 -3
  66. data/vendor/pygments-main/pygments/lexers/amdgpu.py +3 -3
  67. data/vendor/pygments-main/pygments/lexers/ampl.py +2 -3
  68. data/vendor/pygments-main/pygments/lexers/apdlexer.py +4 -3
  69. data/vendor/pygments-main/pygments/lexers/apl.py +2 -3
  70. data/vendor/pygments-main/pygments/lexers/archetype.py +8 -12
  71. data/vendor/pygments-main/pygments/lexers/arrow.py +2 -3
  72. data/vendor/pygments-main/pygments/lexers/arturo.py +2 -3
  73. data/vendor/pygments-main/pygments/lexers/asc.py +4 -4
  74. data/vendor/pygments-main/pygments/lexers/asm.py +28 -15
  75. data/vendor/pygments-main/pygments/lexers/asn1.py +178 -0
  76. data/vendor/pygments-main/pygments/lexers/automation.py +6 -8
  77. data/vendor/pygments-main/pygments/lexers/bare.py +2 -3
  78. data/vendor/pygments-main/pygments/lexers/basic.py +48 -57
  79. data/vendor/pygments-main/pygments/lexers/bdd.py +3 -4
  80. data/vendor/pygments-main/pygments/lexers/berry.py +4 -4
  81. data/vendor/pygments-main/pygments/lexers/bibtex.py +5 -5
  82. data/vendor/pygments-main/pygments/lexers/blueprint.py +173 -0
  83. data/vendor/pygments-main/pygments/lexers/boa.py +4 -4
  84. data/vendor/pygments-main/pygments/lexers/bqn.py +109 -0
  85. data/vendor/pygments-main/pygments/lexers/business.py +21 -22
  86. data/vendor/pygments-main/pygments/lexers/c_cpp.py +9 -4
  87. data/vendor/pygments-main/pygments/lexers/c_like.py +99 -27
  88. data/vendor/pygments-main/pygments/lexers/capnproto.py +2 -3
  89. data/vendor/pygments-main/pygments/lexers/carbon.py +10 -11
  90. data/vendor/pygments-main/pygments/lexers/cddl.py +8 -9
  91. data/vendor/pygments-main/pygments/lexers/chapel.py +2 -3
  92. data/vendor/pygments-main/pygments/lexers/clean.py +2 -1
  93. data/vendor/pygments-main/pygments/lexers/comal.py +2 -1
  94. data/vendor/pygments-main/pygments/lexers/compiled.py +2 -1
  95. data/vendor/pygments-main/pygments/lexers/configs.py +342 -108
  96. data/vendor/pygments-main/pygments/lexers/console.py +5 -5
  97. data/vendor/pygments-main/pygments/lexers/cplint.py +2 -3
  98. data/vendor/pygments-main/pygments/lexers/crystal.py +4 -5
  99. data/vendor/pygments-main/pygments/lexers/csound.py +6 -8
  100. data/vendor/pygments-main/pygments/lexers/css.py +5 -5
  101. data/vendor/pygments-main/pygments/lexers/d.py +4 -3
  102. data/vendor/pygments-main/pygments/lexers/dalvik.py +2 -3
  103. data/vendor/pygments-main/pygments/lexers/data.py +8 -12
  104. data/vendor/pygments-main/pygments/lexers/dax.py +2 -3
  105. data/vendor/pygments-main/pygments/lexers/devicetree.py +2 -3
  106. data/vendor/pygments-main/pygments/lexers/diff.py +7 -6
  107. data/vendor/pygments-main/pygments/lexers/dns.py +109 -0
  108. data/vendor/pygments-main/pygments/lexers/dotnet.py +19 -14
  109. data/vendor/pygments-main/pygments/lexers/dsls.py +24 -35
  110. data/vendor/pygments-main/pygments/lexers/dylan.py +8 -16
  111. data/vendor/pygments-main/pygments/lexers/ecl.py +2 -3
  112. data/vendor/pygments-main/pygments/lexers/eiffel.py +3 -4
  113. data/vendor/pygments-main/pygments/lexers/elm.py +3 -4
  114. data/vendor/pygments-main/pygments/lexers/elpi.py +28 -21
  115. data/vendor/pygments-main/pygments/lexers/email.py +3 -3
  116. data/vendor/pygments-main/pygments/lexers/erlang.py +22 -24
  117. data/vendor/pygments-main/pygments/lexers/esoteric.py +11 -12
  118. data/vendor/pygments-main/pygments/lexers/ezhil.py +2 -3
  119. data/vendor/pygments-main/pygments/lexers/factor.py +2 -3
  120. data/vendor/pygments-main/pygments/lexers/fantom.py +3 -3
  121. data/vendor/pygments-main/pygments/lexers/felix.py +9 -10
  122. data/vendor/pygments-main/pygments/lexers/fift.py +2 -1
  123. data/vendor/pygments-main/pygments/lexers/floscript.py +2 -3
  124. data/vendor/pygments-main/pygments/lexers/forth.py +2 -3
  125. data/vendor/pygments-main/pygments/lexers/fortran.py +6 -7
  126. data/vendor/pygments-main/pygments/lexers/foxpro.py +3 -3
  127. data/vendor/pygments-main/pygments/lexers/freefem.py +2 -3
  128. data/vendor/pygments-main/pygments/lexers/func.py +3 -1
  129. data/vendor/pygments-main/pygments/lexers/functional.py +2 -1
  130. data/vendor/pygments-main/pygments/lexers/futhark.py +6 -7
  131. data/vendor/pygments-main/pygments/lexers/gcodelexer.py +3 -3
  132. data/vendor/pygments-main/pygments/lexers/gdscript.py +2 -1
  133. data/vendor/pygments-main/pygments/lexers/go.py +3 -4
  134. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +6 -9
  135. data/vendor/pygments-main/pygments/lexers/graph.py +12 -9
  136. data/vendor/pygments-main/pygments/lexers/graphics.py +13 -17
  137. data/vendor/pygments-main/pygments/lexers/graphql.py +176 -0
  138. data/vendor/pygments-main/pygments/lexers/graphviz.py +2 -3
  139. data/vendor/pygments-main/pygments/lexers/gsql.py +2 -3
  140. data/vendor/pygments-main/pygments/lexers/haskell.py +27 -32
  141. data/vendor/pygments-main/pygments/lexers/haxe.py +3 -5
  142. data/vendor/pygments-main/pygments/lexers/hdl.py +8 -7
  143. data/vendor/pygments-main/pygments/lexers/hexdump.py +3 -3
  144. data/vendor/pygments-main/pygments/lexers/html.py +34 -13
  145. data/vendor/pygments-main/pygments/lexers/idl.py +2 -3
  146. data/vendor/pygments-main/pygments/lexers/igor.py +305 -290
  147. data/vendor/pygments-main/pygments/lexers/inferno.py +2 -3
  148. data/vendor/pygments-main/pygments/lexers/installers.py +7 -9
  149. data/vendor/pygments-main/pygments/lexers/int_fiction.py +150 -162
  150. data/vendor/pygments-main/pygments/lexers/iolang.py +2 -3
  151. data/vendor/pygments-main/pygments/lexers/j.py +2 -3
  152. data/vendor/pygments-main/pygments/lexers/javascript.py +18 -19
  153. data/vendor/pygments-main/pygments/lexers/jmespath.py +2 -1
  154. data/vendor/pygments-main/pygments/lexers/jslt.py +2 -3
  155. data/vendor/pygments-main/pygments/lexers/jsonnet.py +4 -3
  156. data/vendor/pygments-main/pygments/lexers/jsx.py +75 -0
  157. data/vendor/pygments-main/pygments/lexers/julia.py +4 -5
  158. data/vendor/pygments-main/pygments/lexers/jvm.py +98 -116
  159. data/vendor/pygments-main/pygments/lexers/kuin.py +2 -3
  160. data/vendor/pygments-main/pygments/lexers/kusto.py +93 -0
  161. data/vendor/pygments-main/pygments/lexers/ldap.py +155 -0
  162. data/vendor/pygments-main/pygments/lexers/lean.py +241 -0
  163. data/vendor/pygments-main/pygments/lexers/lilypond.py +2 -3
  164. data/vendor/pygments-main/pygments/lexers/lisp.py +373 -65
  165. data/vendor/pygments-main/pygments/lexers/macaulay2.py +53 -4
  166. data/vendor/pygments-main/pygments/lexers/make.py +7 -5
  167. data/vendor/pygments-main/pygments/lexers/markup.py +242 -91
  168. data/vendor/pygments-main/pygments/lexers/math.py +2 -1
  169. data/vendor/pygments-main/pygments/lexers/matlab.py +10 -12
  170. data/vendor/pygments-main/pygments/lexers/maxima.py +2 -3
  171. data/vendor/pygments-main/pygments/lexers/meson.py +2 -3
  172. data/vendor/pygments-main/pygments/lexers/mime.py +4 -4
  173. data/vendor/pygments-main/pygments/lexers/minecraft.py +24 -27
  174. data/vendor/pygments-main/pygments/lexers/mips.py +3 -1
  175. data/vendor/pygments-main/pygments/lexers/ml.py +59 -61
  176. data/vendor/pygments-main/pygments/lexers/modeling.py +19 -22
  177. data/vendor/pygments-main/pygments/lexers/modula2.py +2 -3
  178. data/vendor/pygments-main/pygments/lexers/mojo.py +704 -0
  179. data/vendor/pygments-main/pygments/lexers/monte.py +2 -3
  180. data/vendor/pygments-main/pygments/lexers/mosel.py +3 -3
  181. data/vendor/pygments-main/pygments/lexers/ncl.py +4 -3
  182. data/vendor/pygments-main/pygments/lexers/nimrod.py +7 -8
  183. data/vendor/pygments-main/pygments/lexers/nit.py +2 -3
  184. data/vendor/pygments-main/pygments/lexers/nix.py +40 -31
  185. data/vendor/pygments-main/pygments/lexers/oberon.py +3 -3
  186. data/vendor/pygments-main/pygments/lexers/objective.py +14 -6
  187. data/vendor/pygments-main/pygments/lexers/ooc.py +2 -3
  188. data/vendor/pygments-main/pygments/lexers/openscad.py +96 -0
  189. data/vendor/pygments-main/pygments/lexers/other.py +2 -1
  190. data/vendor/pygments-main/pygments/lexers/parasail.py +2 -3
  191. data/vendor/pygments-main/pygments/lexers/parsers.py +41 -44
  192. data/vendor/pygments-main/pygments/lexers/pascal.py +6 -3
  193. data/vendor/pygments-main/pygments/lexers/pawn.py +5 -5
  194. data/vendor/pygments-main/pygments/lexers/perl.py +3 -3
  195. data/vendor/pygments-main/pygments/lexers/phix.py +2 -3
  196. data/vendor/pygments-main/pygments/lexers/php.py +4 -5
  197. data/vendor/pygments-main/pygments/lexers/pointless.py +2 -3
  198. data/vendor/pygments-main/pygments/lexers/pony.py +3 -3
  199. data/vendor/pygments-main/pygments/lexers/praat.py +2 -3
  200. data/vendor/pygments-main/pygments/lexers/procfile.py +2 -3
  201. data/vendor/pygments-main/pygments/lexers/prolog.py +23 -9
  202. data/vendor/pygments-main/pygments/lexers/promql.py +2 -1
  203. data/vendor/pygments-main/pygments/lexers/prql.py +251 -0
  204. data/vendor/pygments-main/pygments/lexers/ptx.py +119 -0
  205. data/vendor/pygments-main/pygments/lexers/python.py +24 -24
  206. data/vendor/pygments-main/pygments/lexers/q.py +5 -6
  207. data/vendor/pygments-main/pygments/lexers/qlik.py +3 -3
  208. data/vendor/pygments-main/pygments/lexers/qvt.py +5 -3
  209. data/vendor/pygments-main/pygments/lexers/r.py +8 -6
  210. data/vendor/pygments-main/pygments/lexers/rdf.py +19 -13
  211. data/vendor/pygments-main/pygments/lexers/rebol.py +7 -7
  212. data/vendor/pygments-main/pygments/lexers/resource.py +5 -6
  213. data/vendor/pygments-main/pygments/lexers/ride.py +4 -5
  214. data/vendor/pygments-main/pygments/lexers/rita.py +2 -3
  215. data/vendor/pygments-main/pygments/lexers/rnc.py +2 -3
  216. data/vendor/pygments-main/pygments/lexers/roboconf.py +5 -5
  217. data/vendor/pygments-main/pygments/lexers/robotframework.py +2 -3
  218. data/vendor/pygments-main/pygments/lexers/ruby.py +8 -13
  219. data/vendor/pygments-main/pygments/lexers/rust.py +9 -10
  220. data/vendor/pygments-main/pygments/lexers/sas.py +3 -3
  221. data/vendor/pygments-main/pygments/lexers/savi.py +131 -130
  222. data/vendor/pygments-main/pygments/lexers/scdoc.py +13 -7
  223. data/vendor/pygments-main/pygments/lexers/scripting.py +354 -42
  224. data/vendor/pygments-main/pygments/lexers/sgf.py +2 -3
  225. data/vendor/pygments-main/pygments/lexers/shell.py +107 -129
  226. data/vendor/pygments-main/pygments/lexers/sieve.py +3 -3
  227. data/vendor/pygments-main/pygments/lexers/slash.py +4 -5
  228. data/vendor/pygments-main/pygments/lexers/smalltalk.py +3 -5
  229. data/vendor/pygments-main/pygments/lexers/smithy.py +2 -3
  230. data/vendor/pygments-main/pygments/lexers/smv.py +3 -3
  231. data/vendor/pygments-main/pygments/lexers/snobol.py +3 -3
  232. data/vendor/pygments-main/pygments/lexers/solidity.py +3 -3
  233. data/vendor/pygments-main/pygments/lexers/soong.py +78 -0
  234. data/vendor/pygments-main/pygments/lexers/sophia.py +3 -4
  235. data/vendor/pygments-main/pygments/lexers/special.py +8 -3
  236. data/vendor/pygments-main/pygments/lexers/spice.py +15 -16
  237. data/vendor/pygments-main/pygments/lexers/sql.py +24 -18
  238. data/vendor/pygments-main/pygments/lexers/srcinfo.py +3 -3
  239. data/vendor/pygments-main/pygments/lexers/stata.py +2 -3
  240. data/vendor/pygments-main/pygments/lexers/supercollider.py +2 -3
  241. data/vendor/pygments-main/pygments/lexers/tact.py +303 -0
  242. data/vendor/pygments-main/pygments/lexers/tal.py +13 -10
  243. data/vendor/pygments-main/pygments/lexers/tcl.py +2 -3
  244. data/vendor/pygments-main/pygments/lexers/teal.py +2 -3
  245. data/vendor/pygments-main/pygments/lexers/templates.py +131 -72
  246. data/vendor/pygments-main/pygments/lexers/teraterm.py +2 -3
  247. data/vendor/pygments-main/pygments/lexers/testing.py +4 -5
  248. data/vendor/pygments-main/pygments/lexers/text.py +2 -1
  249. data/vendor/pygments-main/pygments/lexers/textedit.py +9 -6
  250. data/vendor/pygments-main/pygments/lexers/textfmts.py +20 -15
  251. data/vendor/pygments-main/pygments/lexers/theorem.py +41 -115
  252. data/vendor/pygments-main/pygments/lexers/thingsdb.py +50 -26
  253. data/vendor/pygments-main/pygments/lexers/tlb.py +3 -1
  254. data/vendor/pygments-main/pygments/lexers/tls.py +54 -0
  255. data/vendor/pygments-main/pygments/lexers/tnt.py +2 -3
  256. data/vendor/pygments-main/pygments/lexers/trafficscript.py +3 -3
  257. data/vendor/pygments-main/pygments/lexers/typoscript.py +6 -7
  258. data/vendor/pygments-main/pygments/lexers/typst.py +104 -0
  259. data/vendor/pygments-main/pygments/lexers/ul4.py +47 -5
  260. data/vendor/pygments-main/pygments/lexers/unicon.py +9 -7
  261. data/vendor/pygments-main/pygments/lexers/urbi.py +3 -3
  262. data/vendor/pygments-main/pygments/lexers/usd.py +6 -11
  263. data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
  264. data/vendor/pygments-main/pygments/lexers/verification.py +4 -5
  265. data/vendor/pygments-main/pygments/lexers/verifpal.py +65 -0
  266. data/vendor/pygments-main/pygments/lexers/vip.py +150 -0
  267. data/vendor/pygments-main/pygments/lexers/vyper.py +140 -0
  268. data/vendor/pygments-main/pygments/lexers/web.py +2 -1
  269. data/vendor/pygments-main/pygments/lexers/webassembly.py +2 -3
  270. data/vendor/pygments-main/pygments/lexers/webidl.py +2 -3
  271. data/vendor/pygments-main/pygments/lexers/webmisc.py +11 -15
  272. data/vendor/pygments-main/pygments/lexers/wgsl.py +6 -7
  273. data/vendor/pygments-main/pygments/lexers/whiley.py +2 -3
  274. data/vendor/pygments-main/pygments/lexers/wowtoc.py +3 -3
  275. data/vendor/pygments-main/pygments/lexers/wren.py +3 -4
  276. data/vendor/pygments-main/pygments/lexers/x10.py +6 -7
  277. data/vendor/pygments-main/pygments/lexers/xorg.py +2 -1
  278. data/vendor/pygments-main/pygments/lexers/yang.py +2 -3
  279. data/vendor/pygments-main/pygments/lexers/yara.py +69 -0
  280. data/vendor/pygments-main/pygments/lexers/zig.py +2 -1
  281. data/vendor/pygments-main/pygments/modeline.py +4 -4
  282. data/vendor/pygments-main/pygments/plugin.py +3 -19
  283. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  284. data/vendor/pygments-main/pygments/scanner.py +1 -1
  285. data/vendor/pygments-main/pygments/sphinxext.py +38 -8
  286. data/vendor/pygments-main/pygments/style.py +8 -2
  287. data/vendor/pygments-main/pygments/styles/__init__.py +17 -59
  288. data/vendor/pygments-main/pygments/styles/_mapping.py +54 -0
  289. data/vendor/pygments-main/pygments/styles/abap.py +5 -1
  290. data/vendor/pygments-main/pygments/styles/algol.py +5 -1
  291. data/vendor/pygments-main/pygments/styles/algol_nu.py +5 -1
  292. data/vendor/pygments-main/pygments/styles/arduino.py +76 -72
  293. data/vendor/pygments-main/pygments/styles/autumn.py +6 -1
  294. data/vendor/pygments-main/pygments/styles/borland.py +6 -1
  295. data/vendor/pygments-main/pygments/styles/bw.py +6 -1
  296. data/vendor/pygments-main/pygments/styles/coffee.py +80 -0
  297. data/vendor/pygments-main/pygments/styles/colorful.py +6 -1
  298. data/vendor/pygments-main/pygments/styles/default.py +6 -1
  299. data/vendor/pygments-main/pygments/styles/dracula.py +68 -80
  300. data/vendor/pygments-main/pygments/styles/emacs.py +6 -1
  301. data/vendor/pygments-main/pygments/styles/friendly.py +6 -1
  302. data/vendor/pygments-main/pygments/styles/friendly_grayscale.py +6 -1
  303. data/vendor/pygments-main/pygments/styles/fruity.py +7 -1
  304. data/vendor/pygments-main/pygments/styles/gh_dark.py +7 -1
  305. data/vendor/pygments-main/pygments/styles/gruvbox.py +10 -1
  306. data/vendor/pygments-main/pygments/styles/igor.py +6 -1
  307. data/vendor/pygments-main/pygments/styles/inkpot.py +7 -2
  308. data/vendor/pygments-main/pygments/styles/lightbulb.py +110 -0
  309. data/vendor/pygments-main/pygments/styles/lilypond.py +8 -2
  310. data/vendor/pygments-main/pygments/styles/lovelace.py +16 -10
  311. data/vendor/pygments-main/pygments/styles/manni.py +7 -2
  312. data/vendor/pygments-main/pygments/styles/material.py +21 -14
  313. data/vendor/pygments-main/pygments/styles/monokai.py +16 -10
  314. data/vendor/pygments-main/pygments/styles/murphy.py +7 -2
  315. data/vendor/pygments-main/pygments/styles/native.py +10 -5
  316. data/vendor/pygments-main/pygments/styles/nord.py +9 -3
  317. data/vendor/pygments-main/pygments/styles/onedark.py +6 -2
  318. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +7 -2
  319. data/vendor/pygments-main/pygments/styles/paraiso_light.py +7 -2
  320. data/vendor/pygments-main/pygments/styles/pastie.py +7 -1
  321. data/vendor/pygments-main/pygments/styles/perldoc.py +7 -1
  322. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +26 -19
  323. data/vendor/pygments-main/pygments/styles/rrt.py +8 -2
  324. data/vendor/pygments-main/pygments/styles/sas.py +6 -1
  325. data/vendor/pygments-main/pygments/styles/solarized.py +9 -1
  326. data/vendor/pygments-main/pygments/styles/staroffice.py +6 -1
  327. data/vendor/pygments-main/pygments/styles/stata_dark.py +6 -2
  328. data/vendor/pygments-main/pygments/styles/stata_light.py +6 -1
  329. data/vendor/pygments-main/pygments/styles/tango.py +7 -3
  330. data/vendor/pygments-main/pygments/styles/trac.py +7 -1
  331. data/vendor/pygments-main/pygments/styles/vim.py +7 -1
  332. data/vendor/pygments-main/pygments/styles/vs.py +7 -2
  333. data/vendor/pygments-main/pygments/styles/xcode.py +6 -1
  334. data/vendor/pygments-main/pygments/styles/zenburn.py +6 -1
  335. data/vendor/pygments-main/pygments/token.py +2 -1
  336. data/vendor/pygments-main/pygments/unistring.py +5 -5
  337. data/vendor/pygments-main/pygments/util.py +13 -19
  338. data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/METADATA +14 -13
  339. data/vendor/pygments-main/pygments-2.18.0.dist-info/RECORD +663 -0
  340. data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/WHEEL +1 -2
  341. data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info/licenses}/AUTHORS +13 -0
  342. metadata +39 -15
  343. data/vendor/pygments-main/Pygments-2.15.1.dist-info/RECORD +0 -614
  344. data/vendor/pygments-main/Pygments-2.15.1.dist-info/top_level.txt +0 -1
  345. /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/INSTALLER +0 -0
  346. /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/REQUESTED +0 -0
  347. /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/entry_points.txt +0 -0
  348. /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info/licenses}/LICENSE +0 -0
@@ -4,7 +4,7 @@
4
4
 
5
5
  Lexer for scripting and embedded languages.
6
6
 
7
- :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  """
10
10
 
@@ -16,7 +16,7 @@ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
16
16
  Number, Punctuation, Error, Whitespace, Other
17
17
  from pygments.util import get_bool_opt, get_list_opt
18
18
 
19
- __all__ = ['LuaLexer', 'MoonScriptLexer', 'ChaiscriptLexer', 'LSLLexer',
19
+ __all__ = ['LuaLexer', 'LuauLexer', 'MoonScriptLexer', 'ChaiscriptLexer', 'LSLLexer',
20
20
  'AppleScriptLexer', 'RexxLexer', 'MOOCodeLexer', 'HybrisLexer',
21
21
  'EasytrieveLexer', 'JclLexer', 'MiniScriptLexer']
22
22
 
@@ -49,11 +49,12 @@ class LuaLexer(RegexLexer):
49
49
  aliases = ['lua']
50
50
  filenames = ['*.lua', '*.wlua']
51
51
  mimetypes = ['text/x-lua', 'application/x-lua']
52
+ version_added = ''
52
53
 
53
54
  _comment_multiline = r'(?:--\[(?P<level>=*)\[[\w\W]*?\](?P=level)\])'
54
55
  _comment_single = r'(?:--.*$)'
55
56
  _space = r'(?:\s+)'
56
- _s = r'(?:%s|%s|%s)' % (_comment_multiline, _comment_single, _space)
57
+ _s = rf'(?:{_comment_multiline}|{_comment_single}|{_space})'
57
58
  _name = r'(?:[^\W\d]\w*)'
58
59
 
59
60
  tokens = {
@@ -101,7 +102,7 @@ class LuaLexer(RegexLexer):
101
102
  'funcname': [
102
103
  include('ws'),
103
104
  (r'[.:]', Punctuation),
104
- (r'%s(?=%s*[.:])' % (_name, _s), Name.Class),
105
+ (rf'{_name}(?={_s}*[.:])', Name.Class),
105
106
  (_name, Name.Function, '#pop'),
106
107
  # inline function
107
108
  (r'\(', Punctuation, '#pop'),
@@ -162,11 +163,324 @@ class LuaLexer(RegexLexer):
162
163
  continue
163
164
  yield index, token, value
164
165
 
166
+ def _luau_make_expression(should_pop, _s):
167
+ temp_list = [
168
+ (r'0[xX][\da-fA-F_]*', Number.Hex, '#pop'),
169
+ (r'0[bB][\d_]*', Number.Bin, '#pop'),
170
+ (r'\.?\d[\d_]*(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?', Number.Float, '#pop'),
171
+
172
+ (words((
173
+ 'true', 'false', 'nil'
174
+ ), suffix=r'\b'), Keyword.Constant, '#pop'),
175
+
176
+ (r'\[(=*)\[[.\n]*?\]\1\]', String, '#pop'),
177
+
178
+ (r'(\.)([a-zA-Z_]\w*)(?=%s*[({"\'])', bygroups(Punctuation, Name.Function), '#pop'),
179
+ (r'(\.)([a-zA-Z_]\w*)', bygroups(Punctuation, Name.Variable), '#pop'),
180
+
181
+ (rf'[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*(?={_s}*[({{"\'])', Name.Other, '#pop'),
182
+ (r'[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*', Name, '#pop'),
183
+ ]
184
+ if should_pop:
185
+ return temp_list
186
+ return [entry[:2] for entry in temp_list]
187
+
188
+ def _luau_make_expression_special(should_pop):
189
+ temp_list = [
190
+ (r'\{', Punctuation, ('#pop', 'closing_brace_base', 'expression')),
191
+ (r'\(', Punctuation, ('#pop', 'closing_parenthesis_base', 'expression')),
192
+
193
+ (r'::?', Punctuation, ('#pop', 'type_end', 'type_start')),
194
+
195
+ (r"'", String.Single, ('#pop', 'string_single')),
196
+ (r'"', String.Double, ('#pop', 'string_double')),
197
+ (r'`', String.Backtick, ('#pop', 'string_interpolated')),
198
+ ]
199
+ if should_pop:
200
+ return temp_list
201
+ return [(entry[0], entry[1], entry[2][1:]) for entry in temp_list]
202
+
203
+ class LuauLexer(RegexLexer):
204
+ """
205
+ For Luau source code.
206
+
207
+ Additional options accepted:
208
+
209
+ `include_luau_builtins`
210
+ If given and ``True``, automatically highlight Luau builtins
211
+ (default: ``True``).
212
+ `include_roblox_builtins`
213
+ If given and ``True``, automatically highlight Roblox-specific builtins
214
+ (default: ``False``).
215
+ `additional_builtins`
216
+ If given, must be a list of additional builtins to highlight.
217
+ `disabled_builtins`
218
+ If given, must be a list of builtins that will not be highlighted.
219
+ """
220
+
221
+ name = 'Luau'
222
+ url = 'https://luau-lang.org/'
223
+ aliases = ['luau']
224
+ filenames = ['*.luau']
225
+ version_added = '2.18'
226
+
227
+ _comment_multiline = r'(?:--\[(?P<level>=*)\[[\w\W]*?\](?P=level)\])'
228
+ _comment_single = r'(?:--.*$)'
229
+ _s = r'(?:{}|{}|{})'.format(_comment_multiline, _comment_single, r'\s+')
230
+
231
+ tokens = {
232
+ 'root': [
233
+ (r'#!.*', Comment.Hashbang, 'base'),
234
+ default('base'),
235
+ ],
236
+
237
+ 'ws': [
238
+ (_comment_multiline, Comment.Multiline),
239
+ (_comment_single, Comment.Single),
240
+ (r'\s+', Whitespace),
241
+ ],
242
+
243
+ 'base': [
244
+ include('ws'),
245
+
246
+ *_luau_make_expression_special(False),
247
+ (r'\.\.\.', Punctuation),
248
+
249
+ (rf'type\b(?={_s}+[a-zA-Z_])', Keyword.Reserved, 'type_declaration'),
250
+ (rf'export\b(?={_s}+[a-zA-Z_])', Keyword.Reserved),
251
+
252
+ (r'(?:\.\.|//|[+\-*\/%^<>=])=?', Operator, 'expression'),
253
+ (r'~=', Operator, 'expression'),
254
+
255
+ (words((
256
+ 'and', 'or', 'not'
257
+ ), suffix=r'\b'), Operator.Word, 'expression'),
258
+
259
+ (words((
260
+ 'elseif', 'for', 'if', 'in', 'repeat', 'return', 'until',
261
+ 'while'), suffix=r'\b'), Keyword.Reserved, 'expression'),
262
+ (r'local\b', Keyword.Declaration, 'expression'),
263
+
264
+ (r'function\b', Keyword.Reserved, ('expression', 'func_name')),
265
+
266
+ (r'[\])};]+', Punctuation),
267
+
268
+ include('expression_static'),
269
+ *_luau_make_expression(False, _s),
270
+
271
+ (r'[\[.,]', Punctuation, 'expression'),
272
+ ],
273
+ 'expression_static': [
274
+ (words((
275
+ 'break', 'continue', 'do', 'else', 'elseif', 'end', 'for',
276
+ 'if', 'in', 'repeat', 'return', 'then', 'until', 'while'),
277
+ suffix=r'\b'), Keyword.Reserved),
278
+ ],
279
+ 'expression': [
280
+ include('ws'),
281
+
282
+ (r'if\b', Keyword.Reserved, ('ternary', 'expression')),
283
+
284
+ (r'local\b', Keyword.Declaration),
285
+ *_luau_make_expression_special(True),
286
+ (r'\.\.\.', Punctuation, '#pop'),
287
+
288
+ (r'function\b', Keyword.Reserved, 'func_name'),
289
+
290
+ include('expression_static'),
291
+ *_luau_make_expression(True, _s),
292
+
293
+ default('#pop'),
294
+ ],
295
+ 'ternary': [
296
+ include('ws'),
297
+
298
+ (r'else\b', Keyword.Reserved, '#pop'),
299
+ (words((
300
+ 'then', 'elseif',
301
+ ), suffix=r'\b'), Operator.Reserved, 'expression'),
302
+
303
+ default('#pop'),
304
+ ],
305
+
306
+ 'closing_brace_pop': [
307
+ (r'\}', Punctuation, '#pop'),
308
+ ],
309
+ 'closing_parenthesis_pop': [
310
+ (r'\)', Punctuation, '#pop'),
311
+ ],
312
+ 'closing_gt_pop': [
313
+ (r'>', Punctuation, '#pop'),
314
+ ],
315
+
316
+ 'closing_parenthesis_base': [
317
+ include('closing_parenthesis_pop'),
318
+ include('base'),
319
+ ],
320
+ 'closing_parenthesis_type': [
321
+ include('closing_parenthesis_pop'),
322
+ include('type'),
323
+ ],
324
+ 'closing_brace_base': [
325
+ include('closing_brace_pop'),
326
+ include('base'),
327
+ ],
328
+ 'closing_brace_type': [
329
+ include('closing_brace_pop'),
330
+ include('type'),
331
+ ],
332
+ 'closing_gt_type': [
333
+ include('closing_gt_pop'),
334
+ include('type'),
335
+ ],
336
+
337
+ 'string_escape': [
338
+ (r'\\z\s*', String.Escape),
339
+ (r'\\(?:[abfnrtvz\\"\'`\{\n])|[\r\n]{1,2}|x[\da-fA-F]{2}|\d{1,3}|'
340
+ r'u\{\}[\da-fA-F]*\}', String.Escape),
341
+ ],
342
+ 'string_single': [
343
+ include('string_escape'),
344
+
345
+ (r"'", String.Single, "#pop"),
346
+ (r"[^\\']+", String.Single),
347
+ ],
348
+ 'string_double': [
349
+ include('string_escape'),
350
+
351
+ (r'"', String.Double, "#pop"),
352
+ (r'[^\\"]+', String.Double),
353
+ ],
354
+ 'string_interpolated': [
355
+ include('string_escape'),
356
+
357
+ (r'\{', Punctuation, ('closing_brace_base', 'expression')),
358
+
359
+ (r'`', String.Backtick, "#pop"),
360
+ (r'[^\\`\{]+', String.Backtick),
361
+ ],
362
+
363
+ 'func_name': [
364
+ include('ws'),
365
+
366
+ (r'[.:]', Punctuation),
367
+ (rf'[a-zA-Z_]\w*(?={_s}*[.:])', Name.Class),
368
+ (r'[a-zA-Z_]\w*', Name.Function),
369
+
370
+ (r'<', Punctuation, 'closing_gt_type'),
371
+
372
+ (r'\(', Punctuation, '#pop'),
373
+ ],
374
+
375
+ 'type': [
376
+ include('ws'),
377
+
378
+ (r'\(', Punctuation, 'closing_parenthesis_type'),
379
+ (r'\{', Punctuation, 'closing_brace_type'),
380
+ (r'<', Punctuation, 'closing_gt_type'),
381
+
382
+ (r"'", String.Single, 'string_single'),
383
+ (r'"', String.Double, 'string_double'),
384
+
385
+ (r'[|&\.,\[\]:=]+', Punctuation),
386
+ (r'->', Punctuation),
387
+
388
+ (r'typeof\(', Name.Builtin, ('closing_parenthesis_base',
389
+ 'expression')),
390
+ (r'[a-zA-Z_]\w*', Name.Class),
391
+ ],
392
+ 'type_start': [
393
+ include('ws'),
394
+
395
+ (r'\(', Punctuation, ('#pop', 'closing_parenthesis_type')),
396
+ (r'\{', Punctuation, ('#pop', 'closing_brace_type')),
397
+ (r'<', Punctuation, ('#pop', 'closing_gt_type')),
398
+
399
+ (r"'", String.Single, ('#pop', 'string_single')),
400
+ (r'"', String.Double, ('#pop', 'string_double')),
401
+
402
+ (r'typeof\(', Name.Builtin, ('#pop', 'closing_parenthesis_base',
403
+ 'expression')),
404
+ (r'[a-zA-Z_]\w*', Name.Class, '#pop'),
405
+ ],
406
+ 'type_end': [
407
+ include('ws'),
408
+
409
+ (r'[|&\.]', Punctuation, 'type_start'),
410
+ (r'->', Punctuation, 'type_start'),
411
+
412
+ (r'<', Punctuation, 'closing_gt_type'),
413
+
414
+ default('#pop'),
415
+ ],
416
+ 'type_declaration': [
417
+ include('ws'),
418
+
419
+ (r'[a-zA-Z_]\w*', Name.Class),
420
+ (r'<', Punctuation, 'closing_gt_type'),
421
+
422
+ (r'=', Punctuation, ('#pop', 'type_end', 'type_start')),
423
+ ],
424
+ }
425
+
426
+ def __init__(self, **options):
427
+ self.include_luau_builtins = get_bool_opt(
428
+ options, 'include_luau_builtins', True)
429
+ self.include_roblox_builtins = get_bool_opt(
430
+ options, 'include_roblox_builtins', False)
431
+ self.additional_builtins = get_list_opt(options, 'additional_builtins', [])
432
+ self.disabled_builtins = get_list_opt(options, 'disabled_builtins', [])
433
+
434
+ self._builtins = set(self.additional_builtins)
435
+ if self.include_luau_builtins:
436
+ from pygments.lexers._luau_builtins import LUAU_BUILTINS
437
+ self._builtins.update(LUAU_BUILTINS)
438
+ if self.include_roblox_builtins:
439
+ from pygments.lexers._luau_builtins import ROBLOX_BUILTINS
440
+ self._builtins.update(ROBLOX_BUILTINS)
441
+ if self.additional_builtins:
442
+ self._builtins.update(self.additional_builtins)
443
+ self._builtins.difference_update(self.disabled_builtins)
444
+
445
+ RegexLexer.__init__(self, **options)
446
+
447
+ def get_tokens_unprocessed(self, text):
448
+ for index, token, value in \
449
+ RegexLexer.get_tokens_unprocessed(self, text):
450
+ if token is Name or token is Name.Other:
451
+ split_value = value.split('.')
452
+ complete_value = []
453
+ new_index = index
454
+ for position in range(len(split_value), 0, -1):
455
+ potential_string = '.'.join(split_value[:position])
456
+ if potential_string in self._builtins:
457
+ yield index, Name.Builtin, potential_string
458
+ new_index += len(potential_string)
459
+
460
+ if complete_value:
461
+ yield new_index, Punctuation, '.'
462
+ new_index += 1
463
+ break
464
+ complete_value.insert(0, split_value[position - 1])
465
+
466
+ for position, substring in enumerate(complete_value):
467
+ if position + 1 == len(complete_value):
468
+ if token is Name:
469
+ yield new_index, Name.Variable, substring
470
+ continue
471
+ yield new_index, Name.Function, substring
472
+ continue
473
+ yield new_index, Name.Variable, substring
474
+ new_index += len(substring)
475
+ yield new_index, Punctuation, '.'
476
+ new_index += 1
477
+
478
+ continue
479
+ yield index, token, value
480
+
165
481
  class MoonScriptLexer(LuaLexer):
166
482
  """
167
483
  For MoonScript source code.
168
-
169
- .. versionadded:: 1.5
170
484
  """
171
485
 
172
486
  name = 'MoonScript'
@@ -174,6 +488,7 @@ class MoonScriptLexer(LuaLexer):
174
488
  aliases = ['moonscript', 'moon']
175
489
  filenames = ['*.moon']
176
490
  mimetypes = ['text/x-moonscript', 'application/x-moonscript']
491
+ version_added = '1.5'
177
492
 
178
493
  tokens = {
179
494
  'root': [
@@ -234,8 +549,6 @@ class MoonScriptLexer(LuaLexer):
234
549
  class ChaiscriptLexer(RegexLexer):
235
550
  """
236
551
  For ChaiScript source code.
237
-
238
- .. versionadded:: 2.0
239
552
  """
240
553
 
241
554
  name = 'ChaiScript'
@@ -243,6 +556,7 @@ class ChaiscriptLexer(RegexLexer):
243
556
  aliases = ['chaiscript', 'chai']
244
557
  filenames = ['*.chai']
245
558
  mimetypes = ['text/x-chaiscript', 'application/x-chaiscript']
559
+ version_added = '2.0'
246
560
 
247
561
  flags = re.DOTALL | re.MULTILINE
248
562
 
@@ -301,14 +615,14 @@ class ChaiscriptLexer(RegexLexer):
301
615
  class LSLLexer(RegexLexer):
302
616
  """
303
617
  For Second Life's Linden Scripting Language source code.
304
-
305
- .. versionadded:: 2.0
306
618
  """
307
619
 
308
620
  name = 'LSL'
309
621
  aliases = ['lsl']
310
622
  filenames = ['*.lsl']
311
623
  mimetypes = ['text/x-lsl']
624
+ url = 'https://wiki.secondlife.com/wiki/Linden_Scripting_Language'
625
+ version_added = '2.0'
312
626
 
313
627
  flags = re.MULTILINE
314
628
 
@@ -389,14 +703,13 @@ class AppleScriptLexer(RegexLexer):
389
703
  <http://developer.apple.com/documentation/AppleScript/
390
704
  Reference/StudioReference>`_.
391
705
  Contributed by Andreas Amann <aamann@mac.com>.
392
-
393
- .. versionadded:: 1.0
394
706
  """
395
707
 
396
708
  name = 'AppleScript'
397
709
  url = 'https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html'
398
710
  aliases = ['applescript']
399
711
  filenames = ['*.applescript']
712
+ version_added = '1.0'
400
713
 
401
714
  flags = re.MULTILINE | re.DOTALL
402
715
 
@@ -672,26 +985,26 @@ class AppleScriptLexer(RegexLexer):
672
985
  r'numeric strings|punctuation|white space)',
673
986
  bygroups(Keyword, Name.Builtin)),
674
987
  (r'(-|\*|\+|&|≠|>=?|<=?|=|≥|≤|/|÷|\^)', Operator),
675
- (r"\b(%s)\b" % '|'.join(Operators), Operator.Word),
988
+ (r"\b({})\b".format('|'.join(Operators)), Operator.Word),
676
989
  (r'^(\s*(?:on|end)\s+)'
677
- r'(%s)' % '|'.join(StudioEvents[::-1]),
990
+ r'({})'.format('|'.join(StudioEvents[::-1])),
678
991
  bygroups(Keyword, Name.Function)),
679
992
  (r'^(\s*)(in|on|script|to)(\s+)', bygroups(Text, Keyword, Text)),
680
- (r'\b(as )(%s)\b' % '|'.join(Classes),
993
+ (r'\b(as )({})\b'.format('|'.join(Classes)),
681
994
  bygroups(Keyword, Name.Class)),
682
- (r'\b(%s)\b' % '|'.join(Literals), Name.Constant),
683
- (r'\b(%s)\b' % '|'.join(Commands), Name.Builtin),
684
- (r'\b(%s)\b' % '|'.join(Control), Keyword),
685
- (r'\b(%s)\b' % '|'.join(Declarations), Keyword),
686
- (r'\b(%s)\b' % '|'.join(Reserved), Name.Builtin),
687
- (r'\b(%s)s?\b' % '|'.join(BuiltIn), Name.Builtin),
688
- (r'\b(%s)\b' % '|'.join(HandlerParams), Name.Builtin),
689
- (r'\b(%s)\b' % '|'.join(StudioProperties), Name.Attribute),
690
- (r'\b(%s)s?\b' % '|'.join(StudioClasses), Name.Builtin),
691
- (r'\b(%s)\b' % '|'.join(StudioCommands), Name.Builtin),
692
- (r'\b(%s)\b' % '|'.join(References), Name.Builtin),
995
+ (r'\b({})\b'.format('|'.join(Literals)), Name.Constant),
996
+ (r'\b({})\b'.format('|'.join(Commands)), Name.Builtin),
997
+ (r'\b({})\b'.format('|'.join(Control)), Keyword),
998
+ (r'\b({})\b'.format('|'.join(Declarations)), Keyword),
999
+ (r'\b({})\b'.format('|'.join(Reserved)), Name.Builtin),
1000
+ (r'\b({})s?\b'.format('|'.join(BuiltIn)), Name.Builtin),
1001
+ (r'\b({})\b'.format('|'.join(HandlerParams)), Name.Builtin),
1002
+ (r'\b({})\b'.format('|'.join(StudioProperties)), Name.Attribute),
1003
+ (r'\b({})s?\b'.format('|'.join(StudioClasses)), Name.Builtin),
1004
+ (r'\b({})\b'.format('|'.join(StudioCommands)), Name.Builtin),
1005
+ (r'\b({})\b'.format('|'.join(References)), Name.Builtin),
693
1006
  (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
694
- (r'\b(%s)\b' % Identifiers, Name.Variable),
1007
+ (rf'\b({Identifiers})\b', Name.Variable),
695
1008
  (r'[-+]?(\d+\.\d*|\d*\.\d+)(E[-+][0-9]+)?', Number.Float),
696
1009
  (r'[-+]?\d+', Number.Integer),
697
1010
  ],
@@ -710,14 +1023,13 @@ class RexxLexer(RegexLexer):
710
1023
  a wide range of different platforms with its roots found on mainframe
711
1024
  systems. It is popular for I/O- and data based tasks and can act as glue
712
1025
  language to bind different applications together.
713
-
714
- .. versionadded:: 2.0
715
1026
  """
716
1027
  name = 'Rexx'
717
1028
  url = 'http://www.rexxinfo.org/'
718
1029
  aliases = ['rexx', 'arexx']
719
1030
  filenames = ['*.rexx', '*.rex', '*.rx', '*.arexx']
720
1031
  mimetypes = ['text/x-rexx']
1032
+ version_added = '2.0'
721
1033
  flags = re.IGNORECASE
722
1034
 
723
1035
  tokens = {
@@ -781,7 +1093,8 @@ class RexxLexer(RegexLexer):
781
1093
  ]
782
1094
  }
783
1095
 
784
- _c = lambda s: re.compile(s, re.MULTILINE)
1096
+ def _c(s):
1097
+ return re.compile(s, re.MULTILINE)
785
1098
  _ADDRESS_COMMAND_PATTERN = _c(r'^\s*address\s+command\b')
786
1099
  _ADDRESS_PATTERN = _c(r'^\s*address\s+')
787
1100
  _DO_WHILE_PATTERN = _c(r'^\s*do\s+while\b')
@@ -821,14 +1134,13 @@ class RexxLexer(RegexLexer):
821
1134
  class MOOCodeLexer(RegexLexer):
822
1135
  """
823
1136
  For MOOCode (the MOO scripting language).
824
-
825
- .. versionadded:: 0.9
826
1137
  """
827
1138
  name = 'MOOCode'
828
1139
  url = 'http://www.moo.mud.org/'
829
1140
  filenames = ['*.moo']
830
1141
  aliases = ['moocode', 'moo']
831
1142
  mimetypes = ['text/x-moocode']
1143
+ version_added = '0.9'
832
1144
 
833
1145
  tokens = {
834
1146
  'root': [
@@ -864,14 +1176,14 @@ class MOOCodeLexer(RegexLexer):
864
1176
  class HybrisLexer(RegexLexer):
865
1177
  """
866
1178
  For Hybris source code.
867
-
868
- .. versionadded:: 1.4
869
1179
  """
870
1180
 
871
1181
  name = 'Hybris'
872
- aliases = ['hybris', 'hy']
873
- filenames = ['*.hy', '*.hyb']
1182
+ aliases = ['hybris']
1183
+ filenames = ['*.hyb']
874
1184
  mimetypes = ['text/x-hybris', 'application/x-hybris']
1185
+ url = 'https://github.com/evilsocket/hybris'
1186
+ version_added = '1.4'
875
1187
 
876
1188
  flags = re.MULTILINE | re.DOTALL
877
1189
 
@@ -962,13 +1274,13 @@ class EasytrieveLexer(RegexLexer):
962
1274
  converting sequential data. Furthermore it can layout data for reports.
963
1275
  It is mainly used on mainframe platforms and can access several of the
964
1276
  mainframe's native file formats. It is somewhat comparable to awk.
965
-
966
- .. versionadded:: 2.1
967
1277
  """
968
1278
  name = 'Easytrieve'
969
1279
  aliases = ['easytrieve']
970
1280
  filenames = ['*.ezt', '*.mac']
971
1281
  mimetypes = ['text/x-easytrieve']
1282
+ url = 'https://www.broadcom.com/products/mainframe/application-development/easytrieve-report-generator'
1283
+ version_added = '2.1'
972
1284
  flags = 0
973
1285
 
974
1286
  # Note: We cannot use r'\b' at the start and end of keywords because
@@ -1154,13 +1466,14 @@ class JclLexer(RegexLexer):
1154
1466
  is a scripting language used on mainframe platforms to instruct the system
1155
1467
  on how to run a batch job or start a subsystem. It is somewhat
1156
1468
  comparable to MS DOS batch and Unix shell scripts.
1157
-
1158
- .. versionadded:: 2.1
1159
1469
  """
1160
1470
  name = 'JCL'
1161
1471
  aliases = ['jcl']
1162
1472
  filenames = ['*.jcl']
1163
1473
  mimetypes = ['text/x-jcl']
1474
+ url = 'https://en.wikipedia.org/wiki/Job_Control_Language'
1475
+ version_added = '2.1'
1476
+
1164
1477
  flags = re.IGNORECASE
1165
1478
 
1166
1479
  tokens = {
@@ -1234,8 +1547,6 @@ class JclLexer(RegexLexer):
1234
1547
  class MiniScriptLexer(RegexLexer):
1235
1548
  """
1236
1549
  For MiniScript source code.
1237
-
1238
- .. versionadded:: 2.6
1239
1550
  """
1240
1551
 
1241
1552
  name = 'MiniScript'
@@ -1243,6 +1554,7 @@ class MiniScriptLexer(RegexLexer):
1243
1554
  aliases = ['miniscript', 'ms']
1244
1555
  filenames = ['*.ms']
1245
1556
  mimetypes = ['text/x-minicript', 'application/x-miniscript']
1557
+ version_added = '2.6'
1246
1558
 
1247
1559
  tokens = {
1248
1560
  'root': [
@@ -4,7 +4,7 @@
4
4
 
5
5
  Lexer for Smart Game Format (sgf) file format.
6
6
 
7
- :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  """
10
10
 
@@ -20,13 +20,12 @@ class SmartGameFormatLexer(RegexLexer):
20
20
 
21
21
  The format is used to store game records of board games for two players
22
22
  (mainly Go game).
23
-
24
- .. versionadded:: 2.4
25
23
  """
26
24
  name = 'SmartGameFormat'
27
25
  url = 'https://www.red-bean.com/sgf/'
28
26
  aliases = ['sgf']
29
27
  filenames = ['*.sgf']
28
+ version_added = '2.4'
30
29
 
31
30
  tokens = {
32
31
  'root': [