pygments.rb 2.0.0.rc3 → 2.3.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 (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.rust
4
3
  ~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for the Rust 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
 
@@ -110,7 +109,7 @@ class RustLexer(RegexLexer):
110
109
  # Types in positions.
111
110
  (r'(?::|->)', Text, 'typename'),
112
111
  # Labels
113
- (r'(break|continue)(\s*)(\'[A-Za-z_]\w*)?',
112
+ (r'(break|continue)(\b\s*)(\'[A-Za-z_]\w*)?',
114
113
  bygroups(Keyword, Text.Whitespace, Name.Label)),
115
114
 
116
115
  # Character literals
@@ -136,7 +135,7 @@ class RustLexer(RegexLexer):
136
135
  # String literals
137
136
  (r'b"', String, 'bytestring'),
138
137
  (r'"', String, 'string'),
139
- (r'b?r(#*)".*?"\1', String),
138
+ (r'(?s)b?r(#*)".*?"\1', String),
140
139
 
141
140
  # Lifetime names
142
141
  (r"'", Operator, 'lifetime'),
@@ -153,6 +152,11 @@ class RustLexer(RegexLexer):
153
152
 
154
153
  # Attributes
155
154
  (r'#!?\[', Comment.Preproc, 'attribute['),
155
+
156
+ # Misc
157
+ # Lone hashes: not used in Rust syntax, but allowed in macro
158
+ # arguments, most famously for quote::quote!()
159
+ (r'#', Text),
156
160
  ],
157
161
  'comment': [
158
162
  (r'[^*/]+', Comment.Multiline),
@@ -209,16 +213,10 @@ class RustLexer(RegexLexer):
209
213
  'attribute_common': [
210
214
  (r'"', String, 'string'),
211
215
  (r'\[', Comment.Preproc, 'attribute['),
212
- (r'\(', Comment.Preproc, 'attribute('),
213
216
  ],
214
217
  'attribute[': [
215
218
  include('attribute_common'),
216
- (r'\];?', Comment.Preproc, '#pop'),
217
- (r'[^"\]]+', Comment.Preproc),
218
- ],
219
- 'attribute(': [
220
- include('attribute_common'),
221
- (r'\);?', Comment.Preproc, '#pop'),
222
- (r'[^")]+', Comment.Preproc),
219
+ (r'\]', Comment.Preproc, '#pop'),
220
+ (r'[^"\]\[]+', Comment.Preproc),
223
221
  ],
224
222
  }
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.sas
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for SAS.
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.scdoc
4
3
  ~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for scdoc, a simple man page generator.
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.scripting
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for scripting and embedded 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
 
@@ -169,9 +168,9 @@ class MoonScriptLexer(LuaLexer):
169
168
  .. versionadded:: 1.5
170
169
  """
171
170
 
172
- name = "MoonScript"
173
- aliases = ["moon", "moonscript"]
174
- filenames = ["*.moon"]
171
+ name = 'MoonScript'
172
+ aliases = ['moonscript', 'moon']
173
+ filenames = ['*.moon']
175
174
  mimetypes = ['text/x-moonscript', 'application/x-moonscript']
176
175
 
177
176
  tokens = {
@@ -238,7 +237,7 @@ class ChaiscriptLexer(RegexLexer):
238
237
  """
239
238
 
240
239
  name = 'ChaiScript'
241
- aliases = ['chai', 'chaiscript']
240
+ aliases = ['chaiscript', 'chai']
242
241
  filenames = ['*.chai']
243
242
  mimetypes = ['text/x-chaiscript', 'application/x-chaiscript']
244
243
 
@@ -283,7 +282,7 @@ class ChaiscriptLexer(RegexLexer):
283
282
  (r'0x[0-9a-fA-F]+', Number.Hex),
284
283
  (r'[0-9]+', Number.Integer),
285
284
  (r'"', String.Double, 'dqstring'),
286
- (r"'(\\\\|\\'|[^'])*'", String.Single),
285
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
287
286
  ],
288
287
  'dqstring': [
289
288
  (r'\$\{[^"}]+?\}', String.Interpol),
@@ -689,7 +688,7 @@ class AppleScriptLexer(RegexLexer):
689
688
  (r'\b(%s)s?\b' % '|'.join(StudioClasses), Name.Builtin),
690
689
  (r'\b(%s)\b' % '|'.join(StudioCommands), Name.Builtin),
691
690
  (r'\b(%s)\b' % '|'.join(References), Name.Builtin),
692
- (r'"(\\\\|\\"|[^"])*"', String.Double),
691
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
693
692
  (r'\b(%s)\b' % Identifiers, Name.Variable),
694
693
  (r'[-+]?(\d+\.\d*|\d*\.\d+)(E[-+][0-9]+)?', Number.Float),
695
694
  (r'[-+]?\d+', Number.Integer),
@@ -833,7 +832,7 @@ class MOOCodeLexer(RegexLexer):
833
832
  # Numbers
834
833
  (r'(0|[1-9][0-9_]*)', Number.Integer),
835
834
  # Strings
836
- (r'"(\\\\|\\"|[^"])*"', String),
835
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
837
836
  # exceptions
838
837
  (r'(E_PERM|E_DIV)', Name.Exception),
839
838
  # db-refs
@@ -924,7 +923,7 @@ class HybrisLexer(RegexLexer):
924
923
  'Runnable', 'CGI', 'ClientSocket', 'Socket', 'ServerSocket',
925
924
  'File', 'Console', 'Directory', 'Exception'), suffix=r'\b'),
926
925
  Keyword.Type),
927
- (r'"(\\\\|\\"|[^"])*"', String),
926
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
928
927
  (r"'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'", String.Char),
929
928
  (r'(\.)([a-zA-Z_]\w*)',
930
929
  bygroups(Operator, Name.Attribute)),
@@ -1237,9 +1236,9 @@ class MiniScriptLexer(RegexLexer):
1237
1236
  .. versionadded:: 2.6
1238
1237
  """
1239
1238
 
1240
- name = "MiniScript"
1241
- aliases = ["ms", "miniscript"]
1242
- filenames = ["*.ms"]
1239
+ name = 'MiniScript'
1240
+ aliases = ['miniscript', 'ms']
1241
+ filenames = ['*.ms']
1243
1242
  mimetypes = ['text/x-minicript', 'application/x-miniscript']
1244
1243
 
1245
1244
  tokens = {
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.sgf
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for Smart Game Format (sgf) file format.
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.shell
4
3
  ~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for various shells.
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
 
@@ -57,7 +56,7 @@ class BashLexer(RegexLexer):
57
56
  (r'\$', Text),
58
57
  ],
59
58
  'basic': [
60
- (r'\b(if|fi|else|while|do|done|for|then|return|function|case|'
59
+ (r'\b(if|fi|else|while|in|do|done|for|then|return|function|case|'
61
60
  r'select|continue|until|esac|elif)(\s*)\b',
62
61
  bygroups(Keyword, Text)),
63
62
  (r'\b(alias|bg|bind|break|builtin|caller|cd|command|compgen|'
@@ -169,10 +168,6 @@ class ShellSessionBaseLexer(Lexer):
169
168
 
170
169
  for match in line_re.finditer(text):
171
170
  line = match.group()
172
- if backslash_continuation:
173
- curcode += line
174
- backslash_continuation = curcode.endswith('\\\n')
175
- continue
176
171
 
177
172
  venv_match = self._venv.match(line)
178
173
  if venv_match:
@@ -197,10 +192,13 @@ class ShellSessionBaseLexer(Lexer):
197
192
  [(0, Generic.Prompt, m.group(1))]))
198
193
  curcode += m.group(2)
199
194
  backslash_continuation = curcode.endswith('\\\n')
200
- elif line.startswith(self._ps2):
201
- insertions.append((len(curcode),
202
- [(0, Generic.Prompt, line[:len(self._ps2)])]))
203
- curcode += line[len(self._ps2):]
195
+ elif backslash_continuation:
196
+ if line.startswith(self._ps2):
197
+ insertions.append((len(curcode),
198
+ [(0, Generic.Prompt, line[:len(self._ps2)])]))
199
+ curcode += line[len(self._ps2):]
200
+ else:
201
+ curcode += line
204
202
  backslash_continuation = curcode.endswith('\\\n')
205
203
  else:
206
204
  if insertions:
@@ -232,8 +230,8 @@ class BashSessionLexer(ShellSessionBaseLexer):
232
230
  _innerLexerCls = BashLexer
233
231
  _ps1rgx = re.compile(
234
232
  r'^((?:(?:\[.*?\])|(?:\(\S+\))?(?:| |sh\S*?|\w+\S+[@:]\S+(?:\s+\S+)' \
235
- r'?|\[\S+[@:][^\n]+\].+))\s*[$#%])(.*\n?)')
236
- _ps2 = '>'
233
+ r'?|\[\S+[@:][^\n]+\].+))\s*[$#%]\s*)(.*\n?)')
234
+ _ps2 = '> '
237
235
 
238
236
 
239
237
  class BatchLexer(RegexLexer):
@@ -243,7 +241,7 @@ class BatchLexer(RegexLexer):
243
241
  .. versionadded:: 0.7
244
242
  """
245
243
  name = 'Batchfile'
246
- aliases = ['bat', 'batch', 'dosbatch', 'winbatch']
244
+ aliases = ['batch', 'bat', 'dosbatch', 'winbatch']
247
245
  filenames = ['*.bat', '*.cmd']
248
246
  mimetypes = ['application/x-dos-batch']
249
247
 
@@ -657,7 +655,7 @@ class PowerShellLexer(RegexLexer):
657
655
  .. versionadded:: 1.5
658
656
  """
659
657
  name = 'PowerShell'
660
- aliases = ['powershell', 'posh', 'ps1', 'psm1']
658
+ aliases = ['powershell', 'pwsh', 'posh', 'ps1', 'psm1']
661
659
  filenames = ['*.ps1', '*.psm1']
662
660
  mimetypes = ['text/x-powershell']
663
661
 
@@ -735,7 +733,7 @@ class PowerShellLexer(RegexLexer):
735
733
  (r'\[[a-z_\[][\w. `,\[\]]*\]', Name.Constant), # .net [type]s
736
734
  (r'-[a-z_]\w*', Name),
737
735
  (r'\w+', Name),
738
- (r'[.,;@{}\[\]$()=+*/\\&%!~?^`|<>-]|::', Punctuation),
736
+ (r'[.,;:@{}\[\]$()=+*/\\&%!~?^`|<>-]', Punctuation),
739
737
  ],
740
738
  'child': [
741
739
  (r'\)', Punctuation, '#pop'),
@@ -773,7 +771,7 @@ class PowerShellSessionLexer(ShellSessionBaseLexer):
773
771
  """
774
772
 
775
773
  name = 'PowerShell Session'
776
- aliases = ['ps1con']
774
+ aliases = ['pwsh-session', 'ps1con']
777
775
  filenames = []
778
776
  mimetypes = []
779
777
 
@@ -1,4 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.sieve
4
3
  ~~~~~~~~~~~~~~~~~~~~~
@@ -14,7 +13,7 @@
14
13
  https://tools.ietf.org/html/rfc5429
15
14
  https://tools.ietf.org/html/rfc8580
16
15
 
17
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
16
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
18
17
  :license: BSD, see LICENSE for details.
19
18
  """
20
19
 
@@ -1,4 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.slash
4
3
  ~~~~~~~~~~~~~~~~~~~~~
@@ -6,7 +5,7 @@
6
5
  Lexer for the `Slash <https://github.com/arturadib/Slash-A>`_ programming
7
6
  language.
8
7
 
9
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
10
9
  :license: BSD, see LICENSE for details.
11
10
  """
12
11
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.smalltalk
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Smalltalk 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
 
@@ -0,0 +1,79 @@
1
+ """
2
+ pygments.lexers.smithy
3
+ ~~~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexers for the Smithy IDL.
6
+
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+
11
+ import re
12
+
13
+ from pygments.lexer import RegexLexer, bygroups, words
14
+ from pygments.token import Text, Comment, Keyword, Name, String, \
15
+ Number, Whitespace, Punctuation
16
+
17
+ __all__ = ['SmithyLexer']
18
+
19
+
20
+ class SmithyLexer(RegexLexer):
21
+ """
22
+ For Smithy IDL
23
+
24
+ .. versionadded:: 2.10
25
+ """
26
+ name = 'Smithy'
27
+ filenames = ['*.smithy']
28
+ aliases = ['smithy']
29
+
30
+ flags = re.MULTILINE | re.UNICODE
31
+ unquoted = r'[A-Za-z0-9_\.#$-]+'
32
+ identifier = r"[A-Za-z0-9_\.#$-]+"
33
+
34
+ simple_shapes = (
35
+ 'use', 'byte', 'short', 'integer', 'long', 'float', 'document',
36
+ 'double', 'bigInteger', 'bigDecimal', 'boolean', 'blob', 'string',
37
+ 'timestamp',
38
+ )
39
+
40
+ aggregate_shapes = (
41
+ 'apply', 'list', 'map', 'set', 'structure', 'union', 'resource',
42
+ 'operation', 'service', 'trait'
43
+ )
44
+
45
+ tokens = {
46
+ 'root': [
47
+ (r'///.*$', Comment.Multiline),
48
+ (r'//.*$', Comment),
49
+ (r'@[0-9a-zA-Z\.#-]*', Name.Decorator),
50
+ (r'(=)', Name.Decorator),
51
+ (r'^(\$version)(:)(.+)',
52
+ bygroups(Keyword.Declaration, Name.Decorator, Name.Class)),
53
+ (r'^(namespace)(\s+' + identifier + r')\b',
54
+ bygroups(Keyword.Declaration, Name.Class)),
55
+ (words(simple_shapes,
56
+ prefix=r'^', suffix=r'(\s+' + identifier + r')\b'),
57
+ bygroups(Keyword.Declaration, Name.Class)),
58
+ (words(aggregate_shapes,
59
+ prefix=r'^', suffix=r'(\s+' + identifier + r')'),
60
+ bygroups(Keyword.Declaration, Name.Class)),
61
+ (r'^(metadata)(\s+.+)(\s*)(=)',
62
+ bygroups(Keyword.Declaration, Name.Class, Whitespace, Name.Decorator)),
63
+ (r"(true|false|null)", Keyword.Constant),
64
+ (r"(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)", Number),
65
+ (identifier + ":", Name.Label),
66
+ (identifier, Name.Variable.Class),
67
+ (r'\[', Text, "#push"),
68
+ (r'\]', Text, "#pop"),
69
+ (r'\(', Text, "#push"),
70
+ (r'\)', Text, "#pop"),
71
+ (r'\{', Text, "#push"),
72
+ (r'\}', Text, "#pop"),
73
+ (r'"{3}(\\\\|\n|\\")*"{3}', String.Doc),
74
+ (r'"(\\\\|\n|\\"|[^"])*"', String.Double),
75
+ (r"'(\\\\|\n|\\'|[^'])*'", String.Single),
76
+ (r'[:,]+', Punctuation),
77
+ (r'\s+', Whitespace),
78
+ ]
79
+ }
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.smv
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for the SMV 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
 
@@ -69,7 +68,7 @@ class NuSMVLexer(RegexLexer):
69
68
  (r'\-?\d+\b', Number.Integer),
70
69
  (r'0[su][bB]\d*_[01_]+', Number.Bin),
71
70
  (r'0[su][oO]\d*_[0-7_]+', Number.Oct),
72
- (r'0[su][dD]\d*_[\d_]+', Number.Dec),
71
+ (r'0[su][dD]\d*_[\d_]+', Number.Decimal),
73
72
  (r'0[su][hH]\d*_[\da-fA-F_]+', Number.Hex),
74
73
 
75
74
  # Whitespace, punctuation and the rest
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.snobol
4
3
  ~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for the SNOBOL 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.solidity
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Solidity.
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,23 +1,22 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.special
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Special lexers.
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
 
11
+ import ast
12
12
  import re
13
- from io import BytesIO
14
13
 
15
14
  from pygments.lexer import Lexer
16
- from pygments.token import Token, Error, Text
15
+ from pygments.token import Token, Error, Text, Generic
17
16
  from pygments.util import get_choice_opt
18
17
 
19
18
 
20
- __all__ = ['TextLexer', 'RawTokenLexer']
19
+ __all__ = ['TextLexer', 'OutputLexer', 'RawTokenLexer']
21
20
 
22
21
 
23
22
  class TextLexer(Lexer):
@@ -37,16 +36,27 @@ class TextLexer(Lexer):
37
36
  return TextLexer.priority
38
37
 
39
38
 
39
+ class OutputLexer(Lexer):
40
+ """
41
+ Simple lexer that highlights everything as ``Token.Generic.Output``.
42
+
43
+ .. versionadded:: 2.10
44
+ """
45
+ name = 'Text output'
46
+ aliases = ['output']
47
+
48
+ def get_tokens_unprocessed(self, text):
49
+ yield 0, Generic.Output, text
50
+
51
+
40
52
  _ttype_cache = {}
41
53
 
42
- line_re = re.compile(b'.*?\n')
54
+ line_re = re.compile('.*?\n')
43
55
 
44
56
 
45
57
  class RawTokenLexer(Lexer):
46
58
  """
47
- Recreate a token stream formatted with the `RawTokenFormatter`. This
48
- lexer raises exceptions during parsing if the token stream in the
49
- file is malformed.
59
+ Recreate a token stream formatted with the `RawTokenFormatter`.
50
60
 
51
61
  Additional options accepted:
52
62
 
@@ -55,7 +65,7 @@ class RawTokenLexer(Lexer):
55
65
  the given compression algorithm before lexing (default: ``""``).
56
66
  """
57
67
  name = 'Raw token data'
58
- aliases = ['raw']
68
+ aliases = []
59
69
  filenames = []
60
70
  mimetypes = ['application/x-pygments-tokens']
61
71
 
@@ -65,20 +75,23 @@ class RawTokenLexer(Lexer):
65
75
  Lexer.__init__(self, **options)
66
76
 
67
77
  def get_tokens(self, text):
68
- if isinstance(text, str):
69
- # raw token stream never has any non-ASCII characters
70
- text = text.encode('ascii')
71
- if self.compress == 'gz':
72
- import gzip
73
- gzipfile = gzip.GzipFile('', 'rb', 9, BytesIO(text))
74
- text = gzipfile.read()
75
- elif self.compress == 'bz2':
76
- import bz2
77
- text = bz2.decompress(text)
78
-
79
- # do not call Lexer.get_tokens() because we do not want Unicode
80
- # decoding to occur, and stripping is not optional.
81
- text = text.strip(b'\n') + b'\n'
78
+ if self.compress:
79
+ if isinstance(text, str):
80
+ text = text.encode('latin1')
81
+ try:
82
+ if self.compress == 'gz':
83
+ import gzip
84
+ text = gzip.decompress(text)
85
+ elif self.compress == 'bz2':
86
+ import bz2
87
+ text = bz2.decompress(text)
88
+ except OSError:
89
+ yield Error, text.decode('latin1')
90
+ if isinstance(text, bytes):
91
+ text = text.decode('latin1')
92
+
93
+ # do not call Lexer.get_tokens() because stripping is not optional.
94
+ text = text.strip('\n') + '\n'
82
95
  for i, t, v in self.get_tokens_unprocessed(text):
83
96
  yield t, v
84
97
 
@@ -86,11 +99,7 @@ class RawTokenLexer(Lexer):
86
99
  length = 0
87
100
  for match in line_re.finditer(text):
88
101
  try:
89
- ttypestr, val = match.group().split(b'\t', 1)
90
- except ValueError:
91
- val = match.group().decode('ascii', 'replace')
92
- ttype = Error
93
- else:
102
+ ttypestr, val = match.group().rstrip().split('\t', 1)
94
103
  ttype = _ttype_cache.get(ttypestr)
95
104
  if not ttype:
96
105
  ttype = Token
@@ -100,6 +109,11 @@ class RawTokenLexer(Lexer):
100
109
  raise ValueError('malformed token name')
101
110
  ttype = getattr(ttype, ttype_)
102
111
  _ttype_cache[ttypestr] = ttype
103
- val = val[2:-2].decode('unicode-escape')
112
+ val = ast.literal_eval(val)
113
+ if not isinstance(val, str):
114
+ raise ValueError('expected str')
115
+ except (SyntaxError, ValueError):
116
+ val = match.group()
117
+ ttype = Error
104
118
  yield length, ttype, val
105
119
  length += len(val)
@@ -1,4 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.sql
4
3
  ~~~~~~~~~~~~~~~~~~~
@@ -34,7 +33,7 @@
34
33
  The ``tests/examplefiles`` contains a few test files with data to be
35
34
  parsed by these lexers.
36
35
 
37
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
36
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
38
37
  :license: BSD, see LICENSE for details.
39
38
  """
40
39
 
@@ -102,8 +101,7 @@ def language_callback(lexer, match):
102
101
  yield (match.start(3), String, match.group(3))
103
102
  # 4 = string contents
104
103
  if lx:
105
- for x in lx.get_tokens_unprocessed(match.group(4)):
106
- yield x
104
+ yield from lx.get_tokens_unprocessed(match.group(4))
107
105
  else:
108
106
  yield (match.start(4), String, match.group(4))
109
107
  # 5 = $, 6 = delimiter, 7 = $
@@ -397,14 +395,14 @@ class SqlLexer(RegexLexer):
397
395
  'CHARACTERISTICS', 'CHARACTER_LENGTH', 'CHARACTER_SET_CATALOG',
398
396
  'CHARACTER_SET_NAME', 'CHARACTER_SET_SCHEMA', 'CHAR_LENGTH', 'CHECK',
399
397
  'CHECKED', 'CHECKPOINT', 'CLASS', 'CLASS_ORIGIN', 'CLOB', 'CLOSE',
400
- 'CLUSTER', 'COALSECE', 'COBOL', 'COLLATE', 'COLLATION',
398
+ 'CLUSTER', 'COALESCE', 'COBOL', 'COLLATE', 'COLLATION',
401
399
  'COLLATION_CATALOG', 'COLLATION_NAME', 'COLLATION_SCHEMA', 'COLUMN',
402
400
  'COLUMN_NAME', 'COMMAND_FUNCTION', 'COMMAND_FUNCTION_CODE', 'COMMENT',
403
401
  'COMMIT', 'COMMITTED', 'COMPLETION', 'CONDITION_NUMBER', 'CONNECT',
404
402
  'CONNECTION', 'CONNECTION_NAME', 'CONSTRAINT', 'CONSTRAINTS',
405
403
  'CONSTRAINT_CATALOG', 'CONSTRAINT_NAME', 'CONSTRAINT_SCHEMA',
406
404
  'CONSTRUCTOR', 'CONTAINS', 'CONTINUE', 'CONVERSION', 'CONVERT',
407
- 'COPY', 'CORRESPONTING', 'COUNT', 'CREATE', 'CREATEDB', 'CREATEUSER',
405
+ 'COPY', 'CORRESPONDING', 'COUNT', 'CREATE', 'CREATEDB', 'CREATEUSER',
408
406
  'CROSS', 'CUBE', 'CURRENT', 'CURRENT_DATE', 'CURRENT_PATH',
409
407
  'CURRENT_ROLE', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER',
410
408
  'CURSOR', 'CURSOR_NAME', 'CYCLE', 'DATA', 'DATABASE',
@@ -440,9 +438,9 @@ class SqlLexer(RegexLexer):
440
438
  'OPEN', 'OPERATION', 'OPERATOR', 'OPTION', 'OPTIONS', 'OR', 'ORDER',
441
439
  'ORDINALITY', 'OUT', 'OUTER', 'OUTPUT', 'OVERLAPS', 'OVERLAY',
442
440
  'OVERRIDING', 'OWNER', 'PAD', 'PARAMETER', 'PARAMETERS', 'PARAMETER_MODE',
443
- 'PARAMATER_NAME', 'PARAMATER_ORDINAL_POSITION',
441
+ 'PARAMETER_NAME', 'PARAMETER_ORDINAL_POSITION',
444
442
  'PARAMETER_SPECIFIC_CATALOG', 'PARAMETER_SPECIFIC_NAME',
445
- 'PARAMATER_SPECIFIC_SCHEMA', 'PARTIAL', 'PASCAL', 'PENDANT', 'PERIOD', 'PLACING',
443
+ 'PARAMETER_SPECIFIC_SCHEMA', 'PARTIAL', 'PASCAL', 'PENDANT', 'PERIOD', 'PLACING',
446
444
  'PLI', 'POSITION', 'POSTFIX', 'PRECEEDS', 'PRECISION', 'PREFIX', 'PREORDER',
447
445
  'PREPARE', 'PRESERVE', 'PRIMARY', 'PRIOR', 'PRIVILEGES', 'PROCEDURAL',
448
446
  'PROCEDURE', 'PUBLIC', 'READ', 'READS', 'RECHECK', 'RECURSIVE', 'REF',
@@ -462,8 +460,8 @@ class SqlLexer(RegexLexer):
462
460
  'SUBLIST', 'SUBSTRING', 'SUCCEEDS', 'SUM', 'SYMMETRIC', 'SYSID', 'SYSTEM',
463
461
  'SYSTEM_USER', 'TABLE', 'TABLE_NAME', ' TEMP', 'TEMPLATE', 'TEMPORARY',
464
462
  'TERMINATE', 'THAN', 'THEN', 'TIME', 'TIMESTAMP', 'TIMEZONE_HOUR',
465
- 'TIMEZONE_MINUTE', 'TO', 'TOAST', 'TRAILING', 'TRANSATION',
466
- 'TRANSACTIONS_COMMITTED', 'TRANSACTIONS_ROLLED_BACK', 'TRANSATION_ACTIVE',
463
+ 'TIMEZONE_MINUTE', 'TO', 'TOAST', 'TRAILING', 'TRANSACTION',
464
+ 'TRANSACTIONS_COMMITTED', 'TRANSACTIONS_ROLLED_BACK', 'TRANSACTION_ACTIVE',
467
465
  'TRANSFORM', 'TRANSFORMS', 'TRANSLATE', 'TRANSLATION', 'TREAT', 'TRIGGER',
468
466
  'TRIGGER_CATALOG', 'TRIGGER_NAME', 'TRIGGER_SCHEMA', 'TRIM', 'TRUE',
469
467
  'TRUNCATE', 'TRUSTED', 'TYPE', 'UNCOMMITTED', 'UNDER', 'UNENCRYPTED',
@@ -497,9 +495,6 @@ class SqlLexer(RegexLexer):
497
495
  ]
498
496
  }
499
497
 
500
- def analyse_text(text):
501
- return 0.01
502
-
503
498
 
504
499
  class TransactSqlLexer(RegexLexer):
505
500
  """