pygments.rb 2.0.0.rc3 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (286) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +13 -1
  3. data/.gitignore +0 -1
  4. data/.rubocop.yml +16 -0
  5. data/CHANGELOG.adoc +19 -0
  6. data/README.adoc +1 -3
  7. data/Rakefile +0 -14
  8. data/bench.rb +11 -6
  9. data/lib/pygments/lexer.rb +84 -62
  10. data/lib/pygments/mentos.py +7 -49
  11. data/lib/pygments/popen.rb +133 -173
  12. data/lib/pygments/version.rb +1 -1
  13. data/lib/pygments.rb +15 -6
  14. data/pygments.rb.gemspec +16 -11
  15. data/test/test_pygments.rb +19 -40
  16. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/AUTHORS +13 -1
  17. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/INSTALLER +0 -0
  18. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/LICENSE +1 -1
  19. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/METADATA +8 -9
  20. data/vendor/pygments-main/Pygments-2.10.0.dist-info/RECORD +524 -0
  21. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/REQUESTED +0 -0
  22. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/WHEEL +0 -0
  23. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/entry_points.txt +0 -0
  24. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.10.0.dist-info}/top_level.txt +0 -0
  25. data/vendor/pygments-main/bin/pygmentize +1 -1
  26. data/vendor/pygments-main/pygments/__init__.py +2 -3
  27. data/vendor/pygments-main/pygments/__main__.py +1 -2
  28. data/vendor/pygments-main/pygments/cmdline.py +179 -159
  29. data/vendor/pygments-main/pygments/console.py +1 -2
  30. data/vendor/pygments-main/pygments/filter.py +1 -2
  31. data/vendor/pygments-main/pygments/filters/__init__.py +1 -2
  32. data/vendor/pygments-main/pygments/formatter.py +1 -2
  33. data/vendor/pygments-main/pygments/formatters/__init__.py +2 -3
  34. data/vendor/pygments-main/pygments/formatters/_mapping.py +2 -2
  35. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
  36. data/vendor/pygments-main/pygments/formatters/html.py +53 -25
  37. data/vendor/pygments-main/pygments/formatters/img.py +24 -10
  38. data/vendor/pygments-main/pygments/formatters/irc.py +1 -2
  39. data/vendor/pygments-main/pygments/formatters/latex.py +8 -9
  40. data/vendor/pygments-main/pygments/formatters/other.py +7 -10
  41. data/vendor/pygments-main/pygments/formatters/pangomarkup.py +83 -0
  42. data/vendor/pygments-main/pygments/formatters/rtf.py +1 -2
  43. data/vendor/pygments-main/pygments/formatters/svg.py +5 -4
  44. data/vendor/pygments-main/pygments/formatters/terminal.py +1 -2
  45. data/vendor/pygments-main/pygments/formatters/terminal256.py +24 -3
  46. data/vendor/pygments-main/pygments/lexer.py +7 -6
  47. data/vendor/pygments-main/pygments/lexers/__init__.py +2 -3
  48. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1 -2
  49. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +1 -2
  50. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +16 -12
  51. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +56 -16
  52. data/vendor/pygments-main/pygments/lexers/_julia_builtins.py +401 -0
  53. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -2
  54. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +1 -2
  55. data/vendor/pygments-main/pygments/lexers/_mapping.py +73 -54
  56. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -2
  57. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +2 -3
  58. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +439 -386
  59. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +1 -2
  60. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +1 -2
  61. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +1 -2
  62. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -2
  63. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +1 -2
  64. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +91 -55
  65. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -2
  66. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +1 -2
  67. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +1 -2
  68. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -2
  69. data/vendor/pygments-main/pygments/lexers/actionscript.py +9 -10
  70. data/vendor/pygments-main/pygments/lexers/agile.py +1 -2
  71. data/vendor/pygments-main/pygments/lexers/algebra.py +1 -2
  72. data/vendor/pygments-main/pygments/lexers/ambient.py +3 -4
  73. data/vendor/pygments-main/pygments/lexers/amdgpu.py +53 -0
  74. data/vendor/pygments-main/pygments/lexers/ampl.py +1 -2
  75. data/vendor/pygments-main/pygments/lexers/apdlexer.py +448 -0
  76. data/vendor/pygments-main/pygments/lexers/apl.py +7 -5
  77. data/vendor/pygments-main/pygments/lexers/archetype.py +2 -3
  78. data/vendor/pygments-main/pygments/lexers/arrow.py +1 -2
  79. data/vendor/pygments-main/pygments/lexers/asc.py +51 -0
  80. data/vendor/pygments-main/pygments/lexers/asm.py +87 -60
  81. data/vendor/pygments-main/pygments/lexers/automation.py +8 -3
  82. data/vendor/pygments-main/pygments/lexers/bare.py +1 -2
  83. data/vendor/pygments-main/pygments/lexers/basic.py +3 -4
  84. data/vendor/pygments-main/pygments/lexers/bibtex.py +3 -4
  85. data/vendor/pygments-main/pygments/lexers/boa.py +4 -5
  86. data/vendor/pygments-main/pygments/lexers/business.py +3 -4
  87. data/vendor/pygments-main/pygments/lexers/c_cpp.py +61 -36
  88. data/vendor/pygments-main/pygments/lexers/c_like.py +103 -5
  89. data/vendor/pygments-main/pygments/lexers/capnproto.py +1 -2
  90. data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
  91. data/vendor/pygments-main/pygments/lexers/chapel.py +52 -29
  92. data/vendor/pygments-main/pygments/lexers/clean.py +7 -8
  93. data/vendor/pygments-main/pygments/lexers/compiled.py +1 -2
  94. data/vendor/pygments-main/pygments/lexers/configs.py +139 -48
  95. data/vendor/pygments-main/pygments/lexers/console.py +1 -2
  96. data/vendor/pygments-main/pygments/lexers/crystal.py +53 -79
  97. data/vendor/pygments-main/pygments/lexers/csound.py +3 -4
  98. data/vendor/pygments-main/pygments/lexers/css.py +11 -8
  99. data/vendor/pygments-main/pygments/lexers/d.py +3 -4
  100. data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -2
  101. data/vendor/pygments-main/pygments/lexers/data.py +2 -3
  102. data/vendor/pygments-main/pygments/lexers/devicetree.py +2 -3
  103. data/vendor/pygments-main/pygments/lexers/diff.py +1 -2
  104. data/vendor/pygments-main/pygments/lexers/dotnet.py +7 -8
  105. data/vendor/pygments-main/pygments/lexers/dsls.py +3 -4
  106. data/vendor/pygments-main/pygments/lexers/dylan.py +1 -2
  107. data/vendor/pygments-main/pygments/lexers/ecl.py +4 -6
  108. data/vendor/pygments-main/pygments/lexers/eiffel.py +2 -3
  109. data/vendor/pygments-main/pygments/lexers/elm.py +1 -2
  110. data/vendor/pygments-main/pygments/lexers/email.py +1 -2
  111. data/vendor/pygments-main/pygments/lexers/erlang.py +2 -3
  112. data/vendor/pygments-main/pygments/lexers/esoteric.py +1 -2
  113. data/vendor/pygments-main/pygments/lexers/ezhil.py +1 -2
  114. data/vendor/pygments-main/pygments/lexers/factor.py +3 -4
  115. data/vendor/pygments-main/pygments/lexers/fantom.py +1 -2
  116. data/vendor/pygments-main/pygments/lexers/felix.py +1 -2
  117. data/vendor/pygments-main/pygments/lexers/floscript.py +2 -3
  118. data/vendor/pygments-main/pygments/lexers/forth.py +2 -3
  119. data/vendor/pygments-main/pygments/lexers/fortran.py +9 -7
  120. data/vendor/pygments-main/pygments/lexers/foxpro.py +1 -2
  121. data/vendor/pygments-main/pygments/lexers/freefem.py +1 -2
  122. data/vendor/pygments-main/pygments/lexers/functional.py +1 -2
  123. data/vendor/pygments-main/pygments/lexers/futhark.py +111 -0
  124. data/vendor/pygments-main/pygments/lexers/gcodelexer.py +36 -0
  125. data/vendor/pygments-main/pygments/lexers/gdscript.py +1 -2
  126. data/vendor/pygments-main/pygments/lexers/go.py +3 -4
  127. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +1 -2
  128. data/vendor/pygments-main/pygments/lexers/graph.py +1 -2
  129. data/vendor/pygments-main/pygments/lexers/graphics.py +4 -5
  130. data/vendor/pygments-main/pygments/lexers/graphviz.py +58 -0
  131. data/vendor/pygments-main/pygments/lexers/gsql.py +92 -0
  132. data/vendor/pygments-main/pygments/lexers/haskell.py +5 -6
  133. data/vendor/pygments-main/pygments/lexers/haxe.py +4 -5
  134. data/vendor/pygments-main/pygments/lexers/hdl.py +2 -6
  135. data/vendor/pygments-main/pygments/lexers/hexdump.py +1 -2
  136. data/vendor/pygments-main/pygments/lexers/html.py +7 -8
  137. data/vendor/pygments-main/pygments/lexers/idl.py +1 -2
  138. data/vendor/pygments-main/pygments/lexers/igor.py +1 -2
  139. data/vendor/pygments-main/pygments/lexers/inferno.py +1 -2
  140. data/vendor/pygments-main/pygments/lexers/installers.py +3 -4
  141. data/vendor/pygments-main/pygments/lexers/int_fiction.py +1 -2
  142. data/vendor/pygments-main/pygments/lexers/iolang.py +2 -3
  143. data/vendor/pygments-main/pygments/lexers/j.py +2 -3
  144. data/vendor/pygments-main/pygments/lexers/javascript.py +170 -156
  145. data/vendor/pygments-main/pygments/lexers/jslt.py +94 -0
  146. data/vendor/pygments-main/pygments/lexers/julia.py +136 -185
  147. data/vendor/pygments-main/pygments/lexers/jvm.py +433 -307
  148. data/vendor/pygments-main/pygments/lexers/kuin.py +299 -0
  149. data/vendor/pygments-main/pygments/lexers/lisp.py +25 -23
  150. data/vendor/pygments-main/pygments/lexers/make.py +3 -4
  151. data/vendor/pygments-main/pygments/lexers/markup.py +13 -16
  152. data/vendor/pygments-main/pygments/lexers/math.py +1 -2
  153. data/vendor/pygments-main/pygments/lexers/matlab.py +2666 -93
  154. data/vendor/pygments-main/pygments/lexers/meson.py +155 -0
  155. data/vendor/pygments-main/pygments/lexers/mime.py +7 -23
  156. data/vendor/pygments-main/pygments/lexers/ml.py +8 -9
  157. data/vendor/pygments-main/pygments/lexers/modeling.py +1 -2
  158. data/vendor/pygments-main/pygments/lexers/modula2.py +3 -4
  159. data/vendor/pygments-main/pygments/lexers/monte.py +1 -2
  160. data/vendor/pygments-main/pygments/lexers/mosel.py +1 -2
  161. data/vendor/pygments-main/pygments/lexers/ncl.py +1 -2
  162. data/vendor/pygments-main/pygments/lexers/nimrod.py +2 -3
  163. data/vendor/pygments-main/pygments/lexers/nit.py +1 -2
  164. data/vendor/pygments-main/pygments/lexers/nix.py +1 -2
  165. data/vendor/pygments-main/pygments/lexers/oberon.py +1 -2
  166. data/vendor/pygments-main/pygments/lexers/objective.py +6 -7
  167. data/vendor/pygments-main/pygments/lexers/ooc.py +1 -2
  168. data/vendor/pygments-main/pygments/lexers/other.py +1 -2
  169. data/vendor/pygments-main/pygments/lexers/parasail.py +1 -2
  170. data/vendor/pygments-main/pygments/lexers/parsers.py +26 -27
  171. data/vendor/pygments-main/pygments/lexers/pascal.py +1 -2
  172. data/vendor/pygments-main/pygments/lexers/pawn.py +2 -5
  173. data/vendor/pygments-main/pygments/lexers/perl.py +1 -2
  174. data/vendor/pygments-main/pygments/lexers/php.py +3 -4
  175. data/vendor/pygments-main/pygments/lexers/pointless.py +1 -2
  176. data/vendor/pygments-main/pygments/lexers/pony.py +1 -2
  177. data/vendor/pygments-main/pygments/lexers/praat.py +1 -2
  178. data/vendor/pygments-main/pygments/lexers/procfile.py +43 -0
  179. data/vendor/pygments-main/pygments/lexers/prolog.py +3 -4
  180. data/vendor/pygments-main/pygments/lexers/promql.py +2 -3
  181. data/vendor/pygments-main/pygments/lexers/python.py +38 -17
  182. data/vendor/pygments-main/pygments/lexers/qvt.py +1 -2
  183. data/vendor/pygments-main/pygments/lexers/r.py +1 -2
  184. data/vendor/pygments-main/pygments/lexers/rdf.py +1 -2
  185. data/vendor/pygments-main/pygments/lexers/rebol.py +1 -2
  186. data/vendor/pygments-main/pygments/lexers/resource.py +2 -3
  187. data/vendor/pygments-main/pygments/lexers/ride.py +1 -2
  188. data/vendor/pygments-main/pygments/lexers/rnc.py +2 -3
  189. data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -2
  190. data/vendor/pygments-main/pygments/lexers/robotframework.py +1 -2
  191. data/vendor/pygments-main/pygments/lexers/ruby.py +31 -25
  192. data/vendor/pygments-main/pygments/lexers/rust.py +10 -12
  193. data/vendor/pygments-main/pygments/lexers/sas.py +1 -2
  194. data/vendor/pygments-main/pygments/lexers/scdoc.py +1 -2
  195. data/vendor/pygments-main/pygments/lexers/scripting.py +12 -13
  196. data/vendor/pygments-main/pygments/lexers/sgf.py +1 -2
  197. data/vendor/pygments-main/pygments/lexers/shell.py +15 -17
  198. data/vendor/pygments-main/pygments/lexers/sieve.py +1 -2
  199. data/vendor/pygments-main/pygments/lexers/slash.py +1 -2
  200. data/vendor/pygments-main/pygments/lexers/smalltalk.py +1 -2
  201. data/vendor/pygments-main/pygments/lexers/smithy.py +79 -0
  202. data/vendor/pygments-main/pygments/lexers/smv.py +2 -3
  203. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -2
  204. data/vendor/pygments-main/pygments/lexers/solidity.py +1 -2
  205. data/vendor/pygments-main/pygments/lexers/special.py +44 -30
  206. data/vendor/pygments-main/pygments/lexers/sql.py +8 -13
  207. data/vendor/pygments-main/pygments/lexers/stata.py +1 -2
  208. data/vendor/pygments-main/pygments/lexers/supercollider.py +4 -5
  209. data/vendor/pygments-main/pygments/lexers/tcl.py +4 -5
  210. data/vendor/pygments-main/pygments/lexers/teal.py +88 -0
  211. data/vendor/pygments-main/pygments/lexers/templates.py +34 -35
  212. data/vendor/pygments-main/pygments/lexers/teraterm.py +2 -3
  213. data/vendor/pygments-main/pygments/lexers/testing.py +2 -3
  214. data/vendor/pygments-main/pygments/lexers/text.py +1 -2
  215. data/vendor/pygments-main/pygments/lexers/textedit.py +3 -4
  216. data/vendor/pygments-main/pygments/lexers/textfmts.py +1 -2
  217. data/vendor/pygments-main/pygments/lexers/theorem.py +11 -7
  218. data/vendor/pygments-main/pygments/lexers/thingsdb.py +118 -0
  219. data/vendor/pygments-main/pygments/lexers/tnt.py +26 -17
  220. data/vendor/pygments-main/pygments/lexers/trafficscript.py +2 -3
  221. data/vendor/pygments-main/pygments/lexers/typoscript.py +1 -2
  222. data/vendor/pygments-main/pygments/lexers/unicon.py +1 -2
  223. data/vendor/pygments-main/pygments/lexers/urbi.py +3 -4
  224. data/vendor/pygments-main/pygments/lexers/usd.py +1 -2
  225. data/vendor/pygments-main/pygments/lexers/varnish.py +2 -3
  226. data/vendor/pygments-main/pygments/lexers/verification.py +1 -2
  227. data/vendor/pygments-main/pygments/lexers/web.py +1 -2
  228. data/vendor/pygments-main/pygments/lexers/webassembly.py +120 -0
  229. data/vendor/pygments-main/pygments/lexers/webidl.py +1 -2
  230. data/vendor/pygments-main/pygments/lexers/webmisc.py +5 -5
  231. data/vendor/pygments-main/pygments/lexers/whiley.py +1 -2
  232. data/vendor/pygments-main/pygments/lexers/x10.py +2 -3
  233. data/vendor/pygments-main/pygments/lexers/xorg.py +1 -2
  234. data/vendor/pygments-main/pygments/lexers/yang.py +1 -2
  235. data/vendor/pygments-main/pygments/lexers/zig.py +1 -2
  236. data/vendor/pygments-main/pygments/modeline.py +1 -2
  237. data/vendor/pygments-main/pygments/plugin.py +2 -3
  238. data/vendor/pygments-main/pygments/regexopt.py +2 -3
  239. data/vendor/pygments-main/pygments/scanner.py +1 -2
  240. data/vendor/pygments-main/pygments/sphinxext.py +1 -2
  241. data/vendor/pygments-main/pygments/style.py +4 -5
  242. data/vendor/pygments-main/pygments/styles/__init__.py +5 -2
  243. data/vendor/pygments-main/pygments/styles/abap.py +1 -2
  244. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  245. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  246. data/vendor/pygments-main/pygments/styles/arduino.py +1 -2
  247. data/vendor/pygments-main/pygments/styles/autumn.py +1 -2
  248. data/vendor/pygments-main/pygments/styles/borland.py +1 -2
  249. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  250. data/vendor/pygments-main/pygments/styles/colorful.py +1 -2
  251. data/vendor/pygments-main/pygments/styles/default.py +1 -2
  252. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  253. data/vendor/pygments-main/pygments/styles/friendly.py +2 -2
  254. data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
  255. data/vendor/pygments-main/pygments/styles/gruvbox.py +107 -0
  256. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  257. data/vendor/pygments-main/pygments/styles/inkpot.py +1 -2
  258. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -2
  259. data/vendor/pygments-main/pygments/styles/manni.py +1 -2
  260. data/vendor/pygments-main/pygments/styles/material.py +118 -0
  261. data/vendor/pygments-main/pygments/styles/monokai.py +1 -2
  262. data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
  263. data/vendor/pygments-main/pygments/styles/native.py +2 -2
  264. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -2
  265. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -2
  266. data/vendor/pygments-main/pygments/styles/pastie.py +1 -2
  267. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  268. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -2
  269. data/vendor/pygments-main/pygments/styles/rrt.py +1 -2
  270. data/vendor/pygments-main/pygments/styles/sas.py +1 -2
  271. data/vendor/pygments-main/pygments/styles/solarized.py +4 -2
  272. data/vendor/pygments-main/pygments/styles/stata_dark.py +1 -2
  273. data/vendor/pygments-main/pygments/styles/stata_light.py +1 -2
  274. data/vendor/pygments-main/pygments/styles/tango.py +1 -2
  275. data/vendor/pygments-main/pygments/styles/trac.py +1 -2
  276. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  277. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  278. data/vendor/pygments-main/pygments/styles/xcode.py +1 -2
  279. data/vendor/pygments-main/pygments/styles/zenburn.py +80 -0
  280. data/vendor/pygments-main/pygments/token.py +1 -2
  281. data/vendor/pygments-main/pygments/unistring.py +1 -2
  282. data/vendor/pygments-main/pygments/util.py +2 -5
  283. metadata +48 -23
  284. data/cache-lexers.rb +0 -9
  285. data/lexers +0 -0
  286. data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +0 -482
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.pascal
4
3
  ~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Pascal family languages.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,17 +1,16 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.pawn
4
3
  ~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for the Pawn languages.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
12
11
  from pygments.lexer import RegexLexer
13
12
  from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
14
- Number, Punctuation, Error
13
+ Number, Punctuation
15
14
  from pygments.util import get_bool_opt
16
15
 
17
16
  __all__ = ['SourcePawnLexer', 'PawnLexer']
@@ -54,7 +53,6 @@ class SourcePawnLexer(RegexLexer):
54
53
  (r'0x[0-9a-fA-F]+[LlUu]*', Number.Hex),
55
54
  (r'0[0-7]+[LlUu]*', Number.Oct),
56
55
  (r'\d+[LlUu]*', Number.Integer),
57
- (r'\*/', Error),
58
56
  (r'[~!%^&*+=|?:<>/-]', Operator),
59
57
  (r'[()\[\],.;]', Punctuation),
60
58
  (r'(case|const|continue|native|'
@@ -166,7 +164,6 @@ class PawnLexer(RegexLexer):
166
164
  (r'0x[0-9a-fA-F]+[LlUu]*', Number.Hex),
167
165
  (r'0[0-7]+[LlUu]*', Number.Oct),
168
166
  (r'\d+[LlUu]*', Number.Integer),
169
- (r'\*/', Error),
170
167
  (r'[~!%^&*+=|?:<>/-]', Operator),
171
168
  (r'[()\[\],.;]', Punctuation),
172
169
  (r'(switch|case|default|const|new|static|char|continue|break|'
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.perl
4
3
  ~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Perl, Raku and related languages.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.php
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for PHP and related languages.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -81,8 +80,8 @@ class ZephirLexer(RegexLexer):
81
80
  (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
82
81
  (r'0x[0-9a-fA-F]+', Number.Hex),
83
82
  (r'[0-9]+', Number.Integer),
84
- (r'"(\\\\|\\"|[^"])*"', String.Double),
85
- (r"'(\\\\|\\'|[^'])*'", String.Single),
83
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
84
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
86
85
  ]
87
86
  }
88
87
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.pointless
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Pointless.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.pony
4
3
  ~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Pony and related languages.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.praat
4
3
  ~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for Praat
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -0,0 +1,43 @@
1
+ """
2
+ pygments.lexers.procfile
3
+ ~~~~~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexer for Procfile file format.
6
+
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+
11
+ from pygments.lexer import RegexLexer, bygroups
12
+ from pygments.token import Name, Number, String, Text, Punctuation
13
+
14
+ __all__ = ["ProcfileLexer"]
15
+
16
+
17
+ class ProcfileLexer(RegexLexer):
18
+ """
19
+ Lexer for Procfile file format.
20
+
21
+ The format is used to run processes on Heroku or is used by Foreman or
22
+ Honcho tools.
23
+ For more information about the definition of the format, see:
24
+ https://devcenter.heroku.com/articles/procfile#procfile-format
25
+
26
+ .. versionadded:: 2.10
27
+ """
28
+ name = 'Procfile'
29
+ aliases = ['procfile']
30
+ filenames = ['Procfile']
31
+
32
+ tokens = {
33
+ 'root': [
34
+ (r'^([a-z]+)(:)', bygroups(Name.Label, Punctuation)),
35
+ (r'\s+', Text.Whitespace),
36
+ (r'"[^"]*"', String),
37
+ (r"'[^']*'", String),
38
+ (r'[0-9]+', Number.Integer),
39
+ (r'\$[a-zA-Z_][\w]*', Name.Variable),
40
+ (r'(\w+)(=)(\w+)', bygroups(Name.Variable, Punctuation, String)),
41
+ (r'([\w\-\./]+)', Text),
42
+ ],
43
+ }
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.prolog
4
3
  ~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Prolog and Prolog-like languages.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -227,7 +226,7 @@ class LogtalkLexer(RegexLexer):
227
226
  # Existential quantifier
228
227
  (r'\^', Operator),
229
228
  # Strings
230
- (r'"(\\\\|\\"|[^"])*"', String),
229
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
231
230
  # Punctuation
232
231
  (r'[()\[\],.|]', Text),
233
232
  # Atoms
@@ -277,7 +276,7 @@ class LogtalkLexer(RegexLexer):
277
276
  (r"[a-z][a-zA-Z0-9_]*", Text),
278
277
  (r"'", String, 'quoted_atom'),
279
278
  # Strings
280
- (r'"(\\\\|\\"|[^"])*"', String),
279
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
281
280
  # End of entity-opening directive
282
281
  (r'([)]\.)', Text, 'root'),
283
282
  # Scope operator
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.promql
4
3
  ~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for Prometheus Query Language.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -167,7 +166,7 @@ class PromQLLexer(RegexLexer):
167
166
  (r"\n", Whitespace),
168
167
  (r"\s+", Whitespace),
169
168
  (r",", Punctuation),
170
- (r'([_a-zA-Z][a-zA-Z0-9_]*?)(\s*?)(=~|!=|=|~!)(\s*?)(")(.*?)(")',
169
+ (r'([_a-zA-Z][a-zA-Z0-9_]*?)(\s*?)(=~|!=|=|!~)(\s*?)("|\')(.*?)("|\')',
171
170
  bygroups(Name.Label, Whitespace, Operator, Whitespace,
172
171
  Punctuation, String, Punctuation)),
173
172
  ],
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.python
4
3
  ~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Python and related languages.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -122,13 +121,17 @@ class PythonLexer(RegexLexer):
122
121
  'expr': [
123
122
  # raw f-strings
124
123
  ('(?i)(rf|fr)(""")',
125
- bygroups(String.Affix, String.Double), 'tdqf'),
124
+ bygroups(String.Affix, String.Double),
125
+ combined('rfstringescape', 'tdqf')),
126
126
  ("(?i)(rf|fr)(''')",
127
- bygroups(String.Affix, String.Single), 'tsqf'),
127
+ bygroups(String.Affix, String.Single),
128
+ combined('rfstringescape', 'tsqf')),
128
129
  ('(?i)(rf|fr)(")',
129
- bygroups(String.Affix, String.Double), 'dqf'),
130
+ bygroups(String.Affix, String.Double),
131
+ combined('rfstringescape', 'dqf')),
130
132
  ("(?i)(rf|fr)(')",
131
- bygroups(String.Affix, String.Single), 'sqf'),
133
+ bygroups(String.Affix, String.Single),
134
+ combined('rfstringescape', 'sqf')),
132
135
  # non-raw f-strings
133
136
  ('([fF])(""")', bygroups(String.Affix, String.Double),
134
137
  combined('fstringescape', 'tdqf')),
@@ -157,6 +160,7 @@ class PythonLexer(RegexLexer):
157
160
  ("([uUbB]?)(')", bygroups(String.Affix, String.Single),
158
161
  combined('stringescape', 'sqs')),
159
162
  (r'[^\S\n]+', Text),
163
+ include('numbers'),
160
164
  (r'!=|==|<<|>>|:=|[-~+/*%=<>&^|.]', Operator),
161
165
  (r'[]{}:(),;[]', Punctuation),
162
166
  (r'(in|is|and|or|not)\b', Operator.Word),
@@ -165,7 +169,6 @@ class PythonLexer(RegexLexer):
165
169
  include('magicfuncs'),
166
170
  include('magicvars'),
167
171
  include('name'),
168
- include('numbers'),
169
172
  ],
170
173
  'expr-inside-fstring': [
171
174
  (r'[{([]', Punctuation, 'expr-inside-fstring-inner'),
@@ -316,9 +319,12 @@ class PythonLexer(RegexLexer):
316
319
  (uni_name, Name.Namespace),
317
320
  default('#pop'),
318
321
  ],
319
- 'fstringescape': [
322
+ 'rfstringescape': [
320
323
  (r'\{\{', String.Escape),
321
324
  (r'\}\}', String.Escape),
325
+ ],
326
+ 'fstringescape': [
327
+ include('rfstringescape'),
322
328
  include('stringescape'),
323
329
  ],
324
330
  'stringescape': [
@@ -372,7 +378,8 @@ class PythonLexer(RegexLexer):
372
378
  }
373
379
 
374
380
  def analyse_text(text):
375
- return shebang_matches(text, r'pythonw?(3(\.\d)?)?')
381
+ return shebang_matches(text, r'pythonw?(3(\.\d)?)?') or \
382
+ 'import ' in text[:1000]
376
383
 
377
384
 
378
385
  Python3Lexer = PythonLexer
@@ -596,8 +603,7 @@ class Python2Lexer(RegexLexer):
596
603
  }
597
604
 
598
605
  def analyse_text(text):
599
- return shebang_matches(text, r'pythonw?2(\.\d)?') or \
600
- 'import ' in text[:1000]
606
+ return shebang_matches(text, r'pythonw?2(\.\d)?')
601
607
 
602
608
 
603
609
  class PythonConsoleLexer(Lexer):
@@ -721,7 +727,7 @@ class PythonTracebackLexer(RegexLexer):
721
727
  (r'^( File )("[^"]+")(, line )(\d+)(\n)',
722
728
  bygroups(Text, Name.Builtin, Text, Number, Text)),
723
729
  (r'^( )(.+)(\n)',
724
- bygroups(Text, using(PythonLexer), Text)),
730
+ bygroups(Text, using(PythonLexer), Text), 'markers'),
725
731
  (r'^([ \t]*)(\.\.\.)(\n)',
726
732
  bygroups(Text, Comment, Text)), # for doctests...
727
733
  (r'^([^:]+)(: )(.+)(\n)',
@@ -729,6 +735,15 @@ class PythonTracebackLexer(RegexLexer):
729
735
  (r'^([a-zA-Z_][\w.]*)(:?\n)',
730
736
  bygroups(Generic.Error, Text), '#pop')
731
737
  ],
738
+ 'markers': [
739
+ # Either `PEP 657 <https://www.python.org/dev/peps/pep-0657/>`
740
+ # error locations in Python 3.11+, or single-caret markers
741
+ # for syntax errors before that.
742
+ (r'^( {4,})(\^+)(\n)',
743
+ bygroups(Text, Punctuation.Marker, Text),
744
+ '#pop'),
745
+ default('#pop'),
746
+ ],
732
747
  }
733
748
 
734
749
 
@@ -767,7 +782,7 @@ class Python2TracebackLexer(RegexLexer):
767
782
  (r'^( File )("[^"]+")(, line )(\d+)(\n)',
768
783
  bygroups(Text, Name.Builtin, Text, Number, Text)),
769
784
  (r'^( )(.+)(\n)',
770
- bygroups(Text, using(Python2Lexer), Text)),
785
+ bygroups(Text, using(Python2Lexer), Text), 'marker'),
771
786
  (r'^([ \t]*)(\.\.\.)(\n)',
772
787
  bygroups(Text, Comment, Text)), # for doctests...
773
788
  (r'^([^:]+)(: )(.+)(\n)',
@@ -775,6 +790,11 @@ class Python2TracebackLexer(RegexLexer):
775
790
  (r'^([a-zA-Z_]\w*)(:?\n)',
776
791
  bygroups(Generic.Error, Text), '#pop')
777
792
  ],
793
+ 'marker': [
794
+ # For syntax errors.
795
+ (r'( {4,})(\^)', bygroups(Text, Punctuation.Marker), '#pop'),
796
+ default('#pop'),
797
+ ],
778
798
  }
779
799
 
780
800
 
@@ -839,14 +859,14 @@ class CythonLexer(RegexLexer):
839
859
  ],
840
860
  'builtins': [
841
861
  (words((
842
- '__import__', 'abs', 'all', 'any', 'apply', 'basestring', 'bin',
862
+ '__import__', 'abs', 'all', 'any', 'apply', 'basestring', 'bin', 'bint',
843
863
  'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'chr',
844
864
  'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'delattr',
845
865
  'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', 'exit',
846
866
  'file', 'filter', 'float', 'frozenset', 'getattr', 'globals',
847
867
  'hasattr', 'hash', 'hex', 'id', 'input', 'int', 'intern', 'isinstance',
848
868
  'issubclass', 'iter', 'len', 'list', 'locals', 'long', 'map', 'max',
849
- 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'property',
869
+ 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'Py_ssize_t',
850
870
  'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed',
851
871
  'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod',
852
872
  'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', 'unsigned',
@@ -1146,6 +1166,7 @@ class NumPyLexer(PythonLexer):
1146
1166
  yield index, token, value
1147
1167
 
1148
1168
  def analyse_text(text):
1169
+ ltext = text[:1000]
1149
1170
  return (shebang_matches(text, r'pythonw?(3(\.\d)?)?') or
1150
- 'import ' in text[:1000]) \
1151
- and ('import numpy' in text or 'from numpy import' in text)
1171
+ 'import ' in ltext) \
1172
+ and ('import numpy' in ltext or 'from numpy import' in ltext)
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.qvt
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for QVT Operational language.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.r
4
3
  ~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for the R/S languages.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.rdf
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for semantic web and RDF query languages and markup.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.rebol
4
3
  ~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for the REBOL and related languages.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.resource
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for resource definition files.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -25,7 +24,7 @@ class ResourceLexer(RegexLexer):
25
24
  .. versionadded:: 2.0
26
25
  """
27
26
  name = 'ResourceBundle'
28
- aliases = ['resource', 'resourcebundle']
27
+ aliases = ['resourcebundle', 'resource']
29
28
  filenames = []
30
29
 
31
30
  _types = (':table', ':array', ':string', ':bin', ':import', ':intvector',
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.ride
4
3
  ~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for the Ride programming language.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.rnc
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for Relax-NG Compact syntax
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -24,7 +23,7 @@ class RNCCompactLexer(RegexLexer):
24
23
  """
25
24
 
26
25
  name = 'Relax-NG Compact'
27
- aliases = ['rnc', 'rng-compact']
26
+ aliases = ['rng-compact', 'rnc']
28
27
  filenames = ['*.rnc']
29
28
 
30
29
  tokens = {
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.roboconf
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Roboconf DSL.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.robotframework
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for Robot Framework.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.ruby
4
3
  ~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Ruby and related languages.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -34,7 +33,7 @@ class RubyLexer(ExtendedRegexLexer):
34
33
  """
35
34
 
36
35
  name = 'Ruby'
37
- aliases = ['rb', 'ruby', 'duby']
36
+ aliases = ['ruby', 'rb', 'duby']
38
37
  filenames = ['*.rb', '*.rbw', 'Rakefile', '*.rake', '*.gemspec',
39
38
  '*.rbx', '*.duby', 'Gemfile']
40
39
  mimetypes = ['text/x-ruby', 'application/x-ruby']
@@ -57,8 +56,11 @@ class RubyLexer(ExtendedRegexLexer):
57
56
 
58
57
  ctx.pos = match.start(5)
59
58
  ctx.end = match.end(5)
60
- # this may find other heredocs
61
- yield from self.get_tokens_unprocessed(context=ctx)
59
+ # this may find other heredocs, so limit the recursion depth
60
+ if len(heredocstack) < 100:
61
+ yield from self.get_tokens_unprocessed(context=ctx)
62
+ else:
63
+ yield ctx.pos, String.Heredoc, match.group(5)
62
64
  ctx.pos = match.end()
63
65
 
64
66
  if outermost:
@@ -107,7 +109,7 @@ class RubyLexer(ExtendedRegexLexer):
107
109
  # easy ones
108
110
  (r'\:@{0,2}[a-zA-Z_]\w*[!?]?', String.Symbol),
109
111
  (words(RUBY_OPERATORS, prefix=r'\:@{0,2}'), String.Symbol),
110
- (r":'(\\\\|\\'|[^'])*'", String.Symbol),
112
+ (r":'(\\\\|\\[^\\]|[^'\\])*'", String.Symbol),
111
113
  (r':"', String.Symbol, 'simple-sym'),
112
114
  (r'([a-zA-Z_]\w*)(:)(?!:)',
113
115
  bygroups(String.Symbol, Punctuation)), # Since Ruby 1.9
@@ -327,9 +329,13 @@ class RubyLexer(ExtendedRegexLexer):
327
329
  ],
328
330
  'funcname': [
329
331
  (r'\(', Punctuation, 'defexpr'),
330
- (r'(?:([a-zA-Z_]\w*)(\.))?'
331
- r'([a-zA-Z_]\w*[!?]?|\*\*?|[-+]@?|'
332
- r'[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)',
332
+ (r'(?:([a-zA-Z_]\w*)(\.))?' # optional scope name, like "self."
333
+ r'('
334
+ r'[a-zA-Z\u0080-\uffff][a-zA-Z0-9_\u0080-\uffff]*[!?=]?' # method name
335
+ r'|!=|!~|=~|\*\*?|[-+!~]@?|[/%&|^]|<=>|<[<=]?|>[>=]?|===?' # or operator override
336
+ r'|\[\]=?' # or element reference/assignment override
337
+ r'|`' # or the undocumented backtick override
338
+ r')',
333
339
  bygroups(Name.Class, Operator, Name.Function), '#pop'),
334
340
  default('#pop')
335
341
  ],
@@ -449,26 +455,26 @@ class FancyLexer(RegexLexer):
449
455
  tokens = {
450
456
  # copied from PerlLexer:
451
457
  'balanced-regex': [
452
- (r'/(\\\\|\\/|[^/])*/[egimosx]*', String.Regex, '#pop'),
453
- (r'!(\\\\|\\!|[^!])*![egimosx]*', String.Regex, '#pop'),
458
+ (r'/(\\\\|\\[^\\]|[^/\\])*/[egimosx]*', String.Regex, '#pop'),
459
+ (r'!(\\\\|\\[^\\]|[^!\\])*![egimosx]*', String.Regex, '#pop'),
454
460
  (r'\\(\\\\|[^\\])*\\[egimosx]*', String.Regex, '#pop'),
455
- (r'\{(\\\\|\\\}|[^}])*\}[egimosx]*', String.Regex, '#pop'),
456
- (r'<(\\\\|\\>|[^>])*>[egimosx]*', String.Regex, '#pop'),
457
- (r'\[(\\\\|\\\]|[^\]])*\][egimosx]*', String.Regex, '#pop'),
458
- (r'\((\\\\|\\\)|[^)])*\)[egimosx]*', String.Regex, '#pop'),
459
- (r'@(\\\\|\\@|[^@])*@[egimosx]*', String.Regex, '#pop'),
460
- (r'%(\\\\|\\%|[^%])*%[egimosx]*', String.Regex, '#pop'),
461
- (r'\$(\\\\|\\\$|[^$])*\$[egimosx]*', String.Regex, '#pop'),
461
+ (r'\{(\\\\|\\[^\\]|[^}\\])*\}[egimosx]*', String.Regex, '#pop'),
462
+ (r'<(\\\\|\\[^\\]|[^>\\])*>[egimosx]*', String.Regex, '#pop'),
463
+ (r'\[(\\\\|\\[^\\]|[^\]\\])*\][egimosx]*', String.Regex, '#pop'),
464
+ (r'\((\\\\|\\[^\\]|[^)\\])*\)[egimosx]*', String.Regex, '#pop'),
465
+ (r'@(\\\\|\\[^\\]|[^@\\])*@[egimosx]*', String.Regex, '#pop'),
466
+ (r'%(\\\\|\\[^\\]|[^%\\])*%[egimosx]*', String.Regex, '#pop'),
467
+ (r'\$(\\\\|\\[^\\]|[^$\\])*\$[egimosx]*', String.Regex, '#pop'),
462
468
  ],
463
469
  'root': [
464
470
  (r'\s+', Text),
465
471
 
466
472
  # balanced delimiters (copied from PerlLexer):
467
- (r's\{(\\\\|\\\}|[^}])*\}\s*', String.Regex, 'balanced-regex'),
468
- (r's<(\\\\|\\>|[^>])*>\s*', String.Regex, 'balanced-regex'),
469
- (r's\[(\\\\|\\\]|[^\]])*\]\s*', String.Regex, 'balanced-regex'),
470
- (r's\((\\\\|\\\)|[^)])*\)\s*', String.Regex, 'balanced-regex'),
471
- (r'm?/(\\\\|\\/|[^/\n])*/[gcimosx]*', String.Regex),
473
+ (r's\{(\\\\|\\[^\\]|[^}\\])*\}\s*', String.Regex, 'balanced-regex'),
474
+ (r's<(\\\\|\\[^\\]|[^>\\])*>\s*', String.Regex, 'balanced-regex'),
475
+ (r's\[(\\\\|\\[^\\]|[^\]\\])*\]\s*', String.Regex, 'balanced-regex'),
476
+ (r's\((\\\\|\\[^\\]|[^)\\])*\)\s*', String.Regex, 'balanced-regex'),
477
+ (r'm?/(\\\\|\\[^\\]|[^///\n])*/[gcimosx]*', String.Regex),
472
478
  (r'm(?=[/!\\{<\[(@%$])', String.Regex, 'balanced-regex'),
473
479
 
474
480
  # Comments
@@ -476,9 +482,9 @@ class FancyLexer(RegexLexer):
476
482
  # Symbols
477
483
  (r'\'([^\'\s\[\](){}]+|\[\])', String.Symbol),
478
484
  # Multi-line DoubleQuotedString
479
- (r'"""(\\\\|\\"|[^"])*"""', String),
485
+ (r'"""(\\\\|\\[^\\]|[^\\])*?"""', String),
480
486
  # DoubleQuotedString
481
- (r'"(\\\\|\\"|[^"])*"', String),
487
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
482
488
  # keywords
483
489
  (r'(def|class|try|catch|finally|retry|return|return_local|match|'
484
490
  r'case|->|=>)\b', Keyword),