pygments.rb 2.4.1 → 4.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 (699) 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 -2
  6. data/CHANGELOG.adoc +15 -1
  7. data/README.adoc +2 -2
  8. data/Rakefile +1 -1
  9. data/bench.rb +3 -3
  10. data/lib/pygments/version.rb +1 -1
  11. data/pygments.rb.gemspec +3 -3
  12. data/test/test_pygments.rb +0 -4
  13. data/vendor/pygments-main/bin/pygmentize +1 -1
  14. data/vendor/pygments-main/pygments/__init__.py +2 -2
  15. data/vendor/pygments-main/pygments/__main__.py +1 -1
  16. data/vendor/pygments-main/pygments/__pycache__/__init__.cpython-313.pyc +0 -0
  17. data/vendor/pygments-main/pygments/__pycache__/__main__.cpython-313.pyc +0 -0
  18. data/vendor/pygments-main/pygments/__pycache__/cmdline.cpython-313.pyc +0 -0
  19. data/vendor/pygments-main/pygments/__pycache__/console.cpython-313.pyc +0 -0
  20. data/vendor/pygments-main/pygments/__pycache__/filter.cpython-313.pyc +0 -0
  21. data/vendor/pygments-main/pygments/__pycache__/formatter.cpython-313.pyc +0 -0
  22. data/vendor/pygments-main/pygments/__pycache__/lexer.cpython-313.pyc +0 -0
  23. data/vendor/pygments-main/pygments/__pycache__/modeline.cpython-313.pyc +0 -0
  24. data/vendor/pygments-main/pygments/__pycache__/plugin.cpython-313.pyc +0 -0
  25. data/vendor/pygments-main/pygments/__pycache__/regexopt.cpython-313.pyc +0 -0
  26. data/vendor/pygments-main/pygments/__pycache__/scanner.cpython-313.pyc +0 -0
  27. data/vendor/pygments-main/pygments/__pycache__/sphinxext.cpython-313.pyc +0 -0
  28. data/vendor/pygments-main/pygments/__pycache__/style.cpython-313.pyc +0 -0
  29. data/vendor/pygments-main/pygments/__pycache__/token.cpython-313.pyc +0 -0
  30. data/vendor/pygments-main/pygments/__pycache__/unistring.cpython-313.pyc +0 -0
  31. data/vendor/pygments-main/pygments/__pycache__/util.cpython-313.pyc +0 -0
  32. data/vendor/pygments-main/pygments/cmdline.py +12 -12
  33. data/vendor/pygments-main/pygments/console.py +5 -5
  34. data/vendor/pygments-main/pygments/filter.py +2 -3
  35. data/vendor/pygments-main/pygments/filters/__init__.py +4 -4
  36. data/vendor/pygments-main/pygments/filters/__pycache__/__init__.cpython-313.pyc +0 -0
  37. data/vendor/pygments-main/pygments/formatter.py +6 -1
  38. data/vendor/pygments-main/pygments/formatters/__init__.py +7 -8
  39. data/vendor/pygments-main/pygments/formatters/__pycache__/__init__.cpython-313.pyc +0 -0
  40. data/vendor/pygments-main/pygments/formatters/__pycache__/_mapping.cpython-313.pyc +0 -0
  41. data/vendor/pygments-main/pygments/formatters/__pycache__/bbcode.cpython-313.pyc +0 -0
  42. data/vendor/pygments-main/pygments/formatters/__pycache__/groff.cpython-313.pyc +0 -0
  43. data/vendor/pygments-main/pygments/formatters/__pycache__/html.cpython-313.pyc +0 -0
  44. data/vendor/pygments-main/pygments/formatters/__pycache__/img.cpython-313.pyc +0 -0
  45. data/vendor/pygments-main/pygments/formatters/__pycache__/irc.cpython-313.pyc +0 -0
  46. data/vendor/pygments-main/pygments/formatters/__pycache__/latex.cpython-313.pyc +0 -0
  47. data/vendor/pygments-main/pygments/formatters/__pycache__/other.cpython-313.pyc +0 -0
  48. data/vendor/pygments-main/pygments/formatters/__pycache__/pangomarkup.cpython-313.pyc +0 -0
  49. data/vendor/pygments-main/pygments/formatters/__pycache__/rtf.cpython-313.pyc +0 -0
  50. data/vendor/pygments-main/pygments/formatters/__pycache__/svg.cpython-313.pyc +0 -0
  51. data/vendor/pygments-main/pygments/formatters/__pycache__/terminal.cpython-313.pyc +0 -0
  52. data/vendor/pygments-main/pygments/formatters/__pycache__/terminal256.cpython-313.pyc +0 -0
  53. data/vendor/pygments-main/pygments/formatters/bbcode.py +2 -2
  54. data/vendor/pygments-main/pygments/formatters/groff.py +3 -3
  55. data/vendor/pygments-main/pygments/formatters/html.py +47 -41
  56. data/vendor/pygments-main/pygments/formatters/img.py +53 -12
  57. data/vendor/pygments-main/pygments/formatters/irc.py +1 -1
  58. data/vendor/pygments-main/pygments/formatters/latex.py +24 -27
  59. data/vendor/pygments-main/pygments/formatters/other.py +3 -4
  60. data/vendor/pygments-main/pygments/formatters/pangomarkup.py +2 -2
  61. data/vendor/pygments-main/pygments/formatters/rtf.py +228 -25
  62. data/vendor/pygments-main/pygments/formatters/svg.py +17 -20
  63. data/vendor/pygments-main/pygments/formatters/terminal.py +1 -1
  64. data/vendor/pygments-main/pygments/formatters/terminal256.py +1 -1
  65. data/vendor/pygments-main/pygments/lexer.py +51 -33
  66. data/vendor/pygments-main/pygments/lexers/__init__.py +12 -12
  67. data/vendor/pygments-main/pygments/lexers/__pycache__/__init__.cpython-313.pyc +0 -0
  68. data/vendor/pygments-main/pygments/lexers/__pycache__/_ada_builtins.cpython-313.pyc +0 -0
  69. data/vendor/pygments-main/pygments/lexers/__pycache__/_asy_builtins.cpython-313.pyc +0 -0
  70. data/vendor/pygments-main/pygments/lexers/__pycache__/_cl_builtins.cpython-313.pyc +0 -0
  71. data/vendor/pygments-main/pygments/lexers/__pycache__/_cocoa_builtins.cpython-313.pyc +0 -0
  72. data/vendor/pygments-main/pygments/lexers/__pycache__/_csound_builtins.cpython-313.pyc +0 -0
  73. data/vendor/pygments-main/pygments/lexers/__pycache__/_css_builtins.cpython-313.pyc +0 -0
  74. data/vendor/pygments-main/pygments/lexers/__pycache__/_googlesql_builtins.cpython-313.pyc +0 -0
  75. data/vendor/pygments-main/pygments/lexers/__pycache__/_julia_builtins.cpython-313.pyc +0 -0
  76. data/vendor/pygments-main/pygments/lexers/__pycache__/_lasso_builtins.cpython-313.pyc +0 -0
  77. data/vendor/pygments-main/pygments/lexers/__pycache__/_lilypond_builtins.cpython-313.pyc +0 -0
  78. data/vendor/pygments-main/pygments/lexers/__pycache__/_lua_builtins.cpython-313.pyc +0 -0
  79. data/vendor/pygments-main/pygments/lexers/__pycache__/_luau_builtins.cpython-313.pyc +0 -0
  80. data/vendor/pygments-main/pygments/lexers/__pycache__/_mapping.cpython-313.pyc +0 -0
  81. data/vendor/pygments-main/pygments/lexers/__pycache__/_mql_builtins.cpython-313.pyc +0 -0
  82. data/vendor/pygments-main/pygments/lexers/__pycache__/_mysql_builtins.cpython-313.pyc +0 -0
  83. data/vendor/pygments-main/pygments/lexers/__pycache__/_openedge_builtins.cpython-313.pyc +0 -0
  84. data/vendor/pygments-main/pygments/lexers/__pycache__/_php_builtins.cpython-313.pyc +0 -0
  85. data/vendor/pygments-main/pygments/lexers/__pycache__/_postgres_builtins.cpython-313.pyc +0 -0
  86. data/vendor/pygments-main/pygments/lexers/__pycache__/_qlik_builtins.cpython-313.pyc +0 -0
  87. data/vendor/pygments-main/pygments/lexers/__pycache__/_scheme_builtins.cpython-313.pyc +0 -0
  88. data/vendor/pygments-main/pygments/lexers/__pycache__/_scilab_builtins.cpython-313.pyc +0 -0
  89. data/vendor/pygments-main/pygments/lexers/__pycache__/_sourcemod_builtins.cpython-313.pyc +0 -0
  90. data/vendor/pygments-main/pygments/lexers/__pycache__/_sql_builtins.cpython-313.pyc +0 -0
  91. data/vendor/pygments-main/pygments/lexers/__pycache__/_stan_builtins.cpython-313.pyc +0 -0
  92. data/vendor/pygments-main/pygments/lexers/__pycache__/_stata_builtins.cpython-313.pyc +0 -0
  93. data/vendor/pygments-main/pygments/lexers/__pycache__/_tsql_builtins.cpython-313.pyc +0 -0
  94. data/vendor/pygments-main/pygments/lexers/__pycache__/_usd_builtins.cpython-313.pyc +0 -0
  95. data/vendor/pygments-main/pygments/lexers/__pycache__/_vbscript_builtins.cpython-313.pyc +0 -0
  96. data/vendor/pygments-main/pygments/lexers/__pycache__/_vim_builtins.cpython-313.pyc +0 -0
  97. data/vendor/pygments-main/pygments/lexers/__pycache__/actionscript.cpython-313.pyc +0 -0
  98. data/vendor/pygments-main/pygments/lexers/__pycache__/ada.cpython-313.pyc +0 -0
  99. data/vendor/pygments-main/pygments/lexers/__pycache__/agile.cpython-313.pyc +0 -0
  100. data/vendor/pygments-main/pygments/lexers/__pycache__/algebra.cpython-313.pyc +0 -0
  101. data/vendor/pygments-main/pygments/lexers/__pycache__/ambient.cpython-313.pyc +0 -0
  102. data/vendor/pygments-main/pygments/lexers/__pycache__/amdgpu.cpython-313.pyc +0 -0
  103. data/vendor/pygments-main/pygments/lexers/__pycache__/ampl.cpython-313.pyc +0 -0
  104. data/vendor/pygments-main/pygments/lexers/__pycache__/apdlexer.cpython-313.pyc +0 -0
  105. data/vendor/pygments-main/pygments/lexers/__pycache__/apl.cpython-313.pyc +0 -0
  106. data/vendor/pygments-main/pygments/lexers/__pycache__/archetype.cpython-313.pyc +0 -0
  107. data/vendor/pygments-main/pygments/lexers/__pycache__/arrow.cpython-313.pyc +0 -0
  108. data/vendor/pygments-main/pygments/lexers/__pycache__/arturo.cpython-313.pyc +0 -0
  109. data/vendor/pygments-main/pygments/lexers/__pycache__/asc.cpython-313.pyc +0 -0
  110. data/vendor/pygments-main/pygments/lexers/__pycache__/asm.cpython-313.pyc +0 -0
  111. data/vendor/pygments-main/pygments/lexers/__pycache__/asn1.cpython-313.pyc +0 -0
  112. data/vendor/pygments-main/pygments/lexers/__pycache__/automation.cpython-313.pyc +0 -0
  113. data/vendor/pygments-main/pygments/lexers/__pycache__/bare.cpython-313.pyc +0 -0
  114. data/vendor/pygments-main/pygments/lexers/__pycache__/basic.cpython-313.pyc +0 -0
  115. data/vendor/pygments-main/pygments/lexers/__pycache__/bdd.cpython-313.pyc +0 -0
  116. data/vendor/pygments-main/pygments/lexers/__pycache__/berry.cpython-313.pyc +0 -0
  117. data/vendor/pygments-main/pygments/lexers/__pycache__/bibtex.cpython-313.pyc +0 -0
  118. data/vendor/pygments-main/pygments/lexers/__pycache__/blueprint.cpython-313.pyc +0 -0
  119. data/vendor/pygments-main/pygments/lexers/__pycache__/boa.cpython-313.pyc +0 -0
  120. data/vendor/pygments-main/pygments/lexers/__pycache__/bqn.cpython-313.pyc +0 -0
  121. data/vendor/pygments-main/pygments/lexers/__pycache__/business.cpython-313.pyc +0 -0
  122. data/vendor/pygments-main/pygments/lexers/__pycache__/c_cpp.cpython-313.pyc +0 -0
  123. data/vendor/pygments-main/pygments/lexers/__pycache__/c_like.cpython-313.pyc +0 -0
  124. data/vendor/pygments-main/pygments/lexers/__pycache__/capnproto.cpython-313.pyc +0 -0
  125. data/vendor/pygments-main/pygments/lexers/__pycache__/carbon.cpython-313.pyc +0 -0
  126. data/vendor/pygments-main/pygments/lexers/__pycache__/cddl.cpython-313.pyc +0 -0
  127. data/vendor/pygments-main/pygments/lexers/__pycache__/chapel.cpython-313.pyc +0 -0
  128. data/vendor/pygments-main/pygments/lexers/__pycache__/clean.cpython-313.pyc +0 -0
  129. data/vendor/pygments-main/pygments/lexers/__pycache__/codeql.cpython-313.pyc +0 -0
  130. data/vendor/pygments-main/pygments/lexers/__pycache__/comal.cpython-313.pyc +0 -0
  131. data/vendor/pygments-main/pygments/lexers/__pycache__/compiled.cpython-313.pyc +0 -0
  132. data/vendor/pygments-main/pygments/lexers/__pycache__/configs.cpython-313.pyc +0 -0
  133. data/vendor/pygments-main/pygments/lexers/__pycache__/console.cpython-313.pyc +0 -0
  134. data/vendor/pygments-main/pygments/lexers/__pycache__/cplint.cpython-313.pyc +0 -0
  135. data/vendor/pygments-main/pygments/lexers/__pycache__/crystal.cpython-313.pyc +0 -0
  136. data/vendor/pygments-main/pygments/lexers/__pycache__/csound.cpython-313.pyc +0 -0
  137. data/vendor/pygments-main/pygments/lexers/__pycache__/css.cpython-313.pyc +0 -0
  138. data/vendor/pygments-main/pygments/lexers/__pycache__/d.cpython-313.pyc +0 -0
  139. data/vendor/pygments-main/pygments/lexers/__pycache__/dalvik.cpython-313.pyc +0 -0
  140. data/vendor/pygments-main/pygments/lexers/__pycache__/data.cpython-313.pyc +0 -0
  141. data/vendor/pygments-main/pygments/lexers/__pycache__/dax.cpython-313.pyc +0 -0
  142. data/vendor/pygments-main/pygments/lexers/__pycache__/devicetree.cpython-313.pyc +0 -0
  143. data/vendor/pygments-main/pygments/lexers/__pycache__/diff.cpython-313.pyc +0 -0
  144. data/vendor/pygments-main/pygments/lexers/__pycache__/dns.cpython-313.pyc +0 -0
  145. data/vendor/pygments-main/pygments/lexers/__pycache__/dotnet.cpython-313.pyc +0 -0
  146. data/vendor/pygments-main/pygments/lexers/__pycache__/dsls.cpython-313.pyc +0 -0
  147. data/vendor/pygments-main/pygments/lexers/__pycache__/dylan.cpython-313.pyc +0 -0
  148. data/vendor/pygments-main/pygments/lexers/__pycache__/ecl.cpython-313.pyc +0 -0
  149. data/vendor/pygments-main/pygments/lexers/__pycache__/eiffel.cpython-313.pyc +0 -0
  150. data/vendor/pygments-main/pygments/lexers/__pycache__/elm.cpython-313.pyc +0 -0
  151. data/vendor/pygments-main/pygments/lexers/__pycache__/elpi.cpython-313.pyc +0 -0
  152. data/vendor/pygments-main/pygments/lexers/__pycache__/email.cpython-313.pyc +0 -0
  153. data/vendor/pygments-main/pygments/lexers/__pycache__/erlang.cpython-313.pyc +0 -0
  154. data/vendor/pygments-main/pygments/lexers/__pycache__/esoteric.cpython-313.pyc +0 -0
  155. data/vendor/pygments-main/pygments/lexers/__pycache__/ezhil.cpython-313.pyc +0 -0
  156. data/vendor/pygments-main/pygments/lexers/__pycache__/factor.cpython-313.pyc +0 -0
  157. data/vendor/pygments-main/pygments/lexers/__pycache__/fantom.cpython-313.pyc +0 -0
  158. data/vendor/pygments-main/pygments/lexers/__pycache__/felix.cpython-313.pyc +0 -0
  159. data/vendor/pygments-main/pygments/lexers/__pycache__/fift.cpython-313.pyc +0 -0
  160. data/vendor/pygments-main/pygments/lexers/__pycache__/floscript.cpython-313.pyc +0 -0
  161. data/vendor/pygments-main/pygments/lexers/__pycache__/forth.cpython-313.pyc +0 -0
  162. data/vendor/pygments-main/pygments/lexers/__pycache__/fortran.cpython-313.pyc +0 -0
  163. data/vendor/pygments-main/pygments/lexers/__pycache__/foxpro.cpython-313.pyc +0 -0
  164. data/vendor/pygments-main/pygments/lexers/__pycache__/freefem.cpython-313.pyc +0 -0
  165. data/vendor/pygments-main/pygments/lexers/__pycache__/func.cpython-313.pyc +0 -0
  166. data/vendor/pygments-main/pygments/lexers/__pycache__/functional.cpython-313.pyc +0 -0
  167. data/vendor/pygments-main/pygments/lexers/__pycache__/futhark.cpython-313.pyc +0 -0
  168. data/vendor/pygments-main/pygments/lexers/__pycache__/gcodelexer.cpython-313.pyc +0 -0
  169. data/vendor/pygments-main/pygments/lexers/__pycache__/gdscript.cpython-313.pyc +0 -0
  170. data/vendor/pygments-main/pygments/lexers/__pycache__/gleam.cpython-313.pyc +0 -0
  171. data/vendor/pygments-main/pygments/lexers/__pycache__/go.cpython-313.pyc +0 -0
  172. data/vendor/pygments-main/pygments/lexers/__pycache__/grammar_notation.cpython-313.pyc +0 -0
  173. data/vendor/pygments-main/pygments/lexers/__pycache__/graph.cpython-313.pyc +0 -0
  174. data/vendor/pygments-main/pygments/lexers/__pycache__/graphics.cpython-313.pyc +0 -0
  175. data/vendor/pygments-main/pygments/lexers/__pycache__/graphql.cpython-313.pyc +0 -0
  176. data/vendor/pygments-main/pygments/lexers/__pycache__/graphviz.cpython-313.pyc +0 -0
  177. data/vendor/pygments-main/pygments/lexers/__pycache__/gsql.cpython-313.pyc +0 -0
  178. data/vendor/pygments-main/pygments/lexers/__pycache__/hare.cpython-313.pyc +0 -0
  179. data/vendor/pygments-main/pygments/lexers/__pycache__/haskell.cpython-313.pyc +0 -0
  180. data/vendor/pygments-main/pygments/lexers/__pycache__/haxe.cpython-313.pyc +0 -0
  181. data/vendor/pygments-main/pygments/lexers/__pycache__/hdl.cpython-313.pyc +0 -0
  182. data/vendor/pygments-main/pygments/lexers/__pycache__/hexdump.cpython-313.pyc +0 -0
  183. data/vendor/pygments-main/pygments/lexers/__pycache__/html.cpython-313.pyc +0 -0
  184. data/vendor/pygments-main/pygments/lexers/__pycache__/idl.cpython-313.pyc +0 -0
  185. data/vendor/pygments-main/pygments/lexers/__pycache__/igor.cpython-313.pyc +0 -0
  186. data/vendor/pygments-main/pygments/lexers/__pycache__/inferno.cpython-313.pyc +0 -0
  187. data/vendor/pygments-main/pygments/lexers/__pycache__/installers.cpython-313.pyc +0 -0
  188. data/vendor/pygments-main/pygments/lexers/__pycache__/int_fiction.cpython-313.pyc +0 -0
  189. data/vendor/pygments-main/pygments/lexers/__pycache__/iolang.cpython-313.pyc +0 -0
  190. data/vendor/pygments-main/pygments/lexers/__pycache__/j.cpython-313.pyc +0 -0
  191. data/vendor/pygments-main/pygments/lexers/__pycache__/javascript.cpython-313.pyc +0 -0
  192. data/vendor/pygments-main/pygments/lexers/__pycache__/jmespath.cpython-313.pyc +0 -0
  193. data/vendor/pygments-main/pygments/lexers/__pycache__/jslt.cpython-313.pyc +0 -0
  194. data/vendor/pygments-main/pygments/lexers/__pycache__/json5.cpython-313.pyc +0 -0
  195. data/vendor/pygments-main/pygments/lexers/__pycache__/jsonnet.cpython-313.pyc +0 -0
  196. data/vendor/pygments-main/pygments/lexers/__pycache__/jsx.cpython-313.pyc +0 -0
  197. data/vendor/pygments-main/pygments/lexers/__pycache__/julia.cpython-313.pyc +0 -0
  198. data/vendor/pygments-main/pygments/lexers/__pycache__/jvm.cpython-313.pyc +0 -0
  199. data/vendor/pygments-main/pygments/lexers/__pycache__/kuin.cpython-313.pyc +0 -0
  200. data/vendor/pygments-main/pygments/lexers/__pycache__/kusto.cpython-313.pyc +0 -0
  201. data/vendor/pygments-main/pygments/lexers/__pycache__/ldap.cpython-313.pyc +0 -0
  202. data/vendor/pygments-main/pygments/lexers/__pycache__/lean.cpython-313.pyc +0 -0
  203. data/vendor/pygments-main/pygments/lexers/__pycache__/lilypond.cpython-313.pyc +0 -0
  204. data/vendor/pygments-main/pygments/lexers/__pycache__/lisp.cpython-313.pyc +0 -0
  205. data/vendor/pygments-main/pygments/lexers/__pycache__/macaulay2.cpython-313.pyc +0 -0
  206. data/vendor/pygments-main/pygments/lexers/__pycache__/make.cpython-313.pyc +0 -0
  207. data/vendor/pygments-main/pygments/lexers/__pycache__/maple.cpython-313.pyc +0 -0
  208. data/vendor/pygments-main/pygments/lexers/__pycache__/markup.cpython-313.pyc +0 -0
  209. data/vendor/pygments-main/pygments/lexers/__pycache__/math.cpython-313.pyc +0 -0
  210. data/vendor/pygments-main/pygments/lexers/__pycache__/matlab.cpython-313.pyc +0 -0
  211. data/vendor/pygments-main/pygments/lexers/__pycache__/maxima.cpython-313.pyc +0 -0
  212. data/vendor/pygments-main/pygments/lexers/__pycache__/meson.cpython-313.pyc +0 -0
  213. data/vendor/pygments-main/pygments/lexers/__pycache__/mime.cpython-313.pyc +0 -0
  214. data/vendor/pygments-main/pygments/lexers/__pycache__/minecraft.cpython-313.pyc +0 -0
  215. data/vendor/pygments-main/pygments/lexers/__pycache__/mips.cpython-313.pyc +0 -0
  216. data/vendor/pygments-main/pygments/lexers/__pycache__/ml.cpython-313.pyc +0 -0
  217. data/vendor/pygments-main/pygments/lexers/__pycache__/modeling.cpython-313.pyc +0 -0
  218. data/vendor/pygments-main/pygments/lexers/__pycache__/modula2.cpython-313.pyc +0 -0
  219. data/vendor/pygments-main/pygments/lexers/__pycache__/mojo.cpython-313.pyc +0 -0
  220. data/vendor/pygments-main/pygments/lexers/__pycache__/monte.cpython-313.pyc +0 -0
  221. data/vendor/pygments-main/pygments/lexers/__pycache__/mosel.cpython-313.pyc +0 -0
  222. data/vendor/pygments-main/pygments/lexers/__pycache__/ncl.cpython-313.pyc +0 -0
  223. data/vendor/pygments-main/pygments/lexers/__pycache__/nimrod.cpython-313.pyc +0 -0
  224. data/vendor/pygments-main/pygments/lexers/__pycache__/nit.cpython-313.pyc +0 -0
  225. data/vendor/pygments-main/pygments/lexers/__pycache__/nix.cpython-313.pyc +0 -0
  226. data/vendor/pygments-main/pygments/lexers/__pycache__/numbair.cpython-313.pyc +0 -0
  227. data/vendor/pygments-main/pygments/lexers/__pycache__/oberon.cpython-313.pyc +0 -0
  228. data/vendor/pygments-main/pygments/lexers/__pycache__/objective.cpython-313.pyc +0 -0
  229. data/vendor/pygments-main/pygments/lexers/__pycache__/ooc.cpython-313.pyc +0 -0
  230. data/vendor/pygments-main/pygments/lexers/__pycache__/openscad.cpython-313.pyc +0 -0
  231. data/vendor/pygments-main/pygments/lexers/__pycache__/other.cpython-313.pyc +0 -0
  232. data/vendor/pygments-main/pygments/lexers/__pycache__/parasail.cpython-313.pyc +0 -0
  233. data/vendor/pygments-main/pygments/lexers/__pycache__/parsers.cpython-313.pyc +0 -0
  234. data/vendor/pygments-main/pygments/lexers/__pycache__/pascal.cpython-313.pyc +0 -0
  235. data/vendor/pygments-main/pygments/lexers/__pycache__/pawn.cpython-313.pyc +0 -0
  236. data/vendor/pygments-main/pygments/lexers/__pycache__/pddl.cpython-313.pyc +0 -0
  237. data/vendor/pygments-main/pygments/lexers/__pycache__/perl.cpython-313.pyc +0 -0
  238. data/vendor/pygments-main/pygments/lexers/__pycache__/phix.cpython-313.pyc +0 -0
  239. data/vendor/pygments-main/pygments/lexers/__pycache__/php.cpython-313.pyc +0 -0
  240. data/vendor/pygments-main/pygments/lexers/__pycache__/pointless.cpython-313.pyc +0 -0
  241. data/vendor/pygments-main/pygments/lexers/__pycache__/pony.cpython-313.pyc +0 -0
  242. data/vendor/pygments-main/pygments/lexers/__pycache__/praat.cpython-313.pyc +0 -0
  243. data/vendor/pygments-main/pygments/lexers/__pycache__/procfile.cpython-313.pyc +0 -0
  244. data/vendor/pygments-main/pygments/lexers/__pycache__/prolog.cpython-313.pyc +0 -0
  245. data/vendor/pygments-main/pygments/lexers/__pycache__/promql.cpython-313.pyc +0 -0
  246. data/vendor/pygments-main/pygments/lexers/__pycache__/prql.cpython-313.pyc +0 -0
  247. data/vendor/pygments-main/pygments/lexers/__pycache__/ptx.cpython-313.pyc +0 -0
  248. data/vendor/pygments-main/pygments/lexers/__pycache__/python.cpython-313.pyc +0 -0
  249. data/vendor/pygments-main/pygments/lexers/__pycache__/q.cpython-313.pyc +0 -0
  250. data/vendor/pygments-main/pygments/lexers/__pycache__/qlik.cpython-313.pyc +0 -0
  251. data/vendor/pygments-main/pygments/lexers/__pycache__/qvt.cpython-313.pyc +0 -0
  252. data/vendor/pygments-main/pygments/lexers/__pycache__/r.cpython-313.pyc +0 -0
  253. data/vendor/pygments-main/pygments/lexers/__pycache__/rdf.cpython-313.pyc +0 -0
  254. data/vendor/pygments-main/pygments/lexers/__pycache__/rebol.cpython-313.pyc +0 -0
  255. data/vendor/pygments-main/pygments/lexers/__pycache__/rego.cpython-313.pyc +0 -0
  256. data/vendor/pygments-main/pygments/lexers/__pycache__/resource.cpython-313.pyc +0 -0
  257. data/vendor/pygments-main/pygments/lexers/__pycache__/ride.cpython-313.pyc +0 -0
  258. data/vendor/pygments-main/pygments/lexers/__pycache__/rita.cpython-313.pyc +0 -0
  259. data/vendor/pygments-main/pygments/lexers/__pycache__/rnc.cpython-313.pyc +0 -0
  260. data/vendor/pygments-main/pygments/lexers/__pycache__/roboconf.cpython-313.pyc +0 -0
  261. data/vendor/pygments-main/pygments/lexers/__pycache__/robotframework.cpython-313.pyc +0 -0
  262. data/vendor/pygments-main/pygments/lexers/__pycache__/ruby.cpython-313.pyc +0 -0
  263. data/vendor/pygments-main/pygments/lexers/__pycache__/rust.cpython-313.pyc +0 -0
  264. data/vendor/pygments-main/pygments/lexers/__pycache__/sas.cpython-313.pyc +0 -0
  265. data/vendor/pygments-main/pygments/lexers/__pycache__/savi.cpython-313.pyc +0 -0
  266. data/vendor/pygments-main/pygments/lexers/__pycache__/scdoc.cpython-313.pyc +0 -0
  267. data/vendor/pygments-main/pygments/lexers/__pycache__/scripting.cpython-313.pyc +0 -0
  268. data/vendor/pygments-main/pygments/lexers/__pycache__/sgf.cpython-313.pyc +0 -0
  269. data/vendor/pygments-main/pygments/lexers/__pycache__/shell.cpython-313.pyc +0 -0
  270. data/vendor/pygments-main/pygments/lexers/__pycache__/sieve.cpython-313.pyc +0 -0
  271. data/vendor/pygments-main/pygments/lexers/__pycache__/slash.cpython-313.pyc +0 -0
  272. data/vendor/pygments-main/pygments/lexers/__pycache__/smalltalk.cpython-313.pyc +0 -0
  273. data/vendor/pygments-main/pygments/lexers/__pycache__/smithy.cpython-313.pyc +0 -0
  274. data/vendor/pygments-main/pygments/lexers/__pycache__/smv.cpython-313.pyc +0 -0
  275. data/vendor/pygments-main/pygments/lexers/__pycache__/snobol.cpython-313.pyc +0 -0
  276. data/vendor/pygments-main/pygments/lexers/__pycache__/solidity.cpython-313.pyc +0 -0
  277. data/vendor/pygments-main/pygments/lexers/__pycache__/soong.cpython-313.pyc +0 -0
  278. data/vendor/pygments-main/pygments/lexers/__pycache__/sophia.cpython-313.pyc +0 -0
  279. data/vendor/pygments-main/pygments/lexers/__pycache__/special.cpython-313.pyc +0 -0
  280. data/vendor/pygments-main/pygments/lexers/__pycache__/spice.cpython-313.pyc +0 -0
  281. data/vendor/pygments-main/pygments/lexers/__pycache__/sql.cpython-313.pyc +0 -0
  282. data/vendor/pygments-main/pygments/lexers/__pycache__/srcinfo.cpython-313.pyc +0 -0
  283. data/vendor/pygments-main/pygments/lexers/__pycache__/stata.cpython-313.pyc +0 -0
  284. data/vendor/pygments-main/pygments/lexers/__pycache__/supercollider.cpython-313.pyc +0 -0
  285. data/vendor/pygments-main/pygments/lexers/__pycache__/tablegen.cpython-313.pyc +0 -0
  286. data/vendor/pygments-main/pygments/lexers/__pycache__/tact.cpython-313.pyc +0 -0
  287. data/vendor/pygments-main/pygments/lexers/__pycache__/tal.cpython-313.pyc +0 -0
  288. data/vendor/pygments-main/pygments/lexers/__pycache__/tcl.cpython-313.pyc +0 -0
  289. data/vendor/pygments-main/pygments/lexers/__pycache__/teal.cpython-313.pyc +0 -0
  290. data/vendor/pygments-main/pygments/lexers/__pycache__/templates.cpython-313.pyc +0 -0
  291. data/vendor/pygments-main/pygments/lexers/__pycache__/teraterm.cpython-313.pyc +0 -0
  292. data/vendor/pygments-main/pygments/lexers/__pycache__/testing.cpython-313.pyc +0 -0
  293. data/vendor/pygments-main/pygments/lexers/__pycache__/text.cpython-313.pyc +0 -0
  294. data/vendor/pygments-main/pygments/lexers/__pycache__/textedit.cpython-313.pyc +0 -0
  295. data/vendor/pygments-main/pygments/lexers/__pycache__/textfmts.cpython-313.pyc +0 -0
  296. data/vendor/pygments-main/pygments/lexers/__pycache__/theorem.cpython-313.pyc +0 -0
  297. data/vendor/pygments-main/pygments/lexers/__pycache__/thingsdb.cpython-313.pyc +0 -0
  298. data/vendor/pygments-main/pygments/lexers/__pycache__/tlb.cpython-313.pyc +0 -0
  299. data/vendor/pygments-main/pygments/lexers/__pycache__/tls.cpython-313.pyc +0 -0
  300. data/vendor/pygments-main/pygments/lexers/__pycache__/tnt.cpython-313.pyc +0 -0
  301. data/vendor/pygments-main/pygments/lexers/__pycache__/trafficscript.cpython-313.pyc +0 -0
  302. data/vendor/pygments-main/pygments/lexers/__pycache__/typoscript.cpython-313.pyc +0 -0
  303. data/vendor/pygments-main/pygments/lexers/__pycache__/typst.cpython-313.pyc +0 -0
  304. data/vendor/pygments-main/pygments/lexers/__pycache__/ul4.cpython-313.pyc +0 -0
  305. data/vendor/pygments-main/pygments/lexers/__pycache__/unicon.cpython-313.pyc +0 -0
  306. data/vendor/pygments-main/pygments/lexers/__pycache__/urbi.cpython-313.pyc +0 -0
  307. data/vendor/pygments-main/pygments/lexers/__pycache__/usd.cpython-313.pyc +0 -0
  308. data/vendor/pygments-main/pygments/lexers/__pycache__/varnish.cpython-313.pyc +0 -0
  309. data/vendor/pygments-main/pygments/lexers/__pycache__/verification.cpython-313.pyc +0 -0
  310. data/vendor/pygments-main/pygments/lexers/__pycache__/verifpal.cpython-313.pyc +0 -0
  311. data/vendor/pygments-main/pygments/lexers/__pycache__/vip.cpython-313.pyc +0 -0
  312. data/vendor/pygments-main/pygments/lexers/__pycache__/vyper.cpython-313.pyc +0 -0
  313. data/vendor/pygments-main/pygments/lexers/__pycache__/web.cpython-313.pyc +0 -0
  314. data/vendor/pygments-main/pygments/lexers/__pycache__/webassembly.cpython-313.pyc +0 -0
  315. data/vendor/pygments-main/pygments/lexers/__pycache__/webidl.cpython-313.pyc +0 -0
  316. data/vendor/pygments-main/pygments/lexers/__pycache__/webmisc.cpython-313.pyc +0 -0
  317. data/vendor/pygments-main/pygments/lexers/__pycache__/wgsl.cpython-313.pyc +0 -0
  318. data/vendor/pygments-main/pygments/lexers/__pycache__/whiley.cpython-313.pyc +0 -0
  319. data/vendor/pygments-main/pygments/lexers/__pycache__/wowtoc.cpython-313.pyc +0 -0
  320. data/vendor/pygments-main/pygments/lexers/__pycache__/wren.cpython-313.pyc +0 -0
  321. data/vendor/pygments-main/pygments/lexers/__pycache__/x10.cpython-313.pyc +0 -0
  322. data/vendor/pygments-main/pygments/lexers/__pycache__/xorg.cpython-313.pyc +0 -0
  323. data/vendor/pygments-main/pygments/lexers/__pycache__/yang.cpython-313.pyc +0 -0
  324. data/vendor/pygments-main/pygments/lexers/__pycache__/yara.cpython-313.pyc +0 -0
  325. data/vendor/pygments-main/pygments/lexers/__pycache__/zig.cpython-313.pyc +0 -0
  326. data/vendor/pygments-main/pygments/lexers/_ada_builtins.py +1 -1
  327. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1 -1
  328. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +1 -1
  329. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +2 -2
  330. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1 -1
  331. data/vendor/pygments-main/pygments/lexers/_css_builtins.py +1 -1
  332. data/vendor/pygments-main/pygments/lexers/_googlesql_builtins.py +918 -0
  333. data/vendor/pygments-main/pygments/lexers/_julia_builtins.py +1 -1
  334. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -1
  335. data/vendor/pygments-main/pygments/lexers/_lilypond_builtins.py +1 -1
  336. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +5 -5
  337. data/vendor/pygments-main/pygments/lexers/_luau_builtins.py +62 -0
  338. data/vendor/pygments-main/pygments/lexers/_mapping.py +56 -13
  339. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -1
  340. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +3 -3
  341. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
  342. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +3 -3
  343. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +5 -5
  344. data/vendor/pygments-main/pygments/lexers/_qlik_builtins.py +1 -1
  345. data/vendor/pygments-main/pygments/lexers/_scheme_builtins.py +1 -1
  346. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +4 -4
  347. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +3 -3
  348. data/vendor/pygments-main/pygments/lexers/_sql_builtins.py +106 -0
  349. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +1 -1
  350. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +1 -1
  351. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
  352. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +1 -1
  353. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +1 -1
  354. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
  355. data/vendor/pygments-main/pygments/lexers/actionscript.py +6 -8
  356. data/vendor/pygments-main/pygments/lexers/ada.py +3 -3
  357. data/vendor/pygments-main/pygments/lexers/agile.py +3 -1
  358. data/vendor/pygments-main/pygments/lexers/algebra.py +10 -13
  359. data/vendor/pygments-main/pygments/lexers/ambient.py +2 -3
  360. data/vendor/pygments-main/pygments/lexers/amdgpu.py +3 -3
  361. data/vendor/pygments-main/pygments/lexers/ampl.py +2 -3
  362. data/vendor/pygments-main/pygments/lexers/apdlexer.py +4 -3
  363. data/vendor/pygments-main/pygments/lexers/apl.py +2 -3
  364. data/vendor/pygments-main/pygments/lexers/archetype.py +8 -12
  365. data/vendor/pygments-main/pygments/lexers/arrow.py +2 -3
  366. data/vendor/pygments-main/pygments/lexers/arturo.py +2 -3
  367. data/vendor/pygments-main/pygments/lexers/asc.py +4 -4
  368. data/vendor/pygments-main/pygments/lexers/asm.py +48 -34
  369. data/vendor/pygments-main/pygments/lexers/asn1.py +178 -0
  370. data/vendor/pygments-main/pygments/lexers/automation.py +6 -8
  371. data/vendor/pygments-main/pygments/lexers/bare.py +2 -3
  372. data/vendor/pygments-main/pygments/lexers/basic.py +48 -57
  373. data/vendor/pygments-main/pygments/lexers/bdd.py +3 -4
  374. data/vendor/pygments-main/pygments/lexers/berry.py +4 -4
  375. data/vendor/pygments-main/pygments/lexers/bibtex.py +5 -5
  376. data/vendor/pygments-main/pygments/lexers/blueprint.py +173 -0
  377. data/vendor/pygments-main/pygments/lexers/boa.py +4 -4
  378. data/vendor/pygments-main/pygments/lexers/bqn.py +112 -0
  379. data/vendor/pygments-main/pygments/lexers/business.py +21 -22
  380. data/vendor/pygments-main/pygments/lexers/c_cpp.py +9 -4
  381. data/vendor/pygments-main/pygments/lexers/c_like.py +99 -27
  382. data/vendor/pygments-main/pygments/lexers/capnproto.py +2 -3
  383. data/vendor/pygments-main/pygments/lexers/carbon.py +10 -11
  384. data/vendor/pygments-main/pygments/lexers/cddl.py +8 -9
  385. data/vendor/pygments-main/pygments/lexers/chapel.py +2 -3
  386. data/vendor/pygments-main/pygments/lexers/clean.py +2 -1
  387. data/vendor/pygments-main/pygments/lexers/codeql.py +80 -0
  388. data/vendor/pygments-main/pygments/lexers/comal.py +2 -1
  389. data/vendor/pygments-main/pygments/lexers/compiled.py +2 -1
  390. data/vendor/pygments-main/pygments/lexers/configs.py +353 -110
  391. data/vendor/pygments-main/pygments/lexers/console.py +5 -5
  392. data/vendor/pygments-main/pygments/lexers/cplint.py +2 -3
  393. data/vendor/pygments-main/pygments/lexers/crystal.py +4 -5
  394. data/vendor/pygments-main/pygments/lexers/csound.py +6 -8
  395. data/vendor/pygments-main/pygments/lexers/css.py +6 -6
  396. data/vendor/pygments-main/pygments/lexers/d.py +4 -3
  397. data/vendor/pygments-main/pygments/lexers/dalvik.py +2 -3
  398. data/vendor/pygments-main/pygments/lexers/data.py +8 -12
  399. data/vendor/pygments-main/pygments/lexers/dax.py +2 -3
  400. data/vendor/pygments-main/pygments/lexers/devicetree.py +2 -3
  401. data/vendor/pygments-main/pygments/lexers/diff.py +7 -6
  402. data/vendor/pygments-main/pygments/lexers/dns.py +109 -0
  403. data/vendor/pygments-main/pygments/lexers/dotnet.py +58 -26
  404. data/vendor/pygments-main/pygments/lexers/dsls.py +24 -35
  405. data/vendor/pygments-main/pygments/lexers/dylan.py +9 -17
  406. data/vendor/pygments-main/pygments/lexers/ecl.py +2 -3
  407. data/vendor/pygments-main/pygments/lexers/eiffel.py +3 -4
  408. data/vendor/pygments-main/pygments/lexers/elm.py +3 -4
  409. data/vendor/pygments-main/pygments/lexers/elpi.py +45 -35
  410. data/vendor/pygments-main/pygments/lexers/email.py +3 -3
  411. data/vendor/pygments-main/pygments/lexers/erlang.py +22 -24
  412. data/vendor/pygments-main/pygments/lexers/esoteric.py +11 -12
  413. data/vendor/pygments-main/pygments/lexers/ezhil.py +2 -3
  414. data/vendor/pygments-main/pygments/lexers/factor.py +2 -3
  415. data/vendor/pygments-main/pygments/lexers/fantom.py +3 -3
  416. data/vendor/pygments-main/pygments/lexers/felix.py +9 -10
  417. data/vendor/pygments-main/pygments/lexers/fift.py +2 -1
  418. data/vendor/pygments-main/pygments/lexers/floscript.py +2 -3
  419. data/vendor/pygments-main/pygments/lexers/forth.py +2 -3
  420. data/vendor/pygments-main/pygments/lexers/fortran.py +6 -7
  421. data/vendor/pygments-main/pygments/lexers/foxpro.py +3 -3
  422. data/vendor/pygments-main/pygments/lexers/freefem.py +2 -3
  423. data/vendor/pygments-main/pygments/lexers/func.py +3 -1
  424. data/vendor/pygments-main/pygments/lexers/functional.py +2 -1
  425. data/vendor/pygments-main/pygments/lexers/futhark.py +6 -7
  426. data/vendor/pygments-main/pygments/lexers/gcodelexer.py +3 -3
  427. data/vendor/pygments-main/pygments/lexers/gdscript.py +2 -1
  428. data/vendor/pygments-main/pygments/lexers/gleam.py +74 -0
  429. data/vendor/pygments-main/pygments/lexers/go.py +3 -4
  430. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +6 -9
  431. data/vendor/pygments-main/pygments/lexers/graph.py +12 -9
  432. data/vendor/pygments-main/pygments/lexers/graphics.py +13 -17
  433. data/vendor/pygments-main/pygments/lexers/graphql.py +176 -0
  434. data/vendor/pygments-main/pygments/lexers/graphviz.py +2 -3
  435. data/vendor/pygments-main/pygments/lexers/gsql.py +2 -3
  436. data/vendor/pygments-main/pygments/lexers/hare.py +73 -0
  437. data/vendor/pygments-main/pygments/lexers/haskell.py +29 -34
  438. data/vendor/pygments-main/pygments/lexers/haxe.py +3 -5
  439. data/vendor/pygments-main/pygments/lexers/hdl.py +8 -7
  440. data/vendor/pygments-main/pygments/lexers/hexdump.py +3 -3
  441. data/vendor/pygments-main/pygments/lexers/html.py +79 -14
  442. data/vendor/pygments-main/pygments/lexers/idl.py +2 -3
  443. data/vendor/pygments-main/pygments/lexers/igor.py +306 -291
  444. data/vendor/pygments-main/pygments/lexers/inferno.py +2 -3
  445. data/vendor/pygments-main/pygments/lexers/installers.py +58 -33
  446. data/vendor/pygments-main/pygments/lexers/int_fiction.py +150 -162
  447. data/vendor/pygments-main/pygments/lexers/iolang.py +2 -3
  448. data/vendor/pygments-main/pygments/lexers/j.py +2 -3
  449. data/vendor/pygments-main/pygments/lexers/javascript.py +22 -19
  450. data/vendor/pygments-main/pygments/lexers/jmespath.py +2 -1
  451. data/vendor/pygments-main/pygments/lexers/jslt.py +2 -3
  452. data/vendor/pygments-main/pygments/lexers/json5.py +83 -0
  453. data/vendor/pygments-main/pygments/lexers/jsonnet.py +4 -3
  454. data/vendor/pygments-main/pygments/lexers/jsx.py +100 -0
  455. data/vendor/pygments-main/pygments/lexers/julia.py +5 -5
  456. data/vendor/pygments-main/pygments/lexers/jvm.py +99 -117
  457. data/vendor/pygments-main/pygments/lexers/kuin.py +2 -3
  458. data/vendor/pygments-main/pygments/lexers/kusto.py +93 -0
  459. data/vendor/pygments-main/pygments/lexers/ldap.py +155 -0
  460. data/vendor/pygments-main/pygments/lexers/lean.py +241 -0
  461. data/vendor/pygments-main/pygments/lexers/lilypond.py +2 -3
  462. data/vendor/pygments-main/pygments/lexers/lisp.py +373 -65
  463. data/vendor/pygments-main/pygments/lexers/macaulay2.py +175 -100
  464. data/vendor/pygments-main/pygments/lexers/make.py +7 -5
  465. data/vendor/pygments-main/pygments/lexers/maple.py +291 -0
  466. data/vendor/pygments-main/pygments/lexers/markup.py +242 -91
  467. data/vendor/pygments-main/pygments/lexers/math.py +2 -1
  468. data/vendor/pygments-main/pygments/lexers/matlab.py +14 -15
  469. data/vendor/pygments-main/pygments/lexers/maxima.py +2 -3
  470. data/vendor/pygments-main/pygments/lexers/meson.py +2 -3
  471. data/vendor/pygments-main/pygments/lexers/mime.py +4 -4
  472. data/vendor/pygments-main/pygments/lexers/minecraft.py +24 -27
  473. data/vendor/pygments-main/pygments/lexers/mips.py +3 -1
  474. data/vendor/pygments-main/pygments/lexers/ml.py +59 -61
  475. data/vendor/pygments-main/pygments/lexers/modeling.py +19 -22
  476. data/vendor/pygments-main/pygments/lexers/modula2.py +2 -3
  477. data/vendor/pygments-main/pygments/lexers/mojo.py +707 -0
  478. data/vendor/pygments-main/pygments/lexers/monte.py +2 -3
  479. data/vendor/pygments-main/pygments/lexers/mosel.py +3 -3
  480. data/vendor/pygments-main/pygments/lexers/ncl.py +4 -3
  481. data/vendor/pygments-main/pygments/lexers/nimrod.py +7 -8
  482. data/vendor/pygments-main/pygments/lexers/nit.py +2 -3
  483. data/vendor/pygments-main/pygments/lexers/nix.py +40 -31
  484. data/vendor/pygments-main/pygments/lexers/numbair.py +63 -0
  485. data/vendor/pygments-main/pygments/lexers/oberon.py +3 -3
  486. data/vendor/pygments-main/pygments/lexers/objective.py +25 -17
  487. data/vendor/pygments-main/pygments/lexers/ooc.py +4 -5
  488. data/vendor/pygments-main/pygments/lexers/openscad.py +96 -0
  489. data/vendor/pygments-main/pygments/lexers/other.py +2 -1
  490. data/vendor/pygments-main/pygments/lexers/parasail.py +2 -3
  491. data/vendor/pygments-main/pygments/lexers/parsers.py +41 -44
  492. data/vendor/pygments-main/pygments/lexers/pascal.py +6 -3
  493. data/vendor/pygments-main/pygments/lexers/pawn.py +5 -5
  494. data/vendor/pygments-main/pygments/lexers/pddl.py +82 -0
  495. data/vendor/pygments-main/pygments/lexers/perl.py +3 -3
  496. data/vendor/pygments-main/pygments/lexers/phix.py +2 -3
  497. data/vendor/pygments-main/pygments/lexers/php.py +4 -5
  498. data/vendor/pygments-main/pygments/lexers/pointless.py +2 -3
  499. data/vendor/pygments-main/pygments/lexers/pony.py +3 -3
  500. data/vendor/pygments-main/pygments/lexers/praat.py +2 -3
  501. data/vendor/pygments-main/pygments/lexers/procfile.py +2 -3
  502. data/vendor/pygments-main/pygments/lexers/prolog.py +23 -9
  503. data/vendor/pygments-main/pygments/lexers/promql.py +2 -1
  504. data/vendor/pygments-main/pygments/lexers/prql.py +251 -0
  505. data/vendor/pygments-main/pygments/lexers/ptx.py +119 -0
  506. data/vendor/pygments-main/pygments/lexers/python.py +49 -46
  507. data/vendor/pygments-main/pygments/lexers/q.py +5 -6
  508. data/vendor/pygments-main/pygments/lexers/qlik.py +3 -3
  509. data/vendor/pygments-main/pygments/lexers/qvt.py +5 -3
  510. data/vendor/pygments-main/pygments/lexers/r.py +14 -8
  511. data/vendor/pygments-main/pygments/lexers/rdf.py +21 -15
  512. data/vendor/pygments-main/pygments/lexers/rebol.py +7 -7
  513. data/vendor/pygments-main/pygments/lexers/rego.py +57 -0
  514. data/vendor/pygments-main/pygments/lexers/resource.py +5 -6
  515. data/vendor/pygments-main/pygments/lexers/ride.py +4 -5
  516. data/vendor/pygments-main/pygments/lexers/rita.py +2 -3
  517. data/vendor/pygments-main/pygments/lexers/rnc.py +2 -3
  518. data/vendor/pygments-main/pygments/lexers/roboconf.py +5 -5
  519. data/vendor/pygments-main/pygments/lexers/robotframework.py +2 -3
  520. data/vendor/pygments-main/pygments/lexers/ruby.py +8 -13
  521. data/vendor/pygments-main/pygments/lexers/rust.py +9 -10
  522. data/vendor/pygments-main/pygments/lexers/sas.py +3 -3
  523. data/vendor/pygments-main/pygments/lexers/savi.py +131 -130
  524. data/vendor/pygments-main/pygments/lexers/scdoc.py +13 -7
  525. data/vendor/pygments-main/pygments/lexers/scripting.py +385 -55
  526. data/vendor/pygments-main/pygments/lexers/sgf.py +2 -3
  527. data/vendor/pygments-main/pygments/lexers/shell.py +111 -129
  528. data/vendor/pygments-main/pygments/lexers/sieve.py +3 -3
  529. data/vendor/pygments-main/pygments/lexers/slash.py +4 -5
  530. data/vendor/pygments-main/pygments/lexers/smalltalk.py +3 -5
  531. data/vendor/pygments-main/pygments/lexers/smithy.py +2 -3
  532. data/vendor/pygments-main/pygments/lexers/smv.py +3 -3
  533. data/vendor/pygments-main/pygments/lexers/snobol.py +3 -3
  534. data/vendor/pygments-main/pygments/lexers/solidity.py +3 -3
  535. data/vendor/pygments-main/pygments/lexers/soong.py +78 -0
  536. data/vendor/pygments-main/pygments/lexers/sophia.py +3 -4
  537. data/vendor/pygments-main/pygments/lexers/special.py +9 -3
  538. data/vendor/pygments-main/pygments/lexers/spice.py +15 -16
  539. data/vendor/pygments-main/pygments/lexers/sql.py +224 -142
  540. data/vendor/pygments-main/pygments/lexers/srcinfo.py +3 -3
  541. data/vendor/pygments-main/pygments/lexers/stata.py +2 -3
  542. data/vendor/pygments-main/pygments/lexers/supercollider.py +2 -3
  543. data/vendor/pygments-main/pygments/lexers/tablegen.py +177 -0
  544. data/vendor/pygments-main/pygments/lexers/tact.py +303 -0
  545. data/vendor/pygments-main/pygments/lexers/tal.py +13 -10
  546. data/vendor/pygments-main/pygments/lexers/tcl.py +2 -3
  547. data/vendor/pygments-main/pygments/lexers/teal.py +2 -3
  548. data/vendor/pygments-main/pygments/lexers/templates.py +133 -74
  549. data/vendor/pygments-main/pygments/lexers/teraterm.py +2 -3
  550. data/vendor/pygments-main/pygments/lexers/testing.py +4 -5
  551. data/vendor/pygments-main/pygments/lexers/text.py +3 -2
  552. data/vendor/pygments-main/pygments/lexers/textedit.py +9 -6
  553. data/vendor/pygments-main/pygments/lexers/textfmts.py +20 -15
  554. data/vendor/pygments-main/pygments/lexers/theorem.py +41 -115
  555. data/vendor/pygments-main/pygments/lexers/thingsdb.py +50 -26
  556. data/vendor/pygments-main/pygments/lexers/tlb.py +3 -1
  557. data/vendor/pygments-main/pygments/lexers/tls.py +54 -0
  558. data/vendor/pygments-main/pygments/lexers/tnt.py +2 -3
  559. data/vendor/pygments-main/pygments/lexers/trafficscript.py +3 -3
  560. data/vendor/pygments-main/pygments/lexers/typoscript.py +6 -7
  561. data/vendor/pygments-main/pygments/lexers/typst.py +160 -0
  562. data/vendor/pygments-main/pygments/lexers/ul4.py +47 -5
  563. data/vendor/pygments-main/pygments/lexers/unicon.py +9 -7
  564. data/vendor/pygments-main/pygments/lexers/urbi.py +3 -3
  565. data/vendor/pygments-main/pygments/lexers/usd.py +6 -11
  566. data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
  567. data/vendor/pygments-main/pygments/lexers/verification.py +4 -5
  568. data/vendor/pygments-main/pygments/lexers/verifpal.py +65 -0
  569. data/vendor/pygments-main/pygments/lexers/vip.py +150 -0
  570. data/vendor/pygments-main/pygments/lexers/vyper.py +140 -0
  571. data/vendor/pygments-main/pygments/lexers/web.py +2 -1
  572. data/vendor/pygments-main/pygments/lexers/webassembly.py +2 -3
  573. data/vendor/pygments-main/pygments/lexers/webidl.py +2 -3
  574. data/vendor/pygments-main/pygments/lexers/webmisc.py +11 -15
  575. data/vendor/pygments-main/pygments/lexers/wgsl.py +6 -7
  576. data/vendor/pygments-main/pygments/lexers/whiley.py +2 -3
  577. data/vendor/pygments-main/pygments/lexers/wowtoc.py +3 -3
  578. data/vendor/pygments-main/pygments/lexers/wren.py +3 -4
  579. data/vendor/pygments-main/pygments/lexers/x10.py +6 -7
  580. data/vendor/pygments-main/pygments/lexers/xorg.py +2 -1
  581. data/vendor/pygments-main/pygments/lexers/yang.py +2 -3
  582. data/vendor/pygments-main/pygments/lexers/yara.py +69 -0
  583. data/vendor/pygments-main/pygments/lexers/zig.py +2 -1
  584. data/vendor/pygments-main/pygments/modeline.py +4 -4
  585. data/vendor/pygments-main/pygments/plugin.py +3 -19
  586. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  587. data/vendor/pygments-main/pygments/scanner.py +1 -1
  588. data/vendor/pygments-main/pygments/sphinxext.py +38 -8
  589. data/vendor/pygments-main/pygments/style.py +8 -2
  590. data/vendor/pygments-main/pygments/styles/__init__.py +17 -59
  591. data/vendor/pygments-main/pygments/styles/__pycache__/__init__.cpython-313.pyc +0 -0
  592. data/vendor/pygments-main/pygments/styles/__pycache__/_mapping.cpython-313.pyc +0 -0
  593. data/vendor/pygments-main/pygments/styles/__pycache__/abap.cpython-313.pyc +0 -0
  594. data/vendor/pygments-main/pygments/styles/__pycache__/algol.cpython-313.pyc +0 -0
  595. data/vendor/pygments-main/pygments/styles/__pycache__/algol_nu.cpython-313.pyc +0 -0
  596. data/vendor/pygments-main/pygments/styles/__pycache__/arduino.cpython-313.pyc +0 -0
  597. data/vendor/pygments-main/pygments/styles/__pycache__/autumn.cpython-313.pyc +0 -0
  598. data/vendor/pygments-main/pygments/styles/__pycache__/borland.cpython-313.pyc +0 -0
  599. data/vendor/pygments-main/pygments/styles/__pycache__/bw.cpython-313.pyc +0 -0
  600. data/vendor/pygments-main/pygments/styles/__pycache__/coffee.cpython-313.pyc +0 -0
  601. data/vendor/pygments-main/pygments/styles/__pycache__/colorful.cpython-313.pyc +0 -0
  602. data/vendor/pygments-main/pygments/styles/__pycache__/default.cpython-313.pyc +0 -0
  603. data/vendor/pygments-main/pygments/styles/__pycache__/dracula.cpython-313.pyc +0 -0
  604. data/vendor/pygments-main/pygments/styles/__pycache__/emacs.cpython-313.pyc +0 -0
  605. data/vendor/pygments-main/pygments/styles/__pycache__/friendly.cpython-313.pyc +0 -0
  606. data/vendor/pygments-main/pygments/styles/__pycache__/friendly_grayscale.cpython-313.pyc +0 -0
  607. data/vendor/pygments-main/pygments/styles/__pycache__/fruity.cpython-313.pyc +0 -0
  608. data/vendor/pygments-main/pygments/styles/__pycache__/gh_dark.cpython-313.pyc +0 -0
  609. data/vendor/pygments-main/pygments/styles/__pycache__/gruvbox.cpython-313.pyc +0 -0
  610. data/vendor/pygments-main/pygments/styles/__pycache__/igor.cpython-313.pyc +0 -0
  611. data/vendor/pygments-main/pygments/styles/__pycache__/inkpot.cpython-313.pyc +0 -0
  612. data/vendor/pygments-main/pygments/styles/__pycache__/lightbulb.cpython-313.pyc +0 -0
  613. data/vendor/pygments-main/pygments/styles/__pycache__/lilypond.cpython-313.pyc +0 -0
  614. data/vendor/pygments-main/pygments/styles/__pycache__/lovelace.cpython-313.pyc +0 -0
  615. data/vendor/pygments-main/pygments/styles/__pycache__/manni.cpython-313.pyc +0 -0
  616. data/vendor/pygments-main/pygments/styles/__pycache__/material.cpython-313.pyc +0 -0
  617. data/vendor/pygments-main/pygments/styles/__pycache__/monokai.cpython-313.pyc +0 -0
  618. data/vendor/pygments-main/pygments/styles/__pycache__/murphy.cpython-313.pyc +0 -0
  619. data/vendor/pygments-main/pygments/styles/__pycache__/native.cpython-313.pyc +0 -0
  620. data/vendor/pygments-main/pygments/styles/__pycache__/nord.cpython-313.pyc +0 -0
  621. data/vendor/pygments-main/pygments/styles/__pycache__/onedark.cpython-313.pyc +0 -0
  622. data/vendor/pygments-main/pygments/styles/__pycache__/paraiso_dark.cpython-313.pyc +0 -0
  623. data/vendor/pygments-main/pygments/styles/__pycache__/paraiso_light.cpython-313.pyc +0 -0
  624. data/vendor/pygments-main/pygments/styles/__pycache__/pastie.cpython-313.pyc +0 -0
  625. data/vendor/pygments-main/pygments/styles/__pycache__/perldoc.cpython-313.pyc +0 -0
  626. data/vendor/pygments-main/pygments/styles/__pycache__/rainbow_dash.cpython-313.pyc +0 -0
  627. data/vendor/pygments-main/pygments/styles/__pycache__/rrt.cpython-313.pyc +0 -0
  628. data/vendor/pygments-main/pygments/styles/__pycache__/sas.cpython-313.pyc +0 -0
  629. data/vendor/pygments-main/pygments/styles/__pycache__/solarized.cpython-313.pyc +0 -0
  630. data/vendor/pygments-main/pygments/styles/__pycache__/staroffice.cpython-313.pyc +0 -0
  631. data/vendor/pygments-main/pygments/styles/__pycache__/stata_dark.cpython-313.pyc +0 -0
  632. data/vendor/pygments-main/pygments/styles/__pycache__/stata_light.cpython-313.pyc +0 -0
  633. data/vendor/pygments-main/pygments/styles/__pycache__/tango.cpython-313.pyc +0 -0
  634. data/vendor/pygments-main/pygments/styles/__pycache__/trac.cpython-313.pyc +0 -0
  635. data/vendor/pygments-main/pygments/styles/__pycache__/vim.cpython-313.pyc +0 -0
  636. data/vendor/pygments-main/pygments/styles/__pycache__/vs.cpython-313.pyc +0 -0
  637. data/vendor/pygments-main/pygments/styles/__pycache__/xcode.cpython-313.pyc +0 -0
  638. data/vendor/pygments-main/pygments/styles/__pycache__/zenburn.cpython-313.pyc +0 -0
  639. data/vendor/pygments-main/pygments/styles/_mapping.py +54 -0
  640. data/vendor/pygments-main/pygments/styles/abap.py +5 -1
  641. data/vendor/pygments-main/pygments/styles/algol.py +5 -1
  642. data/vendor/pygments-main/pygments/styles/algol_nu.py +5 -1
  643. data/vendor/pygments-main/pygments/styles/arduino.py +76 -72
  644. data/vendor/pygments-main/pygments/styles/autumn.py +6 -1
  645. data/vendor/pygments-main/pygments/styles/borland.py +6 -1
  646. data/vendor/pygments-main/pygments/styles/bw.py +6 -1
  647. data/vendor/pygments-main/pygments/styles/coffee.py +80 -0
  648. data/vendor/pygments-main/pygments/styles/colorful.py +6 -1
  649. data/vendor/pygments-main/pygments/styles/default.py +6 -1
  650. data/vendor/pygments-main/pygments/styles/dracula.py +68 -80
  651. data/vendor/pygments-main/pygments/styles/emacs.py +6 -1
  652. data/vendor/pygments-main/pygments/styles/friendly.py +6 -1
  653. data/vendor/pygments-main/pygments/styles/friendly_grayscale.py +6 -1
  654. data/vendor/pygments-main/pygments/styles/fruity.py +7 -1
  655. data/vendor/pygments-main/pygments/styles/gh_dark.py +7 -1
  656. data/vendor/pygments-main/pygments/styles/gruvbox.py +10 -1
  657. data/vendor/pygments-main/pygments/styles/igor.py +6 -1
  658. data/vendor/pygments-main/pygments/styles/inkpot.py +7 -2
  659. data/vendor/pygments-main/pygments/styles/lightbulb.py +110 -0
  660. data/vendor/pygments-main/pygments/styles/lilypond.py +8 -2
  661. data/vendor/pygments-main/pygments/styles/lovelace.py +16 -10
  662. data/vendor/pygments-main/pygments/styles/manni.py +7 -2
  663. data/vendor/pygments-main/pygments/styles/material.py +21 -14
  664. data/vendor/pygments-main/pygments/styles/monokai.py +16 -10
  665. data/vendor/pygments-main/pygments/styles/murphy.py +7 -2
  666. data/vendor/pygments-main/pygments/styles/native.py +10 -5
  667. data/vendor/pygments-main/pygments/styles/nord.py +9 -3
  668. data/vendor/pygments-main/pygments/styles/onedark.py +6 -2
  669. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +7 -2
  670. data/vendor/pygments-main/pygments/styles/paraiso_light.py +7 -2
  671. data/vendor/pygments-main/pygments/styles/pastie.py +7 -1
  672. data/vendor/pygments-main/pygments/styles/perldoc.py +7 -1
  673. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +26 -19
  674. data/vendor/pygments-main/pygments/styles/rrt.py +9 -2
  675. data/vendor/pygments-main/pygments/styles/sas.py +6 -1
  676. data/vendor/pygments-main/pygments/styles/solarized.py +9 -1
  677. data/vendor/pygments-main/pygments/styles/staroffice.py +6 -1
  678. data/vendor/pygments-main/pygments/styles/stata_dark.py +6 -2
  679. data/vendor/pygments-main/pygments/styles/stata_light.py +6 -1
  680. data/vendor/pygments-main/pygments/styles/tango.py +7 -3
  681. data/vendor/pygments-main/pygments/styles/trac.py +7 -1
  682. data/vendor/pygments-main/pygments/styles/vim.py +7 -1
  683. data/vendor/pygments-main/pygments/styles/vs.py +7 -2
  684. data/vendor/pygments-main/pygments/styles/xcode.py +6 -1
  685. data/vendor/pygments-main/pygments/styles/zenburn.py +6 -1
  686. data/vendor/pygments-main/pygments/token.py +2 -1
  687. data/vendor/pygments-main/pygments/unistring.py +5 -5
  688. data/vendor/pygments-main/pygments/util.py +13 -19
  689. data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.19.2.dist-info}/METADATA +15 -13
  690. data/vendor/pygments-main/pygments-2.19.2.dist-info/RECORD +685 -0
  691. data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.19.2.dist-info}/WHEEL +1 -2
  692. data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.19.2.dist-info/licenses}/AUTHORS +21 -0
  693. metadata +390 -20
  694. data/vendor/pygments-main/Pygments-2.15.1.dist-info/RECORD +0 -614
  695. data/vendor/pygments-main/Pygments-2.15.1.dist-info/top_level.txt +0 -1
  696. /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.19.2.dist-info}/INSTALLER +0 -0
  697. /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.19.2.dist-info}/REQUESTED +0 -0
  698. /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.19.2.dist-info}/entry_points.txt +0 -0
  699. /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.19.2.dist-info/licenses}/LICENSE +0 -0
@@ -36,32 +36,27 @@
36
36
  The ``tests/examplefiles`` contains a few test files with data to be
37
37
  parsed by these lexers.
38
38
 
39
- :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
39
+ :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
40
40
  :license: BSD, see LICENSE for details.
41
41
  """
42
42
 
43
+ import collections
43
44
  import re
44
45
 
45
46
  from pygments.lexer import Lexer, RegexLexer, do_insertions, bygroups, words
47
+ from pygments.lexers import _googlesql_builtins
48
+ from pygments.lexers import _mysql_builtins
49
+ from pygments.lexers import _postgres_builtins
50
+ from pygments.lexers import _sql_builtins
51
+ from pygments.lexers import _tsql_builtins
52
+ from pygments.lexers import get_lexer_by_name, ClassNotFound
46
53
  from pygments.token import Punctuation, Whitespace, Text, Comment, Operator, \
47
54
  Keyword, Name, String, Number, Generic, Literal
48
- from pygments.lexers import get_lexer_by_name, ClassNotFound
49
-
50
- from pygments.lexers._postgres_builtins import KEYWORDS, DATATYPES, \
51
- PSEUDO_TYPES, PLPGSQL_KEYWORDS, EXPLAIN_KEYWORDS
52
- from pygments.lexers._mysql_builtins import \
53
- MYSQL_CONSTANTS, \
54
- MYSQL_DATATYPES, \
55
- MYSQL_FUNCTIONS, \
56
- MYSQL_KEYWORDS, \
57
- MYSQL_OPTIMIZER_HINTS
58
-
59
- from pygments.lexers import _tsql_builtins
60
55
 
61
56
 
62
- __all__ = ['PostgresLexer', 'PlPgsqlLexer', 'PostgresConsoleLexer',
63
- 'PostgresExplainLexer', 'SqlLexer', 'TransactSqlLexer',
64
- 'MySqlLexer', 'SqliteConsoleLexer', 'RqlLexer']
57
+ __all__ = ['GoogleSqlLexer', 'PostgresLexer', 'PlPgsqlLexer',
58
+ 'PostgresConsoleLexer', 'PostgresExplainLexer', 'SqlLexer',
59
+ 'TransactSqlLexer', 'MySqlLexer', 'SqliteConsoleLexer', 'RqlLexer']
65
60
 
66
61
  line_re = re.compile('.*?\n')
67
62
  sqlite_prompt_re = re.compile(r'^(?:sqlite| ...)>(?= )')
@@ -77,6 +72,12 @@ tsql_go_re = re.compile(r'\bgo\b', re.IGNORECASE)
77
72
  tsql_declare_re = re.compile(r'\bdeclare\s+@', re.IGNORECASE)
78
73
  tsql_variable_re = re.compile(r'@[a-zA-Z_]\w*\b')
79
74
 
75
+ # Identifiers for analyse_text()
76
+ googlesql_identifiers = (
77
+ _googlesql_builtins.functionnames
78
+ + _googlesql_builtins.keywords
79
+ + _googlesql_builtins.types)
80
+
80
81
 
81
82
  def language_callback(lexer, match):
82
83
  """Parse the content of a $-string using a lexer
@@ -154,13 +155,13 @@ class PostgresBase:
154
155
  class PostgresLexer(PostgresBase, RegexLexer):
155
156
  """
156
157
  Lexer for the PostgreSQL dialect of SQL.
157
-
158
- .. versionadded:: 1.5
159
158
  """
160
159
 
161
160
  name = 'PostgreSQL SQL dialect'
162
161
  aliases = ['postgresql', 'postgres']
163
162
  mimetypes = ['text/x-postgresql']
163
+ url = 'https://www.postgresql.org'
164
+ version_added = '1.5'
164
165
 
165
166
  flags = re.IGNORECASE
166
167
  tokens = {
@@ -169,9 +170,10 @@ class PostgresLexer(PostgresBase, RegexLexer):
169
170
  (r'--.*\n?', Comment.Single),
170
171
  (r'/\*', Comment.Multiline, 'multiline-comments'),
171
172
  (r'(' + '|'.join(s.replace(" ", r"\s+")
172
- for s in DATATYPES + PSEUDO_TYPES) + r')\b',
173
+ for s in _postgres_builtins.DATATYPES +
174
+ _postgres_builtins.PSEUDO_TYPES) + r')\b',
173
175
  Name.Builtin),
174
- (words(KEYWORDS, suffix=r'\b'), Keyword),
176
+ (words(_postgres_builtins.KEYWORDS, suffix=r'\b'), Keyword),
175
177
  (r'[+*/<>=~!@#%^&|`?-]+', Operator),
176
178
  (r'::', Operator), # cast
177
179
  (r'\$\d+', Name.Variable),
@@ -210,21 +212,23 @@ class PostgresLexer(PostgresBase, RegexLexer):
210
212
  class PlPgsqlLexer(PostgresBase, RegexLexer):
211
213
  """
212
214
  Handle the extra syntax in Pl/pgSQL language.
213
-
214
- .. versionadded:: 1.5
215
215
  """
216
216
  name = 'PL/pgSQL'
217
217
  aliases = ['plpgsql']
218
218
  mimetypes = ['text/x-plpgsql']
219
+ url = 'https://www.postgresql.org/docs/current/plpgsql.html'
220
+ version_added = '1.5'
219
221
 
220
222
  flags = re.IGNORECASE
221
- tokens = {k: l[:] for (k, l) in PostgresLexer.tokens.items()}
223
+ # FIXME: use inheritance
224
+ tokens = {name: state[:] for (name, state) in PostgresLexer.tokens.items()}
222
225
 
223
226
  # extend the keywords list
224
227
  for i, pattern in enumerate(tokens['root']):
225
228
  if pattern[1] == Keyword:
226
229
  tokens['root'][i] = (
227
- words(KEYWORDS + PLPGSQL_KEYWORDS, suffix=r'\b'),
230
+ words(_postgres_builtins.KEYWORDS +
231
+ _postgres_builtins.PLPGSQL_KEYWORDS, suffix=r'\b'),
228
232
  Keyword)
229
233
  del i
230
234
  break
@@ -252,7 +256,7 @@ class PsqlRegexLexer(PostgresBase, RegexLexer):
252
256
  aliases = [] # not public
253
257
 
254
258
  flags = re.IGNORECASE
255
- tokens = {k: l[:] for (k, l) in PostgresLexer.tokens.items()}
259
+ tokens = {name: state[:] for (name, state) in PostgresLexer.tokens.items()}
256
260
 
257
261
  tokens['root'].append(
258
262
  (r'\\[^\s]+', Keyword.Pseudo, 'psql-command'))
@@ -302,13 +306,14 @@ class lookahead:
302
306
  class PostgresConsoleLexer(Lexer):
303
307
  """
304
308
  Lexer for psql sessions.
305
-
306
- .. versionadded:: 1.5
307
309
  """
308
310
 
309
311
  name = 'PostgreSQL console (psql)'
310
312
  aliases = ['psql', 'postgresql-console', 'postgres-console']
311
313
  mimetypes = ['text/x-postgresql-psql']
314
+ url = 'https://www.postgresql.org'
315
+ version_added = '1.5'
316
+ _example = "psql/psql_session.txt"
312
317
 
313
318
  def get_tokens_unprocessed(self, data):
314
319
  sql = PsqlRegexLexer(**self.options)
@@ -374,18 +379,18 @@ class PostgresConsoleLexer(Lexer):
374
379
  class PostgresExplainLexer(RegexLexer):
375
380
  """
376
381
  Handle PostgreSQL EXPLAIN output
377
-
378
- .. versionadded:: 2.15
379
382
  """
380
383
 
381
384
  name = 'PostgreSQL EXPLAIN dialect'
382
385
  aliases = ['postgres-explain']
383
386
  filenames = ['*.explain']
384
387
  mimetypes = ['text/x-postgresql-explain']
388
+ url = 'https://www.postgresql.org/docs/current/using-explain.html'
389
+ version_added = '2.15'
385
390
 
386
391
  tokens = {
387
392
  'root': [
388
- (r'(:|\(|\)|ms|kB|->|\.\.|\,)', Punctuation),
393
+ (r'(:|\(|\)|ms|kB|->|\.\.|\,|\/)', Punctuation),
389
394
  (r'(\s+)', Whitespace),
390
395
 
391
396
  # This match estimated cost and effectively measured counters with ANALYZE
@@ -394,9 +399,9 @@ class PostgresExplainLexer(RegexLexer):
394
399
  (r'(actual)( )(=?)', bygroups(Name.Class, Whitespace, Punctuation), 'instrumentation'),
395
400
 
396
401
  # Misc keywords
397
- (words(('actual', 'Memory Usage', 'Memory', 'Buckets', 'Batches',
402
+ (words(('actual', 'Memory Usage', 'Disk Usage', 'Memory', 'Buckets', 'Batches',
398
403
  'originally', 'row', 'rows', 'Hits', 'Misses',
399
- 'Evictions', 'Overflows'), suffix=r'\b'),
404
+ 'Evictions', 'Overflows', 'Planned Partitions'), suffix=r'\b'),
400
405
  Comment.Single),
401
406
 
402
407
  (r'(hit|read|dirtied|written|write|time|calls)(=)', bygroups(Comment.Single, Operator)),
@@ -431,7 +436,7 @@ class PostgresExplainLexer(RegexLexer):
431
436
  'Planning Time', 'Execution time', 'Execution Time',
432
437
  'Workers Planned', 'Workers Launched', 'Buffers',
433
438
  'Planning', 'Worker', 'Query Identifier', 'Time',
434
- 'Full-sort Groups'), suffix=r'\b'), Comment.Preproc),
439
+ 'Full-sort Groups', 'Pre-sorted Groups'), suffix=r'\b'), Comment.Preproc),
435
440
 
436
441
  # Emphasize these keywords
437
442
 
@@ -441,7 +446,7 @@ class PostgresExplainLexer(RegexLexer):
441
446
  suffix=r'\b'), Name.Exception),
442
447
  (r'(I/O Timings)(:)( )', bygroups(Name.Exception, Punctuation, Whitespace)),
443
448
 
444
- (words(EXPLAIN_KEYWORDS, suffix=r'\b'), Keyword),
449
+ (words(_postgres_builtins.EXPLAIN_KEYWORDS, suffix=r'\b'), Keyword),
445
450
 
446
451
  # join keywords
447
452
  (r'((Right|Left|Full|Semi|Anti) Join)', Keyword.Type),
@@ -459,8 +464,8 @@ class PostgresExplainLexer(RegexLexer):
459
464
  # strings
460
465
  (r"'(''|[^'])*'", String.Single),
461
466
  # numbers
462
- (r'\d+\.\d+', Number.Float),
463
- (r'(\d+)', Number.Integer),
467
+ (r'-?\d+\.\d+', Number.Float),
468
+ (r'(-?\d+)', Number.Integer),
464
469
 
465
470
  # boolean
466
471
  (r'(true|false)', Name.Constant),
@@ -567,6 +572,8 @@ class SqlLexer(RegexLexer):
567
572
  aliases = ['sql']
568
573
  filenames = ['*.sql']
569
574
  mimetypes = ['text/x-sql']
575
+ url = 'https://en.wikipedia.org/wiki/SQL'
576
+ version_added = ''
570
577
 
571
578
  flags = re.IGNORECASE
572
579
  tokens = {
@@ -574,101 +581,8 @@ class SqlLexer(RegexLexer):
574
581
  (r'\s+', Whitespace),
575
582
  (r'--.*\n?', Comment.Single),
576
583
  (r'/\*', Comment.Multiline, 'multiline-comments'),
577
- (words((
578
- 'ABORT', 'ABS', 'ABSOLUTE', 'ACCESS', 'ADA', 'ADD', 'ADMIN', 'AFTER',
579
- 'AGGREGATE', 'ALIAS', 'ALL', 'ALLOCATE', 'ALTER', 'ANALYSE', 'ANALYZE',
580
- 'AND', 'ANY', 'ARE', 'AS', 'ASC', 'ASENSITIVE', 'ASSERTION', 'ASSIGNMENT',
581
- 'ASYMMETRIC', 'AT', 'ATOMIC', 'AUTHORIZATION', 'AVG', 'BACKWARD',
582
- 'BEFORE', 'BEGIN', 'BETWEEN', 'BITVAR', 'BIT_LENGTH', 'BOTH', 'BREADTH',
583
- 'BY', 'C', 'CACHE', 'CALL', 'CALLED', 'CARDINALITY', 'CASCADE',
584
- 'CASCADED', 'CASE', 'CAST', 'CATALOG', 'CATALOG_NAME', 'CHAIN',
585
- 'CHARACTERISTICS', 'CHARACTER_LENGTH', 'CHARACTER_SET_CATALOG',
586
- 'CHARACTER_SET_NAME', 'CHARACTER_SET_SCHEMA', 'CHAR_LENGTH', 'CHECK',
587
- 'CHECKED', 'CHECKPOINT', 'CLASS', 'CLASS_ORIGIN', 'CLOB', 'CLOSE',
588
- 'CLUSTER', 'COALESCE', 'COBOL', 'COLLATE', 'COLLATION',
589
- 'COLLATION_CATALOG', 'COLLATION_NAME', 'COLLATION_SCHEMA', 'COLUMN',
590
- 'COLUMN_NAME', 'COMMAND_FUNCTION', 'COMMAND_FUNCTION_CODE', 'COMMENT',
591
- 'COMMIT', 'COMMITTED', 'COMPLETION', 'CONDITION_NUMBER', 'CONNECT',
592
- 'CONNECTION', 'CONNECTION_NAME', 'CONSTRAINT', 'CONSTRAINTS',
593
- 'CONSTRAINT_CATALOG', 'CONSTRAINT_NAME', 'CONSTRAINT_SCHEMA',
594
- 'CONSTRUCTOR', 'CONTAINS', 'CONTINUE', 'CONVERSION', 'CONVERT',
595
- 'COPY', 'CORRESPONDING', 'COUNT', 'CREATE', 'CREATEDB', 'CREATEUSER',
596
- 'CROSS', 'CUBE', 'CURRENT', 'CURRENT_DATE', 'CURRENT_PATH',
597
- 'CURRENT_ROLE', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER',
598
- 'CURSOR', 'CURSOR_NAME', 'CYCLE', 'DATA', 'DATABASE',
599
- 'DATETIME_INTERVAL_CODE', 'DATETIME_INTERVAL_PRECISION', 'DAY',
600
- 'DEALLOCATE', 'DECLARE', 'DEFAULT', 'DEFAULTS', 'DEFERRABLE',
601
- 'DEFERRED', 'DEFINED', 'DEFINER', 'DELETE', 'DELIMITER', 'DELIMITERS',
602
- 'DEREF', 'DESC', 'DESCRIBE', 'DESCRIPTOR', 'DESTROY', 'DESTRUCTOR',
603
- 'DETERMINISTIC', 'DIAGNOSTICS', 'DICTIONARY', 'DISCONNECT', 'DISPATCH',
604
- 'DISTINCT', 'DO', 'DOMAIN', 'DROP', 'DYNAMIC', 'DYNAMIC_FUNCTION',
605
- 'DYNAMIC_FUNCTION_CODE', 'EACH', 'ELSE', 'ELSIF', 'ENCODING',
606
- 'ENCRYPTED', 'END', 'END-EXEC', 'EQUALS', 'ESCAPE', 'EVERY', 'EXCEPTION',
607
- 'EXCEPT', 'EXCLUDING', 'EXCLUSIVE', 'EXEC', 'EXECUTE', 'EXISTING',
608
- 'EXISTS', 'EXPLAIN', 'EXTERNAL', 'EXTRACT', 'FALSE', 'FETCH', 'FINAL',
609
- 'FIRST', 'FOR', 'FORCE', 'FOREIGN', 'FORTRAN', 'FORWARD', 'FOUND', 'FREE',
610
- 'FREEZE', 'FROM', 'FULL', 'FUNCTION', 'G', 'GENERAL', 'GENERATED', 'GET',
611
- 'GLOBAL', 'GO', 'GOTO', 'GRANT', 'GRANTED', 'GROUP', 'GROUPING',
612
- 'HANDLER', 'HAVING', 'HIERARCHY', 'HOLD', 'HOST', 'IDENTITY', 'IF',
613
- 'IGNORE', 'ILIKE', 'IMMEDIATE', 'IMMEDIATELY', 'IMMUTABLE', 'IMPLEMENTATION', 'IMPLICIT',
614
- 'IN', 'INCLUDING', 'INCREMENT', 'INDEX', 'INDITCATOR', 'INFIX',
615
- 'INHERITS', 'INITIALIZE', 'INITIALLY', 'INNER', 'INOUT', 'INPUT',
616
- 'INSENSITIVE', 'INSERT', 'INSTANTIABLE', 'INSTEAD', 'INTERSECT', 'INTO',
617
- 'INVOKER', 'IS', 'ISNULL', 'ISOLATION', 'ITERATE', 'JOIN', 'KEY',
618
- 'KEY_MEMBER', 'KEY_TYPE', 'LANCOMPILER', 'LANGUAGE', 'LARGE', 'LAST',
619
- 'LATERAL', 'LEADING', 'LEFT', 'LENGTH', 'LESS', 'LEVEL', 'LIKE', 'LIMIT',
620
- 'LISTEN', 'LOAD', 'LOCAL', 'LOCALTIME', 'LOCALTIMESTAMP', 'LOCATION',
621
- 'LOCATOR', 'LOCK', 'LOWER', 'MAP', 'MATCH', 'MAX', 'MAXVALUE',
622
- 'MESSAGE_LENGTH', 'MESSAGE_OCTET_LENGTH', 'MESSAGE_TEXT', 'METHOD', 'MIN',
623
- 'MINUTE', 'MINVALUE', 'MOD', 'MODE', 'MODIFIES', 'MODIFY', 'MONTH',
624
- 'MORE', 'MOVE', 'MUMPS', 'NAMES', 'NATIONAL', 'NATURAL', 'NCHAR', 'NCLOB',
625
- 'NEW', 'NEXT', 'NO', 'NOCREATEDB', 'NOCREATEUSER', 'NONE', 'NOT',
626
- 'NOTHING', 'NOTIFY', 'NOTNULL', 'NULL', 'NULLABLE', 'NULLIF', 'OBJECT',
627
- 'OCTET_LENGTH', 'OF', 'OFF', 'OFFSET', 'OIDS', 'OLD', 'ON', 'ONLY',
628
- 'OPEN', 'OPERATION', 'OPERATOR', 'OPTION', 'OPTIONS', 'OR', 'ORDER',
629
- 'ORDINALITY', 'OUT', 'OUTER', 'OUTPUT', 'OVERLAPS', 'OVERLAY',
630
- 'OVERRIDING', 'OWNER', 'PAD', 'PARAMETER', 'PARAMETERS', 'PARAMETER_MODE',
631
- 'PARAMETER_NAME', 'PARAMETER_ORDINAL_POSITION',
632
- 'PARAMETER_SPECIFIC_CATALOG', 'PARAMETER_SPECIFIC_NAME',
633
- 'PARAMETER_SPECIFIC_SCHEMA', 'PARTIAL', 'PASCAL', 'PENDANT', 'PERIOD', 'PLACING',
634
- 'PLI', 'POSITION', 'POSTFIX', 'PRECEEDS', 'PRECISION', 'PREFIX', 'PREORDER',
635
- 'PREPARE', 'PRESERVE', 'PRIMARY', 'PRIOR', 'PRIVILEGES', 'PROCEDURAL',
636
- 'PROCEDURE', 'PUBLIC', 'READ', 'READS', 'RECHECK', 'RECURSIVE', 'REF',
637
- 'REFERENCES', 'REFERENCING', 'REINDEX', 'RELATIVE', 'RENAME',
638
- 'REPEATABLE', 'REPLACE', 'RESET', 'RESTART', 'RESTRICT', 'RESULT',
639
- 'RETURN', 'RETURNED_LENGTH', 'RETURNED_OCTET_LENGTH', 'RETURNED_SQLSTATE',
640
- 'RETURNS', 'REVOKE', 'RIGHT', 'ROLE', 'ROLLBACK', 'ROLLUP', 'ROUTINE',
641
- 'ROUTINE_CATALOG', 'ROUTINE_NAME', 'ROUTINE_SCHEMA', 'ROW', 'ROWS',
642
- 'ROW_COUNT', 'RULE', 'SAVE_POINT', 'SCALE', 'SCHEMA', 'SCHEMA_NAME',
643
- 'SCOPE', 'SCROLL', 'SEARCH', 'SECOND', 'SECURITY', 'SELECT', 'SELF',
644
- 'SENSITIVE', 'SERIALIZABLE', 'SERVER_NAME', 'SESSION', 'SESSION_USER',
645
- 'SET', 'SETOF', 'SETS', 'SHARE', 'SHOW', 'SIMILAR', 'SIMPLE', 'SIZE',
646
- 'SOME', 'SOURCE', 'SPACE', 'SPECIFIC', 'SPECIFICTYPE', 'SPECIFIC_NAME',
647
- 'SQL', 'SQLCODE', 'SQLERROR', 'SQLEXCEPTION', 'SQLSTATE', 'SQLWARNINIG',
648
- 'STABLE', 'START', 'STATE', 'STATEMENT', 'STATIC', 'STATISTICS', 'STDIN',
649
- 'STDOUT', 'STORAGE', 'STRICT', 'STRUCTURE', 'STYPE', 'SUBCLASS_ORIGIN',
650
- 'SUBLIST', 'SUBSTRING', 'SUCCEEDS', 'SUM', 'SYMMETRIC', 'SYSID', 'SYSTEM',
651
- 'SYSTEM_USER', 'TABLE', 'TABLE_NAME', ' TEMP', 'TEMPLATE', 'TEMPORARY',
652
- 'TERMINATE', 'THAN', 'THEN', 'TIME', 'TIMESTAMP', 'TIMEZONE_HOUR',
653
- 'TIMEZONE_MINUTE', 'TO', 'TOAST', 'TRAILING', 'TRANSACTION',
654
- 'TRANSACTIONS_COMMITTED', 'TRANSACTIONS_ROLLED_BACK', 'TRANSACTION_ACTIVE',
655
- 'TRANSFORM', 'TRANSFORMS', 'TRANSLATE', 'TRANSLATION', 'TREAT', 'TRIGGER',
656
- 'TRIGGER_CATALOG', 'TRIGGER_NAME', 'TRIGGER_SCHEMA', 'TRIM', 'TRUE',
657
- 'TRUNCATE', 'TRUSTED', 'TYPE', 'UNCOMMITTED', 'UNDER', 'UNENCRYPTED',
658
- 'UNION', 'UNIQUE', 'UNKNOWN', 'UNLISTEN', 'UNNAMED', 'UNNEST', 'UNTIL',
659
- 'UPDATE', 'UPPER', 'USAGE', 'USER', 'USER_DEFINED_TYPE_CATALOG',
660
- 'USER_DEFINED_TYPE_NAME', 'USER_DEFINED_TYPE_SCHEMA', 'USING', 'VACUUM',
661
- 'VALID', 'VALIDATOR', 'VALUES', 'VARIABLE', 'VERBOSE',
662
- 'VERSION', 'VERSIONS', 'VERSIONING', 'VIEW',
663
- 'VOLATILE', 'WHEN', 'WHENEVER', 'WHERE', 'WITH', 'WITHOUT', 'WORK',
664
- 'WRITE', 'YEAR', 'ZONE'), suffix=r'\b'),
665
- Keyword),
666
- (words((
667
- 'ARRAY', 'BIGINT', 'BINARY', 'BIT', 'BLOB', 'BOOLEAN', 'CHAR',
668
- 'CHARACTER', 'DATE', 'DEC', 'DECIMAL', 'FLOAT', 'INT', 'INTEGER',
669
- 'INTERVAL', 'NUMBER', 'NUMERIC', 'REAL', 'SERIAL', 'SMALLINT',
670
- 'VARCHAR', 'VARYING', 'INT8', 'SERIAL8', 'TEXT'), suffix=r'\b'),
671
- Name.Builtin),
584
+ (words(_sql_builtins.KEYWORDS, suffix=r'\b'), Keyword),
585
+ (words(_sql_builtins.DATATYPES, suffix=r'\b'), Name.Builtin),
672
586
  (r'[+*/<>=~!@#%^&|`?-]', Operator),
673
587
  (r'[0-9]+', Number.Integer),
674
588
  # TODO: Backslash escapes?
@@ -694,20 +608,22 @@ class TransactSqlLexer(RegexLexer):
694
608
  Transact-SQL (T-SQL) is Microsoft's and Sybase's proprietary extension to
695
609
  SQL.
696
610
 
697
- The list of keywords includes ODBC and keywords reserved for future use..
611
+ The list of keywords includes ODBC and keywords reserved for future use.
698
612
  """
699
613
 
700
614
  name = 'Transact-SQL'
701
615
  aliases = ['tsql', 't-sql']
702
616
  filenames = ['*.sql']
703
617
  mimetypes = ['text/x-tsql']
618
+ url = 'https://www.tsql.info'
619
+ version_added = ''
704
620
 
705
621
  flags = re.IGNORECASE
706
622
 
707
623
  tokens = {
708
624
  'root': [
709
625
  (r'\s+', Whitespace),
710
- (r'--.*?$\n?', Comment.Single),
626
+ (r'--.*[$|\n]?', Comment.Single),
711
627
  (r'/\*', Comment.Multiline, 'multiline-comments'),
712
628
  (words(_tsql_builtins.OPERATORS), Operator),
713
629
  (words(_tsql_builtins.OPERATOR_WORDS, suffix=r'\b'), Operator.Word),
@@ -785,6 +701,8 @@ class MySqlLexer(RegexLexer):
785
701
  name = 'MySQL'
786
702
  aliases = ['mysql']
787
703
  mimetypes = ['text/x-mysql']
704
+ url = 'https://www.mysql.com'
705
+ version_added = ''
788
706
 
789
707
  flags = re.IGNORECASE
790
708
  tokens = {
@@ -848,10 +766,13 @@ class MySqlLexer(RegexLexer):
848
766
  (r'\b(character)(\s+)(set)\b', bygroups(Keyword, Whitespace, Keyword)),
849
767
  # In all other known cases, "SET" is tokenized by MYSQL_DATATYPES.
850
768
 
851
- (words(MYSQL_CONSTANTS, prefix=r'\b', suffix=r'\b'), Name.Constant),
852
- (words(MYSQL_DATATYPES, prefix=r'\b', suffix=r'\b'), Keyword.Type),
853
- (words(MYSQL_KEYWORDS, prefix=r'\b', suffix=r'\b'), Keyword),
854
- (words(MYSQL_FUNCTIONS, prefix=r'\b', suffix=r'\b(\s*)(\()'),
769
+ (words(_mysql_builtins.MYSQL_CONSTANTS, prefix=r'\b', suffix=r'\b'),
770
+ Name.Constant),
771
+ (words(_mysql_builtins.MYSQL_DATATYPES, prefix=r'\b', suffix=r'\b'),
772
+ Keyword.Type),
773
+ (words(_mysql_builtins.MYSQL_KEYWORDS, prefix=r'\b', suffix=r'\b'),
774
+ Keyword),
775
+ (words(_mysql_builtins.MYSQL_FUNCTIONS, prefix=r'\b', suffix=r'\b(\s*)(\()'),
855
776
  bygroups(Name.Function, Whitespace, Punctuation)),
856
777
 
857
778
  # Schema object names
@@ -873,7 +794,8 @@ class MySqlLexer(RegexLexer):
873
794
  'optimizer-hints': [
874
795
  (r'[^*a-z]+', Comment.Special),
875
796
  (r'\*/', Comment.Special, '#pop'),
876
- (words(MYSQL_OPTIMIZER_HINTS, suffix=r'\b'), Comment.Preproc),
797
+ (words(_mysql_builtins.MYSQL_OPTIMIZER_HINTS, suffix=r'\b'),
798
+ Comment.Preproc),
877
799
  ('[a-z]+', Comment.Special),
878
800
  (r'\*', Comment.Special),
879
801
  ],
@@ -956,17 +878,178 @@ class MySqlLexer(RegexLexer):
956
878
  return rating
957
879
 
958
880
 
881
+ class GoogleSqlLexer(RegexLexer):
882
+ """
883
+ GoogleSQL is Google's standard SQL dialect, formerly known as ZetaSQL.
884
+
885
+ The list of keywords includes reserved words for future use.
886
+ """
887
+
888
+ name = 'GoogleSQL'
889
+ aliases = ['googlesql', 'zetasql']
890
+ filenames = ['*.googlesql', '*.googlesql.sql']
891
+ mimetypes = ['text/x-google-sql', 'text/x-google-sql-aux']
892
+ url = 'https://cloud.google.com/bigquery/googlesql'
893
+ version_added = '2.19'
894
+
895
+ flags = re.IGNORECASE
896
+ tokens = {
897
+ 'root': [
898
+ (r'\s+', Whitespace),
899
+
900
+ # Comments
901
+ (r'(?:#|--\s+).*', Comment.Single),
902
+ (r'/\*', Comment.Multiline, 'multiline-comment'),
903
+
904
+ # Hexadecimal literals
905
+ (r"x'([0-9a-f]{2})+'", Number.Hex),
906
+ (r'0x[0-9a-f]+', Number.Hex),
907
+
908
+ # Binary literals
909
+ (r"b'[01]+'", Number.Bin),
910
+ (r'0b[01]+', Number.Bin),
911
+
912
+ # Numeric literals
913
+ (r'[0-9]+\.[0-9]*(e[+-]?[0-9]+)?', Number.Float), # Mandatory integer, optional fraction and exponent
914
+ (r'[0-9]*\.[0-9]+(e[+-]?[0-9]+)?', Number.Float), # Mandatory fraction, optional integer and exponent
915
+ (r'[0-9]+e[+-]?[0-9]+', Number.Float), # Exponents with integer significands are still floats
916
+ (r'[0-9]+(?=[^0-9a-z$_\u0080-\uffff])', Number.Integer), # Integers that are not in a schema object name
917
+
918
+ # Date literals
919
+ (r"\{\s*d\s*(?P<quote>['\"])\s*\d{2}(\d{2})?.?\d{2}.?\d{2}\s*(?P=quote)\s*\}",
920
+ Literal.Date),
921
+
922
+ # Time literals
923
+ (r"\{\s*t\s*(?P<quote>['\"])\s*(?:\d+\s+)?\d{1,2}.?\d{1,2}.?\d{1,2}(\.\d*)?\s*(?P=quote)\s*\}",
924
+ Literal.Date),
925
+
926
+ # Timestamp literals
927
+ (
928
+ r"\{\s*ts\s*(?P<quote>['\"])\s*"
929
+ r"\d{2}(?:\d{2})?.?\d{2}.?\d{2}" # Date part
930
+ r"\s+" # Whitespace between date and time
931
+ r"\d{1,2}.?\d{1,2}.?\d{1,2}(\.\d*)?" # Time part
932
+ r"\s*(?P=quote)\s*\}",
933
+ Literal.Date
934
+ ),
935
+
936
+ # String literals
937
+ (r"'", String.Single, 'single-quoted-string'),
938
+ (r'"', String.Double, 'double-quoted-string'),
939
+
940
+ # Variables
941
+ (r'@@(?:global\.|persist\.|persist_only\.|session\.)?[a-z_]+', Name.Variable),
942
+ (r'@[a-z0-9_$.]+', Name.Variable),
943
+ (r"@'", Name.Variable, 'single-quoted-variable'),
944
+ (r'@"', Name.Variable, 'double-quoted-variable'),
945
+ (r"@`", Name.Variable, 'backtick-quoted-variable'),
946
+ (r'\?', Name.Variable), # For demonstrating prepared statements
947
+
948
+ # Exceptions; these words tokenize differently in different contexts.
949
+ (r'\b(set)(?!\s*\()', Keyword),
950
+ (r'\b(character)(\s+)(set)\b', bygroups(Keyword, Whitespace, Keyword)),
951
+
952
+ # Constants, types, keywords, functions, operators
953
+ (words(_googlesql_builtins.constants, prefix=r'\b', suffix=r'\b'), Name.Constant),
954
+ (words(_googlesql_builtins.types, prefix=r'\b', suffix=r'\b'), Keyword.Type),
955
+ (words(_googlesql_builtins.keywords, prefix=r'\b', suffix=r'\b'), Keyword),
956
+ (words(_googlesql_builtins.functionnames, prefix=r'\b', suffix=r'\b(\s*)(\()'),
957
+ bygroups(Name.Function, Whitespace, Punctuation)),
958
+ (words(_googlesql_builtins.operators, prefix=r'\b', suffix=r'\b'), Operator),
959
+
960
+ # Schema object names
961
+ #
962
+ # Note: Although the first regex supports unquoted all-numeric
963
+ # identifiers, this will not be a problem in practice because
964
+ # numeric literals have already been handled above.
965
+ #
966
+ ('[0-9a-z$_\u0080-\uffff]+', Name),
967
+ (r'`', Name.Quoted, 'schema-object-name'),
968
+
969
+ # Punctuation
970
+ (r'[(),.;]', Punctuation),
971
+ ],
972
+
973
+ # Multiline comment substates
974
+ # ---------------------------
975
+
976
+ 'multiline-comment': [
977
+ (r'[^*]+', Comment.Multiline),
978
+ (r'\*/', Comment.Multiline, '#pop'),
979
+ (r'\*', Comment.Multiline),
980
+ ],
981
+
982
+ # String substates
983
+ # ----------------
984
+
985
+ 'single-quoted-string': [
986
+ (r"[^'\\]+", String.Single),
987
+ (r"''", String.Escape),
988
+ (r"""\\[0'"bnrtZ\\%_]""", String.Escape),
989
+ (r"'", String.Single, '#pop'),
990
+ ],
991
+
992
+ 'double-quoted-string': [
993
+ (r'[^"\\]+', String.Double),
994
+ (r'""', String.Escape),
995
+ (r"""\\[0'"bnrtZ\\%_]""", String.Escape),
996
+ (r'"', String.Double, '#pop'),
997
+ ],
998
+
999
+ # Variable substates
1000
+ # ------------------
1001
+
1002
+ 'single-quoted-variable': [
1003
+ (r"[^']+", Name.Variable),
1004
+ (r"''", Name.Variable),
1005
+ (r"'", Name.Variable, '#pop'),
1006
+ ],
1007
+
1008
+ 'double-quoted-variable': [
1009
+ (r'[^"]+', Name.Variable),
1010
+ (r'""', Name.Variable),
1011
+ (r'"', Name.Variable, '#pop'),
1012
+ ],
1013
+
1014
+ 'backtick-quoted-variable': [
1015
+ (r'[^`]+', Name.Variable),
1016
+ (r'``', Name.Variable),
1017
+ (r'`', Name.Variable, '#pop'),
1018
+ ],
1019
+
1020
+ # Schema object name substates
1021
+ # ----------------------------
1022
+ #
1023
+ # "Name.Quoted" and "Name.Quoted.Escape" are non-standard but
1024
+ # formatters will style them as "Name" by default but add
1025
+ # additional styles based on the token name. This gives users
1026
+ # flexibility to add custom styles as desired.
1027
+ #
1028
+ 'schema-object-name': [
1029
+ (r'[^`]+', Name.Quoted),
1030
+ (r'``', Name.Quoted.Escape),
1031
+ (r'`', Name.Quoted, '#pop'),
1032
+ ],
1033
+ }
1034
+
1035
+ def analyse_text(text):
1036
+ tokens = collections.Counter(text.split())
1037
+ return 0.001 * sum(count for t, count in tokens.items()
1038
+ if t in googlesql_identifiers)
1039
+
1040
+
959
1041
  class SqliteConsoleLexer(Lexer):
960
1042
  """
961
1043
  Lexer for example sessions using sqlite3.
962
-
963
- .. versionadded:: 0.11
964
1044
  """
965
1045
 
966
1046
  name = 'sqlite3con'
967
1047
  aliases = ['sqlite3']
968
1048
  filenames = ['*.sqlite3-console']
969
1049
  mimetypes = ['text/x-sqlite3-console']
1050
+ url = 'https://www.sqlite.org'
1051
+ version_added = '0.11'
1052
+ _example = "sqlite3/sqlite3.sqlite3-console"
970
1053
 
971
1054
  def get_tokens_unprocessed(self, data):
972
1055
  sql = SqlLexer(**self.options)
@@ -1000,14 +1083,13 @@ class SqliteConsoleLexer(Lexer):
1000
1083
  class RqlLexer(RegexLexer):
1001
1084
  """
1002
1085
  Lexer for Relation Query Language.
1003
-
1004
- .. versionadded:: 2.0
1005
1086
  """
1006
1087
  name = 'RQL'
1007
1088
  url = 'http://www.logilab.org/project/rql'
1008
1089
  aliases = ['rql']
1009
1090
  filenames = ['*.rql']
1010
1091
  mimetypes = ['text/x-rql']
1092
+ version_added = '2.0'
1011
1093
 
1012
1094
  flags = re.IGNORECASE
1013
1095
  tokens = {
@@ -7,7 +7,7 @@
7
7
  The description of the format can be found in the wiki:
8
8
  https://wiki.archlinux.org/title/.SRCINFO
9
9
 
10
- :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
10
+ :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
11
11
  :license: BSD, see LICENSE for details.
12
12
  """
13
13
 
@@ -34,13 +34,13 @@ architecture_dependent_keywords = (
34
34
 
35
35
  class SrcinfoLexer(RegexLexer):
36
36
  """Lexer for .SRCINFO files used by Arch Linux Packages.
37
-
38
- .. versionadded:: 2.11
39
37
  """
40
38
 
41
39
  name = 'Srcinfo'
42
40
  aliases = ['srcinfo']
43
41
  filenames = ['.SRCINFO']
42
+ url = 'https://wiki.archlinux.org/title/.SRCINFO'
43
+ version_added = '2.11'
44
44
 
45
45
  tokens = {
46
46
  'root': [
@@ -4,7 +4,7 @@
4
4
 
5
5
  Lexer for Stata
6
6
 
7
- :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  """
10
10
 
@@ -21,8 +21,6 @@ __all__ = ['StataLexer']
21
21
  class StataLexer(RegexLexer):
22
22
  """
23
23
  For Stata do files.
24
-
25
- .. versionadded:: 2.2
26
24
  """
27
25
  # Syntax based on
28
26
  # - http://fmwww.bc.edu/RePEc/bocode/s/synlightlist.ado
@@ -31,6 +29,7 @@ class StataLexer(RegexLexer):
31
29
 
32
30
  name = 'Stata'
33
31
  url = 'http://www.stata.com/'
32
+ version_added = '2.2'
34
33
  aliases = ['stata', 'do']
35
34
  filenames = ['*.do', '*.ado']
36
35
  mimetypes = ['text/x-stata', 'text/stata', 'application/x-stata']
@@ -4,7 +4,7 @@
4
4
 
5
5
  Lexer for SuperCollider
6
6
 
7
- :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  """
10
10
 
@@ -20,8 +20,6 @@ __all__ = ['SuperColliderLexer']
20
20
  class SuperColliderLexer(RegexLexer):
21
21
  """
22
22
  For SuperCollider source code.
23
-
24
- .. versionadded:: 2.1
25
23
  """
26
24
 
27
25
  name = 'SuperCollider'
@@ -29,6 +27,7 @@ class SuperColliderLexer(RegexLexer):
29
27
  aliases = ['supercollider', 'sc']
30
28
  filenames = ['*.sc', '*.scd']
31
29
  mimetypes = ['application/supercollider', 'text/supercollider']
30
+ version_added = '2.1'
32
31
 
33
32
  flags = re.DOTALL | re.MULTILINE
34
33
  tokens = {