pygments.rb 2.3.1 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }