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,28 +4,43 @@
4
4
 
5
5
  Lexers for Pascal family 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
 
11
11
  import re
12
12
 
13
- from pygments.lexer import Lexer, RegexLexer, include, bygroups, words, \
14
- using, this, default
13
+ from pygments.lexer import Lexer
15
14
  from pygments.util import get_bool_opt, get_list_opt
16
15
  from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
17
- Number, Punctuation, Error
16
+ Number, Punctuation, Error, Whitespace
18
17
  from pygments.scanner import Scanner
19
18
 
20
19
  # compatibility import
21
20
  from pygments.lexers.modula2 import Modula2Lexer
22
21
 
23
- __all__ = ['DelphiLexer', 'AdaLexer']
22
+ __all__ = ['DelphiLexer', 'PortugolLexer']
23
+
24
+
25
+ class PortugolLexer(Lexer):
26
+ """For Portugol, a Pascal dialect with keywords in Portuguese."""
27
+ name = 'Portugol'
28
+ aliases = ['portugol']
29
+ filenames = ['*.alg', '*.portugol']
30
+ mimetypes = []
31
+ url = "https://www.apoioinformatica.inf.br/produtos/visualg/linguagem"
32
+
33
+ def __init__(self, **options):
34
+ Lexer.__init__(self, **options)
35
+ self.lexer = DelphiLexer(**options, portugol=True)
36
+
37
+ def get_tokens_unprocessed(self, text):
38
+ return self.lexer.get_tokens_unprocessed(text)
24
39
 
25
40
 
26
41
  class DelphiLexer(Lexer):
27
42
  """
28
- For `Delphi <http://www.borland.com/delphi/>`_ (Borland Object Pascal),
43
+ For Delphi (Borland Object Pascal),
29
44
  Turbo Pascal and Free Pascal source code.
30
45
 
31
46
  Additional options accepted:
@@ -297,18 +312,109 @@ class DelphiLexer(Lexer):
297
312
  'xlatb', 'xor'
298
313
  }
299
314
 
315
+ PORTUGOL_KEYWORDS = (
316
+ 'aleatorio',
317
+ 'algoritmo',
318
+ 'arquivo',
319
+ 'ate',
320
+ 'caso',
321
+ 'cronometro',
322
+ 'debug',
323
+ 'e',
324
+ 'eco',
325
+ 'enquanto',
326
+ 'entao',
327
+ 'escolha',
328
+ 'escreva',
329
+ 'escreval',
330
+ 'faca',
331
+ 'falso',
332
+ 'fimalgoritmo',
333
+ 'fimenquanto',
334
+ 'fimescolha',
335
+ 'fimfuncao',
336
+ 'fimpara',
337
+ 'fimprocedimento',
338
+ 'fimrepita',
339
+ 'fimse',
340
+ 'funcao',
341
+ 'inicio',
342
+ 'int',
343
+ 'interrompa',
344
+ 'leia',
345
+ 'limpatela',
346
+ 'mod',
347
+ 'nao',
348
+ 'ou',
349
+ 'outrocaso',
350
+ 'para',
351
+ 'passo',
352
+ 'pausa',
353
+ 'procedimento',
354
+ 'repita',
355
+ 'retorne',
356
+ 'se',
357
+ 'senao',
358
+ 'timer',
359
+ 'var',
360
+ 'vetor',
361
+ 'verdadeiro',
362
+ 'xou',
363
+ 'div',
364
+ 'mod',
365
+ 'abs',
366
+ 'arccos',
367
+ 'arcsen',
368
+ 'arctan',
369
+ 'cos',
370
+ 'cotan',
371
+ 'Exp',
372
+ 'grauprad',
373
+ 'int',
374
+ 'log',
375
+ 'logn',
376
+ 'pi',
377
+ 'quad',
378
+ 'radpgrau',
379
+ 'raizq',
380
+ 'rand',
381
+ 'randi',
382
+ 'sen',
383
+ 'Tan',
384
+ 'asc',
385
+ 'carac',
386
+ 'caracpnum',
387
+ 'compr',
388
+ 'copia',
389
+ 'maiusc',
390
+ 'minusc',
391
+ 'numpcarac',
392
+ 'pos',
393
+ )
394
+
395
+ PORTUGOL_BUILTIN_TYPES = {
396
+ 'inteiro', 'real', 'caractere', 'logico'
397
+ }
398
+
300
399
  def __init__(self, **options):
301
400
  Lexer.__init__(self, **options)
302
401
  self.keywords = set()
303
- if get_bool_opt(options, 'turbopascal', True):
304
- self.keywords.update(self.TURBO_PASCAL_KEYWORDS)
305
- if get_bool_opt(options, 'delphi', True):
306
- self.keywords.update(self.DELPHI_KEYWORDS)
307
- if get_bool_opt(options, 'freepascal', True):
308
- self.keywords.update(self.FREE_PASCAL_KEYWORDS)
309
402
  self.builtins = set()
310
- for unit in get_list_opt(options, 'units', list(self.BUILTIN_UNITS)):
311
- self.builtins.update(self.BUILTIN_UNITS[unit])
403
+ if get_bool_opt(options, 'portugol', False):
404
+ self.keywords.update(self.PORTUGOL_KEYWORDS)
405
+ self.builtins.update(self.PORTUGOL_BUILTIN_TYPES)
406
+ self.is_portugol = True
407
+ else:
408
+ self.is_portugol = False
409
+
410
+ if get_bool_opt(options, 'turbopascal', True):
411
+ self.keywords.update(self.TURBO_PASCAL_KEYWORDS)
412
+ if get_bool_opt(options, 'delphi', True):
413
+ self.keywords.update(self.DELPHI_KEYWORDS)
414
+ if get_bool_opt(options, 'freepascal', True):
415
+ self.keywords.update(self.FREE_PASCAL_KEYWORDS)
416
+ for unit in get_list_opt(options, 'units', list(self.BUILTIN_UNITS)):
417
+ self.builtins.update(self.BUILTIN_UNITS[unit])
312
418
 
313
419
  def get_tokens_unprocessed(self, text):
314
420
  scanner = Scanner(text, re.DOTALL | re.MULTILINE | re.IGNORECASE)
@@ -327,15 +433,17 @@ class DelphiLexer(Lexer):
327
433
 
328
434
  if stack[-1] == 'initial':
329
435
  if scanner.scan(r'\s+'):
330
- token = Text
331
- elif scanner.scan(r'\{.*?\}|\(\*.*?\*\)'):
436
+ token = Whitespace
437
+ elif not self.is_portugol and scanner.scan(r'\{.*?\}|\(\*.*?\*\)'):
332
438
  if scanner.match.startswith('$'):
333
439
  token = Comment.Preproc
334
440
  else:
335
441
  token = Comment.Multiline
336
442
  elif scanner.scan(r'//.*?$'):
337
443
  token = Comment.Single
338
- elif scanner.scan(r'[-+*\/=<>:;,.@\^]'):
444
+ elif self.is_portugol and scanner.scan(r'(<\-)|(>=)|(<=)|%|<|>|-|\+|\*|\=|(<>)|\/|\.|:|,'):
445
+ token = Operator
446
+ elif not self.is_portugol and scanner.scan(r'[-+*\/=<>:;,.@\^]'):
339
447
  token = Operator
340
448
  # stop label highlighting on next ";"
341
449
  if collect_labels and scanner.match == ';':
@@ -363,37 +471,42 @@ class DelphiLexer(Lexer):
363
471
  elif lowercase_name in self.keywords:
364
472
  token = Keyword
365
473
  # if we are in a special block and a
366
- # block ending keyword occours (and the parenthesis
474
+ # block ending keyword occurs (and the parenthesis
367
475
  # is balanced) we end the current block context
368
- if (in_function_block or in_property_block) and \
369
- lowercase_name in self.BLOCK_KEYWORDS and \
370
- brace_balance[0] <= 0 and \
371
- brace_balance[1] <= 0:
372
- in_function_block = False
373
- in_property_block = False
374
- brace_balance = [0, 0]
375
- block_labels = set()
376
- if lowercase_name in ('label', 'goto'):
377
- collect_labels = True
378
- elif lowercase_name == 'asm':
379
- stack.append('asm')
380
- elif lowercase_name == 'property':
381
- in_property_block = True
382
- next_token_is_property = True
383
- elif lowercase_name in ('procedure', 'operator',
384
- 'function', 'constructor',
385
- 'destructor'):
386
- in_function_block = True
387
- next_token_is_function = True
476
+ if self.is_portugol:
477
+ if lowercase_name in ('funcao', 'procedimento'):
478
+ in_function_block = True
479
+ next_token_is_function = True
480
+ else:
481
+ if (in_function_block or in_property_block) and \
482
+ lowercase_name in self.BLOCK_KEYWORDS and \
483
+ brace_balance[0] <= 0 and \
484
+ brace_balance[1] <= 0:
485
+ in_function_block = False
486
+ in_property_block = False
487
+ brace_balance = [0, 0]
488
+ block_labels = set()
489
+ if lowercase_name in ('label', 'goto'):
490
+ collect_labels = True
491
+ elif lowercase_name == 'asm':
492
+ stack.append('asm')
493
+ elif lowercase_name == 'property':
494
+ in_property_block = True
495
+ next_token_is_property = True
496
+ elif lowercase_name in ('procedure', 'operator',
497
+ 'function', 'constructor',
498
+ 'destructor'):
499
+ in_function_block = True
500
+ next_token_is_function = True
388
501
  # we are in a function block and the current name
389
502
  # is in the set of registered modifiers. highlight
390
503
  # it as pseudo keyword
391
- elif in_function_block and \
504
+ elif not self.is_portugol and in_function_block and \
392
505
  lowercase_name in self.FUNCTION_MODIFIERS:
393
506
  token = Keyword.Pseudo
394
507
  # if we are in a property highlight some more
395
508
  # modifiers
396
- elif in_property_block and \
509
+ elif not self.is_portugol and in_property_block and \
397
510
  lowercase_name in ('read', 'write'):
398
511
  token = Keyword.Pseudo
399
512
  next_token_is_function = True
@@ -404,40 +517,49 @@ class DelphiLexer(Lexer):
404
517
  # Look if the next token is a dot. If yes it's
405
518
  # not a function, but a class name and the
406
519
  # part after the dot a function name
407
- if scanner.test(r'\s*\.\s*'):
520
+ if not self.is_portugol and scanner.test(r'\s*\.\s*'):
408
521
  token = Name.Class
409
522
  # it's not a dot, our job is done
410
523
  else:
411
524
  token = Name.Function
412
525
  next_token_is_function = False
526
+
527
+ if self.is_portugol:
528
+ block_labels.add(scanner.match.lower())
529
+
413
530
  # same for properties
414
- elif next_token_is_property:
531
+ elif not self.is_portugol and next_token_is_property:
415
532
  token = Name.Property
416
533
  next_token_is_property = False
417
534
  # Highlight this token as label and add it
418
535
  # to the list of known labels
419
- elif collect_labels:
536
+ elif not self.is_portugol and collect_labels:
420
537
  token = Name.Label
421
538
  block_labels.add(scanner.match.lower())
422
539
  # name is in list of known labels
423
540
  elif lowercase_name in block_labels:
424
541
  token = Name.Label
425
- elif lowercase_name in self.BUILTIN_TYPES:
542
+ elif self.is_portugol and lowercase_name in self.PORTUGOL_BUILTIN_TYPES:
426
543
  token = Keyword.Type
427
- elif lowercase_name in self.DIRECTIVES:
544
+ elif not self.is_portugol and lowercase_name in self.BUILTIN_TYPES:
545
+ token = Keyword.Type
546
+ elif not self.is_portugol and lowercase_name in self.DIRECTIVES:
428
547
  token = Keyword.Pseudo
429
548
  # builtins are just builtins if the token
430
549
  # before isn't a dot
431
- elif not was_dot and lowercase_name in self.builtins:
550
+ elif not self.is_portugol and not was_dot and lowercase_name in self.builtins:
432
551
  token = Name.Builtin
433
552
  else:
434
553
  token = Name
435
- elif scanner.scan(r"'"):
554
+ elif self.is_portugol and scanner.scan(r"\""):
436
555
  token = String
437
556
  stack.append('string')
438
- elif scanner.scan(r'\#(\d+|\$[0-9A-Fa-f]+)'):
557
+ elif not self.is_portugol and scanner.scan(r"'"):
558
+ token = String
559
+ stack.append('string')
560
+ elif not self.is_portugol and scanner.scan(r'\#(\d+|\$[0-9A-Fa-f]+)'):
439
561
  token = String.Char
440
- elif scanner.scan(r'\$[0-9A-Fa-f]+'):
562
+ elif not self.is_portugol and scanner.scan(r'\$[0-9A-Fa-f]+'):
441
563
  token = Number.Hex
442
564
  elif scanner.scan(r'\d+(?![eE]|\.[^.])'):
443
565
  token = Number.Integer
@@ -450,20 +572,31 @@ class DelphiLexer(Lexer):
450
572
  scanner.get_char()
451
573
 
452
574
  elif stack[-1] == 'string':
453
- if scanner.scan(r"''"):
454
- token = String.Escape
455
- elif scanner.scan(r"'"):
456
- token = String
457
- stack.pop()
458
- elif scanner.scan(r"[^']*"):
459
- token = String
575
+ if self.is_portugol:
576
+ if scanner.scan(r"''"):
577
+ token = String.Escape
578
+ elif scanner.scan(r"\""):
579
+ token = String
580
+ stack.pop()
581
+ elif scanner.scan(r"[^\"]*"):
582
+ token = String
583
+ else:
584
+ scanner.get_char()
585
+ stack.pop()
460
586
  else:
461
- scanner.get_char()
462
- stack.pop()
463
-
464
- elif stack[-1] == 'asm':
587
+ if scanner.scan(r"''"):
588
+ token = String.Escape
589
+ elif scanner.scan(r"'"):
590
+ token = String
591
+ stack.pop()
592
+ elif scanner.scan(r"[^']*"):
593
+ token = String
594
+ else:
595
+ scanner.get_char()
596
+ stack.pop()
597
+ elif not self.is_portugol and stack[-1] == 'asm':
465
598
  if scanner.scan(r'\s+'):
466
- token = Text
599
+ token = Whitespace
467
600
  elif scanner.scan(r'end'):
468
601
  token = Keyword
469
602
  stack.pop()
@@ -502,142 +635,7 @@ class DelphiLexer(Lexer):
502
635
  stack.pop()
503
636
 
504
637
  # save the dot!!!11
505
- if scanner.match.strip():
638
+ if not self.is_portugol and scanner.match.strip():
506
639
  was_dot = scanner.match == '.'
507
- yield scanner.start_pos, token, scanner.match or ''
508
-
509
-
510
- class AdaLexer(RegexLexer):
511
- """
512
- For Ada source code.
513
-
514
- .. versionadded:: 1.3
515
- """
516
640
 
517
- name = 'Ada'
518
- aliases = ['ada', 'ada95', 'ada2005']
519
- filenames = ['*.adb', '*.ads', '*.ada']
520
- mimetypes = ['text/x-ada']
521
-
522
- flags = re.MULTILINE | re.IGNORECASE
523
-
524
- tokens = {
525
- 'root': [
526
- (r'[^\S\n]+', Text),
527
- (r'--.*?\n', Comment.Single),
528
- (r'[^\S\n]+', Text),
529
- (r'function|procedure|entry', Keyword.Declaration, 'subprogram'),
530
- (r'(subtype|type)(\s+)(\w+)',
531
- bygroups(Keyword.Declaration, Text, Keyword.Type), 'type_def'),
532
- (r'task|protected', Keyword.Declaration),
533
- (r'(subtype)(\s+)', bygroups(Keyword.Declaration, Text)),
534
- (r'(end)(\s+)', bygroups(Keyword.Reserved, Text), 'end'),
535
- (r'(pragma)(\s+)(\w+)', bygroups(Keyword.Reserved, Text,
536
- Comment.Preproc)),
537
- (r'(true|false|null)\b', Keyword.Constant),
538
- (words((
539
- 'Address', 'Byte', 'Boolean', 'Character', 'Controlled', 'Count',
540
- 'Cursor', 'Duration', 'File_Mode', 'File_Type', 'Float', 'Generator',
541
- 'Integer', 'Long_Float', 'Long_Integer', 'Long_Long_Float',
542
- 'Long_Long_Integer', 'Natural', 'Positive', 'Reference_Type',
543
- 'Short_Float', 'Short_Integer', 'Short_Short_Float',
544
- 'Short_Short_Integer', 'String', 'Wide_Character', 'Wide_String'),
545
- suffix=r'\b'),
546
- Keyword.Type),
547
- (r'(and(\s+then)?|in|mod|not|or(\s+else)|rem)\b', Operator.Word),
548
- (r'generic|private', Keyword.Declaration),
549
- (r'package', Keyword.Declaration, 'package'),
550
- (r'array\b', Keyword.Reserved, 'array_def'),
551
- (r'(with|use)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
552
- (r'(\w+)(\s*)(:)(\s*)(constant)',
553
- bygroups(Name.Constant, Text, Punctuation, Text,
554
- Keyword.Reserved)),
555
- (r'<<\w+>>', Name.Label),
556
- (r'(\w+)(\s*)(:)(\s*)(declare|begin|loop|for|while)',
557
- bygroups(Name.Label, Text, Punctuation, Text, Keyword.Reserved)),
558
- (words((
559
- 'abort', 'abs', 'abstract', 'accept', 'access', 'aliased', 'all',
560
- 'array', 'at', 'begin', 'body', 'case', 'constant', 'declare',
561
- 'delay', 'delta', 'digits', 'do', 'else', 'elsif', 'end', 'entry',
562
- 'exception', 'exit', 'interface', 'for', 'goto', 'if', 'is', 'limited',
563
- 'loop', 'new', 'null', 'of', 'or', 'others', 'out', 'overriding',
564
- 'pragma', 'protected', 'raise', 'range', 'record', 'renames', 'requeue',
565
- 'return', 'reverse', 'select', 'separate', 'some', 'subtype',
566
- 'synchronized', 'task', 'tagged', 'terminate', 'then', 'type', 'until',
567
- 'when', 'while', 'xor'), prefix=r'\b', suffix=r'\b'),
568
- Keyword.Reserved),
569
- (r'"[^"]*"', String),
570
- include('attribute'),
571
- include('numbers'),
572
- (r"'[^']'", String.Character),
573
- (r'(\w+)(\s*|[(,])', bygroups(Name, using(this))),
574
- (r"(<>|=>|:=|[()|:;,.'])", Punctuation),
575
- (r'[*<>+=/&-]', Operator),
576
- (r'\n+', Text),
577
- ],
578
- 'numbers': [
579
- (r'[0-9_]+#[0-9a-f_\.]+#', Number.Hex),
580
- (r'[0-9_]+\.[0-9_]*', Number.Float),
581
- (r'[0-9_]+', Number.Integer),
582
- ],
583
- 'attribute': [
584
- (r"(')(\w+)", bygroups(Punctuation, Name.Attribute)),
585
- ],
586
- 'subprogram': [
587
- (r'\(', Punctuation, ('#pop', 'formal_part')),
588
- (r';', Punctuation, '#pop'),
589
- (r'is\b', Keyword.Reserved, '#pop'),
590
- (r'"[^"]+"|\w+', Name.Function),
591
- include('root'),
592
- ],
593
- 'end': [
594
- ('(if|case|record|loop|select)', Keyword.Reserved),
595
- (r'"[^"]+"|[\w.]+', Name.Function),
596
- (r'\s+', Text),
597
- (';', Punctuation, '#pop'),
598
- ],
599
- 'type_def': [
600
- (r';', Punctuation, '#pop'),
601
- (r'\(', Punctuation, 'formal_part'),
602
- (r'with|and|use', Keyword.Reserved),
603
- (r'array\b', Keyword.Reserved, ('#pop', 'array_def')),
604
- (r'record\b', Keyword.Reserved, ('record_def')),
605
- (r'(null record)(;)', bygroups(Keyword.Reserved, Punctuation), '#pop'),
606
- include('root'),
607
- ],
608
- 'array_def': [
609
- (r';', Punctuation, '#pop'),
610
- (r'(\w+)(\s+)(range)', bygroups(Keyword.Type, Text, Keyword.Reserved)),
611
- include('root'),
612
- ],
613
- 'record_def': [
614
- (r'end record', Keyword.Reserved, '#pop'),
615
- include('root'),
616
- ],
617
- 'import': [
618
- (r'[\w.]+', Name.Namespace, '#pop'),
619
- default('#pop'),
620
- ],
621
- 'formal_part': [
622
- (r'\)', Punctuation, '#pop'),
623
- (r'\w+', Name.Variable),
624
- (r',|:[^=]', Punctuation),
625
- (r'(in|not|null|out|access)\b', Keyword.Reserved),
626
- include('root'),
627
- ],
628
- 'package': [
629
- ('body', Keyword.Declaration),
630
- (r'is\s+new|renames', Keyword.Reserved),
631
- ('is', Keyword.Reserved, '#pop'),
632
- (';', Punctuation, '#pop'),
633
- (r'\(', Punctuation, 'package_instantiation'),
634
- (r'([\w.]+)', Name.Class),
635
- include('root'),
636
- ],
637
- 'package_instantiation': [
638
- (r'("[^"]+"|\w+)(\s+)(=>)', bygroups(Name.Variable, Text, Punctuation)),
639
- (r'[\w.\'"]', Text),
640
- (r'\)', Punctuation, '#pop'),
641
- include('root'),
642
- ],
643
- }
641
+ yield scanner.start_pos, token, scanner.match or ''
@@ -4,7 +4,7 @@
4
4
 
5
5
  Lexers for the Pawn 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
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  Lexers for Perl, Raku 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
 
@@ -13,7 +13,7 @@ import re
13
13
  from pygments.lexer import RegexLexer, ExtendedRegexLexer, include, bygroups, \
14
14
  using, this, default, words
15
15
  from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
16
- Number, Punctuation
16
+ Number, Punctuation, Whitespace
17
17
  from pygments.util import shebang_matches
18
18
 
19
19
  __all__ = ['PerlLexer', 'Perl6Lexer']
@@ -21,10 +21,11 @@ __all__ = ['PerlLexer', 'Perl6Lexer']
21
21
 
22
22
  class PerlLexer(RegexLexer):
23
23
  """
24
- For `Perl <https://www.perl.org>`_ source code.
24
+ For Perl source code.
25
25
  """
26
26
 
27
27
  name = 'Perl'
28
+ url = 'https://www.perl.org'
28
29
  aliases = ['perl', 'pl']
29
30
  filenames = ['*.pl', '*.pm', '*.t', '*.perl']
30
31
  mimetypes = ['text/x-perl', 'application/x-perl']
@@ -55,7 +56,7 @@ class PerlLexer(RegexLexer):
55
56
  'CHECK', 'INIT', 'END', 'return'), suffix=r'\b'),
56
57
  Keyword),
57
58
  (r'(format)(\s+)(\w+)(\s*)(=)(\s*\n)',
58
- bygroups(Keyword, Text, Name, Text, Punctuation, Text), 'format'),
59
+ bygroups(Keyword, Whitespace, Name, Whitespace, Punctuation, Whitespace), 'format'),
59
60
  (r'(eq|lt|gt|le|ge|ne|not|and|or|cmp)\b', Operator.Word),
60
61
  # common delimiters
61
62
  (r's/(\\\\|\\[^\\]|[^\\/])*/(\\\\|\\[^\\]|[^\\/])*/[egimosx]*',
@@ -78,7 +79,7 @@ class PerlLexer(RegexLexer):
78
79
  (r'm(?=[/!\\{<\[(@%$])', String.Regex, 'balanced-regex'),
79
80
  (r'((?<==~)|(?<=\())\s*/(\\\\|\\[^\\]|[^\\/])*/[gcimosx]*',
80
81
  String.Regex),
81
- (r'\s+', Text),
82
+ (r'\s+', Whitespace),
82
83
  (words((
83
84
  'abs', 'accept', 'alarm', 'atan2', 'bind', 'binmode', 'bless', 'caller', 'chdir',
84
85
  'chmod', 'chomp', 'chop', 'chown', 'chr', 'chroot', 'close', 'closedir', 'connect',
@@ -109,7 +110,7 @@ class PerlLexer(RegexLexer):
109
110
  Name.Builtin),
110
111
  (r'((__(DATA|DIE|WARN)__)|(STD(IN|OUT|ERR)))\b', Name.Builtin.Pseudo),
111
112
  (r'(<<)([\'"]?)([a-zA-Z_]\w*)(\2;?\n.*?\n)(\3)(\n)',
112
- bygroups(String, String, String.Delimiter, String, String.Delimiter, Text)),
113
+ bygroups(String, String, String.Delimiter, String, String.Delimiter, Whitespace)),
113
114
  (r'__END__', Comment.Preproc, 'end-part'),
114
115
  (r'\$\^[ADEFHILMOPSTWX]', Name.Variable.Global),
115
116
  (r"\$[\\\"\[\]'&`+*.,;=%~?@$!<>(^|/-](?!\w)", Name.Variable.Global),
@@ -131,10 +132,10 @@ class PerlLexer(RegexLexer):
131
132
  (r'(q|qq|qw|qr|qx)\<', String.Other, 'lt-string'),
132
133
  (r'(q|qq|qw|qr|qx)([\W_])(.|\n)*?\2', String.Other),
133
134
  (r'(package)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)',
134
- bygroups(Keyword, Text, Name.Namespace)),
135
+ bygroups(Keyword, Whitespace, Name.Namespace)),
135
136
  (r'(use|require|no)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)',
136
- bygroups(Keyword, Text, Name.Namespace)),
137
- (r'(sub)(\s+)', bygroups(Keyword, Text), 'funcname'),
137
+ bygroups(Keyword, Whitespace, Name.Namespace)),
138
+ (r'(sub)(\s+)', bygroups(Keyword, Whitespace), 'funcname'),
138
139
  (words((
139
140
  'no', 'package', 'require', 'use'), suffix=r'\b'),
140
141
  Keyword),
@@ -150,7 +151,7 @@ class PerlLexer(RegexLexer):
150
151
  (r'[^\n]*\n', String.Interpol),
151
152
  ],
152
153
  'varname': [
153
- (r'\s+', Text),
154
+ (r'\s+', Whitespace),
154
155
  (r'\{', Punctuation, '#pop'), # hash syntax?
155
156
  (r'\)|,', Punctuation, '#pop'), # argument specifier
156
157
  (r'\w+::', Name.Namespace),
@@ -165,9 +166,9 @@ class PerlLexer(RegexLexer):
165
166
  ],
166
167
  'funcname': [
167
168
  (r'[a-zA-Z_]\w*[!?]?', Name.Function),
168
- (r'\s+', Text),
169
+ (r'\s+', Whitespace),
169
170
  # argument declaration
170
- (r'(\([$@%]*\))(\s*)', bygroups(Punctuation, Text)),
171
+ (r'(\([$@%]*\))(\s*)', bygroups(Punctuation, Whitespace)),
171
172
  (r';', Punctuation, '#pop'),
172
173
  (r'.*?\{', Punctuation, '#pop'),
173
174
  ],
@@ -223,18 +224,19 @@ class PerlLexer(RegexLexer):
223
224
 
224
225
  class Perl6Lexer(ExtendedRegexLexer):
225
226
  """
226
- For `Raku <https://www.raku.org>`_ (a.k.a. Perl 6) source code.
227
+ For Raku (a.k.a. Perl 6) source code.
227
228
 
228
229
  .. versionadded:: 2.0
229
230
  """
230
231
 
231
232
  name = 'Perl6'
233
+ url = 'https://www.raku.org'
232
234
  aliases = ['perl6', 'pl6', 'raku']
233
235
  filenames = ['*.pl', '*.pm', '*.nqp', '*.p6', '*.6pl', '*.p6l', '*.pl6',
234
236
  '*.6pm', '*.p6m', '*.pm6', '*.t', '*.raku', '*.rakumod',
235
237
  '*.rakutest', '*.rakudoc']
236
238
  mimetypes = ['text/x-perl6', 'application/x-perl6']
237
- flags = re.MULTILINE | re.DOTALL | re.UNICODE
239
+ flags = re.MULTILINE | re.DOTALL
238
240
 
239
241
  PERL6_IDENTIFIER_RANGE = r"['\w:-]"
240
242
 
@@ -605,7 +607,7 @@ class Perl6Lexer(ExtendedRegexLexer):
605
607
  (r'(regex|token|rule)(?!' + PERL6_IDENTIFIER_RANGE + r')(\s*' + PERL6_IDENTIFIER_RANGE + '+)?',
606
608
  bygroups(Keyword, Name), 'pre-token'),
607
609
  # deal with a special case in the Perl 6 grammar (role q { ... })
608
- (r'(role)(\s+)(q)(\s*)', bygroups(Keyword, Text, Name, Text)),
610
+ (r'(role)(\s+)(q)(\s*)', bygroups(Keyword, Whitespace, Name, Whitespace)),
609
611
  (_build_word_match(PERL6_KEYWORDS, PERL6_IDENTIFIER_RANGE), Keyword),
610
612
  (_build_word_match(PERL6_BUILTIN_CLASSES, PERL6_IDENTIFIER_RANGE, suffix='(?::[UD])?'),
611
613
  Name.Builtin),