pygments.rb 2.0.0 → 2.1.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 (265) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +12 -0
  3. data/.rubocop.yml +18 -0
  4. data/CHANGELOG.adoc +4 -0
  5. data/Rakefile +1 -3
  6. data/bench.rb +9 -4
  7. data/{cache-lexers.rb → cache_lexers.rb} +0 -0
  8. data/lib/pygments/lexer.rb +1 -1
  9. data/lib/pygments/popen.rb +129 -127
  10. data/lib/pygments/version.rb +1 -1
  11. data/pygments.rb.gemspec +1 -1
  12. data/test/test_pygments.rb +6 -8
  13. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/AUTHORS +5 -0
  14. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/INSTALLER +0 -0
  15. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/LICENSE +1 -1
  16. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/METADATA +8 -9
  17. data/vendor/pygments-main/Pygments-2.8.0.dist-info/RECORD +494 -0
  18. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/REQUESTED +0 -0
  19. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/WHEEL +0 -0
  20. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/entry_points.txt +0 -0
  21. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/top_level.txt +0 -0
  22. data/vendor/pygments-main/pygments/__init__.py +2 -3
  23. data/vendor/pygments-main/pygments/__main__.py +1 -2
  24. data/vendor/pygments-main/pygments/cmdline.py +179 -159
  25. data/vendor/pygments-main/pygments/console.py +1 -2
  26. data/vendor/pygments-main/pygments/filter.py +1 -2
  27. data/vendor/pygments-main/pygments/filters/__init__.py +1 -2
  28. data/vendor/pygments-main/pygments/formatter.py +1 -2
  29. data/vendor/pygments-main/pygments/formatters/__init__.py +2 -3
  30. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -2
  31. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
  32. data/vendor/pygments-main/pygments/formatters/html.py +33 -18
  33. data/vendor/pygments-main/pygments/formatters/img.py +24 -10
  34. data/vendor/pygments-main/pygments/formatters/irc.py +1 -2
  35. data/vendor/pygments-main/pygments/formatters/latex.py +8 -9
  36. data/vendor/pygments-main/pygments/formatters/other.py +7 -10
  37. data/vendor/pygments-main/pygments/formatters/rtf.py +1 -2
  38. data/vendor/pygments-main/pygments/formatters/svg.py +5 -4
  39. data/vendor/pygments-main/pygments/formatters/terminal.py +1 -2
  40. data/vendor/pygments-main/pygments/formatters/terminal256.py +24 -3
  41. data/vendor/pygments-main/pygments/lexer.py +7 -6
  42. data/vendor/pygments-main/pygments/lexers/__init__.py +2 -3
  43. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1 -2
  44. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +1 -2
  45. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +16 -12
  46. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1 -2
  47. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -2
  48. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +1 -2
  49. data/vendor/pygments-main/pygments/lexers/_mapping.py +6 -3
  50. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -2
  51. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +2 -3
  52. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +439 -386
  53. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +1 -2
  54. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +1 -2
  55. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +1 -2
  56. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -2
  57. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +1 -2
  58. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +91 -55
  59. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -2
  60. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +1 -2
  61. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +1 -2
  62. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -2
  63. data/vendor/pygments-main/pygments/lexers/actionscript.py +7 -8
  64. data/vendor/pygments-main/pygments/lexers/agile.py +1 -2
  65. data/vendor/pygments-main/pygments/lexers/algebra.py +1 -2
  66. data/vendor/pygments-main/pygments/lexers/ambient.py +2 -3
  67. data/vendor/pygments-main/pygments/lexers/amdgpu.py +48 -0
  68. data/vendor/pygments-main/pygments/lexers/ampl.py +1 -2
  69. data/vendor/pygments-main/pygments/lexers/apl.py +1 -2
  70. data/vendor/pygments-main/pygments/lexers/archetype.py +2 -3
  71. data/vendor/pygments-main/pygments/lexers/arrow.py +1 -2
  72. data/vendor/pygments-main/pygments/lexers/asm.py +1 -2
  73. data/vendor/pygments-main/pygments/lexers/automation.py +7 -2
  74. data/vendor/pygments-main/pygments/lexers/bare.py +1 -2
  75. data/vendor/pygments-main/pygments/lexers/basic.py +3 -4
  76. data/vendor/pygments-main/pygments/lexers/bibtex.py +1 -2
  77. data/vendor/pygments-main/pygments/lexers/boa.py +4 -5
  78. data/vendor/pygments-main/pygments/lexers/business.py +3 -4
  79. data/vendor/pygments-main/pygments/lexers/c_cpp.py +2 -4
  80. data/vendor/pygments-main/pygments/lexers/c_like.py +1 -2
  81. data/vendor/pygments-main/pygments/lexers/capnproto.py +1 -2
  82. data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
  83. data/vendor/pygments-main/pygments/lexers/chapel.py +3 -4
  84. data/vendor/pygments-main/pygments/lexers/clean.py +1 -2
  85. data/vendor/pygments-main/pygments/lexers/compiled.py +1 -2
  86. data/vendor/pygments-main/pygments/lexers/configs.py +6 -5
  87. data/vendor/pygments-main/pygments/lexers/console.py +1 -2
  88. data/vendor/pygments-main/pygments/lexers/crystal.py +53 -79
  89. data/vendor/pygments-main/pygments/lexers/csound.py +1 -2
  90. data/vendor/pygments-main/pygments/lexers/css.py +11 -8
  91. data/vendor/pygments-main/pygments/lexers/d.py +3 -4
  92. data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -2
  93. data/vendor/pygments-main/pygments/lexers/data.py +2 -3
  94. data/vendor/pygments-main/pygments/lexers/devicetree.py +1 -2
  95. data/vendor/pygments-main/pygments/lexers/diff.py +1 -2
  96. data/vendor/pygments-main/pygments/lexers/dotnet.py +7 -8
  97. data/vendor/pygments-main/pygments/lexers/dsls.py +3 -4
  98. data/vendor/pygments-main/pygments/lexers/dylan.py +1 -2
  99. data/vendor/pygments-main/pygments/lexers/ecl.py +4 -6
  100. data/vendor/pygments-main/pygments/lexers/eiffel.py +2 -3
  101. data/vendor/pygments-main/pygments/lexers/elm.py +1 -2
  102. data/vendor/pygments-main/pygments/lexers/email.py +1 -2
  103. data/vendor/pygments-main/pygments/lexers/erlang.py +1 -2
  104. data/vendor/pygments-main/pygments/lexers/esoteric.py +1 -2
  105. data/vendor/pygments-main/pygments/lexers/ezhil.py +1 -2
  106. data/vendor/pygments-main/pygments/lexers/factor.py +3 -4
  107. data/vendor/pygments-main/pygments/lexers/fantom.py +1 -2
  108. data/vendor/pygments-main/pygments/lexers/felix.py +1 -2
  109. data/vendor/pygments-main/pygments/lexers/floscript.py +1 -2
  110. data/vendor/pygments-main/pygments/lexers/forth.py +2 -3
  111. data/vendor/pygments-main/pygments/lexers/fortran.py +9 -7
  112. data/vendor/pygments-main/pygments/lexers/foxpro.py +1 -2
  113. data/vendor/pygments-main/pygments/lexers/freefem.py +1 -2
  114. data/vendor/pygments-main/pygments/lexers/functional.py +1 -2
  115. data/vendor/pygments-main/pygments/lexers/futhark.py +110 -0
  116. data/vendor/pygments-main/pygments/lexers/gdscript.py +1 -2
  117. data/vendor/pygments-main/pygments/lexers/go.py +2 -3
  118. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +1 -2
  119. data/vendor/pygments-main/pygments/lexers/graph.py +1 -2
  120. data/vendor/pygments-main/pygments/lexers/graphics.py +3 -4
  121. data/vendor/pygments-main/pygments/lexers/graphviz.py +57 -0
  122. data/vendor/pygments-main/pygments/lexers/haskell.py +1 -2
  123. data/vendor/pygments-main/pygments/lexers/haxe.py +3 -4
  124. data/vendor/pygments-main/pygments/lexers/hdl.py +2 -6
  125. data/vendor/pygments-main/pygments/lexers/hexdump.py +1 -2
  126. data/vendor/pygments-main/pygments/lexers/html.py +7 -8
  127. data/vendor/pygments-main/pygments/lexers/idl.py +1 -2
  128. data/vendor/pygments-main/pygments/lexers/igor.py +1 -2
  129. data/vendor/pygments-main/pygments/lexers/inferno.py +1 -2
  130. data/vendor/pygments-main/pygments/lexers/installers.py +1 -2
  131. data/vendor/pygments-main/pygments/lexers/int_fiction.py +1 -2
  132. data/vendor/pygments-main/pygments/lexers/iolang.py +2 -3
  133. data/vendor/pygments-main/pygments/lexers/j.py +2 -3
  134. data/vendor/pygments-main/pygments/lexers/javascript.py +57 -61
  135. data/vendor/pygments-main/pygments/lexers/julia.py +1 -2
  136. data/vendor/pygments-main/pygments/lexers/jvm.py +174 -108
  137. data/vendor/pygments-main/pygments/lexers/lisp.py +7 -8
  138. data/vendor/pygments-main/pygments/lexers/make.py +3 -4
  139. data/vendor/pygments-main/pygments/lexers/markup.py +11 -14
  140. data/vendor/pygments-main/pygments/lexers/math.py +1 -2
  141. data/vendor/pygments-main/pygments/lexers/matlab.py +2644 -84
  142. data/vendor/pygments-main/pygments/lexers/mime.py +2 -3
  143. data/vendor/pygments-main/pygments/lexers/ml.py +7 -8
  144. data/vendor/pygments-main/pygments/lexers/modeling.py +1 -2
  145. data/vendor/pygments-main/pygments/lexers/modula2.py +3 -4
  146. data/vendor/pygments-main/pygments/lexers/monte.py +1 -2
  147. data/vendor/pygments-main/pygments/lexers/mosel.py +1 -2
  148. data/vendor/pygments-main/pygments/lexers/ncl.py +1 -2
  149. data/vendor/pygments-main/pygments/lexers/nimrod.py +1 -2
  150. data/vendor/pygments-main/pygments/lexers/nit.py +1 -2
  151. data/vendor/pygments-main/pygments/lexers/nix.py +1 -2
  152. data/vendor/pygments-main/pygments/lexers/oberon.py +1 -2
  153. data/vendor/pygments-main/pygments/lexers/objective.py +3 -4
  154. data/vendor/pygments-main/pygments/lexers/ooc.py +1 -2
  155. data/vendor/pygments-main/pygments/lexers/other.py +1 -2
  156. data/vendor/pygments-main/pygments/lexers/parasail.py +1 -2
  157. data/vendor/pygments-main/pygments/lexers/parsers.py +25 -26
  158. data/vendor/pygments-main/pygments/lexers/pascal.py +1 -2
  159. data/vendor/pygments-main/pygments/lexers/pawn.py +2 -5
  160. data/vendor/pygments-main/pygments/lexers/perl.py +1 -2
  161. data/vendor/pygments-main/pygments/lexers/php.py +3 -4
  162. data/vendor/pygments-main/pygments/lexers/pointless.py +1 -2
  163. data/vendor/pygments-main/pygments/lexers/pony.py +1 -2
  164. data/vendor/pygments-main/pygments/lexers/praat.py +1 -2
  165. data/vendor/pygments-main/pygments/lexers/prolog.py +3 -4
  166. data/vendor/pygments-main/pygments/lexers/promql.py +1 -2
  167. data/vendor/pygments-main/pygments/lexers/python.py +19 -12
  168. data/vendor/pygments-main/pygments/lexers/qvt.py +1 -2
  169. data/vendor/pygments-main/pygments/lexers/r.py +1 -2
  170. data/vendor/pygments-main/pygments/lexers/rdf.py +1 -2
  171. data/vendor/pygments-main/pygments/lexers/rebol.py +1 -2
  172. data/vendor/pygments-main/pygments/lexers/resource.py +1 -2
  173. data/vendor/pygments-main/pygments/lexers/ride.py +1 -2
  174. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -2
  175. data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -2
  176. data/vendor/pygments-main/pygments/lexers/robotframework.py +1 -2
  177. data/vendor/pygments-main/pygments/lexers/ruby.py +30 -24
  178. data/vendor/pygments-main/pygments/lexers/rust.py +1 -2
  179. data/vendor/pygments-main/pygments/lexers/sas.py +1 -2
  180. data/vendor/pygments-main/pygments/lexers/scdoc.py +1 -2
  181. data/vendor/pygments-main/pygments/lexers/scripting.py +5 -6
  182. data/vendor/pygments-main/pygments/lexers/sgf.py +1 -2
  183. data/vendor/pygments-main/pygments/lexers/shell.py +5 -10
  184. data/vendor/pygments-main/pygments/lexers/sieve.py +1 -2
  185. data/vendor/pygments-main/pygments/lexers/slash.py +1 -2
  186. data/vendor/pygments-main/pygments/lexers/smalltalk.py +1 -2
  187. data/vendor/pygments-main/pygments/lexers/smv.py +1 -2
  188. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -2
  189. data/vendor/pygments-main/pygments/lexers/solidity.py +1 -2
  190. data/vendor/pygments-main/pygments/lexers/special.py +29 -28
  191. data/vendor/pygments-main/pygments/lexers/sql.py +8 -13
  192. data/vendor/pygments-main/pygments/lexers/stata.py +1 -2
  193. data/vendor/pygments-main/pygments/lexers/supercollider.py +3 -4
  194. data/vendor/pygments-main/pygments/lexers/tcl.py +1 -2
  195. data/vendor/pygments-main/pygments/lexers/templates.py +15 -16
  196. data/vendor/pygments-main/pygments/lexers/teraterm.py +1 -2
  197. data/vendor/pygments-main/pygments/lexers/testing.py +1 -2
  198. data/vendor/pygments-main/pygments/lexers/text.py +1 -2
  199. data/vendor/pygments-main/pygments/lexers/textedit.py +3 -4
  200. data/vendor/pygments-main/pygments/lexers/textfmts.py +1 -2
  201. data/vendor/pygments-main/pygments/lexers/theorem.py +7 -5
  202. data/vendor/pygments-main/pygments/lexers/tnt.py +1 -2
  203. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -2
  204. data/vendor/pygments-main/pygments/lexers/typoscript.py +1 -2
  205. data/vendor/pygments-main/pygments/lexers/unicon.py +1 -2
  206. data/vendor/pygments-main/pygments/lexers/urbi.py +3 -4
  207. data/vendor/pygments-main/pygments/lexers/usd.py +1 -2
  208. data/vendor/pygments-main/pygments/lexers/varnish.py +2 -3
  209. data/vendor/pygments-main/pygments/lexers/verification.py +1 -2
  210. data/vendor/pygments-main/pygments/lexers/web.py +1 -2
  211. data/vendor/pygments-main/pygments/lexers/webidl.py +1 -2
  212. data/vendor/pygments-main/pygments/lexers/webmisc.py +5 -5
  213. data/vendor/pygments-main/pygments/lexers/whiley.py +1 -2
  214. data/vendor/pygments-main/pygments/lexers/x10.py +2 -3
  215. data/vendor/pygments-main/pygments/lexers/xorg.py +1 -2
  216. data/vendor/pygments-main/pygments/lexers/yang.py +1 -2
  217. data/vendor/pygments-main/pygments/lexers/zig.py +1 -2
  218. data/vendor/pygments-main/pygments/modeline.py +1 -2
  219. data/vendor/pygments-main/pygments/plugin.py +2 -3
  220. data/vendor/pygments-main/pygments/regexopt.py +1 -2
  221. data/vendor/pygments-main/pygments/scanner.py +1 -2
  222. data/vendor/pygments-main/pygments/sphinxext.py +1 -2
  223. data/vendor/pygments-main/pygments/style.py +3 -4
  224. data/vendor/pygments-main/pygments/styles/__init__.py +3 -2
  225. data/vendor/pygments-main/pygments/styles/abap.py +1 -2
  226. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  227. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  228. data/vendor/pygments-main/pygments/styles/arduino.py +1 -2
  229. data/vendor/pygments-main/pygments/styles/autumn.py +1 -2
  230. data/vendor/pygments-main/pygments/styles/borland.py +1 -2
  231. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  232. data/vendor/pygments-main/pygments/styles/colorful.py +1 -2
  233. data/vendor/pygments-main/pygments/styles/default.py +1 -2
  234. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  235. data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
  236. data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
  237. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  238. data/vendor/pygments-main/pygments/styles/inkpot.py +1 -2
  239. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -2
  240. data/vendor/pygments-main/pygments/styles/manni.py +1 -2
  241. data/vendor/pygments-main/pygments/styles/material.py +118 -0
  242. data/vendor/pygments-main/pygments/styles/monokai.py +1 -2
  243. data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
  244. data/vendor/pygments-main/pygments/styles/native.py +1 -2
  245. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -2
  246. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -2
  247. data/vendor/pygments-main/pygments/styles/pastie.py +1 -2
  248. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  249. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -2
  250. data/vendor/pygments-main/pygments/styles/rrt.py +1 -2
  251. data/vendor/pygments-main/pygments/styles/sas.py +1 -2
  252. data/vendor/pygments-main/pygments/styles/solarized.py +4 -2
  253. data/vendor/pygments-main/pygments/styles/stata_dark.py +1 -2
  254. data/vendor/pygments-main/pygments/styles/stata_light.py +1 -2
  255. data/vendor/pygments-main/pygments/styles/tango.py +1 -2
  256. data/vendor/pygments-main/pygments/styles/trac.py +1 -2
  257. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  258. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  259. data/vendor/pygments-main/pygments/styles/xcode.py +1 -2
  260. data/vendor/pygments-main/pygments/styles/zenburn.py +80 -0
  261. data/vendor/pygments-main/pygments/token.py +1 -2
  262. data/vendor/pygments-main/pygments/unistring.py +1 -2
  263. data/vendor/pygments-main/pygments/util.py +2 -5
  264. metadata +21 -14
  265. 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.chapel
4
3
  ~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for the Chapel 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
 
@@ -88,8 +87,8 @@ class ChapelLexer(RegexLexer):
88
87
  (r'[0-9]+', Number.Integer),
89
88
 
90
89
  # strings
91
- (r'"(\\\\|\\"|[^"])*"', String),
92
- (r"'(\\\\|\\'|[^'])*'", String),
90
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
91
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
93
92
 
94
93
  # tokens
95
94
  (r'(=|\+=|-=|\*=|/=|\*\*=|%=|&=|\|=|\^=|&&=|\|\|=|<<=|>>=|'
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.clean
4
3
  ~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for the Clean 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.compiled
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Just export lexer classes previously contained in this module.
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.configs
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for configuration file formats.
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
 
@@ -40,7 +39,7 @@ class IniLexer(RegexLexer):
40
39
  (r'\s+', Text),
41
40
  (r'[;#].*', Comment.Single),
42
41
  (r'\[.*?\]$', Keyword),
43
- (r'(.*?)([ \t]*)(=)([ \t]*)(.*(?:\n[ \t].+)*)',
42
+ (r'(.*?)([ \t]*)(=)([ \t]*)([^\t\n]*)',
44
43
  bygroups(Name.Attribute, Text, Operator, Text, String)),
45
44
  # standalone option, supported by some INI parsers
46
45
  (r'(.+?)$', Name.Attribute),
@@ -302,8 +301,10 @@ class ApacheConfLexer(RegexLexer):
302
301
  'root': [
303
302
  (r'\s+', Text),
304
303
  (r'#(.*\\\n)+.*$|(#.*?)$', Comment),
305
- (r'(<[^\s>]+)(?:(\s+)(.*))?(>)',
304
+ (r'(<[^\s>/][^\s>]*)(?:(\s+)(.*))?(>)',
306
305
  bygroups(Name.Tag, Text, String, Name.Tag)),
306
+ (r'(</[^\s>]+)(>)',
307
+ bygroups(Name.Tag, Name.Tag)),
307
308
  (r'[a-z]\w*', Name.Builtin, 'value'),
308
309
  (r'\.+', Text),
309
310
  ],
@@ -909,7 +910,7 @@ class TOMLLexer(RegexLexer):
909
910
  (r'\s+', Text),
910
911
  (r'#.*?$', Comment.Single),
911
912
  # Basic string
912
- (r'"(\\\\|\\"|[^"])*"', String),
913
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
913
914
  # Literal string
914
915
  (r'\'\'\'(.*)\'\'\'', String),
915
916
  (r'\'[^\']*\'', String),
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.console
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for misc console output.
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.crystal
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for Crystal.
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,8 +56,11 @@ class CrystalLexer(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:
@@ -86,27 +88,11 @@ class CrystalLexer(ExtendedRegexLexer):
86
88
  del heredocstack[:]
87
89
 
88
90
  def gen_crystalstrings_rules():
89
- def intp_regex_callback(self, match, ctx):
90
- yield match.start(1), String.Regex, match.group(1) # begin
91
- nctx = LexerContext(match.group(3), 0, ['interpolated-regex'])
92
- for i, t, v in self.get_tokens_unprocessed(context=nctx):
93
- yield match.start(3)+i, t, v
94
- yield match.start(4), String.Regex, match.group(4) # end[imsx]*
95
- ctx.pos = match.end()
96
-
97
- def intp_string_callback(self, match, ctx):
98
- yield match.start(1), String.Other, match.group(1)
99
- nctx = LexerContext(match.group(3), 0, ['interpolated-string'])
100
- for i, t, v in self.get_tokens_unprocessed(context=nctx):
101
- yield match.start(3)+i, t, v
102
- yield match.start(4), String.Other, match.group(4) # end
103
- ctx.pos = match.end()
104
-
105
91
  states = {}
106
92
  states['strings'] = [
107
- (r'\:@{0,2}[a-zA-Z_]\w*[!?]?', String.Symbol),
108
- (words(CRYSTAL_OPERATORS, prefix=r'\:@{0,2}'), String.Symbol),
109
- (r":'(\\\\|\\'|[^'])*'", String.Symbol),
93
+ (r'\:\w+[!?]?', String.Symbol),
94
+ (words(CRYSTAL_OPERATORS, prefix=r'\:'), String.Symbol),
95
+ (r":'(\\\\|\\[^\\]|[^'\\])*'", String.Symbol),
110
96
  # This allows arbitrary text after '\ for simplicity
111
97
  (r"'(\\\\|\\'|[^']|\\[^'\\]+)'", String.Char),
112
98
  (r':"', String.Symbol, 'simple-sym'),
@@ -127,35 +113,42 @@ class CrystalLexer(ExtendedRegexLexer):
127
113
  (end, ttype, '#pop'),
128
114
  ]
129
115
 
130
- # braced quoted strings
116
+ # https://crystal-lang.org/docs/syntax_and_semantics/literals/string.html#percent-string-literals
131
117
  for lbrace, rbrace, bracecc, name in \
132
118
  ('\\{', '\\}', '{}', 'cb'), \
133
119
  ('\\[', '\\]', '\\[\\]', 'sb'), \
134
120
  ('\\(', '\\)', '()', 'pa'), \
135
- ('<', '>', '<>', 'ab'):
121
+ ('<', '>', '<>', 'ab'), \
122
+ ('\\|', '\\|', '\\|', 'pi'):
136
123
  states[name+'-intp-string'] = [
137
124
  (r'\\' + lbrace, String.Other),
125
+ ] + (lbrace != rbrace) * [
138
126
  (lbrace, String.Other, '#push'),
127
+ ] + [
139
128
  (rbrace, String.Other, '#pop'),
140
129
  include('string-intp-escaped'),
141
130
  (r'[\\#' + bracecc + ']', String.Other),
142
131
  (r'[^\\#' + bracecc + ']+', String.Other),
143
132
  ]
144
- states['strings'].append((r'%' + lbrace, String.Other,
133
+ states['strings'].append((r'%Q?' + lbrace, String.Other,
145
134
  name+'-intp-string'))
146
135
  states[name+'-string'] = [
147
136
  (r'\\[\\' + bracecc + ']', String.Other),
137
+ ] + (lbrace != rbrace) * [
148
138
  (lbrace, String.Other, '#push'),
139
+ ] + [
149
140
  (rbrace, String.Other, '#pop'),
150
141
  (r'[\\#' + bracecc + ']', String.Other),
151
142
  (r'[^\\#' + bracecc + ']+', String.Other),
152
143
  ]
153
- # http://crystal-lang.org/docs/syntax_and_semantics/literals/array.html
154
- states['strings'].append((r'%[wi]' + lbrace, String.Other,
144
+ # https://crystal-lang.org/docs/syntax_and_semantics/literals/array.html#percent-array-literals
145
+ states['strings'].append((r'%[qwi]' + lbrace, String.Other,
155
146
  name+'-string'))
156
147
  states[name+'-regex'] = [
157
148
  (r'\\[\\' + bracecc + ']', String.Regex),
149
+ ] + (lbrace != rbrace) * [
158
150
  (lbrace, String.Regex, '#push'),
151
+ ] + [
159
152
  (rbrace + '[imsx]*', String.Regex, '#pop'),
160
153
  include('string-intp'),
161
154
  (r'[\\#' + bracecc + ']', String.Regex),
@@ -164,27 +157,6 @@ class CrystalLexer(ExtendedRegexLexer):
164
157
  states['strings'].append((r'%r' + lbrace, String.Regex,
165
158
  name+'-regex'))
166
159
 
167
- # these must come after %<brace>!
168
- states['strings'] += [
169
- # %r regex
170
- (r'(%r([\W_]))((?:\\\2|(?!\2).)*)(\2[imsx]*)',
171
- intp_regex_callback),
172
- # regular fancy strings with qsw
173
- (r'(%[wi]([\W_]))((?:\\\2|(?!\2).)*)(\2)',
174
- intp_string_callback),
175
- # special forms of fancy strings after operators or
176
- # in method calls with braces
177
- (r'(?<=[-+/*%=<>&!^|~,(])(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)',
178
- bygroups(Text, String.Other, None)),
179
- # and because of fixed width lookbehinds the whole thing a
180
- # second time for line startings...
181
- (r'^(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)',
182
- bygroups(Text, String.Other, None)),
183
- # all regular fancy strings without qsw
184
- (r'(%([\[{(<]))((?:\\\2|(?!\2).)*)(\2)',
185
- intp_string_callback),
186
- ]
187
-
188
160
  return states
189
161
 
190
162
  tokens = {
@@ -192,10 +164,16 @@ class CrystalLexer(ExtendedRegexLexer):
192
164
  (r'#.*?$', Comment.Single),
193
165
  # keywords
194
166
  (words('''
195
- abstract asm as begin break case do else elsif end ensure extend ifdef if
196
- include instance_sizeof next of pointerof private protected rescue return
197
- require sizeof super then typeof unless until when while with yield
167
+ abstract asm begin break case do else elsif end ensure extend if in
168
+ include next of private protected require rescue return select self super
169
+ then unless until when while with yield
198
170
  '''.split(), suffix=r'\b'), Keyword),
171
+ (words('''
172
+ previous_def forall out uninitialized __DIR__ __FILE__ __LINE__
173
+ __END_LINE__
174
+ '''.split(), prefix=r'(?<!\.)', suffix=r'\b'), Keyword.Pseudo),
175
+ # https://crystal-lang.org/docs/syntax_and_semantics/is_a.html
176
+ (r'\.(is_a\?|nil\?|responds_to\?|as\?|as\b)', Keyword.Pseudo),
199
177
  (words(['true', 'false', 'nil'], suffix=r'\b'), Keyword.Constant),
200
178
  # start of function, class and module names
201
179
  (r'(module|lib)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)',
@@ -203,29 +181,23 @@ class CrystalLexer(ExtendedRegexLexer):
203
181
  (r'(def|fun|macro)(\s+)((?:[a-zA-Z_]\w*::)*)',
204
182
  bygroups(Keyword, Text, Name.Namespace), 'funcname'),
205
183
  (r'def(?=[*%&^`~+-/\[<>=])', Keyword, 'funcname'),
206
- (r'(class|struct|union|type|alias|enum)(\s+)((?:[a-zA-Z_]\w*::)*)',
184
+ (r'(annotation|class|struct|union|type|alias|enum)(\s+)((?:[a-zA-Z_]\w*::)*)',
207
185
  bygroups(Keyword, Text, Name.Namespace), 'classname'),
208
- (r'(self|out|uninitialized)\b|(is_a|responds_to)\?', Keyword.Pseudo),
209
- # macros
186
+ # https://crystal-lang.org/api/toplevel.html
210
187
  (words('''
211
- debugger record pp assert_responds_to spawn parallel
212
- getter setter property delegate def_hash def_equals def_equals_and_hash
213
- forward_missing_to
214
- '''.split(), suffix=r'\b'), Name.Builtin.Pseudo),
215
- (r'getter[!?]|property[!?]|__(DIR|FILE|LINE)__\b', Name.Builtin.Pseudo),
188
+ instance_sizeof offsetof pointerof sizeof typeof
189
+ '''.split(), prefix=r'(?<!\.)', suffix=r'\b'), Keyword.Pseudo),
190
+ # macros
191
+ (r'(?<!\.)(debugger\b|p!|pp!|record\b|spawn\b)', Name.Builtin.Pseudo),
216
192
  # builtins
217
- # http://crystal-lang.org/api/toplevel.html
218
193
  (words('''
219
- Object Value Struct Reference Proc Class Nil Symbol Enum Void
220
- Bool Number Int Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64
221
- Float Float32 Float64 Char String
222
- Pointer Slice Range Exception Regex
223
- Mutex StaticArray Array Hash Set Tuple Deque Box Process File
224
- Dir Time Channel Concurrent Scheduler
225
- abort at_exit caller delay exit fork future get_stack_top gets
226
- lazy loop main p print printf puts
227
- raise rand read_line sleep sprintf system with_color
194
+ abort at_exit caller exit gets loop main p pp print printf puts
195
+ raise rand read_line sleep spawn sprintf system
228
196
  '''.split(), prefix=r'(?<!\.)', suffix=r'\b'), Name.Builtin),
197
+ # https://crystal-lang.org/api/Object.html#macro-summary
198
+ (r'(?<!\.)(((class_)?((getter|property)\b[!?]?|setter\b))|'
199
+ r'(def_(clone|equals|equals_and_hash|hash)|delegate|forward_missing_to)\b)',
200
+ Name.Builtin.Pseudo),
229
201
  # normal heredocs
230
202
  (r'(?<!\w)(<<-?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)',
231
203
  heredoc_callback),
@@ -297,18 +269,18 @@ class CrystalLexer(ExtendedRegexLexer):
297
269
  (r'\$-[0adFiIlpvw]', Name.Variable.Global),
298
270
  (r'::', Operator),
299
271
  include('strings'),
300
- # chars
272
+ # https://crystal-lang.org/reference/syntax_and_semantics/literals/char.html
301
273
  (r'\?(\\[MC]-)*' # modifiers
302
- r'(\\([\\befnrtv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S)'
274
+ r'(\\([\\abefnrtv#"\']|[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\{[a-fA-F0-9 ]+\})|\S)'
303
275
  r'(?!\w)',
304
276
  String.Char),
305
- (r'[A-Z][A-Z_]+\b', Name.Constant),
277
+ (r'[A-Z][A-Z_]+\b(?!::|\.)', Name.Constant),
306
278
  # macro expansion
307
279
  (r'\{%', String.Interpol, 'in-macro-control'),
308
280
  (r'\{\{', String.Interpol, 'in-macro-expr'),
309
- # attributes
310
- (r'(@\[)(\s*)([A-Z]\w*)',
311
- bygroups(Operator, Text, Name.Decorator), 'in-attr'),
281
+ # annotations
282
+ (r'(@\[)(\s*)([A-Z]\w*(::[A-Z]\w*)*)',
283
+ bygroups(Operator, Text, Name.Decorator), 'in-annot'),
312
284
  # this is needed because Crystal attributes can look
313
285
  # like keywords (class) or like this: ` ?!?
314
286
  (words(CRYSTAL_OPERATORS, prefix=r'(\.|::)'),
@@ -345,7 +317,9 @@ class CrystalLexer(ExtendedRegexLexer):
345
317
  (r'#\{', String.Interpol, 'in-intp'),
346
318
  ],
347
319
  'string-escaped': [
348
- (r'\\([\\befnstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})', String.Escape)
320
+ # https://crystal-lang.org/reference/syntax_and_semantics/literals/string.html
321
+ (r'\\([\\abefnrtv#"\']|[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\{[a-fA-F0-9 ]+\})',
322
+ String.Escape)
349
323
  ],
350
324
  'string-intp-escaped': [
351
325
  include('string-intp'),
@@ -375,7 +349,7 @@ class CrystalLexer(ExtendedRegexLexer):
375
349
  'in-macro-control': [
376
350
  (r'\{%', String.Interpol, '#push'),
377
351
  (r'%\}', String.Interpol, '#pop'),
378
- (r'for\b|in\b', Keyword),
352
+ (r'(for|verbatim)\b', Keyword),
379
353
  include('root'),
380
354
  ],
381
355
  'in-macro-expr': [
@@ -383,7 +357,7 @@ class CrystalLexer(ExtendedRegexLexer):
383
357
  (r'\}\}', String.Interpol, '#pop'),
384
358
  include('root'),
385
359
  ],
386
- 'in-attr': [
360
+ 'in-annot': [
387
361
  (r'\[', Operator, '#push'),
388
362
  (r'\]', Operator, '#pop'),
389
363
  include('root'),
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.csound
4
3
  ~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Csound 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.css
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for CSS and related stylesheet formats.
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
 
@@ -289,8 +288,8 @@ class CssLexer(RegexLexer):
289
288
  (r'(@)([\w-]+)', bygroups(Punctuation, Keyword), 'atrule'),
290
289
  (r'[\w-]+', Name.Tag),
291
290
  (r'[~^*!%&$\[\]()<>|+=@:;,./?-]', Operator),
292
- (r'"(\\\\|\\"|[^"])*"', String.Double),
293
- (r"'(\\\\|\\'|[^'])*'", String.Single)
291
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
292
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
294
293
  ],
295
294
  'atrule': [
296
295
  (r'\{', Punctuation, 'atcontent'),
@@ -310,6 +309,8 @@ class CssLexer(RegexLexer):
310
309
  (words(_vendor_prefixes,), Keyword.Pseudo),
311
310
  (r'('+r'|'.join(_css_properties)+r')(\s*)(\:)',
312
311
  bygroups(Keyword, Text, Punctuation), 'value-start'),
312
+ (r'([-]+[a-zA-Z_][\w-]*)(\s*)(\:)', bygroups(Name.Variable, Text, Punctuation),
313
+ 'value-start'),
313
314
  (r'([a-zA-Z_][\w-]*)(\s*)(\:)', bygroups(Name, Text, Punctuation),
314
315
  'value-start'),
315
316
 
@@ -335,14 +336,15 @@ class CssLexer(RegexLexer):
335
336
 
336
337
  (r'[~^*!%&<>|+=@:./?-]+', Operator),
337
338
  (r'[\[\](),]+', Punctuation),
338
- (r'"(\\\\|\\"|[^"])*"', String.Double),
339
- (r"'(\\\\|\\'|[^'])*'", String.Single),
339
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
340
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
340
341
  (r'[a-zA-Z_][\w-]*', Name),
341
342
  (r';', Punctuation, '#pop'),
342
343
  (r'\}', Punctuation, '#pop:2'),
343
344
  ],
344
345
  'function-start': [
345
346
  (r'\s+', Text),
347
+ (r'[-]+([\w+]+[-]*)+', Name.Variable),
346
348
  include('urls'),
347
349
  (words(_vendor_prefixes,), Keyword.Pseudo),
348
350
  (words(_keyword_values, suffix=r'\b'), Keyword.Constant),
@@ -359,8 +361,8 @@ class CssLexer(RegexLexer):
359
361
  include('numeric-values'),
360
362
  (r'[*+/-]', Operator),
361
363
  (r',', Punctuation),
362
- (r'"(\\\\|\\"|[^"])*"', String.Double),
363
- (r"'(\\\\|\\'|[^'])*'", String.Single),
364
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
365
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
364
366
  (r'[a-zA-Z_-]\w*', Name),
365
367
  (r'\)', Punctuation, '#pop'),
366
368
  ],
@@ -686,6 +688,7 @@ class LessCssLexer(CssLexer):
686
688
  ],
687
689
  'content': [
688
690
  (r'\{', Punctuation, '#push'),
691
+ (r'//.*\n', Comment.Single),
689
692
  inherit,
690
693
  ],
691
694
  }
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.d
4
3
  ~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for D 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
 
@@ -98,7 +97,7 @@ class DLexer(RegexLexer):
98
97
  # -- AlternateWysiwygString
99
98
  (r'`[^`]*`[cwd]?', String),
100
99
  # -- DoubleQuotedString
101
- (r'"(\\\\|\\"|[^"])*"[cwd]?', String),
100
+ (r'"(\\\\|\\[^\\]|[^"\\])*"[cwd]?', String),
102
101
  # -- EscapeSequence
103
102
  (r"\\(['\"?\\abfnrtv]|x[0-9a-fA-F]{2}|[0-7]{1,3}"
104
103
  r"|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|&\w+;)",
@@ -229,7 +228,7 @@ class CrocLexer(RegexLexer):
229
228
  (r'@`(``|[^`])*`', String),
230
229
  (r"@'(''|[^'])*'", String),
231
230
  # -- DoubleQuotedString
232
- (r'"(\\\\|\\"|[^"])*"', String),
231
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
233
232
  # Tokens
234
233
  (r'(~=|\^=|%=|\*=|==|!=|>>>=|>>>|>>=|>>|>=|<=>|\?=|-\>'
235
234
  r'|<<=|<<|<=|\+\+|\+=|--|-=|\|\||\|=|&&|&=|\.\.|/=)'