pygments.rb 2.3.1 → 2.4.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 (324) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +1 -1
  3. data/.rubocop.yml +7 -0
  4. data/CHANGELOG.adoc +4 -0
  5. data/README.adoc +1 -1
  6. data/bench.rb +1 -1
  7. data/lib/pygments/popen.rb +3 -7
  8. data/lib/pygments/version.rb +1 -1
  9. data/pygments.rb.gemspec +2 -2
  10. data/test/test_pygments.rb +0 -19
  11. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/AUTHORS +21 -1
  12. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/LICENSE +1 -1
  13. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/METADATA +19 -11
  14. data/vendor/pygments-main/Pygments-2.15.1.dist-info/RECORD +614 -0
  15. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/WHEEL +1 -1
  16. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/entry_points.txt +0 -1
  17. data/vendor/pygments-main/bin/pygmentize +1 -1
  18. data/vendor/pygments-main/pygments/__init__.py +20 -22
  19. data/vendor/pygments-main/pygments/__main__.py +1 -1
  20. data/vendor/pygments-main/pygments/cmdline.py +74 -8
  21. data/vendor/pygments-main/pygments/console.py +1 -1
  22. data/vendor/pygments-main/pygments/filter.py +1 -1
  23. data/vendor/pygments-main/pygments/filters/__init__.py +6 -3
  24. data/vendor/pygments-main/pygments/formatter.py +41 -11
  25. data/vendor/pygments-main/pygments/formatters/__init__.py +21 -16
  26. data/vendor/pygments-main/pygments/formatters/_mapping.py +5 -65
  27. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  28. data/vendor/pygments-main/pygments/formatters/groff.py +170 -0
  29. data/vendor/pygments-main/pygments/formatters/html.py +54 -32
  30. data/vendor/pygments-main/pygments/formatters/img.py +9 -5
  31. data/vendor/pygments-main/pygments/formatters/irc.py +6 -33
  32. data/vendor/pygments-main/pygments/formatters/latex.py +24 -14
  33. data/vendor/pygments-main/pygments/formatters/other.py +1 -1
  34. data/vendor/pygments-main/pygments/formatters/pangomarkup.py +1 -1
  35. data/vendor/pygments-main/pygments/formatters/rtf.py +1 -1
  36. data/vendor/pygments-main/pygments/formatters/svg.py +1 -1
  37. data/vendor/pygments-main/pygments/formatters/terminal.py +1 -3
  38. data/vendor/pygments-main/pygments/formatters/terminal256.py +2 -4
  39. data/vendor/pygments-main/pygments/lexer.py +101 -32
  40. data/vendor/pygments-main/pygments/lexers/__init__.py +50 -29
  41. data/vendor/pygments-main/pygments/lexers/_ada_builtins.py +103 -0
  42. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1 -1
  43. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +1 -1
  44. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +2 -2
  45. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +21 -6
  46. data/vendor/pygments-main/pygments/lexers/_css_builtins.py +558 -0
  47. data/vendor/pygments-main/pygments/lexers/_julia_builtins.py +10 -0
  48. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -1
  49. data/vendor/pygments-main/pygments/lexers/_lilypond_builtins.py +4932 -0
  50. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +11 -18
  51. data/vendor/pygments-main/pygments/lexers/_mapping.py +71 -82
  52. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -1
  53. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +58 -4
  54. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
  55. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +408 -1835
  56. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +70 -8
  57. data/vendor/pygments-main/pygments/lexers/_qlik_builtins.py +666 -0
  58. data/vendor/pygments-main/pygments/lexers/_scheme_builtins.py +1609 -0
  59. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3 -3
  60. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +9 -18
  61. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +185 -94
  62. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +1 -1
  63. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
  64. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +1 -1
  65. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +1 -1
  66. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
  67. data/vendor/pygments-main/pygments/lexers/actionscript.py +15 -14
  68. data/vendor/pygments-main/pygments/lexers/ada.py +144 -0
  69. data/vendor/pygments-main/pygments/lexers/agile.py +1 -1
  70. data/vendor/pygments-main/pygments/lexers/algebra.py +72 -9
  71. data/vendor/pygments-main/pygments/lexers/ambient.py +8 -7
  72. data/vendor/pygments-main/pygments/lexers/amdgpu.py +4 -3
  73. data/vendor/pygments-main/pygments/lexers/ampl.py +10 -8
  74. data/vendor/pygments-main/pygments/lexers/apdlexer.py +164 -20
  75. data/vendor/pygments-main/pygments/lexers/apl.py +6 -5
  76. data/vendor/pygments-main/pygments/lexers/archetype.py +23 -21
  77. data/vendor/pygments-main/pygments/lexers/arrow.py +10 -9
  78. data/vendor/pygments-main/pygments/lexers/arturo.py +250 -0
  79. data/vendor/pygments-main/pygments/lexers/asc.py +9 -5
  80. data/vendor/pygments-main/pygments/lexers/asm.py +68 -63
  81. data/vendor/pygments-main/pygments/lexers/automation.py +7 -5
  82. data/vendor/pygments-main/pygments/lexers/bare.py +20 -21
  83. data/vendor/pygments-main/pygments/lexers/basic.py +45 -41
  84. data/vendor/pygments-main/pygments/lexers/bdd.py +58 -0
  85. data/vendor/pygments-main/pygments/lexers/berry.py +99 -0
  86. data/vendor/pygments-main/pygments/lexers/bibtex.py +6 -6
  87. data/vendor/pygments-main/pygments/lexers/boa.py +4 -8
  88. data/vendor/pygments-main/pygments/lexers/business.py +18 -18
  89. data/vendor/pygments-main/pygments/lexers/c_cpp.py +80 -40
  90. data/vendor/pygments-main/pygments/lexers/c_like.py +21 -19
  91. data/vendor/pygments-main/pygments/lexers/capnproto.py +6 -8
  92. data/vendor/pygments-main/pygments/lexers/carbon.py +96 -0
  93. data/vendor/pygments-main/pygments/lexers/cddl.py +16 -33
  94. data/vendor/pygments-main/pygments/lexers/chapel.py +14 -9
  95. data/vendor/pygments-main/pygments/lexers/clean.py +3 -2
  96. data/vendor/pygments-main/pygments/lexers/comal.py +80 -0
  97. data/vendor/pygments-main/pygments/lexers/compiled.py +3 -2
  98. data/vendor/pygments-main/pygments/lexers/configs.py +235 -120
  99. data/vendor/pygments-main/pygments/lexers/console.py +5 -4
  100. data/vendor/pygments-main/pygments/lexers/cplint.py +44 -0
  101. data/vendor/pygments-main/pygments/lexers/crystal.py +22 -23
  102. data/vendor/pygments-main/pygments/lexers/csound.py +19 -17
  103. data/vendor/pygments-main/pygments/lexers/css.py +67 -159
  104. data/vendor/pygments-main/pygments/lexers/d.py +15 -12
  105. data/vendor/pygments-main/pygments/lexers/dalvik.py +14 -11
  106. data/vendor/pygments-main/pygments/lexers/data.py +119 -49
  107. data/vendor/pygments-main/pygments/lexers/dax.py +136 -0
  108. data/vendor/pygments-main/pygments/lexers/devicetree.py +9 -8
  109. data/vendor/pygments-main/pygments/lexers/diff.py +23 -19
  110. data/vendor/pygments-main/pygments/lexers/dotnet.py +216 -81
  111. data/vendor/pygments-main/pygments/lexers/dsls.py +86 -64
  112. data/vendor/pygments-main/pygments/lexers/dylan.py +16 -15
  113. data/vendor/pygments-main/pygments/lexers/ecl.py +46 -38
  114. data/vendor/pygments-main/pygments/lexers/eiffel.py +15 -10
  115. data/vendor/pygments-main/pygments/lexers/elm.py +12 -8
  116. data/vendor/pygments-main/pygments/lexers/elpi.py +165 -0
  117. data/vendor/pygments-main/pygments/lexers/email.py +21 -39
  118. data/vendor/pygments-main/pygments/lexers/erlang.py +21 -22
  119. data/vendor/pygments-main/pygments/lexers/esoteric.py +28 -30
  120. data/vendor/pygments-main/pygments/lexers/ezhil.py +10 -9
  121. data/vendor/pygments-main/pygments/lexers/factor.py +104 -83
  122. data/vendor/pygments-main/pygments/lexers/fantom.py +31 -29
  123. data/vendor/pygments-main/pygments/lexers/felix.py +18 -14
  124. data/vendor/pygments-main/pygments/lexers/fift.py +67 -0
  125. data/vendor/pygments-main/pygments/lexers/floscript.py +7 -7
  126. data/vendor/pygments-main/pygments/lexers/forth.py +8 -6
  127. data/vendor/pygments-main/pygments/lexers/fortran.py +16 -11
  128. data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -2
  129. data/vendor/pygments-main/pygments/lexers/freefem.py +7 -10
  130. data/vendor/pygments-main/pygments/lexers/func.py +108 -0
  131. data/vendor/pygments-main/pygments/lexers/functional.py +1 -1
  132. data/vendor/pygments-main/pygments/lexers/futhark.py +12 -17
  133. data/vendor/pygments-main/pygments/lexers/gcodelexer.py +1 -2
  134. data/vendor/pygments-main/pygments/lexers/gdscript.py +76 -233
  135. data/vendor/pygments-main/pygments/lexers/go.py +12 -14
  136. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +22 -26
  137. data/vendor/pygments-main/pygments/lexers/graph.py +36 -15
  138. data/vendor/pygments-main/pygments/lexers/graphics.py +37 -38
  139. data/vendor/pygments-main/pygments/lexers/graphviz.py +2 -1
  140. data/vendor/pygments-main/pygments/lexers/gsql.py +39 -27
  141. data/vendor/pygments-main/pygments/lexers/haskell.py +73 -71
  142. data/vendor/pygments-main/pygments/lexers/haxe.py +13 -11
  143. data/vendor/pygments-main/pygments/lexers/hdl.py +31 -34
  144. data/vendor/pygments-main/pygments/lexers/hexdump.py +21 -21
  145. data/vendor/pygments-main/pygments/lexers/html.py +11 -19
  146. data/vendor/pygments-main/pygments/lexers/idl.py +10 -5
  147. data/vendor/pygments-main/pygments/lexers/igor.py +3 -2
  148. data/vendor/pygments-main/pygments/lexers/inferno.py +9 -8
  149. data/vendor/pygments-main/pygments/lexers/installers.py +39 -33
  150. data/vendor/pygments-main/pygments/lexers/int_fiction.py +35 -20
  151. data/vendor/pygments-main/pygments/lexers/iolang.py +9 -9
  152. data/vendor/pygments-main/pygments/lexers/j.py +20 -13
  153. data/vendor/pygments-main/pygments/lexers/javascript.py +183 -149
  154. data/vendor/pygments-main/pygments/lexers/jmespath.py +68 -0
  155. data/vendor/pygments-main/pygments/lexers/jslt.py +4 -3
  156. data/vendor/pygments-main/pygments/lexers/jsonnet.py +168 -0
  157. data/vendor/pygments-main/pygments/lexers/julia.py +44 -32
  158. data/vendor/pygments-main/pygments/lexers/jvm.py +161 -140
  159. data/vendor/pygments-main/pygments/lexers/kuin.py +93 -59
  160. data/vendor/pygments-main/pygments/lexers/lilypond.py +226 -0
  161. data/vendor/pygments-main/pygments/lexers/lisp.py +244 -107
  162. data/vendor/pygments-main/pygments/lexers/macaulay2.py +1739 -0
  163. data/vendor/pygments-main/pygments/lexers/make.py +21 -16
  164. data/vendor/pygments-main/pygments/lexers/markup.py +752 -11
  165. data/vendor/pygments-main/pygments/lexers/math.py +1 -1
  166. data/vendor/pygments-main/pygments/lexers/matlab.py +18 -3
  167. data/vendor/pygments-main/pygments/lexers/maxima.py +85 -0
  168. data/vendor/pygments-main/pygments/lexers/meson.py +10 -25
  169. data/vendor/pygments-main/pygments/lexers/mime.py +2 -2
  170. data/vendor/pygments-main/pygments/lexers/minecraft.py +394 -0
  171. data/vendor/pygments-main/pygments/lexers/mips.py +128 -0
  172. data/vendor/pygments-main/pygments/lexers/ml.py +9 -6
  173. data/vendor/pygments-main/pygments/lexers/modeling.py +12 -8
  174. data/vendor/pygments-main/pygments/lexers/modula2.py +3 -2
  175. data/vendor/pygments-main/pygments/lexers/monte.py +3 -2
  176. data/vendor/pygments-main/pygments/lexers/mosel.py +1 -1
  177. data/vendor/pygments-main/pygments/lexers/ncl.py +1 -1
  178. data/vendor/pygments-main/pygments/lexers/nimrod.py +62 -20
  179. data/vendor/pygments-main/pygments/lexers/nit.py +3 -2
  180. data/vendor/pygments-main/pygments/lexers/nix.py +5 -5
  181. data/vendor/pygments-main/pygments/lexers/oberon.py +2 -2
  182. data/vendor/pygments-main/pygments/lexers/objective.py +6 -4
  183. data/vendor/pygments-main/pygments/lexers/ooc.py +3 -2
  184. data/vendor/pygments-main/pygments/lexers/other.py +1 -1
  185. data/vendor/pygments-main/pygments/lexers/parasail.py +3 -2
  186. data/vendor/pygments-main/pygments/lexers/parsers.py +23 -21
  187. data/vendor/pygments-main/pygments/lexers/pascal.py +196 -198
  188. data/vendor/pygments-main/pygments/lexers/pawn.py +1 -1
  189. data/vendor/pygments-main/pygments/lexers/perl.py +17 -15
  190. data/vendor/pygments-main/pygments/lexers/phix.py +364 -0
  191. data/vendor/pygments-main/pygments/lexers/php.py +35 -20
  192. data/vendor/pygments-main/pygments/lexers/pointless.py +3 -2
  193. data/vendor/pygments-main/pygments/lexers/pony.py +1 -1
  194. data/vendor/pygments-main/pygments/lexers/praat.py +41 -38
  195. data/vendor/pygments-main/pygments/lexers/procfile.py +2 -3
  196. data/vendor/pygments-main/pygments/lexers/prolog.py +7 -8
  197. data/vendor/pygments-main/pygments/lexers/promql.py +5 -12
  198. data/vendor/pygments-main/pygments/lexers/python.py +145 -119
  199. data/vendor/pygments-main/pygments/lexers/q.py +188 -0
  200. data/vendor/pygments-main/pygments/lexers/qlik.py +117 -0
  201. data/vendor/pygments-main/pygments/lexers/qvt.py +1 -1
  202. data/vendor/pygments-main/pygments/lexers/r.py +4 -4
  203. data/vendor/pygments-main/pygments/lexers/rdf.py +3 -3
  204. data/vendor/pygments-main/pygments/lexers/rebol.py +1 -12
  205. data/vendor/pygments-main/pygments/lexers/resource.py +1 -1
  206. data/vendor/pygments-main/pygments/lexers/ride.py +3 -2
  207. data/vendor/pygments-main/pygments/lexers/rita.py +43 -0
  208. data/vendor/pygments-main/pygments/lexers/rnc.py +3 -2
  209. data/vendor/pygments-main/pygments/lexers/roboconf.py +3 -3
  210. data/vendor/pygments-main/pygments/lexers/robotframework.py +6 -5
  211. data/vendor/pygments-main/pygments/lexers/ruby.py +24 -24
  212. data/vendor/pygments-main/pygments/lexers/rust.py +3 -2
  213. data/vendor/pygments-main/pygments/lexers/sas.py +2 -2
  214. data/vendor/pygments-main/pygments/lexers/savi.py +170 -0
  215. data/vendor/pygments-main/pygments/lexers/scdoc.py +4 -7
  216. data/vendor/pygments-main/pygments/lexers/scripting.py +24 -21
  217. data/vendor/pygments-main/pygments/lexers/sgf.py +6 -6
  218. data/vendor/pygments-main/pygments/lexers/shell.py +29 -21
  219. data/vendor/pygments-main/pygments/lexers/sieve.py +14 -4
  220. data/vendor/pygments-main/pygments/lexers/slash.py +1 -1
  221. data/vendor/pygments-main/pygments/lexers/smalltalk.py +5 -3
  222. data/vendor/pygments-main/pygments/lexers/smithy.py +5 -6
  223. data/vendor/pygments-main/pygments/lexers/smv.py +1 -1
  224. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -1
  225. data/vendor/pygments-main/pygments/lexers/solidity.py +3 -7
  226. data/vendor/pygments-main/pygments/lexers/sophia.py +103 -0
  227. data/vendor/pygments-main/pygments/lexers/special.py +2 -5
  228. data/vendor/pygments-main/pygments/lexers/spice.py +71 -0
  229. data/vendor/pygments-main/pygments/lexers/sql.py +212 -17
  230. data/vendor/pygments-main/pygments/lexers/srcinfo.py +62 -0
  231. data/vendor/pygments-main/pygments/lexers/stata.py +4 -3
  232. data/vendor/pygments-main/pygments/lexers/supercollider.py +4 -3
  233. data/vendor/pygments-main/pygments/lexers/tal.py +74 -0
  234. data/vendor/pygments-main/pygments/lexers/tcl.py +21 -16
  235. data/vendor/pygments-main/pygments/lexers/teal.py +9 -8
  236. data/vendor/pygments-main/pygments/lexers/templates.py +62 -29
  237. data/vendor/pygments-main/pygments/lexers/teraterm.py +12 -20
  238. data/vendor/pygments-main/pygments/lexers/testing.py +6 -2
  239. data/vendor/pygments-main/pygments/lexers/text.py +3 -2
  240. data/vendor/pygments-main/pygments/lexers/textedit.py +41 -7
  241. data/vendor/pygments-main/pygments/lexers/textfmts.py +7 -5
  242. data/vendor/pygments-main/pygments/lexers/theorem.py +42 -36
  243. data/vendor/pygments-main/pygments/lexers/thingsdb.py +2 -4
  244. data/vendor/pygments-main/pygments/lexers/tlb.py +57 -0
  245. data/vendor/pygments-main/pygments/lexers/tnt.py +3 -4
  246. data/vendor/pygments-main/pygments/lexers/trafficscript.py +2 -4
  247. data/vendor/pygments-main/pygments/lexers/typoscript.py +2 -3
  248. data/vendor/pygments-main/pygments/lexers/ul4.py +267 -0
  249. data/vendor/pygments-main/pygments/lexers/unicon.py +1 -1
  250. data/vendor/pygments-main/pygments/lexers/urbi.py +4 -4
  251. data/vendor/pygments-main/pygments/lexers/usd.py +2 -1
  252. data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
  253. data/vendor/pygments-main/pygments/lexers/verification.py +4 -3
  254. data/vendor/pygments-main/pygments/lexers/web.py +1 -1
  255. data/vendor/pygments-main/pygments/lexers/webassembly.py +5 -5
  256. data/vendor/pygments-main/pygments/lexers/webidl.py +2 -1
  257. data/vendor/pygments-main/pygments/lexers/webmisc.py +90 -71
  258. data/vendor/pygments-main/pygments/lexers/wgsl.py +407 -0
  259. data/vendor/pygments-main/pygments/lexers/whiley.py +2 -1
  260. data/vendor/pygments-main/pygments/lexers/wowtoc.py +120 -0
  261. data/vendor/pygments-main/pygments/lexers/wren.py +99 -0
  262. data/vendor/pygments-main/pygments/lexers/x10.py +5 -6
  263. data/vendor/pygments-main/pygments/lexers/xorg.py +3 -2
  264. data/vendor/pygments-main/pygments/lexers/yang.py +6 -5
  265. data/vendor/pygments-main/pygments/lexers/zig.py +3 -2
  266. data/vendor/pygments-main/pygments/modeline.py +1 -1
  267. data/vendor/pygments-main/pygments/plugin.py +28 -9
  268. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  269. data/vendor/pygments-main/pygments/scanner.py +2 -2
  270. data/vendor/pygments-main/pygments/sphinxext.py +63 -1
  271. data/vendor/pygments-main/pygments/style.py +7 -1
  272. data/vendor/pygments-main/pygments/styles/__init__.py +19 -5
  273. data/vendor/pygments-main/pygments/styles/abap.py +2 -2
  274. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  275. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  276. data/vendor/pygments-main/pygments/styles/arduino.py +2 -3
  277. data/vendor/pygments-main/pygments/styles/autumn.py +1 -3
  278. data/vendor/pygments-main/pygments/styles/borland.py +1 -3
  279. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  280. data/vendor/pygments-main/pygments/styles/colorful.py +1 -3
  281. data/vendor/pygments-main/pygments/styles/default.py +13 -14
  282. data/vendor/pygments-main/pygments/styles/dracula.py +102 -0
  283. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  284. data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
  285. data/vendor/pygments-main/pygments/styles/friendly_grayscale.py +75 -0
  286. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  287. data/vendor/pygments-main/pygments/styles/gh_dark.py +107 -0
  288. data/vendor/pygments-main/pygments/styles/gruvbox.py +4 -2
  289. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  290. data/vendor/pygments-main/pygments/styles/inkpot.py +3 -2
  291. data/vendor/pygments-main/pygments/styles/lilypond.py +56 -0
  292. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -3
  293. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  294. data/vendor/pygments-main/pygments/styles/material.py +1 -2
  295. data/vendor/pygments-main/pygments/styles/monokai.py +3 -3
  296. data/vendor/pygments-main/pygments/styles/murphy.py +1 -3
  297. data/vendor/pygments-main/pygments/styles/native.py +11 -11
  298. data/vendor/pygments-main/pygments/styles/nord.py +150 -0
  299. data/vendor/pygments-main/pygments/styles/onedark.py +59 -0
  300. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -6
  301. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -6
  302. data/vendor/pygments-main/pygments/styles/pastie.py +1 -3
  303. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  304. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +3 -3
  305. data/vendor/pygments-main/pygments/styles/rrt.py +3 -2
  306. data/vendor/pygments-main/pygments/styles/sas.py +2 -4
  307. data/vendor/pygments-main/pygments/styles/solarized.py +1 -1
  308. data/vendor/pygments-main/pygments/styles/staroffice.py +26 -0
  309. data/vendor/pygments-main/pygments/styles/stata_dark.py +4 -6
  310. data/vendor/pygments-main/pygments/styles/stata_light.py +1 -2
  311. data/vendor/pygments-main/pygments/styles/tango.py +2 -3
  312. data/vendor/pygments-main/pygments/styles/trac.py +1 -3
  313. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  314. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  315. data/vendor/pygments-main/pygments/styles/xcode.py +1 -3
  316. data/vendor/pygments-main/pygments/styles/zenburn.py +4 -6
  317. data/vendor/pygments-main/pygments/token.py +2 -1
  318. data/vendor/pygments-main/pygments/unistring.py +4 -6
  319. data/vendor/pygments-main/pygments/util.py +27 -5
  320. metadata +59 -14
  321. data/vendor/pygments-main/Pygments-2.10.0.dist-info/RECORD +0 -524
  322. /data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/INSTALLER +0 -0
  323. /data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/REQUESTED +0 -0
  324. /data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/top_level.txt +0 -0
@@ -4,7 +4,7 @@
4
4
 
5
5
  Just export lexers that were contained in this module.
6
6
 
7
- :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  """
10
10
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  Lexers for Matlab and related languages.
6
6
 
7
- :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  """
10
10
 
@@ -2776,7 +2776,7 @@ class MatlabSessionLexer(Lexer):
2776
2776
  # line = "\n" + line
2777
2777
  token = (0, Generic.Traceback, line)
2778
2778
  insertions.append((idx, [token]))
2779
- elif continuation:
2779
+ elif continuation and insertions:
2780
2780
  # line_start is the length of the most recent prompt symbol
2781
2781
  line_start = len(insertions[-1][-1][-1])
2782
2782
  # Set leading spaces with the length of the prompt to be a generic prompt
@@ -2815,6 +2815,7 @@ class OctaveLexer(RegexLexer):
2815
2815
  .. versionadded:: 1.5
2816
2816
  """
2817
2817
  name = 'Octave'
2818
+ url = 'https://www.gnu.org/software/octave/index'
2818
2819
  aliases = ['octave']
2819
2820
  filenames = ['*.m']
2820
2821
  mimetypes = ['text/octave']
@@ -3232,6 +3233,7 @@ class ScilabLexer(RegexLexer):
3232
3233
  .. versionadded:: 1.5
3233
3234
  """
3234
3235
  name = 'Scilab'
3236
+ url = 'https://www.scilab.org/'
3235
3237
  aliases = ['scilab']
3236
3238
  filenames = ['*.sci', '*.sce', '*.tst']
3237
3239
  mimetypes = ['text/scilab']
@@ -3262,7 +3264,7 @@ class ScilabLexer(RegexLexer):
3262
3264
  (r'\.\*|\*|\+|\.\^|\.\\|\.\/|\/|\\', Operator),
3263
3265
 
3264
3266
  # punctuation:
3265
- (r'[\[\](){}@.,=:;]', Punctuation),
3267
+ (r'[\[\](){}@.,=:;]+', Punctuation),
3266
3268
 
3267
3269
  (r'"[^"]*"', String),
3268
3270
 
@@ -3276,6 +3278,7 @@ class ScilabLexer(RegexLexer):
3276
3278
  (r'\d+', Number.Integer),
3277
3279
 
3278
3280
  (r'[a-zA-Z_]\w*', Name),
3281
+ (r'\s+', Whitespace),
3279
3282
  (r'.', Text),
3280
3283
  ],
3281
3284
  'string': [
@@ -3291,3 +3294,15 @@ class ScilabLexer(RegexLexer):
3291
3294
  (r'(\s*)([a-zA-Z_]\w*)', bygroups(Text, Name.Function), '#pop'),
3292
3295
  ],
3293
3296
  }
3297
+
3298
+ # the following is needed to distinguish Scilab and GAP .tst files
3299
+ def analyse_text(text):
3300
+ score = 0.0
3301
+
3302
+ # Scilab comments (don't appear in e.g. GAP code)
3303
+ if re.search(r"^\s*//", text):
3304
+ score += 0.1
3305
+ if re.search(r"^\s*/\*", text):
3306
+ score += 0.1
3307
+
3308
+ return min(score, 1.0)
@@ -0,0 +1,85 @@
1
+ """
2
+ pygments.lexers.maxima
3
+ ~~~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexer for the computer algebra system Maxima.
6
+
7
+ Derived from pygments/lexers/algebra.py.
8
+
9
+ :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
10
+ :license: BSD, see LICENSE for details.
11
+ """
12
+
13
+ import re
14
+
15
+ from pygments.lexer import RegexLexer, bygroups, words
16
+ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
17
+ Number, Punctuation
18
+
19
+ __all__ = ['MaximaLexer']
20
+
21
+ class MaximaLexer(RegexLexer):
22
+ """
23
+ A Maxima lexer.
24
+ Derived from pygments.lexers.MuPADLexer.
25
+
26
+ .. versionadded:: 2.11
27
+ """
28
+ name = 'Maxima'
29
+ url = 'http://maxima.sourceforge.net'
30
+ aliases = ['maxima', 'macsyma']
31
+ filenames = ['*.mac', '*.max']
32
+
33
+ keywords = ('if', 'then', 'else', 'elseif',
34
+ 'do', 'while', 'repeat', 'until',
35
+ 'for', 'from', 'to', 'downto', 'step', 'thru')
36
+
37
+ constants = ('%pi', '%e', '%phi', '%gamma', '%i',
38
+ 'und', 'ind', 'infinity', 'inf', 'minf',
39
+ 'true', 'false', 'unknown', 'done')
40
+
41
+ operators = (r'.', r':', r'=', r'#',
42
+ r'+', r'-', r'*', r'/', r'^',
43
+ r'@', r'>', r'<', r'|', r'!', r"'")
44
+
45
+ operator_words = ('and', 'or', 'not')
46
+
47
+ tokens = {
48
+ 'root': [
49
+ (r'/\*', Comment.Multiline, 'comment'),
50
+ (r'"(?:[^"\\]|\\.)*"', String),
51
+ (r'\(|\)|\[|\]|\{|\}', Punctuation),
52
+ (r'[,;$]', Punctuation),
53
+ (words (constants), Name.Constant),
54
+ (words (keywords), Keyword),
55
+ (words (operators), Operator),
56
+ (words (operator_words), Operator.Word),
57
+ (r'''(?x)
58
+ ((?:[a-zA-Z_#][\w#]*|`[^`]*`)
59
+ (?:::[a-zA-Z_#][\w#]*|`[^`]*`)*)(\s*)([(])''',
60
+ bygroups(Name.Function, Text.Whitespace, Punctuation)),
61
+ (r'''(?x)
62
+ (?:[a-zA-Z_#%][\w#%]*|`[^`]*`)
63
+ (?:::[a-zA-Z_#%][\w#%]*|`[^`]*`)*''', Name.Variable),
64
+ (r'[-+]?(\d*\.\d+([bdefls][-+]?\d+)?|\d+(\.\d*)?[bdefls][-+]?\d+)', Number.Float),
65
+ (r'[-+]?\d+', Number.Integer),
66
+ (r'\s+', Text.Whitespace),
67
+ (r'.', Text)
68
+ ],
69
+ 'comment': [
70
+ (r'[^*/]+', Comment.Multiline),
71
+ (r'/\*', Comment.Multiline, '#push'),
72
+ (r'\*/', Comment.Multiline, '#pop'),
73
+ (r'[*/]', Comment.Multiline)
74
+ ]
75
+ }
76
+
77
+ def analyse_text (text):
78
+ strength = 0.0
79
+ # Input expression terminator.
80
+ if re.search (r'\$\s*$', text, re.MULTILINE):
81
+ strength += 0.05
82
+ # Function definition operator.
83
+ if ':=' in text:
84
+ strength += 0.02
85
+ return strength
@@ -4,38 +4,24 @@
4
4
 
5
5
  Pygments lexer for the Meson build system
6
6
 
7
- :copyright: Copyright 2021 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  """
10
10
 
11
- import re
12
-
13
- from pygments.lexer import (
14
- RegexLexer,
15
- words,
16
- include,
17
- )
18
- from pygments.token import (
19
- Comment,
20
- Name,
21
- Number,
22
- Punctuation,
23
- Operator,
24
- Keyword,
25
- String,
26
- Whitespace,
27
- )
11
+ from pygments.lexer import RegexLexer, words, include
12
+ from pygments.token import Comment, Name, Number, Punctuation, Operator, \
13
+ Keyword, String, Whitespace
28
14
 
29
15
  __all__ = ['MesonLexer']
30
16
 
31
17
 
32
18
  class MesonLexer(RegexLexer):
33
- """
34
- `meson <https://mesonbuild.com/>`_ language lexer.
19
+ """Meson language lexer.
20
+
35
21
  The grammar definition use to transcribe the syntax was retrieved from
36
- https://mesonbuild.com/Syntax.html#grammar for version 0.58
37
- Some of those definitions are improperly transcribed so the Meson++
38
- implementation was also checked: https://github.com/dcbaker/meson-plus-plus
22
+ https://mesonbuild.com/Syntax.html#grammar for version 0.58.
23
+ Some of those definitions are improperly transcribed, so the Meson++
24
+ implementation was also checked: https://github.com/dcbaker/meson-plus-plus.
39
25
 
40
26
  .. versionadded:: 2.10
41
27
  """
@@ -44,12 +30,11 @@ class MesonLexer(RegexLexer):
44
30
  # TODO keyword_arg: value inner matches
45
31
 
46
32
  name = 'Meson'
33
+ url = 'https://mesonbuild.com/'
47
34
  aliases = ['meson', 'meson.build']
48
35
  filenames = ['meson.build', 'meson_options.txt']
49
36
  mimetypes = ['text/x-meson']
50
37
 
51
- flags = re.MULTILINE | re.UNICODE
52
-
53
38
  tokens = {
54
39
  'root': [
55
40
  (r'#.*?$', Comment),
@@ -4,7 +4,7 @@
4
4
 
5
5
  Lexer for Multipurpose Internet Mail Extensions (MIME) data.
6
6
 
7
- :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  """
10
10
 
@@ -88,7 +88,7 @@ class MIMELexer(RegexLexer):
88
88
  pos_body_start = pos_body_start + 1
89
89
  entire_body = entire_body[1:]
90
90
 
91
- # if it is not a mulitpart
91
+ # if it is not a multipart
92
92
  if not self.content_type.startswith("multipart") or not self.boundary:
93
93
  for i, t, v in self.get_bodypart_tokens(entire_body):
94
94
  yield pos_body_start + i, t, v
@@ -0,0 +1,394 @@
1
+ """
2
+ pygments.lexers.minecraft
3
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexers for Minecraft related languages.
6
+
7
+ SNBT. A data communication format used in Minecraft.
8
+ wiki: https://minecraft.fandom.com/wiki/NBT_format
9
+
10
+ MCFunction. The Function file for Minecraft Data packs and Add-ons.
11
+ official: https://learn.microsoft.com/en-us/minecraft/creator/documents/functionsintroduction
12
+ wiki: https://minecraft.fandom.com/wiki/Function
13
+
14
+ MCSchema. A kind of data Schema for Minecraft Add-on Development.
15
+ official: https://learn.microsoft.com/en-us/minecraft/creator/reference/content/schemasreference/
16
+ community example: https://www.mcbe-dev.net/addons/data-driven/manifest.html
17
+
18
+ :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
19
+ :license: BSD, see LICENSE for details.
20
+ """
21
+
22
+ from pygments.lexer import RegexLexer, default, include, bygroups
23
+ from pygments.token import Comment, Keyword, Literal, Name, Number, Operator, \
24
+ Punctuation, String, Text, Whitespace
25
+
26
+ __all__ = ['SNBTLexer', 'MCFunctionLexer', 'MCSchemaLexer']
27
+
28
+
29
+ class SNBTLexer(RegexLexer):
30
+ """Lexer for stringified NBT, a data format used in Minecraft
31
+
32
+ .. versionadded:: 2.12.0
33
+ """
34
+
35
+ name = "SNBT"
36
+ url = "https://minecraft.fandom.com/wiki/NBT_format"
37
+ aliases = ["snbt"]
38
+ filenames = ["*.snbt"]
39
+ mimetypes = ["text/snbt"]
40
+
41
+ tokens = {
42
+ "root": [
43
+ # We only look for the open bracket here since square bracket
44
+ # is only valid in NBT pathing (which is a mcfunction idea).
45
+ (r"\{", Punctuation, "compound"),
46
+ (r"[^\{]+", Text),
47
+ ],
48
+
49
+ "whitespace": [
50
+ (r"\s+", Whitespace),
51
+ ],
52
+
53
+ "operators": [
54
+ (r"[,:;]", Punctuation),
55
+ ],
56
+
57
+ "literals": [
58
+ (r"(true|false)", Keyword.Constant),
59
+ (r"-?\d+[eE]-?\d+", Number.Float),
60
+ (r"-?\d*\.\d+[fFdD]?", Number.Float),
61
+ (r"-?\d+[bBsSlLfFdD]?", Number.Integer),
62
+
63
+ # Separate states for both types of strings so they don't entangle
64
+ (r'"', String.Double, "literals.string_double"),
65
+ (r"'", String.Single, "literals.string_single"),
66
+ ],
67
+ "literals.string_double": [
68
+ (r"\\.", String.Escape),
69
+ (r'[^\\"\n]+', String.Double),
70
+ (r'"', String.Double, "#pop"),
71
+ ],
72
+ "literals.string_single": [
73
+ (r"\\.", String.Escape),
74
+ (r"[^\\'\n]+", String.Single),
75
+ (r"'", String.Single, "#pop"),
76
+ ],
77
+
78
+ "compound": [
79
+ # this handles the unquoted snbt keys
80
+ # note: stringified keys still work
81
+ (r"[A-Z_a-z]+", Name.Attribute),
82
+ include("operators"),
83
+ include("whitespace"),
84
+ include("literals"),
85
+ (r"\{", Punctuation, "#push"),
86
+ (r"\[", Punctuation, "list"),
87
+ (r"\}", Punctuation, "#pop"),
88
+ ],
89
+
90
+ "list": [
91
+ (r"[A-Z_a-z]+", Name.Attribute),
92
+ include("literals"),
93
+ include("operators"),
94
+ include("whitespace"),
95
+ (r"\[", Punctuation, "#push"),
96
+ (r"\{", Punctuation, "compound"),
97
+ (r"\]", Punctuation, "#pop"),
98
+ ],
99
+ }
100
+
101
+
102
+ class MCFunctionLexer(RegexLexer):
103
+ """Lexer for the mcfunction scripting language used in Minecraft
104
+ Modelled somewhat after the `GitHub mcfunction grammar <https://github.com/Arcensoth/language-mcfunction>`_.
105
+
106
+ .. versionadded:: 2.12.0
107
+ """
108
+
109
+ name = "MCFunction"
110
+ url = "https://minecraft.fandom.com/wiki/Commands"
111
+ aliases = ["mcfunction", "mcf"]
112
+ filenames = ["*.mcfunction"]
113
+ mimetypes = ["text/mcfunction"]
114
+
115
+ # Used to denotate the start of a block comment, borrowed from Github's mcfunction
116
+ _block_comment_prefix = "[>!]"
117
+
118
+ tokens = {
119
+ "root": [
120
+ include("names"),
121
+ include("comments"),
122
+ include("literals"),
123
+ include("whitespace"),
124
+ include("property"),
125
+ include("operators"),
126
+ include("selectors"),
127
+ ],
128
+
129
+ "names": [
130
+ # The start of a command (either beginning of line OR after the run keyword)
131
+ # We don't encode a list of keywords since mods, plugins, or even pre-processors
132
+ # may add new commands, so we have a 'close-enough' regex which catches them.
133
+ (r"^(\s*)([a-z_]+)", bygroups(Whitespace, Name.Builtin)),
134
+ (r"(?<=run)\s+[a-z_]+", Name.Builtin),
135
+
136
+ # UUID
137
+ (r"\b[0-9a-fA-F]+(?:-[0-9a-fA-F]+){4}\b", Name.Variable),
138
+ include("resource-name"),
139
+ # normal command names and scoreboards
140
+ # there's no way to know the differences unfortuntely
141
+ (r"[A-Za-z_][\w.#%$]+", Keyword.Constant),
142
+ (r"[#%$][\w.#%$]+", Name.Variable.Magic),
143
+ ],
144
+
145
+ "resource-name": [
146
+ # resource names have to be lowercase
147
+ (r"#?[a-z_][a-z_.-]*:[a-z0-9_./-]+", Name.Function),
148
+ # similar to above except optional `:``
149
+ # a `/` must be present "somewhere"
150
+ (r"#?[a-z0-9_\.\-]+\/[a-z0-9_\.\-\/]+", Name.Function),
151
+ ],
152
+
153
+ "whitespace": [
154
+ (r"\s+", Whitespace),
155
+ ],
156
+
157
+ "comments": [
158
+ (rf"^\s*(#{_block_comment_prefix})", Comment.Multiline,
159
+ ("comments.block", "comments.block.emphasized")),
160
+ (r"#.*$", Comment.Single),
161
+ ],
162
+ "comments.block": [
163
+ (rf"^\s*#{_block_comment_prefix}", Comment.Multiline,
164
+ "comments.block.emphasized"),
165
+ (r"^\s*#", Comment.Multiline, "comments.block.normal"),
166
+ default("#pop"),
167
+ ],
168
+ "comments.block.normal": [
169
+ include("comments.block.special"),
170
+ (r"\S+", Comment.Multiline),
171
+ (r"\n", Text, "#pop"),
172
+ include("whitespace"),
173
+ ],
174
+ "comments.block.emphasized": [
175
+ include("comments.block.special"),
176
+ (r"\S+", String.Doc),
177
+ (r"\n", Text, "#pop"),
178
+ include("whitespace"),
179
+ ],
180
+ "comments.block.special": [
181
+ # Params
182
+ (r"@\S+", Name.Decorator),
183
+
184
+ include("resource-name"),
185
+
186
+ # Scoreboard player names
187
+ (r"[#%$][\w.#%$]+", Name.Variable.Magic),
188
+ ],
189
+
190
+ "operators": [
191
+ (r"[\-~%^?!+*<>\\/|&=.]", Operator),
192
+ ],
193
+
194
+ "literals": [
195
+ (r"\.\.", Literal),
196
+ (r"(true|false)", Keyword.Pseudo),
197
+
198
+ # these are like unquoted strings and appear in many places
199
+ (r"[A-Za-z_]+", Name.Variable.Class),
200
+
201
+ (r"[0-7]b", Number.Byte),
202
+ (r"[+-]?\d*\.?\d+([eE]?[+-]?\d+)?[df]?\b", Number.Float),
203
+ (r"[+-]?\d+\b", Number.Integer),
204
+ (r'"', String.Double, "literals.string-double"),
205
+ (r"'", String.Single, "literals.string-single"),
206
+ ],
207
+ "literals.string-double": [
208
+ (r"\\.", String.Escape),
209
+ (r'[^\\"\n]+', String.Double),
210
+ (r'"', String.Double, "#pop"),
211
+ ],
212
+ "literals.string-single": [
213
+ (r"\\.", String.Escape),
214
+ (r"[^\\'\n]+", String.Single),
215
+ (r"'", String.Single, "#pop"),
216
+ ],
217
+
218
+ "selectors": [
219
+ (r"@[a-z]", Name.Variable),
220
+ ],
221
+
222
+
223
+ ## Generic Property Container
224
+ # There are several, differing instances where the language accepts
225
+ # specific contained keys or contained key, value pairings.
226
+ #
227
+ # Property Maps:
228
+ # - Starts with either `[` or `{`
229
+ # - Key separated by `:` or `=`
230
+ # - Deliminated by `,`
231
+ #
232
+ # Property Lists:
233
+ # - Starts with `[`
234
+ # - Deliminated by `,`
235
+ #
236
+ # For simplicity, these patterns match a generic, nestable structure
237
+ # which follow a key, value pattern. For normal lists, there's only keys.
238
+ # This allow some "illegal" structures, but we'll accept those for
239
+ # sake of simplicity
240
+ #
241
+ # Examples:
242
+ # - `[facing=up, powered=true]` (blockstate)
243
+ # - `[name="hello world", nbt={key: 1b}]` (selector + nbt)
244
+ # - `[{"text": "value"}, "literal"]` (json)
245
+ ##
246
+ "property": [
247
+ # This state gets included in root and also several substates
248
+ # We do this to shortcut the starting of new properties
249
+ # within other properties. Lists can have sublists and compounds
250
+ # and values can start a new property (see the `difficult_1.txt`
251
+ # snippet).
252
+ (r"\{", Punctuation, ("property.curly", "property.key")),
253
+ (r"\[", Punctuation, ("property.square", "property.key")),
254
+ ],
255
+ "property.curly": [
256
+ include("whitespace"),
257
+ include("property"),
258
+ (r"\}", Punctuation, "#pop"),
259
+ ],
260
+ "property.square": [
261
+ include("whitespace"),
262
+ include("property"),
263
+ (r"\]", Punctuation, "#pop"),
264
+
265
+ # lists can have sequences of items
266
+ (r",", Punctuation),
267
+ ],
268
+ "property.key": [
269
+ include("whitespace"),
270
+
271
+ # resource names (for advancements)
272
+ # can omit `:` to default `minecraft:`
273
+ # must check if there is a future equals sign if `:` is in the name
274
+ (r"#?[a-z_][a-z_\.\-]*\:[a-z0-9_\.\-/]+(?=\s*\=)", Name.Attribute, "property.delimiter"),
275
+ (r"#?[a-z_][a-z0-9_\.\-/]+", Name.Attribute, "property.delimiter"),
276
+
277
+ # unquoted NBT key
278
+ (r"[A-Za-z_\-\+]+", Name.Attribute, "property.delimiter"),
279
+
280
+ # quoted JSON or NBT key
281
+ (r'"', Name.Attribute, "property.delimiter", "literals.string-double"),
282
+ (r"'", Name.Attribute, "property.delimiter", "literals.string-single"),
283
+
284
+ # index for a list
285
+ (r"-?\d+", Number.Integer, "property.delimiter"),
286
+
287
+ default("#pop"),
288
+ ],
289
+ "property.key.string-double": [
290
+ (r"\\.", String.Escape),
291
+ (r'[^\\"\n]+', Name.Attribute),
292
+ (r'"', Name.Attribute, "#pop"),
293
+ ],
294
+ "property.key.string-single": [
295
+ (r"\\.", String.Escape),
296
+ (r"[^\\'\n]+", Name.Attribute),
297
+ (r"'", Name.Attribute, "#pop"),
298
+ ],
299
+ "property.delimiter": [
300
+ include("whitespace"),
301
+
302
+ (r"[:=]!?", Punctuation, "property.value"),
303
+ (r",", Punctuation),
304
+
305
+ default("#pop"),
306
+ ],
307
+ "property.value": [
308
+ include("whitespace"),
309
+
310
+ # unquoted resource names are valid literals here
311
+ (r"#?[a-z_][a-z_\.\-]*\:[a-z0-9_\.\-/]+", Name.Tag),
312
+ (r"#?[a-z_][a-z0-9_\.\-/]+", Name.Tag),
313
+
314
+ include("literals"),
315
+ include("property"),
316
+
317
+ default("#pop"),
318
+ ],
319
+ }
320
+
321
+
322
+ class MCSchemaLexer(RegexLexer):
323
+ """Lexer for Minecraft Add-ons data Schemas, an interface structure standard used in Minecraft
324
+
325
+ .. versionadded:: 2.14.0
326
+ """
327
+
328
+ name = 'MCSchema'
329
+ url = 'https://learn.microsoft.com/en-us/minecraft/creator/reference/content/schemasreference/'
330
+ aliases = ['mcschema']
331
+ filenames = ['*.mcschema']
332
+ mimetypes = ['text/mcschema']
333
+
334
+ tokens = {
335
+ 'commentsandwhitespace': [
336
+ (r'\s+', Whitespace),
337
+ (r'//.*?$', Comment.Single),
338
+ (r'/\*.*?\*/', Comment.Multiline)
339
+ ],
340
+ 'slashstartsregex': [
341
+ include('commentsandwhitespace'),
342
+ (r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
343
+ r'([gimuysd]+\b|\B)', String.Regex, '#pop'),
344
+ (r'(?=/)', Text, ('#pop', 'badregex')),
345
+ default('#pop')
346
+ ],
347
+ 'badregex': [
348
+ (r'\n', Whitespace, '#pop')
349
+ ],
350
+ 'singlestring': [
351
+ (r'\\.', String.Escape),
352
+ (r"'", String.Single, '#pop'),
353
+ (r"[^\\']+", String.Single),
354
+ ],
355
+ 'doublestring': [
356
+ (r'\\.', String.Escape),
357
+ (r'"', String.Double, '#pop'),
358
+ (r'[^\\"]+', String.Double),
359
+ ],
360
+ 'root': [
361
+ (r'^(?=\s|/|<!--)', Text, 'slashstartsregex'),
362
+ include('commentsandwhitespace'),
363
+
364
+ # keywords for optional word and field types
365
+ (r'(?<=: )opt', Operator.Word),
366
+ (r'(?<=\s)[\w-]*(?=(\s+"|\n))', Keyword.Declaration),
367
+
368
+ # numeric literals
369
+ (r'0[bB][01]+', Number.Bin),
370
+ (r'0[oO]?[0-7]+', Number.Oct),
371
+ (r'0[xX][0-9a-fA-F]+', Number.Hex),
372
+ (r'\d+', Number.Integer),
373
+ (r'(\.\d+|\d+\.\d*|\d+)([eE][-+]?\d+)?', Number.Float),
374
+
375
+ # possible punctuations
376
+ (r'\.\.\.|=>', Punctuation),
377
+ (r'\+\+|--|~|\?\?=?|\?|:|\\(?=\n)|'
378
+ r'(<<|>>>?|==?|!=?|(?:\*\*|\|\||&&|[-<>+*%&|^/]))=?', Operator, 'slashstartsregex'),
379
+ (r'[{(\[;,]', Punctuation, 'slashstartsregex'),
380
+ (r'[})\].]', Punctuation),
381
+
382
+ # strings
383
+ (r"'", String.Single, 'singlestring'),
384
+ (r'"', String.Double, 'doublestring'),
385
+
386
+ # title line
387
+ (r'[\w-]*?(?=:\{?\n)', String.Symbol),
388
+ # title line with a version code, formatted
389
+ # `major.minor.patch-prerelease+buildmeta`
390
+ (r'([\w-]*?)(:)(\d+)(?:(\.)(\d+)(?:(\.)(\d+)(?:(\-)((?:[^\W_]|-)*(?:\.(?:[^\W_]|-)*)*))?(?:(\+)((?:[^\W_]|-)+(?:\.(?:[^\W_]|-)+)*))?)?)?(?=:\{?\n)', bygroups(String.Symbol, Operator, Number.Integer, Operator, Number.Integer, Operator, Number.Integer, Operator, String, Operator, String)),
391
+
392
+ (r'.*\n', Text),
393
+ ]
394
+ }