pygments.rb 2.4.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
  Pygments lexers for JVM 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
 
@@ -33,6 +33,7 @@ class JavaLexer(RegexLexer):
33
33
  aliases = ['java']
34
34
  filenames = ['*.java']
35
35
  mimetypes = ['text/x-java']
36
+ version_added = ''
36
37
 
37
38
  flags = re.MULTILINE | re.DOTALL
38
39
 
@@ -118,8 +119,6 @@ class JavaLexer(RegexLexer):
118
119
  class AspectJLexer(JavaLexer):
119
120
  """
120
121
  For AspectJ source code.
121
-
122
- .. versionadded:: 1.6
123
122
  """
124
123
 
125
124
  name = 'AspectJ'
@@ -127,6 +126,7 @@ class AspectJLexer(JavaLexer):
127
126
  aliases = ['aspectj']
128
127
  filenames = ['*.aj']
129
128
  mimetypes = ['text/x-aspectj']
129
+ version_added = '1.6'
130
130
 
131
131
  aj_keywords = {
132
132
  'aspect', 'pointcut', 'privileged', 'call', 'execution',
@@ -165,21 +165,22 @@ class ScalaLexer(RegexLexer):
165
165
  aliases = ['scala']
166
166
  filenames = ['*.scala']
167
167
  mimetypes = ['text/x-scala']
168
+ version_added = ''
168
169
 
169
170
  flags = re.MULTILINE | re.DOTALL
170
171
 
171
172
  opchar = '[!#%&*\\-\\/:?@^' + uni.combine('Sm', 'So') + ']'
172
173
  letter = '[_\\$' + uni.combine('Ll', 'Lu', 'Lo', 'Nl', 'Lt') + ']'
173
174
  upperLetter = '[' + uni.combine('Lu', 'Lt') + ']'
174
- letterOrDigit = '(?:%s|[0-9])' % letter
175
- letterOrDigitNoDollarSign = '(?:%s|[0-9])' % letter.replace('\\$', '')
176
- alphaId = '%s+' % letter
177
- simpleInterpolatedVariable = '%s%s*' % (letter, letterOrDigitNoDollarSign)
178
- idrest = '%s%s*(?:(?<=_)%s+)?' % (letter, letterOrDigit, opchar)
179
- idUpper = '%s%s*(?:(?<=_)%s+)?' % (upperLetter, letterOrDigit, opchar)
180
- plainid = '(?:%s|%s+)' % (idrest, opchar)
175
+ letterOrDigit = f'(?:{letter}|[0-9])'
176
+ letterOrDigitNoDollarSign = '(?:{}|[0-9])'.format(letter.replace('\\$', ''))
177
+ alphaId = f'{letter}+'
178
+ simpleInterpolatedVariable = f'{letter}{letterOrDigitNoDollarSign}*'
179
+ idrest = f'{letter}{letterOrDigit}*(?:(?<=_){opchar}+)?'
180
+ idUpper = f'{upperLetter}{letterOrDigit}*(?:(?<=_){opchar}+)?'
181
+ plainid = f'(?:{idrest}|{opchar}+)'
181
182
  backQuotedId = r'`[^`]+`'
182
- anyId = r'(?:%s|%s)' % (plainid, backQuotedId)
183
+ anyId = rf'(?:{plainid}|{backQuotedId})'
183
184
  notStartOfComment = r'(?!//|/\*)'
184
185
  endOfLineMaybeWithComment = r'(?=\s*(//|$))'
185
186
 
@@ -256,7 +257,7 @@ class ScalaLexer(RegexLexer):
256
257
  r'(def|val|var|given|type|class|trait|object|enum)\b)', Keyword),
257
258
  ],
258
259
  'annotations': [
259
- (r'@%s' % idrest, Name.Decorator),
260
+ (rf'@{idrest}', Name.Decorator),
260
261
  ],
261
262
  'using': [
262
263
  # using is a soft keyword, can only be used in the first position of
@@ -264,29 +265,26 @@ class ScalaLexer(RegexLexer):
264
265
  (r'(\()(\s*)(using)(\s)', bygroups(Punctuation, Whitespace, Keyword, Whitespace)),
265
266
  ],
266
267
  'declarations': [
267
- (r'\b(def)\b(\s*)%s(%s)?' % (notStartOfComment, anyId),
268
+ (rf'\b(def)\b(\s*){notStartOfComment}({anyId})?',
268
269
  bygroups(Keyword, Whitespace, Name.Function)),
269
- (r'\b(trait)\b(\s*)%s(%s)?' % (notStartOfComment, anyId),
270
+ (rf'\b(trait)\b(\s*){notStartOfComment}({anyId})?',
270
271
  bygroups(Keyword, Whitespace, Name.Class)),
271
- (r'\b(?:(case)(\s+))?(class|object|enum)\b(\s*)%s(%s)?' %
272
- (notStartOfComment, anyId),
272
+ (rf'\b(?:(case)(\s+))?(class|object|enum)\b(\s*){notStartOfComment}({anyId})?',
273
273
  bygroups(Keyword, Whitespace, Keyword, Whitespace, Name.Class)),
274
- (r'(?<!\.)\b(type)\b(\s*)%s(%s)?' % (notStartOfComment, anyId),
274
+ (rf'(?<!\.)\b(type)\b(\s*){notStartOfComment}({anyId})?',
275
275
  bygroups(Keyword, Whitespace, Name.Class)),
276
276
  (r'\b(val|var)\b', Keyword.Declaration),
277
- (r'\b(package)(\s+)(object)\b(\s*)%s(%s)?' %
278
- (notStartOfComment, anyId),
277
+ (rf'\b(package)(\s+)(object)\b(\s*){notStartOfComment}({anyId})?',
279
278
  bygroups(Keyword, Whitespace, Keyword, Whitespace, Name.Namespace)),
280
279
  (r'\b(package)(\s+)', bygroups(Keyword, Whitespace), 'package'),
281
- (r'\b(given)\b(\s*)(%s)' % idUpper,
280
+ (rf'\b(given)\b(\s*)({idUpper})',
282
281
  bygroups(Keyword, Whitespace, Name.Class)),
283
- (r'\b(given)\b(\s*)(%s)?' % anyId,
282
+ (rf'\b(given)\b(\s*)({anyId})?',
284
283
  bygroups(Keyword, Whitespace, Name)),
285
284
  ],
286
285
  'inheritance': [
287
286
  (r'\b(extends|with|derives)\b(\s*)'
288
- r'(%s|%s|(?=\([^\)]+=>)|(?=%s)|(?="))?' %
289
- (idUpper, backQuotedId, plainid),
287
+ rf'({idUpper}|{backQuotedId}|(?=\([^\)]+=>)|(?={plainid})|(?="))?',
290
288
  bygroups(Keyword, Whitespace, Name.Class)),
291
289
  ],
292
290
  'extension': [
@@ -296,10 +294,9 @@ class ScalaLexer(RegexLexer):
296
294
  # end is a soft keyword, should only be highlighted in certain cases
297
295
  (r'\b(end)(\s+)(if|while|for|match|new|extension|val|var)\b',
298
296
  bygroups(Keyword, Whitespace, Keyword)),
299
- (r'\b(end)(\s+)(%s)%s' % (idUpper, endOfLineMaybeWithComment),
297
+ (rf'\b(end)(\s+)({idUpper}){endOfLineMaybeWithComment}',
300
298
  bygroups(Keyword, Whitespace, Name.Class)),
301
- (r'\b(end)(\s+)(%s|%s)?%s' %
302
- (backQuotedId, plainid, endOfLineMaybeWithComment),
299
+ (rf'\b(end)(\s+)({backQuotedId}|{plainid})?{endOfLineMaybeWithComment}',
303
300
  bygroups(Keyword, Whitespace, Name.Namespace)),
304
301
  ],
305
302
  'punctuation': [
@@ -310,10 +307,10 @@ class ScalaLexer(RegexLexer):
310
307
  (words(keywords, prefix=r'\b', suffix=r'\b'), Keyword),
311
308
  ],
312
309
  'operators': [
313
- (r'(%s{2,})(\s+)' % opchar, bygroups(Operator, Whitespace)),
310
+ (rf'({opchar}{{2,}})(\s+)', bygroups(Operator, Whitespace)),
314
311
  (r'/(?![/*])', Operator),
315
312
  (words(operators), Operator),
316
- (r'(?<!%s)(!|&&|\|\|)(?!%s)' % (opchar, opchar), Operator),
313
+ (rf'(?<!{opchar})(!|&&|\|\|)(?!{opchar})', Operator),
317
314
  ],
318
315
  'constants': [
319
316
  (r'\b(this|super)\b', Name.Builtin.Pseudo),
@@ -336,7 +333,7 @@ class ScalaLexer(RegexLexer):
336
333
  (r'raw"(\\\\|\\"|[^"])*"', String),
337
334
  ],
338
335
  'symbols': [
339
- (r"('%s)(?!')" % plainid, String.Symbol),
336
+ (rf"('{plainid})(?!')", String.Symbol),
340
337
  ],
341
338
  'singleton-type': [
342
339
  (r'(\.)(type)\b', bygroups(Punctuation, Keyword)),
@@ -344,7 +341,7 @@ class ScalaLexer(RegexLexer):
344
341
  'inline': [
345
342
  # inline is a soft modifier, only highlighted if followed by if,
346
343
  # match or parameters.
347
- (r'\b(inline)(?=\s+(%s|%s)\s*:)' % (plainid, backQuotedId),
344
+ (rf'\b(inline)(?=\s+({plainid}|{backQuotedId})\s*:)',
348
345
  Keyword),
349
346
  (r'\b(inline)\b(?=(?:.(?!\b(?:val|def|given)\b))*\b(if|match)\b)',
350
347
  Keyword),
@@ -427,7 +424,7 @@ class ScalaLexer(RegexLexer):
427
424
  # Helpers
428
425
  'qualified-name': [
429
426
  (idUpper, Name.Class),
430
- (r'(%s)(\.)' % anyId, bygroups(Name.Namespace, Punctuation)),
427
+ (rf'({anyId})(\.)', bygroups(Name.Namespace, Punctuation)),
431
428
  (r'\.', Punctuation),
432
429
  (anyId, Name),
433
430
  (r'[^\S\n]+', Whitespace),
@@ -435,7 +432,7 @@ class ScalaLexer(RegexLexer):
435
432
  'interpolated-string-common': [
436
433
  (r'[^"$\\]+', String),
437
434
  (r'\$\$', String.Escape),
438
- (r'(\$)(%s)' % simpleInterpolatedVariable,
435
+ (rf'(\$)({simpleInterpolatedVariable})',
439
436
  bygroups(String.Interpol, Name)),
440
437
  (r'\$\{', String.Interpol, 'interpolated-string-brace'),
441
438
  (r'\\.', String),
@@ -446,14 +443,14 @@ class ScalaLexer(RegexLexer):
446
443
  class GosuLexer(RegexLexer):
447
444
  """
448
445
  For Gosu source code.
449
-
450
- .. versionadded:: 1.5
451
446
  """
452
447
 
453
448
  name = 'Gosu'
454
449
  aliases = ['gosu']
455
450
  filenames = ['*.gs', '*.gsx', '*.gsp', '*.vark']
456
451
  mimetypes = ['text/x-gosu']
452
+ url = 'https://gosu-lang.github.io'
453
+ version_added = '1.5'
457
454
 
458
455
  flags = re.MULTILINE | re.DOTALL
459
456
 
@@ -525,14 +522,14 @@ class GosuLexer(RegexLexer):
525
522
  class GosuTemplateLexer(Lexer):
526
523
  """
527
524
  For Gosu templates.
528
-
529
- .. versionadded:: 1.5
530
525
  """
531
526
 
532
527
  name = 'Gosu Template'
533
528
  aliases = ['gst']
534
529
  filenames = ['*.gst']
535
530
  mimetypes = ['text/x-gosu-template']
531
+ url = 'https://gosu-lang.github.io'
532
+ version_added = '1.5'
536
533
 
537
534
  def get_tokens_unprocessed(self, text):
538
535
  lexer = GosuLexer()
@@ -543,8 +540,6 @@ class GosuTemplateLexer(Lexer):
543
540
  class GroovyLexer(RegexLexer):
544
541
  """
545
542
  For Groovy source code.
546
-
547
- .. versionadded:: 1.5
548
543
  """
549
544
 
550
545
  name = 'Groovy'
@@ -552,6 +547,7 @@ class GroovyLexer(RegexLexer):
552
547
  aliases = ['groovy']
553
548
  filenames = ['*.groovy','*.gradle']
554
549
  mimetypes = ['text/x-groovy']
550
+ version_added = '1.5'
555
551
 
556
552
  flags = re.MULTILINE | re.DOTALL
557
553
 
@@ -622,14 +618,13 @@ class IokeLexer(RegexLexer):
622
618
  """
623
619
  For Ioke (a strongly typed, dynamic,
624
620
  prototype based programming language) source.
625
-
626
- .. versionadded:: 1.4
627
621
  """
628
622
  name = 'Ioke'
629
623
  url = 'https://ioke.org/'
630
624
  filenames = ['*.ik']
631
625
  aliases = ['ioke', 'ik']
632
626
  mimetypes = ['text/x-iokesrc']
627
+ version_added = '1.4'
633
628
  tokens = {
634
629
  'interpolatableText': [
635
630
  (r'(\\b|\\e|\\t|\\n|\\f|\\r|\\"|\\\\|\\#|\\\Z|\\u[0-9a-fA-F]{1,4}'
@@ -813,14 +808,13 @@ class IokeLexer(RegexLexer):
813
808
  class ClojureLexer(RegexLexer):
814
809
  """
815
810
  Lexer for Clojure source code.
816
-
817
- .. versionadded:: 0.11
818
811
  """
819
812
  name = 'Clojure'
820
813
  url = 'http://clojure.org/'
821
814
  aliases = ['clojure', 'clj']
822
815
  filenames = ['*.clj', '*.cljc']
823
816
  mimetypes = ['text/x-clojure', 'application/x-clojure']
817
+ version_added = '0.11'
824
818
 
825
819
  special_forms = (
826
820
  '.', 'def', 'do', 'fn', 'if', 'let', 'new', 'quote', 'var', 'loop'
@@ -954,14 +948,13 @@ class ClojureLexer(RegexLexer):
954
948
  class ClojureScriptLexer(ClojureLexer):
955
949
  """
956
950
  Lexer for ClojureScript source code.
957
-
958
- .. versionadded:: 2.0
959
951
  """
960
952
  name = 'ClojureScript'
961
953
  url = 'http://clojure.org/clojurescript'
962
954
  aliases = ['clojurescript', 'cljs']
963
955
  filenames = ['*.cljs']
964
956
  mimetypes = ['text/x-clojurescript', 'application/x-clojurescript']
957
+ version_added = '2.0'
965
958
 
966
959
 
967
960
  class TeaLangLexer(RegexLexer):
@@ -1014,8 +1007,6 @@ class TeaLangLexer(RegexLexer):
1014
1007
  class CeylonLexer(RegexLexer):
1015
1008
  """
1016
1009
  For Ceylon source code.
1017
-
1018
- .. versionadded:: 1.6
1019
1010
  """
1020
1011
 
1021
1012
  name = 'Ceylon'
@@ -1023,6 +1014,7 @@ class CeylonLexer(RegexLexer):
1023
1014
  aliases = ['ceylon']
1024
1015
  filenames = ['*.ceylon']
1025
1016
  mimetypes = ['text/x-ceylon']
1017
+ version_added = '1.6'
1026
1018
 
1027
1019
  flags = re.MULTILINE | re.DOTALL
1028
1020
 
@@ -1094,8 +1086,6 @@ class CeylonLexer(RegexLexer):
1094
1086
  class KotlinLexer(RegexLexer):
1095
1087
  """
1096
1088
  For Kotlin source code.
1097
-
1098
- .. versionadded:: 1.5
1099
1089
  """
1100
1090
 
1101
1091
  name = 'Kotlin'
@@ -1103,6 +1093,7 @@ class KotlinLexer(RegexLexer):
1103
1093
  aliases = ['kotlin']
1104
1094
  filenames = ['*.kt', '*.kts']
1105
1095
  mimetypes = ['text/x-kotlin']
1096
+ version_added = '1.5'
1106
1097
 
1107
1098
  flags = re.MULTILINE | re.DOTALL
1108
1099
 
@@ -1250,8 +1241,6 @@ class KotlinLexer(RegexLexer):
1250
1241
  class XtendLexer(RegexLexer):
1251
1242
  """
1252
1243
  For Xtend source code.
1253
-
1254
- .. versionadded:: 1.6
1255
1244
  """
1256
1245
 
1257
1246
  name = 'Xtend'
@@ -1259,6 +1248,7 @@ class XtendLexer(RegexLexer):
1259
1248
  aliases = ['xtend']
1260
1249
  filenames = ['*.xtend']
1261
1250
  mimetypes = ['text/x-xtend']
1251
+ version_added = '1.6'
1262
1252
 
1263
1253
  flags = re.MULTILINE | re.DOTALL
1264
1254
 
@@ -1279,7 +1269,7 @@ class XtendLexer(RegexLexer):
1279
1269
  Keyword),
1280
1270
  (r'(def|abstract|const|enum|extends|final|implements|native|private|'
1281
1271
  r'protected|public|static|strictfp|super|synchronized|throws|'
1282
- r'transient|volatile)\b', Keyword.Declaration),
1272
+ r'transient|volatile|val|var)\b', Keyword.Declaration),
1283
1273
  (r'(boolean|byte|char|double|float|int|long|short|void)\b',
1284
1274
  Keyword.Type),
1285
1275
  (r'(package)(\s+)', bygroups(Keyword.Namespace, Whitespace)),
@@ -1316,8 +1306,6 @@ class XtendLexer(RegexLexer):
1316
1306
  class PigLexer(RegexLexer):
1317
1307
  """
1318
1308
  For Pig Latin source code.
1319
-
1320
- .. versionadded:: 2.0
1321
1309
  """
1322
1310
 
1323
1311
  name = 'Pig'
@@ -1325,6 +1313,7 @@ class PigLexer(RegexLexer):
1325
1313
  aliases = ['pig']
1326
1314
  filenames = ['*.pig']
1327
1315
  mimetypes = ['text/x-pig']
1316
+ version_added = '2.0'
1328
1317
 
1329
1318
  flags = re.MULTILINE | re.IGNORECASE
1330
1319
 
@@ -1384,14 +1373,13 @@ class PigLexer(RegexLexer):
1384
1373
  class GoloLexer(RegexLexer):
1385
1374
  """
1386
1375
  For Golo source code.
1387
-
1388
- .. versionadded:: 2.0
1389
1376
  """
1390
1377
 
1391
1378
  name = 'Golo'
1392
1379
  url = 'http://golo-lang.org/'
1393
1380
  filenames = ['*.golo']
1394
1381
  aliases = ['golo']
1382
+ version_added = '2.0'
1395
1383
 
1396
1384
  tokens = {
1397
1385
  'root': [
@@ -1498,21 +1486,20 @@ class GoloLexer(RegexLexer):
1498
1486
  class JasminLexer(RegexLexer):
1499
1487
  """
1500
1488
  For Jasmin assembly code.
1501
-
1502
- .. versionadded:: 2.0
1503
1489
  """
1504
1490
 
1505
1491
  name = 'Jasmin'
1506
1492
  url = 'http://jasmin.sourceforge.net/'
1507
1493
  aliases = ['jasmin', 'jasminxt']
1508
1494
  filenames = ['*.j']
1495
+ version_added = '2.0'
1509
1496
 
1510
1497
  _whitespace = r' \n\t\r'
1511
- _ws = r'(?:[%s]+)' % _whitespace
1512
- _separator = r'%s:=' % _whitespace
1513
- _break = r'(?=[%s]|$)' % _separator
1514
- _name = r'[^%s]+' % _separator
1515
- _unqualified_name = r'(?:[^%s.;\[/]+)' % _separator
1498
+ _ws = rf'(?:[{_whitespace}]+)'
1499
+ _separator = rf'{_whitespace}:='
1500
+ _break = rf'(?=[{_separator}]|$)'
1501
+ _name = rf'[^{_separator}]+'
1502
+ _unqualified_name = rf'(?:[^{_separator}.;\[/]+)'
1516
1503
 
1517
1504
  tokens = {
1518
1505
  'default': [
@@ -1523,36 +1510,36 @@ class JasminLexer(RegexLexer):
1523
1510
  (r':', Punctuation, 'label'),
1524
1511
  (_ws, Whitespace),
1525
1512
  (r';.*', Comment.Single),
1526
- (r'(\$[-+])?0x-?[\da-fA-F]+%s' % _break, Number.Hex),
1527
- (r'(\$[-+]|\+)?-?\d+%s' % _break, Number.Integer),
1513
+ (rf'(\$[-+])?0x-?[\da-fA-F]+{_break}', Number.Hex),
1514
+ (rf'(\$[-+]|\+)?-?\d+{_break}', Number.Integer),
1528
1515
  (r'-?(\d+\.\d*|\.\d+)([eE][-+]?\d+)?[fFdD]?'
1529
- r'[\x00-\x08\x0b\x0c\x0e-\x1f]*%s' % _break, Number.Float),
1530
- (r'\$%s' % _name, Name.Variable),
1516
+ rf'[\x00-\x08\x0b\x0c\x0e-\x1f]*{_break}', Number.Float),
1517
+ (rf'\${_name}', Name.Variable),
1531
1518
 
1532
1519
  # Directives
1533
- (r'\.annotation%s' % _break, Keyword.Reserved, 'annotation'),
1520
+ (rf'\.annotation{_break}', Keyword.Reserved, 'annotation'),
1534
1521
  (r'(\.attribute|\.bytecode|\.debug|\.deprecated|\.enclosing|'
1535
1522
  r'\.interface|\.line|\.signature|\.source|\.stack|\.var|abstract|'
1536
1523
  r'annotation|bridge|class|default|enum|field|final|fpstrict|'
1537
1524
  r'interface|native|private|protected|public|signature|static|'
1538
- r'synchronized|synthetic|transient|varargs|volatile)%s' % _break,
1525
+ rf'synchronized|synthetic|transient|varargs|volatile){_break}',
1539
1526
  Keyword.Reserved),
1540
- (r'\.catch%s' % _break, Keyword.Reserved, 'caught-exception'),
1527
+ (rf'\.catch{_break}', Keyword.Reserved, 'caught-exception'),
1541
1528
  (r'(\.class|\.implements|\.inner|\.super|inner|invisible|'
1542
- r'invisibleparam|outer|visible|visibleparam)%s' % _break,
1529
+ rf'invisibleparam|outer|visible|visibleparam){_break}',
1543
1530
  Keyword.Reserved, 'class/convert-dots'),
1544
- (r'\.field%s' % _break, Keyword.Reserved,
1531
+ (rf'\.field{_break}', Keyword.Reserved,
1545
1532
  ('descriptor/convert-dots', 'field')),
1546
- (r'(\.end|\.limit|use)%s' % _break, Keyword.Reserved,
1533
+ (rf'(\.end|\.limit|use){_break}', Keyword.Reserved,
1547
1534
  'no-verification'),
1548
- (r'\.method%s' % _break, Keyword.Reserved, 'method'),
1549
- (r'\.set%s' % _break, Keyword.Reserved, 'var'),
1550
- (r'\.throws%s' % _break, Keyword.Reserved, 'exception'),
1551
- (r'(from|offset|to|using)%s' % _break, Keyword.Reserved, 'label'),
1552
- (r'is%s' % _break, Keyword.Reserved,
1535
+ (rf'\.method{_break}', Keyword.Reserved, 'method'),
1536
+ (rf'\.set{_break}', Keyword.Reserved, 'var'),
1537
+ (rf'\.throws{_break}', Keyword.Reserved, 'exception'),
1538
+ (rf'(from|offset|to|using){_break}', Keyword.Reserved, 'label'),
1539
+ (rf'is{_break}', Keyword.Reserved,
1553
1540
  ('descriptor/convert-dots', 'var')),
1554
- (r'(locals|stack)%s' % _break, Keyword.Reserved, 'verification'),
1555
- (r'method%s' % _break, Keyword.Reserved, 'enclosing-method'),
1541
+ (rf'(locals|stack){_break}', Keyword.Reserved, 'verification'),
1542
+ (rf'method{_break}', Keyword.Reserved, 'enclosing-method'),
1556
1543
 
1557
1544
  # Instructions
1558
1545
  (words((
@@ -1578,14 +1565,14 @@ class JasminLexer(RegexLexer):
1578
1565
  'lstore_1', 'lstore_2', 'lstore_3', 'lstore_w', 'lsub', 'lushr', 'lxor',
1579
1566
  'monitorenter', 'monitorexit', 'nop', 'pop', 'pop2', 'ret', 'ret_w', 'return', 'saload',
1580
1567
  'sastore', 'sipush', 'swap'), suffix=_break), Keyword.Reserved),
1581
- (r'(anewarray|checkcast|instanceof|ldc|ldc_w|new)%s' % _break,
1568
+ (rf'(anewarray|checkcast|instanceof|ldc|ldc_w|new){_break}',
1582
1569
  Keyword.Reserved, 'class/no-dots'),
1583
1570
  (r'invoke(dynamic|interface|nonvirtual|special|'
1584
- r'static|virtual)%s' % _break, Keyword.Reserved,
1571
+ rf'static|virtual){_break}', Keyword.Reserved,
1585
1572
  'invocation'),
1586
- (r'(getfield|putfield)%s' % _break, Keyword.Reserved,
1573
+ (rf'(getfield|putfield){_break}', Keyword.Reserved,
1587
1574
  ('descriptor/no-dots', 'field')),
1588
- (r'(getstatic|putstatic)%s' % _break, Keyword.Reserved,
1575
+ (rf'(getstatic|putstatic){_break}', Keyword.Reserved,
1589
1576
  ('descriptor/no-dots', 'static')),
1590
1577
  (words((
1591
1578
  'goto', 'goto_w', 'if_acmpeq', 'if_acmpne', 'if_icmpeq',
@@ -1593,9 +1580,9 @@ class JasminLexer(RegexLexer):
1593
1580
  'ifeq', 'ifge', 'ifgt', 'ifle', 'iflt', 'ifne', 'ifnonnull',
1594
1581
  'ifnull', 'jsr', 'jsr_w'), suffix=_break),
1595
1582
  Keyword.Reserved, 'label'),
1596
- (r'(multianewarray|newarray)%s' % _break, Keyword.Reserved,
1583
+ (rf'(multianewarray|newarray){_break}', Keyword.Reserved,
1597
1584
  'descriptor/convert-dots'),
1598
- (r'tableswitch%s' % _break, Keyword.Reserved, 'table')
1585
+ (rf'tableswitch{_break}', Keyword.Reserved, 'table')
1599
1586
  ],
1600
1587
  'quote': [
1601
1588
  (r"'", String.Single, '#pop'),
@@ -1612,25 +1599,25 @@ class JasminLexer(RegexLexer):
1612
1599
  (r'\n+', Whitespace),
1613
1600
  (r"'", String.Single, 'quote'),
1614
1601
  include('default'),
1615
- (r'(%s)([ \t\r]*)(:)' % _name,
1602
+ (rf'({_name})([ \t\r]*)(:)',
1616
1603
  bygroups(Name.Label, Whitespace, Punctuation)),
1617
1604
  (_name, String.Other)
1618
1605
  ],
1619
1606
  'annotation': [
1620
1607
  (r'\n', Whitespace, ('#pop', 'annotation-body')),
1621
- (r'default%s' % _break, Keyword.Reserved,
1608
+ (rf'default{_break}', Keyword.Reserved,
1622
1609
  ('#pop', 'annotation-default')),
1623
1610
  include('default')
1624
1611
  ],
1625
1612
  'annotation-body': [
1626
1613
  (r'\n+', Whitespace),
1627
- (r'\.end%s' % _break, Keyword.Reserved, '#pop'),
1614
+ (rf'\.end{_break}', Keyword.Reserved, '#pop'),
1628
1615
  include('default'),
1629
1616
  (_name, String.Other, ('annotation-items', 'descriptor/no-dots'))
1630
1617
  ],
1631
1618
  'annotation-default': [
1632
1619
  (r'\n+', Whitespace),
1633
- (r'\.end%s' % _break, Keyword.Reserved, '#pop'),
1620
+ (rf'\.end{_break}', Keyword.Reserved, '#pop'),
1634
1621
  include('default'),
1635
1622
  default(('annotation-items', 'descriptor/no-dots'))
1636
1623
  ],
@@ -1640,42 +1627,42 @@ class JasminLexer(RegexLexer):
1640
1627
  (_name, String.Other)
1641
1628
  ],
1642
1629
  'caught-exception': [
1643
- (r'all%s' % _break, Keyword, '#pop'),
1630
+ (rf'all{_break}', Keyword, '#pop'),
1644
1631
  include('exception')
1645
1632
  ],
1646
1633
  'class/convert-dots': [
1647
1634
  include('default'),
1648
- (r'(L)((?:%s[/.])*)(%s)(;)' % (_unqualified_name, _name),
1635
+ (rf'(L)((?:{_unqualified_name}[/.])*)({_name})(;)',
1649
1636
  bygroups(Keyword.Type, Name.Namespace, Name.Class, Punctuation),
1650
1637
  '#pop'),
1651
- (r'((?:%s[/.])*)(%s)' % (_unqualified_name, _name),
1638
+ (rf'((?:{_unqualified_name}[/.])*)({_name})',
1652
1639
  bygroups(Name.Namespace, Name.Class), '#pop')
1653
1640
  ],
1654
1641
  'class/no-dots': [
1655
1642
  include('default'),
1656
1643
  (r'\[+', Punctuation, ('#pop', 'descriptor/no-dots')),
1657
- (r'(L)((?:%s/)*)(%s)(;)' % (_unqualified_name, _name),
1644
+ (rf'(L)((?:{_unqualified_name}/)*)({_name})(;)',
1658
1645
  bygroups(Keyword.Type, Name.Namespace, Name.Class, Punctuation),
1659
1646
  '#pop'),
1660
- (r'((?:%s/)*)(%s)' % (_unqualified_name, _name),
1647
+ (rf'((?:{_unqualified_name}/)*)({_name})',
1661
1648
  bygroups(Name.Namespace, Name.Class), '#pop')
1662
1649
  ],
1663
1650
  'descriptor/convert-dots': [
1664
1651
  include('default'),
1665
1652
  (r'\[+', Punctuation),
1666
- (r'(L)((?:%s[/.])*)(%s?)(;)' % (_unqualified_name, _name),
1653
+ (rf'(L)((?:{_unqualified_name}[/.])*)({_name}?)(;)',
1667
1654
  bygroups(Keyword.Type, Name.Namespace, Name.Class, Punctuation),
1668
1655
  '#pop'),
1669
- (r'[^%s\[)L]+' % _separator, Keyword.Type, '#pop'),
1656
+ (rf'[^{_separator}\[)L]+', Keyword.Type, '#pop'),
1670
1657
  default('#pop')
1671
1658
  ],
1672
1659
  'descriptor/no-dots': [
1673
1660
  include('default'),
1674
1661
  (r'\[+', Punctuation),
1675
- (r'(L)((?:%s/)*)(%s)(;)' % (_unqualified_name, _name),
1662
+ (rf'(L)((?:{_unqualified_name}/)*)({_name})(;)',
1676
1663
  bygroups(Keyword.Type, Name.Namespace, Name.Class, Punctuation),
1677
1664
  '#pop'),
1678
- (r'[^%s\[)L]+' % _separator, Keyword.Type, '#pop'),
1665
+ (rf'[^{_separator}\[)L]+', Keyword.Type, '#pop'),
1679
1666
  default('#pop')
1680
1667
  ],
1681
1668
  'descriptors/convert-dots': [
@@ -1684,26 +1671,24 @@ class JasminLexer(RegexLexer):
1684
1671
  ],
1685
1672
  'enclosing-method': [
1686
1673
  (_ws, Whitespace),
1687
- (r'(?=[^%s]*\()' % _separator, Text, ('#pop', 'invocation')),
1674
+ (rf'(?=[^{_separator}]*\()', Text, ('#pop', 'invocation')),
1688
1675
  default(('#pop', 'class/convert-dots'))
1689
1676
  ],
1690
1677
  'exception': [
1691
1678
  include('default'),
1692
- (r'((?:%s[/.])*)(%s)' % (_unqualified_name, _name),
1679
+ (rf'((?:{_unqualified_name}[/.])*)({_name})',
1693
1680
  bygroups(Name.Namespace, Name.Exception), '#pop')
1694
1681
  ],
1695
1682
  'field': [
1696
- (r'static%s' % _break, Keyword.Reserved, ('#pop', 'static')),
1683
+ (rf'static{_break}', Keyword.Reserved, ('#pop', 'static')),
1697
1684
  include('default'),
1698
- (r'((?:%s[/.](?=[^%s]*[/.]))*)(%s[/.])?(%s)' %
1699
- (_unqualified_name, _separator, _unqualified_name, _name),
1685
+ (rf'((?:{_unqualified_name}[/.](?=[^{_separator}]*[/.]))*)({_unqualified_name}[/.])?({_name})',
1700
1686
  bygroups(Name.Namespace, Name.Class, Name.Variable.Instance),
1701
1687
  '#pop')
1702
1688
  ],
1703
1689
  'invocation': [
1704
1690
  include('default'),
1705
- (r'((?:%s[/.](?=[^%s(]*[/.]))*)(%s[/.])?(%s)(\()' %
1706
- (_unqualified_name, _separator, _unqualified_name, _name),
1691
+ (rf'((?:{_unqualified_name}[/.](?=[^{_separator}(]*[/.]))*)({_unqualified_name}[/.])?({_name})(\()',
1707
1692
  bygroups(Name.Namespace, Name.Class, Name.Function, Punctuation),
1708
1693
  ('#pop', 'descriptor/convert-dots', 'descriptors/convert-dots',
1709
1694
  'descriptor/convert-dots'))
@@ -1714,23 +1699,22 @@ class JasminLexer(RegexLexer):
1714
1699
  ],
1715
1700
  'method': [
1716
1701
  include('default'),
1717
- (r'(%s)(\()' % _name, bygroups(Name.Function, Punctuation),
1702
+ (rf'({_name})(\()', bygroups(Name.Function, Punctuation),
1718
1703
  ('#pop', 'descriptor/convert-dots', 'descriptors/convert-dots',
1719
1704
  'descriptor/convert-dots'))
1720
1705
  ],
1721
1706
  'no-verification': [
1722
- (r'(locals|method|stack)%s' % _break, Keyword.Reserved, '#pop'),
1707
+ (rf'(locals|method|stack){_break}', Keyword.Reserved, '#pop'),
1723
1708
  include('default')
1724
1709
  ],
1725
1710
  'static': [
1726
1711
  include('default'),
1727
- (r'((?:%s[/.](?=[^%s]*[/.]))*)(%s[/.])?(%s)' %
1728
- (_unqualified_name, _separator, _unqualified_name, _name),
1712
+ (rf'((?:{_unqualified_name}[/.](?=[^{_separator}]*[/.]))*)({_unqualified_name}[/.])?({_name})',
1729
1713
  bygroups(Name.Namespace, Name.Class, Name.Variable.Class), '#pop')
1730
1714
  ],
1731
1715
  'table': [
1732
1716
  (r'\n+', Whitespace),
1733
- (r'default%s' % _break, Keyword.Reserved, '#pop'),
1717
+ (rf'default{_break}', Keyword.Reserved, '#pop'),
1734
1718
  include('default'),
1735
1719
  (_name, Name.Label)
1736
1720
  ],
@@ -1740,10 +1724,9 @@ class JasminLexer(RegexLexer):
1740
1724
  ],
1741
1725
  'verification': [
1742
1726
  include('default'),
1743
- (r'(Double|Float|Integer|Long|Null|Top|UninitializedThis)%s' %
1744
- _break, Keyword, '#pop'),
1745
- (r'Object%s' % _break, Keyword, ('#pop', 'class/no-dots')),
1746
- (r'Uninitialized%s' % _break, Keyword, ('#pop', 'label'))
1727
+ (rf'(Double|Float|Integer|Long|Null|Top|UninitializedThis){_break}', Keyword, '#pop'),
1728
+ (rf'Object{_break}', Keyword, ('#pop', 'class/no-dots')),
1729
+ (rf'Uninitialized{_break}', Keyword, ('#pop', 'label'))
1747
1730
  ]
1748
1731
  }
1749
1732
 
@@ -1763,8 +1746,6 @@ class JasminLexer(RegexLexer):
1763
1746
  class SarlLexer(RegexLexer):
1764
1747
  """
1765
1748
  For SARL source code.
1766
-
1767
- .. versionadded:: 2.4
1768
1749
  """
1769
1750
 
1770
1751
  name = 'SARL'
@@ -1772,6 +1753,7 @@ class SarlLexer(RegexLexer):
1772
1753
  aliases = ['sarl']
1773
1754
  filenames = ['*.sarl']
1774
1755
  mimetypes = ['text/x-sarl']
1756
+ version_added = '2.4'
1775
1757
 
1776
1758
  flags = re.MULTILINE | re.DOTALL
1777
1759
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  Lexers for the Kuin language.
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
 
@@ -18,13 +18,12 @@ __all__ = ['KuinLexer']
18
18
  class KuinLexer(RegexLexer):
19
19
  """
20
20
  For Kuin source code.
21
-
22
- .. versionadded:: 2.9
23
21
  """
24
22
  name = 'Kuin'
25
23
  url = 'https://github.com/kuina/Kuin'
26
24
  aliases = ['kuin']
27
25
  filenames = ['*.kn']
26
+ version_added = '2.9'
28
27
 
29
28
  tokens = {
30
29
  'root': [