pygments.rb 2.4.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (348) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +8 -8
  3. data/.github/workflows/release.yml +5 -5
  4. data/.gitignore +2 -0
  5. data/.rubocop.yml +1 -1
  6. data/CHANGELOG.adoc +9 -1
  7. data/README.adoc +2 -2
  8. data/lib/pygments/version.rb +1 -1
  9. data/pygments.rb.gemspec +2 -2
  10. data/vendor/pygments-main/bin/pygmentize +1 -1
  11. data/vendor/pygments-main/pygments/__init__.py +2 -2
  12. data/vendor/pygments-main/pygments/__main__.py +1 -1
  13. data/vendor/pygments-main/pygments/cmdline.py +12 -12
  14. data/vendor/pygments-main/pygments/console.py +5 -5
  15. data/vendor/pygments-main/pygments/filter.py +2 -3
  16. data/vendor/pygments-main/pygments/filters/__init__.py +4 -4
  17. data/vendor/pygments-main/pygments/formatter.py +6 -1
  18. data/vendor/pygments-main/pygments/formatters/__init__.py +7 -8
  19. data/vendor/pygments-main/pygments/formatters/_mapping.py +0 -0
  20. data/vendor/pygments-main/pygments/formatters/bbcode.py +2 -2
  21. data/vendor/pygments-main/pygments/formatters/groff.py +3 -3
  22. data/vendor/pygments-main/pygments/formatters/html.py +38 -40
  23. data/vendor/pygments-main/pygments/formatters/img.py +51 -11
  24. data/vendor/pygments-main/pygments/formatters/irc.py +1 -1
  25. data/vendor/pygments-main/pygments/formatters/latex.py +24 -27
  26. data/vendor/pygments-main/pygments/formatters/other.py +3 -4
  27. data/vendor/pygments-main/pygments/formatters/pangomarkup.py +2 -2
  28. data/vendor/pygments-main/pygments/formatters/rtf.py +228 -25
  29. data/vendor/pygments-main/pygments/formatters/svg.py +17 -20
  30. data/vendor/pygments-main/pygments/formatters/terminal.py +1 -1
  31. data/vendor/pygments-main/pygments/formatters/terminal256.py +1 -1
  32. data/vendor/pygments-main/pygments/lexer.py +51 -33
  33. data/vendor/pygments-main/pygments/lexers/__init__.py +12 -12
  34. data/vendor/pygments-main/pygments/lexers/_ada_builtins.py +1 -1
  35. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1 -1
  36. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +1 -1
  37. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +2 -2
  38. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1 -1
  39. data/vendor/pygments-main/pygments/lexers/_css_builtins.py +1 -1
  40. data/vendor/pygments-main/pygments/lexers/_julia_builtins.py +1 -1
  41. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -1
  42. data/vendor/pygments-main/pygments/lexers/_lilypond_builtins.py +1 -1
  43. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +5 -5
  44. data/vendor/pygments-main/pygments/lexers/_luau_builtins.py +62 -0
  45. data/vendor/pygments-main/pygments/lexers/_mapping.py +41 -11
  46. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -1
  47. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +3 -3
  48. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
  49. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +3 -3
  50. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +5 -5
  51. data/vendor/pygments-main/pygments/lexers/_qlik_builtins.py +1 -1
  52. data/vendor/pygments-main/pygments/lexers/_scheme_builtins.py +1 -1
  53. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +4 -4
  54. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +3 -3
  55. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +1 -1
  56. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +1 -1
  57. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
  58. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +1 -1
  59. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +1 -1
  60. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
  61. data/vendor/pygments-main/pygments/lexers/actionscript.py +6 -8
  62. data/vendor/pygments-main/pygments/lexers/ada.py +3 -3
  63. data/vendor/pygments-main/pygments/lexers/agile.py +3 -1
  64. data/vendor/pygments-main/pygments/lexers/algebra.py +9 -13
  65. data/vendor/pygments-main/pygments/lexers/ambient.py +2 -3
  66. data/vendor/pygments-main/pygments/lexers/amdgpu.py +3 -3
  67. data/vendor/pygments-main/pygments/lexers/ampl.py +2 -3
  68. data/vendor/pygments-main/pygments/lexers/apdlexer.py +4 -3
  69. data/vendor/pygments-main/pygments/lexers/apl.py +2 -3
  70. data/vendor/pygments-main/pygments/lexers/archetype.py +8 -12
  71. data/vendor/pygments-main/pygments/lexers/arrow.py +2 -3
  72. data/vendor/pygments-main/pygments/lexers/arturo.py +2 -3
  73. data/vendor/pygments-main/pygments/lexers/asc.py +4 -4
  74. data/vendor/pygments-main/pygments/lexers/asm.py +28 -15
  75. data/vendor/pygments-main/pygments/lexers/asn1.py +178 -0
  76. data/vendor/pygments-main/pygments/lexers/automation.py +6 -8
  77. data/vendor/pygments-main/pygments/lexers/bare.py +2 -3
  78. data/vendor/pygments-main/pygments/lexers/basic.py +48 -57
  79. data/vendor/pygments-main/pygments/lexers/bdd.py +3 -4
  80. data/vendor/pygments-main/pygments/lexers/berry.py +4 -4
  81. data/vendor/pygments-main/pygments/lexers/bibtex.py +5 -5
  82. data/vendor/pygments-main/pygments/lexers/blueprint.py +173 -0
  83. data/vendor/pygments-main/pygments/lexers/boa.py +4 -4
  84. data/vendor/pygments-main/pygments/lexers/bqn.py +109 -0
  85. data/vendor/pygments-main/pygments/lexers/business.py +21 -22
  86. data/vendor/pygments-main/pygments/lexers/c_cpp.py +9 -4
  87. data/vendor/pygments-main/pygments/lexers/c_like.py +99 -27
  88. data/vendor/pygments-main/pygments/lexers/capnproto.py +2 -3
  89. data/vendor/pygments-main/pygments/lexers/carbon.py +10 -11
  90. data/vendor/pygments-main/pygments/lexers/cddl.py +8 -9
  91. data/vendor/pygments-main/pygments/lexers/chapel.py +2 -3
  92. data/vendor/pygments-main/pygments/lexers/clean.py +2 -1
  93. data/vendor/pygments-main/pygments/lexers/comal.py +2 -1
  94. data/vendor/pygments-main/pygments/lexers/compiled.py +2 -1
  95. data/vendor/pygments-main/pygments/lexers/configs.py +342 -108
  96. data/vendor/pygments-main/pygments/lexers/console.py +5 -5
  97. data/vendor/pygments-main/pygments/lexers/cplint.py +2 -3
  98. data/vendor/pygments-main/pygments/lexers/crystal.py +4 -5
  99. data/vendor/pygments-main/pygments/lexers/csound.py +6 -8
  100. data/vendor/pygments-main/pygments/lexers/css.py +5 -5
  101. data/vendor/pygments-main/pygments/lexers/d.py +4 -3
  102. data/vendor/pygments-main/pygments/lexers/dalvik.py +2 -3
  103. data/vendor/pygments-main/pygments/lexers/data.py +8 -12
  104. data/vendor/pygments-main/pygments/lexers/dax.py +2 -3
  105. data/vendor/pygments-main/pygments/lexers/devicetree.py +2 -3
  106. data/vendor/pygments-main/pygments/lexers/diff.py +7 -6
  107. data/vendor/pygments-main/pygments/lexers/dns.py +109 -0
  108. data/vendor/pygments-main/pygments/lexers/dotnet.py +19 -14
  109. data/vendor/pygments-main/pygments/lexers/dsls.py +24 -35
  110. data/vendor/pygments-main/pygments/lexers/dylan.py +8 -16
  111. data/vendor/pygments-main/pygments/lexers/ecl.py +2 -3
  112. data/vendor/pygments-main/pygments/lexers/eiffel.py +3 -4
  113. data/vendor/pygments-main/pygments/lexers/elm.py +3 -4
  114. data/vendor/pygments-main/pygments/lexers/elpi.py +28 -21
  115. data/vendor/pygments-main/pygments/lexers/email.py +3 -3
  116. data/vendor/pygments-main/pygments/lexers/erlang.py +22 -24
  117. data/vendor/pygments-main/pygments/lexers/esoteric.py +11 -12
  118. data/vendor/pygments-main/pygments/lexers/ezhil.py +2 -3
  119. data/vendor/pygments-main/pygments/lexers/factor.py +2 -3
  120. data/vendor/pygments-main/pygments/lexers/fantom.py +3 -3
  121. data/vendor/pygments-main/pygments/lexers/felix.py +9 -10
  122. data/vendor/pygments-main/pygments/lexers/fift.py +2 -1
  123. data/vendor/pygments-main/pygments/lexers/floscript.py +2 -3
  124. data/vendor/pygments-main/pygments/lexers/forth.py +2 -3
  125. data/vendor/pygments-main/pygments/lexers/fortran.py +6 -7
  126. data/vendor/pygments-main/pygments/lexers/foxpro.py +3 -3
  127. data/vendor/pygments-main/pygments/lexers/freefem.py +2 -3
  128. data/vendor/pygments-main/pygments/lexers/func.py +3 -1
  129. data/vendor/pygments-main/pygments/lexers/functional.py +2 -1
  130. data/vendor/pygments-main/pygments/lexers/futhark.py +6 -7
  131. data/vendor/pygments-main/pygments/lexers/gcodelexer.py +3 -3
  132. data/vendor/pygments-main/pygments/lexers/gdscript.py +2 -1
  133. data/vendor/pygments-main/pygments/lexers/go.py +3 -4
  134. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +6 -9
  135. data/vendor/pygments-main/pygments/lexers/graph.py +12 -9
  136. data/vendor/pygments-main/pygments/lexers/graphics.py +13 -17
  137. data/vendor/pygments-main/pygments/lexers/graphql.py +176 -0
  138. data/vendor/pygments-main/pygments/lexers/graphviz.py +2 -3
  139. data/vendor/pygments-main/pygments/lexers/gsql.py +2 -3
  140. data/vendor/pygments-main/pygments/lexers/haskell.py +27 -32
  141. data/vendor/pygments-main/pygments/lexers/haxe.py +3 -5
  142. data/vendor/pygments-main/pygments/lexers/hdl.py +8 -7
  143. data/vendor/pygments-main/pygments/lexers/hexdump.py +3 -3
  144. data/vendor/pygments-main/pygments/lexers/html.py +34 -13
  145. data/vendor/pygments-main/pygments/lexers/idl.py +2 -3
  146. data/vendor/pygments-main/pygments/lexers/igor.py +305 -290
  147. data/vendor/pygments-main/pygments/lexers/inferno.py +2 -3
  148. data/vendor/pygments-main/pygments/lexers/installers.py +7 -9
  149. data/vendor/pygments-main/pygments/lexers/int_fiction.py +150 -162
  150. data/vendor/pygments-main/pygments/lexers/iolang.py +2 -3
  151. data/vendor/pygments-main/pygments/lexers/j.py +2 -3
  152. data/vendor/pygments-main/pygments/lexers/javascript.py +18 -19
  153. data/vendor/pygments-main/pygments/lexers/jmespath.py +2 -1
  154. data/vendor/pygments-main/pygments/lexers/jslt.py +2 -3
  155. data/vendor/pygments-main/pygments/lexers/jsonnet.py +4 -3
  156. data/vendor/pygments-main/pygments/lexers/jsx.py +75 -0
  157. data/vendor/pygments-main/pygments/lexers/julia.py +4 -5
  158. data/vendor/pygments-main/pygments/lexers/jvm.py +98 -116
  159. data/vendor/pygments-main/pygments/lexers/kuin.py +2 -3
  160. data/vendor/pygments-main/pygments/lexers/kusto.py +93 -0
  161. data/vendor/pygments-main/pygments/lexers/ldap.py +155 -0
  162. data/vendor/pygments-main/pygments/lexers/lean.py +241 -0
  163. data/vendor/pygments-main/pygments/lexers/lilypond.py +2 -3
  164. data/vendor/pygments-main/pygments/lexers/lisp.py +373 -65
  165. data/vendor/pygments-main/pygments/lexers/macaulay2.py +53 -4
  166. data/vendor/pygments-main/pygments/lexers/make.py +7 -5
  167. data/vendor/pygments-main/pygments/lexers/markup.py +242 -91
  168. data/vendor/pygments-main/pygments/lexers/math.py +2 -1
  169. data/vendor/pygments-main/pygments/lexers/matlab.py +10 -12
  170. data/vendor/pygments-main/pygments/lexers/maxima.py +2 -3
  171. data/vendor/pygments-main/pygments/lexers/meson.py +2 -3
  172. data/vendor/pygments-main/pygments/lexers/mime.py +4 -4
  173. data/vendor/pygments-main/pygments/lexers/minecraft.py +24 -27
  174. data/vendor/pygments-main/pygments/lexers/mips.py +3 -1
  175. data/vendor/pygments-main/pygments/lexers/ml.py +59 -61
  176. data/vendor/pygments-main/pygments/lexers/modeling.py +19 -22
  177. data/vendor/pygments-main/pygments/lexers/modula2.py +2 -3
  178. data/vendor/pygments-main/pygments/lexers/mojo.py +704 -0
  179. data/vendor/pygments-main/pygments/lexers/monte.py +2 -3
  180. data/vendor/pygments-main/pygments/lexers/mosel.py +3 -3
  181. data/vendor/pygments-main/pygments/lexers/ncl.py +4 -3
  182. data/vendor/pygments-main/pygments/lexers/nimrod.py +7 -8
  183. data/vendor/pygments-main/pygments/lexers/nit.py +2 -3
  184. data/vendor/pygments-main/pygments/lexers/nix.py +40 -31
  185. data/vendor/pygments-main/pygments/lexers/oberon.py +3 -3
  186. data/vendor/pygments-main/pygments/lexers/objective.py +14 -6
  187. data/vendor/pygments-main/pygments/lexers/ooc.py +2 -3
  188. data/vendor/pygments-main/pygments/lexers/openscad.py +96 -0
  189. data/vendor/pygments-main/pygments/lexers/other.py +2 -1
  190. data/vendor/pygments-main/pygments/lexers/parasail.py +2 -3
  191. data/vendor/pygments-main/pygments/lexers/parsers.py +41 -44
  192. data/vendor/pygments-main/pygments/lexers/pascal.py +6 -3
  193. data/vendor/pygments-main/pygments/lexers/pawn.py +5 -5
  194. data/vendor/pygments-main/pygments/lexers/perl.py +3 -3
  195. data/vendor/pygments-main/pygments/lexers/phix.py +2 -3
  196. data/vendor/pygments-main/pygments/lexers/php.py +4 -5
  197. data/vendor/pygments-main/pygments/lexers/pointless.py +2 -3
  198. data/vendor/pygments-main/pygments/lexers/pony.py +3 -3
  199. data/vendor/pygments-main/pygments/lexers/praat.py +2 -3
  200. data/vendor/pygments-main/pygments/lexers/procfile.py +2 -3
  201. data/vendor/pygments-main/pygments/lexers/prolog.py +23 -9
  202. data/vendor/pygments-main/pygments/lexers/promql.py +2 -1
  203. data/vendor/pygments-main/pygments/lexers/prql.py +251 -0
  204. data/vendor/pygments-main/pygments/lexers/ptx.py +119 -0
  205. data/vendor/pygments-main/pygments/lexers/python.py +24 -24
  206. data/vendor/pygments-main/pygments/lexers/q.py +5 -6
  207. data/vendor/pygments-main/pygments/lexers/qlik.py +3 -3
  208. data/vendor/pygments-main/pygments/lexers/qvt.py +5 -3
  209. data/vendor/pygments-main/pygments/lexers/r.py +8 -6
  210. data/vendor/pygments-main/pygments/lexers/rdf.py +19 -13
  211. data/vendor/pygments-main/pygments/lexers/rebol.py +7 -7
  212. data/vendor/pygments-main/pygments/lexers/resource.py +5 -6
  213. data/vendor/pygments-main/pygments/lexers/ride.py +4 -5
  214. data/vendor/pygments-main/pygments/lexers/rita.py +2 -3
  215. data/vendor/pygments-main/pygments/lexers/rnc.py +2 -3
  216. data/vendor/pygments-main/pygments/lexers/roboconf.py +5 -5
  217. data/vendor/pygments-main/pygments/lexers/robotframework.py +2 -3
  218. data/vendor/pygments-main/pygments/lexers/ruby.py +8 -13
  219. data/vendor/pygments-main/pygments/lexers/rust.py +9 -10
  220. data/vendor/pygments-main/pygments/lexers/sas.py +3 -3
  221. data/vendor/pygments-main/pygments/lexers/savi.py +131 -130
  222. data/vendor/pygments-main/pygments/lexers/scdoc.py +13 -7
  223. data/vendor/pygments-main/pygments/lexers/scripting.py +354 -42
  224. data/vendor/pygments-main/pygments/lexers/sgf.py +2 -3
  225. data/vendor/pygments-main/pygments/lexers/shell.py +107 -129
  226. data/vendor/pygments-main/pygments/lexers/sieve.py +3 -3
  227. data/vendor/pygments-main/pygments/lexers/slash.py +4 -5
  228. data/vendor/pygments-main/pygments/lexers/smalltalk.py +3 -5
  229. data/vendor/pygments-main/pygments/lexers/smithy.py +2 -3
  230. data/vendor/pygments-main/pygments/lexers/smv.py +3 -3
  231. data/vendor/pygments-main/pygments/lexers/snobol.py +3 -3
  232. data/vendor/pygments-main/pygments/lexers/solidity.py +3 -3
  233. data/vendor/pygments-main/pygments/lexers/soong.py +78 -0
  234. data/vendor/pygments-main/pygments/lexers/sophia.py +3 -4
  235. data/vendor/pygments-main/pygments/lexers/special.py +8 -3
  236. data/vendor/pygments-main/pygments/lexers/spice.py +15 -16
  237. data/vendor/pygments-main/pygments/lexers/sql.py +24 -18
  238. data/vendor/pygments-main/pygments/lexers/srcinfo.py +3 -3
  239. data/vendor/pygments-main/pygments/lexers/stata.py +2 -3
  240. data/vendor/pygments-main/pygments/lexers/supercollider.py +2 -3
  241. data/vendor/pygments-main/pygments/lexers/tact.py +303 -0
  242. data/vendor/pygments-main/pygments/lexers/tal.py +13 -10
  243. data/vendor/pygments-main/pygments/lexers/tcl.py +2 -3
  244. data/vendor/pygments-main/pygments/lexers/teal.py +2 -3
  245. data/vendor/pygments-main/pygments/lexers/templates.py +131 -72
  246. data/vendor/pygments-main/pygments/lexers/teraterm.py +2 -3
  247. data/vendor/pygments-main/pygments/lexers/testing.py +4 -5
  248. data/vendor/pygments-main/pygments/lexers/text.py +2 -1
  249. data/vendor/pygments-main/pygments/lexers/textedit.py +9 -6
  250. data/vendor/pygments-main/pygments/lexers/textfmts.py +20 -15
  251. data/vendor/pygments-main/pygments/lexers/theorem.py +41 -115
  252. data/vendor/pygments-main/pygments/lexers/thingsdb.py +50 -26
  253. data/vendor/pygments-main/pygments/lexers/tlb.py +3 -1
  254. data/vendor/pygments-main/pygments/lexers/tls.py +54 -0
  255. data/vendor/pygments-main/pygments/lexers/tnt.py +2 -3
  256. data/vendor/pygments-main/pygments/lexers/trafficscript.py +3 -3
  257. data/vendor/pygments-main/pygments/lexers/typoscript.py +6 -7
  258. data/vendor/pygments-main/pygments/lexers/typst.py +104 -0
  259. data/vendor/pygments-main/pygments/lexers/ul4.py +47 -5
  260. data/vendor/pygments-main/pygments/lexers/unicon.py +9 -7
  261. data/vendor/pygments-main/pygments/lexers/urbi.py +3 -3
  262. data/vendor/pygments-main/pygments/lexers/usd.py +6 -11
  263. data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
  264. data/vendor/pygments-main/pygments/lexers/verification.py +4 -5
  265. data/vendor/pygments-main/pygments/lexers/verifpal.py +65 -0
  266. data/vendor/pygments-main/pygments/lexers/vip.py +150 -0
  267. data/vendor/pygments-main/pygments/lexers/vyper.py +140 -0
  268. data/vendor/pygments-main/pygments/lexers/web.py +2 -1
  269. data/vendor/pygments-main/pygments/lexers/webassembly.py +2 -3
  270. data/vendor/pygments-main/pygments/lexers/webidl.py +2 -3
  271. data/vendor/pygments-main/pygments/lexers/webmisc.py +11 -15
  272. data/vendor/pygments-main/pygments/lexers/wgsl.py +6 -7
  273. data/vendor/pygments-main/pygments/lexers/whiley.py +2 -3
  274. data/vendor/pygments-main/pygments/lexers/wowtoc.py +3 -3
  275. data/vendor/pygments-main/pygments/lexers/wren.py +3 -4
  276. data/vendor/pygments-main/pygments/lexers/x10.py +6 -7
  277. data/vendor/pygments-main/pygments/lexers/xorg.py +2 -1
  278. data/vendor/pygments-main/pygments/lexers/yang.py +2 -3
  279. data/vendor/pygments-main/pygments/lexers/yara.py +69 -0
  280. data/vendor/pygments-main/pygments/lexers/zig.py +2 -1
  281. data/vendor/pygments-main/pygments/modeline.py +4 -4
  282. data/vendor/pygments-main/pygments/plugin.py +3 -19
  283. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  284. data/vendor/pygments-main/pygments/scanner.py +1 -1
  285. data/vendor/pygments-main/pygments/sphinxext.py +38 -8
  286. data/vendor/pygments-main/pygments/style.py +8 -2
  287. data/vendor/pygments-main/pygments/styles/__init__.py +17 -59
  288. data/vendor/pygments-main/pygments/styles/_mapping.py +54 -0
  289. data/vendor/pygments-main/pygments/styles/abap.py +5 -1
  290. data/vendor/pygments-main/pygments/styles/algol.py +5 -1
  291. data/vendor/pygments-main/pygments/styles/algol_nu.py +5 -1
  292. data/vendor/pygments-main/pygments/styles/arduino.py +76 -72
  293. data/vendor/pygments-main/pygments/styles/autumn.py +6 -1
  294. data/vendor/pygments-main/pygments/styles/borland.py +6 -1
  295. data/vendor/pygments-main/pygments/styles/bw.py +6 -1
  296. data/vendor/pygments-main/pygments/styles/coffee.py +80 -0
  297. data/vendor/pygments-main/pygments/styles/colorful.py +6 -1
  298. data/vendor/pygments-main/pygments/styles/default.py +6 -1
  299. data/vendor/pygments-main/pygments/styles/dracula.py +68 -80
  300. data/vendor/pygments-main/pygments/styles/emacs.py +6 -1
  301. data/vendor/pygments-main/pygments/styles/friendly.py +6 -1
  302. data/vendor/pygments-main/pygments/styles/friendly_grayscale.py +6 -1
  303. data/vendor/pygments-main/pygments/styles/fruity.py +7 -1
  304. data/vendor/pygments-main/pygments/styles/gh_dark.py +7 -1
  305. data/vendor/pygments-main/pygments/styles/gruvbox.py +10 -1
  306. data/vendor/pygments-main/pygments/styles/igor.py +6 -1
  307. data/vendor/pygments-main/pygments/styles/inkpot.py +7 -2
  308. data/vendor/pygments-main/pygments/styles/lightbulb.py +110 -0
  309. data/vendor/pygments-main/pygments/styles/lilypond.py +8 -2
  310. data/vendor/pygments-main/pygments/styles/lovelace.py +16 -10
  311. data/vendor/pygments-main/pygments/styles/manni.py +7 -2
  312. data/vendor/pygments-main/pygments/styles/material.py +21 -14
  313. data/vendor/pygments-main/pygments/styles/monokai.py +16 -10
  314. data/vendor/pygments-main/pygments/styles/murphy.py +7 -2
  315. data/vendor/pygments-main/pygments/styles/native.py +10 -5
  316. data/vendor/pygments-main/pygments/styles/nord.py +9 -3
  317. data/vendor/pygments-main/pygments/styles/onedark.py +6 -2
  318. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +7 -2
  319. data/vendor/pygments-main/pygments/styles/paraiso_light.py +7 -2
  320. data/vendor/pygments-main/pygments/styles/pastie.py +7 -1
  321. data/vendor/pygments-main/pygments/styles/perldoc.py +7 -1
  322. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +26 -19
  323. data/vendor/pygments-main/pygments/styles/rrt.py +8 -2
  324. data/vendor/pygments-main/pygments/styles/sas.py +6 -1
  325. data/vendor/pygments-main/pygments/styles/solarized.py +9 -1
  326. data/vendor/pygments-main/pygments/styles/staroffice.py +6 -1
  327. data/vendor/pygments-main/pygments/styles/stata_dark.py +6 -2
  328. data/vendor/pygments-main/pygments/styles/stata_light.py +6 -1
  329. data/vendor/pygments-main/pygments/styles/tango.py +7 -3
  330. data/vendor/pygments-main/pygments/styles/trac.py +7 -1
  331. data/vendor/pygments-main/pygments/styles/vim.py +7 -1
  332. data/vendor/pygments-main/pygments/styles/vs.py +7 -2
  333. data/vendor/pygments-main/pygments/styles/xcode.py +6 -1
  334. data/vendor/pygments-main/pygments/styles/zenburn.py +6 -1
  335. data/vendor/pygments-main/pygments/token.py +2 -1
  336. data/vendor/pygments-main/pygments/unistring.py +5 -5
  337. data/vendor/pygments-main/pygments/util.py +13 -19
  338. data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/METADATA +14 -13
  339. data/vendor/pygments-main/pygments-2.18.0.dist-info/RECORD +663 -0
  340. data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/WHEEL +1 -2
  341. data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info/licenses}/AUTHORS +13 -0
  342. metadata +39 -15
  343. data/vendor/pygments-main/Pygments-2.15.1.dist-info/RECORD +0 -614
  344. data/vendor/pygments-main/Pygments-2.15.1.dist-info/top_level.txt +0 -1
  345. /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/INSTALLER +0 -0
  346. /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/REQUESTED +0 -0
  347. /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info}/entry_points.txt +0 -0
  348. /data/vendor/pygments-main/{Pygments-2.15.1.dist-info → pygments-2.18.0.dist-info/licenses}/LICENSE +0 -0
@@ -0,0 +1,704 @@
1
+ """
2
+ pygments.lexers.mojo
3
+ ~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexers for Mojo and related languages.
6
+
7
+ :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+
11
+ import keyword
12
+
13
+ from pygments import unistring as uni
14
+ from pygments.lexer import (
15
+ RegexLexer,
16
+ bygroups,
17
+ combined,
18
+ default,
19
+ include,
20
+ this,
21
+ using,
22
+ words,
23
+ )
24
+ from pygments.token import (
25
+ Comment,
26
+ # Error,
27
+ Keyword,
28
+ Name,
29
+ Number,
30
+ Operator,
31
+ Punctuation,
32
+ String,
33
+ Text,
34
+ Whitespace,
35
+ )
36
+ from pygments.util import shebang_matches
37
+
38
+ __all__ = ["MojoLexer"]
39
+
40
+
41
+ class MojoLexer(RegexLexer):
42
+ """
43
+ For Mojo source code (version 24.2.1).
44
+ """
45
+
46
+ name = "Mojo"
47
+ url = "https://docs.modular.com/mojo/"
48
+ aliases = ["mojo", "🔥"]
49
+ filenames = [
50
+ "*.mojo",
51
+ "*.🔥",
52
+ ]
53
+ mimetypes = [
54
+ "text/x-mojo",
55
+ "application/x-mojo",
56
+ ]
57
+ version_added = "2.18"
58
+
59
+ uni_name = f"[{uni.xid_start}][{uni.xid_continue}]*"
60
+
61
+ def innerstring_rules(ttype):
62
+ return [
63
+ # the old style '%s' % (...) string formatting (still valid in Py3)
64
+ (
65
+ r"%(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?"
66
+ "[hlL]?[E-GXc-giorsaux%]",
67
+ String.Interpol,
68
+ ),
69
+ # the new style '{}'.format(...) string formatting
70
+ (
71
+ r"\{"
72
+ r"((\w+)((\.\w+)|(\[[^\]]+\]))*)?" # field name
73
+ r"(\![sra])?" # conversion
74
+ r"(\:(.?[<>=\^])?[-+ ]?#?0?(\d+)?,?(\.\d+)?[E-GXb-gnosx%]?)?"
75
+ r"\}",
76
+ String.Interpol,
77
+ ),
78
+ # backslashes, quotes and formatting signs must be parsed one at a time
79
+ (r'[^\\\'"%{\n]+', ttype),
80
+ (r'[\'"\\]', ttype),
81
+ # unhandled string formatting sign
82
+ (r"%|(\{{1,2})", ttype),
83
+ # newlines are an error (use "nl" state)
84
+ ]
85
+
86
+ def fstring_rules(ttype):
87
+ return [
88
+ # Assuming that a '}' is the closing brace after format specifier.
89
+ # Sadly, this means that we won't detect syntax error. But it's
90
+ # more important to parse correct syntax correctly, than to
91
+ # highlight invalid syntax.
92
+ (r"\}", String.Interpol),
93
+ (r"\{", String.Interpol, "expr-inside-fstring"),
94
+ # backslashes, quotes and formatting signs must be parsed one at a time
95
+ (r'[^\\\'"{}\n]+', ttype),
96
+ (r'[\'"\\]', ttype),
97
+ # newlines are an error (use "nl" state)
98
+ ]
99
+
100
+ tokens = {
101
+ "root": [
102
+ (r"\s+", Whitespace),
103
+ (
104
+ r'^(\s*)([rRuUbB]{,2})("""(?:.|\n)*?""")',
105
+ bygroups(Whitespace, String.Affix, String.Doc),
106
+ ),
107
+ (
108
+ r"^(\s*)([rRuUbB]{,2})('''(?:.|\n)*?''')",
109
+ bygroups(Whitespace, String.Affix, String.Doc),
110
+ ),
111
+ (r"\A#!.+$", Comment.Hashbang),
112
+ (r"#.*$", Comment.Single),
113
+ (r"\\\n", Whitespace),
114
+ (r"\\", Whitespace),
115
+ include("keywords"),
116
+ include("soft-keywords"),
117
+ # In the original PR, all the below here used ((?:\s|\\\s)+) to
118
+ # designate whitespace, but I can't find any example of this being
119
+ # needed in the example file, so we're replacing it with `\s+`.
120
+ (
121
+ r"(alias)(\s+)",
122
+ bygroups(Keyword, Whitespace),
123
+ "varname", # TODO varname the right fit?
124
+ ),
125
+ (r"(var)(\s+)", bygroups(Keyword, Whitespace), "varname"),
126
+ (r"(def)(\s+)", bygroups(Keyword, Whitespace), "funcname"),
127
+ (r"(fn)(\s+)", bygroups(Keyword, Whitespace), "funcname"),
128
+ (
129
+ r"(class)(\s+)",
130
+ bygroups(Keyword, Whitespace),
131
+ "classname",
132
+ ), # not implemented yet
133
+ (r"(struct)(\s+)", bygroups(Keyword, Whitespace), "structname"),
134
+ (r"(trait)(\s+)", bygroups(Keyword, Whitespace), "structname"),
135
+ (r"(from)(\s+)", bygroups(Keyword.Namespace, Whitespace), "fromimport"),
136
+ (r"(import)(\s+)", bygroups(Keyword.Namespace, Whitespace), "import"),
137
+ include("expr"),
138
+ ],
139
+ "expr": [
140
+ # raw f-strings
141
+ (
142
+ '(?i)(rf|fr)(""")',
143
+ bygroups(String.Affix, String.Double),
144
+ combined("rfstringescape", "tdqf"),
145
+ ),
146
+ (
147
+ "(?i)(rf|fr)(''')",
148
+ bygroups(String.Affix, String.Single),
149
+ combined("rfstringescape", "tsqf"),
150
+ ),
151
+ (
152
+ '(?i)(rf|fr)(")',
153
+ bygroups(String.Affix, String.Double),
154
+ combined("rfstringescape", "dqf"),
155
+ ),
156
+ (
157
+ "(?i)(rf|fr)(')",
158
+ bygroups(String.Affix, String.Single),
159
+ combined("rfstringescape", "sqf"),
160
+ ),
161
+ # non-raw f-strings
162
+ (
163
+ '([fF])(""")',
164
+ bygroups(String.Affix, String.Double),
165
+ combined("fstringescape", "tdqf"),
166
+ ),
167
+ (
168
+ "([fF])(''')",
169
+ bygroups(String.Affix, String.Single),
170
+ combined("fstringescape", "tsqf"),
171
+ ),
172
+ (
173
+ '([fF])(")',
174
+ bygroups(String.Affix, String.Double),
175
+ combined("fstringescape", "dqf"),
176
+ ),
177
+ (
178
+ "([fF])(')",
179
+ bygroups(String.Affix, String.Single),
180
+ combined("fstringescape", "sqf"),
181
+ ),
182
+ # raw bytes and strings
183
+ ('(?i)(rb|br|r)(""")', bygroups(String.Affix, String.Double), "tdqs"),
184
+ ("(?i)(rb|br|r)(''')", bygroups(String.Affix, String.Single), "tsqs"),
185
+ ('(?i)(rb|br|r)(")', bygroups(String.Affix, String.Double), "dqs"),
186
+ ("(?i)(rb|br|r)(')", bygroups(String.Affix, String.Single), "sqs"),
187
+ # non-raw strings
188
+ (
189
+ '([uU]?)(""")',
190
+ bygroups(String.Affix, String.Double),
191
+ combined("stringescape", "tdqs"),
192
+ ),
193
+ (
194
+ "([uU]?)(''')",
195
+ bygroups(String.Affix, String.Single),
196
+ combined("stringescape", "tsqs"),
197
+ ),
198
+ (
199
+ '([uU]?)(")',
200
+ bygroups(String.Affix, String.Double),
201
+ combined("stringescape", "dqs"),
202
+ ),
203
+ (
204
+ "([uU]?)(')",
205
+ bygroups(String.Affix, String.Single),
206
+ combined("stringescape", "sqs"),
207
+ ),
208
+ # non-raw bytes
209
+ (
210
+ '([bB])(""")',
211
+ bygroups(String.Affix, String.Double),
212
+ combined("bytesescape", "tdqs"),
213
+ ),
214
+ (
215
+ "([bB])(''')",
216
+ bygroups(String.Affix, String.Single),
217
+ combined("bytesescape", "tsqs"),
218
+ ),
219
+ (
220
+ '([bB])(")',
221
+ bygroups(String.Affix, String.Double),
222
+ combined("bytesescape", "dqs"),
223
+ ),
224
+ (
225
+ "([bB])(')",
226
+ bygroups(String.Affix, String.Single),
227
+ combined("bytesescape", "sqs"),
228
+ ),
229
+ (r"[^\S\n]+", Text),
230
+ include("numbers"),
231
+ (r"!=|==|<<|>>|:=|[-~+/*%=<>&^|.]", Operator),
232
+ (r"([]{}:\(\),;[])+", Punctuation),
233
+ (r"(in|is|and|or|not)\b", Operator.Word),
234
+ include("expr-keywords"),
235
+ include("builtins"),
236
+ include("magicfuncs"),
237
+ include("magicvars"),
238
+ include("name"),
239
+ ],
240
+ "expr-inside-fstring": [
241
+ (r"[{([]", Punctuation, "expr-inside-fstring-inner"),
242
+ # without format specifier
243
+ (
244
+ r"(=\s*)?" # debug (https://bugs.python.org/issue36817)
245
+ r"(\![sraf])?" # conversion
246
+ r"\}",
247
+ String.Interpol,
248
+ "#pop",
249
+ ),
250
+ # with format specifier
251
+ # we'll catch the remaining '}' in the outer scope
252
+ (
253
+ r"(=\s*)?" # debug (https://bugs.python.org/issue36817)
254
+ r"(\![sraf])?" # conversion
255
+ r":",
256
+ String.Interpol,
257
+ "#pop",
258
+ ),
259
+ (r"\s+", Whitespace), # allow new lines
260
+ include("expr"),
261
+ ],
262
+ "expr-inside-fstring-inner": [
263
+ (r"[{([]", Punctuation, "expr-inside-fstring-inner"),
264
+ (r"[])}]", Punctuation, "#pop"),
265
+ (r"\s+", Whitespace), # allow new lines
266
+ include("expr"),
267
+ ],
268
+ "expr-keywords": [
269
+ # Based on https://docs.python.org/3/reference/expressions.html
270
+ (
271
+ words(
272
+ (
273
+ "async for", # TODO https://docs.modular.com/mojo/roadmap#no-async-for-or-async-with
274
+ "async with", # TODO https://docs.modular.com/mojo/roadmap#no-async-for-or-async-with
275
+ "await",
276
+ "else",
277
+ "for",
278
+ "if",
279
+ "lambda",
280
+ "yield",
281
+ "yield from",
282
+ ),
283
+ suffix=r"\b",
284
+ ),
285
+ Keyword,
286
+ ),
287
+ (words(("True", "False", "None"), suffix=r"\b"), Keyword.Constant),
288
+ ],
289
+ "keywords": [
290
+ (
291
+ words(
292
+ (
293
+ "assert",
294
+ "async",
295
+ "await",
296
+ "borrowed",
297
+ "break",
298
+ "continue",
299
+ "del",
300
+ "elif",
301
+ "else",
302
+ "except",
303
+ "finally",
304
+ "for",
305
+ "global",
306
+ "if",
307
+ "lambda",
308
+ "pass",
309
+ "raise",
310
+ "nonlocal",
311
+ "return",
312
+ "try",
313
+ "while",
314
+ "yield",
315
+ "yield from",
316
+ "as",
317
+ "with",
318
+ ),
319
+ suffix=r"\b",
320
+ ),
321
+ Keyword,
322
+ ),
323
+ (words(("True", "False", "None"), suffix=r"\b"), Keyword.Constant),
324
+ ],
325
+ "soft-keywords": [
326
+ # `match`, `case` and `_` soft keywords
327
+ (
328
+ r"(^[ \t]*)" # at beginning of line + possible indentation
329
+ r"(match|case)\b" # a possible keyword
330
+ r"(?![ \t]*(?:" # not followed by...
331
+ r"[:,;=^&|@~)\]}]|(?:" + # characters and keywords that mean this isn't
332
+ # pattern matching (but None/True/False is ok)
333
+ r"|".join(k for k in keyword.kwlist if k[0].islower())
334
+ + r")\b))",
335
+ bygroups(Whitespace, Keyword),
336
+ "soft-keywords-inner",
337
+ ),
338
+ ],
339
+ "soft-keywords-inner": [
340
+ # optional `_` keyword
341
+ (r"(\s+)([^\n_]*)(_\b)", bygroups(Whitespace, using(this), Keyword)),
342
+ default("#pop"),
343
+ ],
344
+ "builtins": [
345
+ (
346
+ words(
347
+ (
348
+ "__import__",
349
+ "abs",
350
+ "aiter",
351
+ "all",
352
+ "any",
353
+ "bin",
354
+ "bool",
355
+ "bytearray",
356
+ "breakpoint",
357
+ "bytes",
358
+ "callable",
359
+ "chr",
360
+ "classmethod",
361
+ "compile",
362
+ "complex",
363
+ "delattr",
364
+ "dict",
365
+ "dir",
366
+ "divmod",
367
+ "enumerate",
368
+ "eval",
369
+ "filter",
370
+ "float",
371
+ "format",
372
+ "frozenset",
373
+ "getattr",
374
+ "globals",
375
+ "hasattr",
376
+ "hash",
377
+ "hex",
378
+ "id",
379
+ "input",
380
+ "int",
381
+ "isinstance",
382
+ "issubclass",
383
+ "iter",
384
+ "len",
385
+ "list",
386
+ "locals",
387
+ "map",
388
+ "max",
389
+ "memoryview",
390
+ "min",
391
+ "next",
392
+ "object",
393
+ "oct",
394
+ "open",
395
+ "ord",
396
+ "pow",
397
+ "print",
398
+ "property",
399
+ "range",
400
+ "repr",
401
+ "reversed",
402
+ "round",
403
+ "set",
404
+ "setattr",
405
+ "slice",
406
+ "sorted",
407
+ "staticmethod",
408
+ "str",
409
+ "sum",
410
+ "super",
411
+ "tuple",
412
+ "type",
413
+ "vars",
414
+ "zip",
415
+ # Mojo builtin types: https://docs.modular.com/mojo/stdlib/builtin/
416
+ "AnyType",
417
+ "Coroutine",
418
+ "DType",
419
+ "Error",
420
+ "Int",
421
+ "List",
422
+ "ListLiteral",
423
+ "Scalar",
424
+ "Int8",
425
+ "UInt8",
426
+ "Int16",
427
+ "UInt16",
428
+ "Int32",
429
+ "UInt32",
430
+ "Int64",
431
+ "UInt64",
432
+ "BFloat16",
433
+ "Float16",
434
+ "Float32",
435
+ "Float64",
436
+ "SIMD",
437
+ "String",
438
+ "Tensor",
439
+ "Tuple",
440
+ "Movable",
441
+ "Copyable",
442
+ "CollectionElement",
443
+ ),
444
+ prefix=r"(?<!\.)",
445
+ suffix=r"\b",
446
+ ),
447
+ Name.Builtin,
448
+ ),
449
+ (r"(?<!\.)(self|Ellipsis|NotImplemented|cls)\b", Name.Builtin.Pseudo),
450
+ (
451
+ words(
452
+ ("Error",),
453
+ prefix=r"(?<!\.)",
454
+ suffix=r"\b",
455
+ ),
456
+ Name.Exception,
457
+ ),
458
+ ],
459
+ "magicfuncs": [
460
+ (
461
+ words(
462
+ (
463
+ "__abs__",
464
+ "__add__",
465
+ "__aenter__",
466
+ "__aexit__",
467
+ "__aiter__",
468
+ "__and__",
469
+ "__anext__",
470
+ "__await__",
471
+ "__bool__",
472
+ "__bytes__",
473
+ "__call__",
474
+ "__complex__",
475
+ "__contains__",
476
+ "__del__",
477
+ "__delattr__",
478
+ "__delete__",
479
+ "__delitem__",
480
+ "__dir__",
481
+ "__divmod__",
482
+ "__enter__",
483
+ "__eq__",
484
+ "__exit__",
485
+ "__float__",
486
+ "__floordiv__",
487
+ "__format__",
488
+ "__ge__",
489
+ "__get__",
490
+ "__getattr__",
491
+ "__getattribute__",
492
+ "__getitem__",
493
+ "__gt__",
494
+ "__hash__",
495
+ "__iadd__",
496
+ "__iand__",
497
+ "__ifloordiv__",
498
+ "__ilshift__",
499
+ "__imatmul__",
500
+ "__imod__",
501
+ "__imul__",
502
+ "__index__",
503
+ "__init__",
504
+ "__instancecheck__",
505
+ "__int__",
506
+ "__invert__",
507
+ "__ior__",
508
+ "__ipow__",
509
+ "__irshift__",
510
+ "__isub__",
511
+ "__iter__",
512
+ "__itruediv__",
513
+ "__ixor__",
514
+ "__le__",
515
+ "__len__",
516
+ "__length_hint__",
517
+ "__lshift__",
518
+ "__lt__",
519
+ "__matmul__",
520
+ "__missing__",
521
+ "__mod__",
522
+ "__mul__",
523
+ "__ne__",
524
+ "__neg__",
525
+ "__new__",
526
+ "__next__",
527
+ "__or__",
528
+ "__pos__",
529
+ "__pow__",
530
+ "__prepare__",
531
+ "__radd__",
532
+ "__rand__",
533
+ "__rdivmod__",
534
+ "__repr__",
535
+ "__reversed__",
536
+ "__rfloordiv__",
537
+ "__rlshift__",
538
+ "__rmatmul__",
539
+ "__rmod__",
540
+ "__rmul__",
541
+ "__ror__",
542
+ "__round__",
543
+ "__rpow__",
544
+ "__rrshift__",
545
+ "__rshift__",
546
+ "__rsub__",
547
+ "__rtruediv__",
548
+ "__rxor__",
549
+ "__set__",
550
+ "__setattr__",
551
+ "__setitem__",
552
+ "__str__",
553
+ "__sub__",
554
+ "__subclasscheck__",
555
+ "__truediv__",
556
+ "__xor__",
557
+ ),
558
+ suffix=r"\b",
559
+ ),
560
+ Name.Function.Magic,
561
+ ),
562
+ ],
563
+ "magicvars": [
564
+ (
565
+ words(
566
+ (
567
+ "__annotations__",
568
+ "__bases__",
569
+ "__class__",
570
+ "__closure__",
571
+ "__code__",
572
+ "__defaults__",
573
+ "__dict__",
574
+ "__doc__",
575
+ "__file__",
576
+ "__func__",
577
+ "__globals__",
578
+ "__kwdefaults__",
579
+ "__module__",
580
+ "__mro__",
581
+ "__name__",
582
+ "__objclass__",
583
+ "__qualname__",
584
+ "__self__",
585
+ "__slots__",
586
+ "__weakref__",
587
+ ),
588
+ suffix=r"\b",
589
+ ),
590
+ Name.Variable.Magic,
591
+ ),
592
+ ],
593
+ "numbers": [
594
+ (
595
+ r"(\d(?:_?\d)*\.(?:\d(?:_?\d)*)?|(?:\d(?:_?\d)*)?\.\d(?:_?\d)*)"
596
+ r"([eE][+-]?\d(?:_?\d)*)?",
597
+ Number.Float,
598
+ ),
599
+ (r"\d(?:_?\d)*[eE][+-]?\d(?:_?\d)*j?", Number.Float),
600
+ (r"0[oO](?:_?[0-7])+", Number.Oct),
601
+ (r"0[bB](?:_?[01])+", Number.Bin),
602
+ (r"0[xX](?:_?[a-fA-F0-9])+", Number.Hex),
603
+ (r"\d(?:_?\d)*", Number.Integer),
604
+ ],
605
+ "name": [
606
+ (r"@" + uni_name, Name.Decorator),
607
+ (r"@", Operator), # new matrix multiplication operator
608
+ (uni_name, Name),
609
+ ],
610
+ "varname": [
611
+ (uni_name, Name.Variable, "#pop"),
612
+ ],
613
+ "funcname": [
614
+ include("magicfuncs"),
615
+ (uni_name, Name.Function, "#pop"),
616
+ default("#pop"),
617
+ ],
618
+ "classname": [
619
+ (uni_name, Name.Class, "#pop"),
620
+ ],
621
+ "structname": [
622
+ (uni_name, Name.Struct, "#pop"),
623
+ ],
624
+ "import": [
625
+ (r"(\s+)(as)(\s+)", bygroups(Whitespace, Keyword, Whitespace)),
626
+ (r"\.", Name.Namespace),
627
+ (uni_name, Name.Namespace),
628
+ (r"(\s*)(,)(\s*)", bygroups(Whitespace, Operator, Whitespace)),
629
+ default("#pop"), # all else: go back
630
+ ],
631
+ "fromimport": [
632
+ (r"(\s+)(import)\b", bygroups(Whitespace, Keyword.Namespace), "#pop"),
633
+ (r"\.", Name.Namespace),
634
+ # if None occurs here, it's "raise x from None", since None can
635
+ # never be a module name
636
+ (r"None\b", Keyword.Constant, "#pop"),
637
+ (uni_name, Name.Namespace),
638
+ default("#pop"),
639
+ ],
640
+ "rfstringescape": [
641
+ (r"\{\{", String.Escape),
642
+ (r"\}\}", String.Escape),
643
+ ],
644
+ "fstringescape": [
645
+ include("rfstringescape"),
646
+ include("stringescape"),
647
+ ],
648
+ "bytesescape": [
649
+ (r'\\([\\abfnrtv"\']|\n|x[a-fA-F0-9]{2}|[0-7]{1,3})', String.Escape)
650
+ ],
651
+ "stringescape": [
652
+ (r"\\(N\{.*?\}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})", String.Escape),
653
+ include("bytesescape"),
654
+ ],
655
+ "fstrings-single": fstring_rules(String.Single),
656
+ "fstrings-double": fstring_rules(String.Double),
657
+ "strings-single": innerstring_rules(String.Single),
658
+ "strings-double": innerstring_rules(String.Double),
659
+ "dqf": [
660
+ (r'"', String.Double, "#pop"),
661
+ (r'\\\\|\\"|\\\n', String.Escape), # included here for raw strings
662
+ include("fstrings-double"),
663
+ ],
664
+ "sqf": [
665
+ (r"'", String.Single, "#pop"),
666
+ (r"\\\\|\\'|\\\n", String.Escape), # included here for raw strings
667
+ include("fstrings-single"),
668
+ ],
669
+ "dqs": [
670
+ (r'"', String.Double, "#pop"),
671
+ (r'\\\\|\\"|\\\n', String.Escape), # included here for raw strings
672
+ include("strings-double"),
673
+ ],
674
+ "sqs": [
675
+ (r"'", String.Single, "#pop"),
676
+ (r"\\\\|\\'|\\\n", String.Escape), # included here for raw strings
677
+ include("strings-single"),
678
+ ],
679
+ "tdqf": [
680
+ (r'"""', String.Double, "#pop"),
681
+ include("fstrings-double"),
682
+ (r"\n", String.Double),
683
+ ],
684
+ "tsqf": [
685
+ (r"'''", String.Single, "#pop"),
686
+ include("fstrings-single"),
687
+ (r"\n", String.Single),
688
+ ],
689
+ "tdqs": [
690
+ (r'"""', String.Double, "#pop"),
691
+ include("strings-double"),
692
+ (r"\n", String.Double),
693
+ ],
694
+ "tsqs": [
695
+ (r"'''", String.Single, "#pop"),
696
+ include("strings-single"),
697
+ (r"\n", String.Single),
698
+ ],
699
+ }
700
+
701
+ def analyse_text(text):
702
+ return (
703
+ shebang_matches(text, r"mojo?") or "import " in text[:1000]
704
+ ) # TODO supported?