pygments.rb 1.2.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 (388) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ci.yml +40 -0
  4. data/.github/workflows/release.yml +24 -0
  5. data/.gitignore +5 -5
  6. data/.rubocop.yml +18 -0
  7. data/CHANGELOG.adoc +132 -0
  8. data/Gemfile +3 -1
  9. data/LICENSE +1 -1
  10. data/README.adoc +160 -0
  11. data/Rakefile +12 -21
  12. data/bench.rb +14 -8
  13. data/{cache-lexers.rb → cache_lexers.rb} +3 -2
  14. data/lexers +0 -0
  15. data/lib/pygments.rb +10 -11
  16. data/lib/pygments/lexer.rb +6 -6
  17. data/lib/pygments/mentos.py +23 -110
  18. data/lib/pygments/popen.rb +196 -275
  19. data/lib/pygments/version.rb +2 -2
  20. data/pygments.rb.gemspec +12 -10
  21. data/test/test_pygments.rb +50 -110
  22. data/vendor/pygments-main/{AUTHORS → Pygments-2.8.0.dist-info/AUTHORS} +26 -3
  23. data/vendor/pygments-main/Pygments-2.8.0.dist-info/INSTALLER +1 -0
  24. data/vendor/pygments-main/{LICENSE → Pygments-2.8.0.dist-info/LICENSE} +1 -1
  25. data/vendor/pygments-main/Pygments-2.8.0.dist-info/METADATA +48 -0
  26. data/vendor/pygments-main/Pygments-2.8.0.dist-info/RECORD +494 -0
  27. data/vendor/pygments-main/Pygments-2.8.0.dist-info/REQUESTED +0 -0
  28. data/vendor/pygments-main/Pygments-2.8.0.dist-info/WHEEL +5 -0
  29. data/vendor/pygments-main/Pygments-2.8.0.dist-info/entry_points.txt +3 -0
  30. data/vendor/pygments-main/Pygments-2.8.0.dist-info/top_level.txt +1 -0
  31. data/vendor/pygments-main/bin/pygmentize +8 -0
  32. data/vendor/pygments-main/pygments/__init__.py +6 -12
  33. data/vendor/pygments-main/pygments/__main__.py +17 -0
  34. data/vendor/pygments-main/pygments/cmdline.py +213 -184
  35. data/vendor/pygments-main/pygments/console.py +6 -10
  36. data/vendor/pygments-main/pygments/filter.py +4 -7
  37. data/vendor/pygments-main/pygments/filters/__init__.py +609 -22
  38. data/vendor/pygments-main/pygments/formatter.py +4 -5
  39. data/vendor/pygments-main/pygments/formatters/__init__.py +10 -10
  40. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -4
  41. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
  42. data/vendor/pygments-main/pygments/formatters/html.py +242 -139
  43. data/vendor/pygments-main/pygments/formatters/img.py +91 -50
  44. data/vendor/pygments-main/pygments/formatters/irc.py +39 -40
  45. data/vendor/pygments-main/pygments/formatters/latex.py +62 -33
  46. data/vendor/pygments-main/pygments/formatters/other.py +18 -17
  47. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -30
  48. data/vendor/pygments-main/pygments/formatters/svg.py +40 -5
  49. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -32
  50. data/vendor/pygments-main/pygments/formatters/terminal256.py +45 -14
  51. data/vendor/pygments-main/pygments/lexer.py +47 -44
  52. data/vendor/pygments-main/pygments/lexers/__init__.py +29 -17
  53. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +5 -6
  54. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +15 -16
  55. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +21 -18
  56. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1717 -1339
  57. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -2
  58. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +2 -5
  59. data/vendor/pygments-main/pygments/lexers/_mapping.py +79 -31
  60. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +2 -3
  61. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1281 -0
  62. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +439 -386
  63. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +17 -21
  64. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +73 -17
  65. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +2 -3
  66. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -4
  67. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +151 -126
  68. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +96 -58
  69. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -2
  70. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +112 -0
  71. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +279 -0
  72. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -2
  73. data/vendor/pygments-main/pygments/lexers/actionscript.py +14 -10
  74. data/vendor/pygments-main/pygments/lexers/agile.py +1 -2
  75. data/vendor/pygments-main/pygments/lexers/algebra.py +20 -2
  76. data/vendor/pygments-main/pygments/lexers/ambient.py +2 -3
  77. data/vendor/pygments-main/pygments/lexers/amdgpu.py +48 -0
  78. data/vendor/pygments-main/pygments/lexers/ampl.py +3 -4
  79. data/vendor/pygments-main/pygments/lexers/apl.py +15 -16
  80. data/vendor/pygments-main/pygments/lexers/archetype.py +4 -5
  81. data/vendor/pygments-main/pygments/lexers/arrow.py +116 -0
  82. data/vendor/pygments-main/pygments/lexers/asm.py +440 -77
  83. data/vendor/pygments-main/pygments/lexers/automation.py +7 -2
  84. data/vendor/pygments-main/pygments/lexers/bare.py +103 -0
  85. data/vendor/pygments-main/pygments/lexers/basic.py +168 -7
  86. data/vendor/pygments-main/pygments/lexers/bibtex.py +5 -6
  87. data/vendor/pygments-main/pygments/lexers/boa.py +101 -0
  88. data/vendor/pygments-main/pygments/lexers/business.py +19 -5
  89. data/vendor/pygments-main/pygments/lexers/c_cpp.py +138 -48
  90. data/vendor/pygments-main/pygments/lexers/c_like.py +67 -43
  91. data/vendor/pygments-main/pygments/lexers/capnproto.py +7 -8
  92. data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
  93. data/vendor/pygments-main/pygments/lexers/chapel.py +25 -16
  94. data/vendor/pygments-main/pygments/lexers/clean.py +135 -245
  95. data/vendor/pygments-main/pygments/lexers/compiled.py +1 -2
  96. data/vendor/pygments-main/pygments/lexers/configs.py +190 -38
  97. data/vendor/pygments-main/pygments/lexers/console.py +1 -2
  98. data/vendor/pygments-main/pygments/lexers/crystal.py +54 -81
  99. data/vendor/pygments-main/pygments/lexers/csound.py +288 -188
  100. data/vendor/pygments-main/pygments/lexers/css.py +28 -23
  101. data/vendor/pygments-main/pygments/lexers/d.py +12 -8
  102. data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -2
  103. data/vendor/pygments-main/pygments/lexers/data.py +240 -98
  104. data/vendor/pygments-main/pygments/lexers/devicetree.py +108 -0
  105. data/vendor/pygments-main/pygments/lexers/diff.py +4 -5
  106. data/vendor/pygments-main/pygments/lexers/dotnet.py +46 -31
  107. data/vendor/pygments-main/pygments/lexers/dsls.py +146 -65
  108. data/vendor/pygments-main/pygments/lexers/dylan.py +16 -19
  109. data/vendor/pygments-main/pygments/lexers/ecl.py +17 -5
  110. data/vendor/pygments-main/pygments/lexers/eiffel.py +2 -3
  111. data/vendor/pygments-main/pygments/lexers/elm.py +5 -6
  112. data/vendor/pygments-main/pygments/lexers/email.py +150 -0
  113. data/vendor/pygments-main/pygments/lexers/erlang.py +29 -33
  114. data/vendor/pygments-main/pygments/lexers/esoteric.py +46 -20
  115. data/vendor/pygments-main/pygments/lexers/ezhil.py +21 -14
  116. data/vendor/pygments-main/pygments/lexers/factor.py +3 -4
  117. data/vendor/pygments-main/pygments/lexers/fantom.py +1 -2
  118. data/vendor/pygments-main/pygments/lexers/felix.py +1 -2
  119. data/vendor/pygments-main/pygments/lexers/floscript.py +82 -0
  120. data/vendor/pygments-main/pygments/lexers/forth.py +41 -41
  121. data/vendor/pygments-main/pygments/lexers/fortran.py +13 -10
  122. data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -3
  123. data/vendor/pygments-main/pygments/lexers/freefem.py +897 -0
  124. data/vendor/pygments-main/pygments/lexers/functional.py +1 -2
  125. data/vendor/pygments-main/pygments/lexers/futhark.py +110 -0
  126. data/vendor/pygments-main/pygments/lexers/gdscript.py +345 -0
  127. data/vendor/pygments-main/pygments/lexers/go.py +2 -3
  128. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +62 -6
  129. data/vendor/pygments-main/pygments/lexers/graph.py +14 -10
  130. data/vendor/pygments-main/pygments/lexers/graphics.py +274 -28
  131. data/vendor/pygments-main/pygments/lexers/graphviz.py +57 -0
  132. data/vendor/pygments-main/pygments/lexers/haskell.py +48 -22
  133. data/vendor/pygments-main/pygments/lexers/haxe.py +8 -9
  134. data/vendor/pygments-main/pygments/lexers/hdl.py +176 -90
  135. data/vendor/pygments-main/pygments/lexers/hexdump.py +1 -2
  136. data/vendor/pygments-main/pygments/lexers/html.py +37 -26
  137. data/vendor/pygments-main/pygments/lexers/idl.py +19 -9
  138. data/vendor/pygments-main/pygments/lexers/igor.py +244 -113
  139. data/vendor/pygments-main/pygments/lexers/inferno.py +2 -3
  140. data/vendor/pygments-main/pygments/lexers/installers.py +1 -2
  141. data/vendor/pygments-main/pygments/lexers/int_fiction.py +40 -16
  142. data/vendor/pygments-main/pygments/lexers/iolang.py +3 -4
  143. data/vendor/pygments-main/pygments/lexers/j.py +4 -5
  144. data/vendor/pygments-main/pygments/lexers/javascript.py +115 -104
  145. data/vendor/pygments-main/pygments/lexers/julia.py +44 -47
  146. data/vendor/pygments-main/pygments/lexers/jvm.py +368 -202
  147. data/vendor/pygments-main/pygments/lexers/lisp.py +887 -810
  148. data/vendor/pygments-main/pygments/lexers/make.py +12 -9
  149. data/vendor/pygments-main/pygments/lexers/markup.py +212 -45
  150. data/vendor/pygments-main/pygments/lexers/math.py +1 -2
  151. data/vendor/pygments-main/pygments/lexers/matlab.py +2705 -88
  152. data/vendor/pygments-main/pygments/lexers/mime.py +225 -0
  153. data/vendor/pygments-main/pygments/lexers/ml.py +203 -15
  154. data/vendor/pygments-main/pygments/lexers/modeling.py +26 -19
  155. data/vendor/pygments-main/pygments/lexers/modula2.py +27 -9
  156. data/vendor/pygments-main/pygments/lexers/monte.py +1 -2
  157. data/vendor/pygments-main/pygments/lexers/mosel.py +447 -0
  158. data/vendor/pygments-main/pygments/lexers/ncl.py +1 -2
  159. data/vendor/pygments-main/pygments/lexers/nimrod.py +4 -5
  160. data/vendor/pygments-main/pygments/lexers/nit.py +1 -2
  161. data/vendor/pygments-main/pygments/lexers/nix.py +1 -2
  162. data/vendor/pygments-main/pygments/lexers/oberon.py +17 -2
  163. data/vendor/pygments-main/pygments/lexers/objective.py +18 -19
  164. data/vendor/pygments-main/pygments/lexers/ooc.py +1 -2
  165. data/vendor/pygments-main/pygments/lexers/other.py +1 -2
  166. data/vendor/pygments-main/pygments/lexers/parasail.py +1 -2
  167. data/vendor/pygments-main/pygments/lexers/parsers.py +47 -83
  168. data/vendor/pygments-main/pygments/lexers/pascal.py +22 -23
  169. data/vendor/pygments-main/pygments/lexers/pawn.py +31 -28
  170. data/vendor/pygments-main/pygments/lexers/perl.py +260 -149
  171. data/vendor/pygments-main/pygments/lexers/php.py +66 -13
  172. data/vendor/pygments-main/pygments/lexers/pointless.py +70 -0
  173. data/vendor/pygments-main/pygments/lexers/pony.py +93 -0
  174. data/vendor/pygments-main/pygments/lexers/praat.py +38 -31
  175. data/vendor/pygments-main/pygments/lexers/prolog.py +38 -39
  176. data/vendor/pygments-main/pygments/lexers/promql.py +182 -0
  177. data/vendor/pygments-main/pygments/lexers/python.py +450 -231
  178. data/vendor/pygments-main/pygments/lexers/qvt.py +6 -7
  179. data/vendor/pygments-main/pygments/lexers/r.py +13 -276
  180. data/vendor/pygments-main/pygments/lexers/rdf.py +232 -40
  181. data/vendor/pygments-main/pygments/lexers/rebol.py +8 -9
  182. data/vendor/pygments-main/pygments/lexers/resource.py +2 -3
  183. data/vendor/pygments-main/pygments/lexers/ride.py +138 -0
  184. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -2
  185. data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -2
  186. data/vendor/pygments-main/pygments/lexers/robotframework.py +23 -32
  187. data/vendor/pygments-main/pygments/lexers/ruby.py +50 -46
  188. data/vendor/pygments-main/pygments/lexers/rust.py +76 -73
  189. data/vendor/pygments-main/pygments/lexers/sas.py +1 -2
  190. data/vendor/pygments-main/pygments/lexers/scdoc.py +82 -0
  191. data/vendor/pygments-main/pygments/lexers/scripting.py +79 -18
  192. data/vendor/pygments-main/pygments/lexers/sgf.py +60 -0
  193. data/vendor/pygments-main/pygments/lexers/shell.py +164 -49
  194. data/vendor/pygments-main/pygments/lexers/sieve.py +68 -0
  195. data/vendor/pygments-main/pygments/lexers/slash.py +184 -0
  196. data/vendor/pygments-main/pygments/lexers/smalltalk.py +2 -3
  197. data/vendor/pygments-main/pygments/lexers/smv.py +3 -4
  198. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -2
  199. data/vendor/pygments-main/pygments/lexers/solidity.py +91 -0
  200. data/vendor/pygments-main/pygments/lexers/special.py +31 -28
  201. data/vendor/pygments-main/pygments/lexers/sql.py +330 -179
  202. data/vendor/pygments-main/pygments/lexers/stata.py +107 -45
  203. data/vendor/pygments-main/pygments/lexers/supercollider.py +8 -4
  204. data/vendor/pygments-main/pygments/lexers/tcl.py +1 -2
  205. data/vendor/pygments-main/pygments/lexers/templates.py +116 -136
  206. data/vendor/pygments-main/pygments/lexers/teraterm.py +334 -0
  207. data/vendor/pygments-main/pygments/lexers/testing.py +6 -7
  208. data/vendor/pygments-main/pygments/lexers/text.py +2 -2
  209. data/vendor/pygments-main/pygments/lexers/textedit.py +6 -7
  210. data/vendor/pygments-main/pygments/lexers/textfmts.py +146 -14
  211. data/vendor/pygments-main/pygments/lexers/theorem.py +74 -56
  212. data/vendor/pygments-main/pygments/lexers/tnt.py +262 -0
  213. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -2
  214. data/vendor/pygments-main/pygments/lexers/typoscript.py +4 -12
  215. data/vendor/pygments-main/pygments/lexers/unicon.py +411 -0
  216. data/vendor/pygments-main/pygments/lexers/urbi.py +16 -4
  217. data/vendor/pygments-main/pygments/lexers/usd.py +89 -0
  218. data/vendor/pygments-main/pygments/lexers/varnish.py +4 -5
  219. data/vendor/pygments-main/pygments/lexers/verification.py +13 -11
  220. data/vendor/pygments-main/pygments/lexers/web.py +1 -2
  221. data/vendor/pygments-main/pygments/lexers/webidl.py +298 -0
  222. data/vendor/pygments-main/pygments/lexers/webmisc.py +35 -32
  223. data/vendor/pygments-main/pygments/lexers/whiley.py +5 -6
  224. data/vendor/pygments-main/pygments/lexers/x10.py +2 -3
  225. data/vendor/pygments-main/pygments/lexers/xorg.py +5 -5
  226. data/vendor/pygments-main/pygments/lexers/yang.py +103 -0
  227. data/vendor/pygments-main/pygments/lexers/zig.py +123 -0
  228. data/vendor/pygments-main/pygments/modeline.py +1 -2
  229. data/vendor/pygments-main/pygments/plugin.py +4 -3
  230. data/vendor/pygments-main/pygments/regexopt.py +1 -2
  231. data/vendor/pygments-main/pygments/scanner.py +2 -3
  232. data/vendor/pygments-main/pygments/sphinxext.py +2 -5
  233. data/vendor/pygments-main/pygments/style.py +61 -25
  234. data/vendor/pygments-main/pygments/styles/__init__.py +12 -5
  235. data/vendor/pygments-main/pygments/styles/abap.py +1 -2
  236. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  237. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  238. data/vendor/pygments-main/pygments/styles/arduino.py +2 -3
  239. data/vendor/pygments-main/pygments/styles/autumn.py +1 -2
  240. data/vendor/pygments-main/pygments/styles/borland.py +1 -2
  241. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  242. data/vendor/pygments-main/pygments/styles/colorful.py +1 -2
  243. data/vendor/pygments-main/pygments/styles/default.py +1 -2
  244. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  245. data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
  246. data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
  247. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  248. data/vendor/pygments-main/pygments/styles/inkpot.py +66 -0
  249. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -2
  250. data/vendor/pygments-main/pygments/styles/manni.py +1 -2
  251. data/vendor/pygments-main/pygments/styles/material.py +118 -0
  252. data/vendor/pygments-main/pygments/styles/monokai.py +4 -4
  253. data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
  254. data/vendor/pygments-main/pygments/styles/native.py +1 -2
  255. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -2
  256. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -2
  257. data/vendor/pygments-main/pygments/styles/pastie.py +1 -2
  258. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  259. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -2
  260. data/vendor/pygments-main/pygments/styles/rrt.py +1 -2
  261. data/vendor/pygments-main/pygments/styles/sas.py +1 -2
  262. data/vendor/pygments-main/pygments/styles/solarized.py +136 -0
  263. data/vendor/pygments-main/pygments/styles/stata_dark.py +40 -0
  264. data/vendor/pygments-main/pygments/styles/{stata.py → stata_light.py} +14 -16
  265. data/vendor/pygments-main/pygments/styles/tango.py +1 -2
  266. data/vendor/pygments-main/pygments/styles/trac.py +1 -2
  267. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  268. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  269. data/vendor/pygments-main/pygments/styles/xcode.py +1 -2
  270. data/vendor/pygments-main/pygments/styles/zenburn.py +80 -0
  271. data/vendor/pygments-main/pygments/token.py +1 -2
  272. data/vendor/pygments-main/pygments/unistring.py +47 -109
  273. data/vendor/pygments-main/pygments/util.py +16 -96
  274. metadata +76 -137
  275. data/CHANGELOG.md +0 -105
  276. data/README.md +0 -121
  277. data/circle.yml +0 -20
  278. data/test/test_data.c +0 -2581
  279. data/test/test_data.py +0 -514
  280. data/test/test_data_generated +0 -2582
  281. data/vendor/custom_lexers/github.py +0 -565
  282. data/vendor/pygments-main/CHANGES +0 -1186
  283. data/vendor/pygments-main/MANIFEST.in +0 -6
  284. data/vendor/pygments-main/Makefile +0 -65
  285. data/vendor/pygments-main/README.rst +0 -39
  286. data/vendor/pygments-main/REVISION +0 -1
  287. data/vendor/pygments-main/TODO +0 -12
  288. data/vendor/pygments-main/doc/Makefile +0 -153
  289. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  290. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  291. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  292. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  293. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  294. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  295. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  296. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  297. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  298. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  299. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  300. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  301. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  302. data/vendor/pygments-main/doc/conf.py +0 -241
  303. data/vendor/pygments-main/doc/docs/api.rst +0 -354
  304. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  305. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  306. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -166
  307. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  308. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  309. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  310. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  311. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  312. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  313. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  314. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -728
  315. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  316. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  317. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  318. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  319. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  320. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  321. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  322. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  323. data/vendor/pygments-main/doc/download.rst +0 -41
  324. data/vendor/pygments-main/doc/faq.rst +0 -139
  325. data/vendor/pygments-main/doc/index.rst +0 -54
  326. data/vendor/pygments-main/doc/languages.rst +0 -154
  327. data/vendor/pygments-main/doc/make.bat +0 -190
  328. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  329. data/vendor/pygments-main/external/autopygmentize +0 -101
  330. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  331. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  332. data/vendor/pygments-main/external/moin-parser.py +0 -112
  333. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  334. data/vendor/pygments-main/external/rst-directive.py +0 -82
  335. data/vendor/pygments-main/pygmentize +0 -8
  336. data/vendor/pygments-main/pygments/lexers/github.py +0 -565
  337. data/vendor/pygments-main/requirements.txt +0 -5
  338. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  339. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  340. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  341. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  342. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  343. data/vendor/pygments-main/scripts/pylintrc +0 -301
  344. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  345. data/vendor/pygments-main/setup.cfg +0 -10
  346. data/vendor/pygments-main/setup.py +0 -77
  347. data/vendor/pygments-main/tox.ini +0 -7
  348. data/vendor/simplejson/.gitignore +0 -10
  349. data/vendor/simplejson/.travis.yml +0 -5
  350. data/vendor/simplejson/CHANGES.txt +0 -291
  351. data/vendor/simplejson/LICENSE.txt +0 -19
  352. data/vendor/simplejson/MANIFEST.in +0 -5
  353. data/vendor/simplejson/README.rst +0 -19
  354. data/vendor/simplejson/conf.py +0 -179
  355. data/vendor/simplejson/index.rst +0 -628
  356. data/vendor/simplejson/scripts/make_docs.py +0 -18
  357. data/vendor/simplejson/setup.py +0 -104
  358. data/vendor/simplejson/simplejson/__init__.py +0 -510
  359. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  360. data/vendor/simplejson/simplejson/decoder.py +0 -425
  361. data/vendor/simplejson/simplejson/encoder.py +0 -567
  362. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  363. data/vendor/simplejson/simplejson/scanner.py +0 -77
  364. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  365. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  366. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  367. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  368. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  369. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  370. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  371. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  372. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  373. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  374. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  375. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  376. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  377. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  378. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  379. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  380. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  381. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  382. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  383. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  384. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  385. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  386. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  387. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  388. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -0,0 +1,60 @@
1
+ """
2
+ pygments.lexers.sgf
3
+ ~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexer for Smart Game Format (sgf) 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, Literal, String, Text, Punctuation
13
+
14
+ __all__ = ["SmartGameFormatLexer"]
15
+
16
+
17
+ class SmartGameFormatLexer(RegexLexer):
18
+ """
19
+ Lexer for Smart Game Format (sgf) file format.
20
+
21
+ The format is used to store game records of board games for two players
22
+ (mainly Go game).
23
+ For more information about the definition of the format, see:
24
+ https://www.red-bean.com/sgf/
25
+
26
+ .. versionadded:: 2.4
27
+ """
28
+ name = 'SmartGameFormat'
29
+ aliases = ['sgf']
30
+ filenames = ['*.sgf']
31
+
32
+ tokens = {
33
+ 'root': [
34
+ (r'[\s():;]', Punctuation),
35
+ # tokens:
36
+ (r'(A[BW]|AE|AN|AP|AR|AS|[BW]L|BM|[BW]R|[BW]S|[BW]T|CA|CH|CP|CR|'
37
+ r'DD|DM|DO|DT|EL|EV|EX|FF|FG|G[BW]|GC|GM|GN|HA|HO|ID|IP|IT|IY|KM|'
38
+ r'KO|LB|LN|LT|L|MA|MN|M|N|OB|OM|ON|OP|OT|OV|P[BW]|PC|PL|PM|RE|RG|'
39
+ r'RO|RU|SO|SC|SE|SI|SL|SO|SQ|ST|SU|SZ|T[BW]|TC|TE|TM|TR|UC|US|VW|'
40
+ r'V|[BW]|C)',
41
+ Name.Builtin),
42
+ # number:
43
+ (r'(\[)([0-9.]+)(\])',
44
+ bygroups(Punctuation, Literal.Number, Punctuation)),
45
+ # date:
46
+ (r'(\[)([0-9]{4}-[0-9]{2}-[0-9]{2})(\])',
47
+ bygroups(Punctuation, Literal.Date, Punctuation)),
48
+ # point:
49
+ (r'(\[)([a-z]{2})(\])',
50
+ bygroups(Punctuation, String, Punctuation)),
51
+ # double points:
52
+ (r'(\[)([a-z]{2})(:)([a-z]{2})(\])',
53
+ bygroups(Punctuation, String, Punctuation, String, Punctuation)),
54
+
55
+ (r'(\[)([\w\s#()+,\-.:?]+)(\])',
56
+ bygroups(Punctuation, String, Punctuation)),
57
+ (r'(\[)(\s.*)(\])',
58
+ bygroups(Punctuation, Text, Punctuation)),
59
+ ],
60
+ }
@@ -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-2017 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
 
@@ -19,8 +18,9 @@ from pygments.util import shebang_matches
19
18
 
20
19
 
21
20
  __all__ = ['BashLexer', 'BashSessionLexer', 'TcshLexer', 'BatchLexer',
22
- 'MSDOSSessionLexer', 'PowerShellLexer',
23
- 'PowerShellSessionLexer', 'TcshSessionLexer', 'FishShellLexer']
21
+ 'SlurmBashLexer', 'MSDOSSessionLexer', 'PowerShellLexer',
22
+ 'PowerShellSessionLexer', 'TcshSessionLexer', 'FishShellLexer',
23
+ 'ExeclineLexer']
24
24
 
25
25
  line_re = re.compile('.*?\n')
26
26
 
@@ -38,7 +38,7 @@ class BashLexer(RegexLexer):
38
38
  '*.exheres-0', '*.exlib', '*.zsh',
39
39
  '.bashrc', 'bashrc', '.bash_*', 'bash_*', 'zshrc', '.zshrc',
40
40
  'PKGBUILD']
41
- mimetypes = ['application/x-sh', 'application/x-shellscript']
41
+ mimetypes = ['application/x-sh', 'application/x-shellscript', 'text/x-shellscript']
42
42
 
43
43
  tokens = {
44
44
  'root': [
@@ -56,7 +56,7 @@ class BashLexer(RegexLexer):
56
56
  (r'\$', Text),
57
57
  ],
58
58
  'basic': [
59
- (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|'
60
60
  r'select|continue|until|esac|elif)(\s*)\b',
61
61
  bygroups(Keyword, Text)),
62
62
  (r'\b(alias|bg|bind|break|builtin|caller|cd|command|compgen|'
@@ -76,7 +76,7 @@ class BashLexer(RegexLexer):
76
76
  (r'&&|\|\|', Operator),
77
77
  ],
78
78
  'data': [
79
- (r'(?s)\$?"(\\\\|\\[0-7]+|\\.|[^"\\$])*"', String.Double),
79
+ (r'(?s)\$?"(\\.|[^"\\$])*"', String.Double),
80
80
  (r'"', String.Double, 'string'),
81
81
  (r"(?s)\$'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
82
82
  (r"(?s)'.*?'", String.Single),
@@ -126,12 +126,38 @@ class BashLexer(RegexLexer):
126
126
  return 0.2
127
127
 
128
128
 
129
+ class SlurmBashLexer(BashLexer):
130
+ """
131
+ Lexer for (ba|k|z|)sh Slurm scripts.
132
+
133
+ .. versionadded:: 2.4
134
+ """
135
+
136
+ name = 'Slurm'
137
+ aliases = ['slurm', 'sbatch']
138
+ filenames = ['*.sl']
139
+ mimetypes = []
140
+ EXTRA_KEYWORDS = {'srun'}
141
+
142
+ def get_tokens_unprocessed(self, text):
143
+ for index, token, value in BashLexer.get_tokens_unprocessed(self, text):
144
+ if token is Text and value in self.EXTRA_KEYWORDS:
145
+ yield index, Name.Builtin, value
146
+ elif token is Comment.Single and 'SBATCH' in value:
147
+ yield index, Keyword.Pseudo, value
148
+ else:
149
+ yield index, token, value
150
+
151
+
129
152
  class ShellSessionBaseLexer(Lexer):
130
153
  """
131
- Base lexer for simplistic shell sessions.
154
+ Base lexer for shell sessions.
132
155
 
133
156
  .. versionadded:: 2.1
134
157
  """
158
+
159
+ _venv = re.compile(r'^(\([^)]*\))(\s*)')
160
+
135
161
  def get_tokens_unprocessed(self, text):
136
162
  innerlexer = self._innerLexerCls(**self.options)
137
163
 
@@ -142,11 +168,20 @@ class ShellSessionBaseLexer(Lexer):
142
168
 
143
169
  for match in line_re.finditer(text):
144
170
  line = match.group()
145
- m = re.match(self._ps1rgx, line)
146
- if backslash_continuation:
147
- curcode += line
148
- backslash_continuation = curcode.endswith('\\\n')
149
- elif m:
171
+
172
+ venv_match = self._venv.match(line)
173
+ if venv_match:
174
+ venv = venv_match.group(1)
175
+ venv_whitespace = venv_match.group(2)
176
+ insertions.append((len(curcode),
177
+ [(0, Generic.Prompt.VirtualEnv, venv)]))
178
+ if venv_whitespace:
179
+ insertions.append((len(curcode),
180
+ [(0, Text, venv_whitespace)]))
181
+ line = line[venv_match.end():]
182
+
183
+ m = self._ps1rgx.match(line)
184
+ if m:
150
185
  # To support output lexers (say diff output), the output
151
186
  # needs to be broken by prompts whenever the output lexer
152
187
  # changes.
@@ -157,7 +192,7 @@ class ShellSessionBaseLexer(Lexer):
157
192
  [(0, Generic.Prompt, m.group(1))]))
158
193
  curcode += m.group(2)
159
194
  backslash_continuation = curcode.endswith('\\\n')
160
- elif line.startswith(self._ps2):
195
+ elif line.startswith(self._ps2) and backslash_continuation:
161
196
  insertions.append((len(curcode),
162
197
  [(0, Generic.Prompt, line[:len(self._ps2)])]))
163
198
  curcode += line[len(self._ps2):]
@@ -178,7 +213,8 @@ class ShellSessionBaseLexer(Lexer):
178
213
 
179
214
  class BashSessionLexer(ShellSessionBaseLexer):
180
215
  """
181
- Lexer for simplistic shell sessions.
216
+ Lexer for Bash shell sessions, i.e. command lines, including a
217
+ prompt, interspersed with output.
182
218
 
183
219
  .. versionadded:: 1.1
184
220
  """
@@ -189,10 +225,10 @@ class BashSessionLexer(ShellSessionBaseLexer):
189
225
  mimetypes = ['application/x-shell-session', 'application/x-sh-session']
190
226
 
191
227
  _innerLexerCls = BashLexer
192
- _ps1rgx = \
228
+ _ps1rgx = re.compile(
193
229
  r'^((?:(?:\[.*?\])|(?:\(\S+\))?(?:| |sh\S*?|\w+\S+[@:]\S+(?:\s+\S+)' \
194
- r'?|\[\S+[@:][^\n]+\].+))\s*[$#%])(.*\n?)'
195
- _ps2 = '>'
230
+ r'?|\[\S+[@:][^\n]+\].+))\s*[$#%]\s*)(.*\n?)')
231
+ _ps2 = '> '
196
232
 
197
233
 
198
234
  class BatchLexer(RegexLexer):
@@ -211,14 +247,14 @@ class BatchLexer(RegexLexer):
211
247
  _nl = r'\n\x1a'
212
248
  _punct = r'&<>|'
213
249
  _ws = r'\t\v\f\r ,;=\xa0'
250
+ _nlws = r'\s\x1a\xa0,;='
214
251
  _space = r'(?:(?:(?:\^[%s])?[%s])+)' % (_nl, _ws)
215
252
  _keyword_terminator = (r'(?=(?:\^[%s]?)?[%s+./:[\\\]]|[%s%s(])' %
216
253
  (_nl, _ws, _nl, _punct))
217
254
  _token_terminator = r'(?=\^?[%s]|[%s%s])' % (_ws, _punct, _nl)
218
255
  _start_label = r'((?:(?<=^[^:])|^[^:]?)[%s]*)(:)' % _ws
219
- _label = r'(?:(?:[^%s%s%s+:^]|\^[%s]?[\w\W])*)' % (_nl, _punct, _ws, _nl)
220
- _label_compound = (r'(?:(?:[^%s%s%s+:^)]|\^[%s]?[^)])*)' %
221
- (_nl, _punct, _ws, _nl))
256
+ _label = r'(?:(?:[^%s%s+:^]|\^[%s]?[\w\W])*)' % (_nlws, _punct, _nl)
257
+ _label_compound = r'(?:(?:[^%s%s+:^)]|\^[%s]?[^)])*)' % (_nlws, _punct, _nl)
222
258
  _number = r'(?:-?(?:0[0-7]+|0x[\da-f]+|\d+)%s)' % _token_terminator
223
259
  _opword = r'(?:equ|geq|gtr|leq|lss|neq)'
224
260
  _string = r'(?:"[^%s"]*(?:"|(?=[%s])))' % (_nl, _nl)
@@ -228,9 +264,8 @@ class BatchLexer(RegexLexer):
228
264
  r'(?:\^?![^!:%s]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:'
229
265
  r'[^!%s^]|\^[^!%s])[^=%s]*=(?:[^!%s^]|\^[^!%s])*)?)?\^?!))' %
230
266
  (_nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl, _nl))
231
- _core_token = r'(?:(?:(?:\^[%s]?)?[^"%s%s%s])+)' % (_nl, _nl, _punct, _ws)
232
- _core_token_compound = r'(?:(?:(?:\^[%s]?)?[^"%s%s%s)])+)' % (_nl, _nl,
233
- _punct, _ws)
267
+ _core_token = r'(?:(?:(?:\^[%s]?)?[^"%s%s])+)' % (_nl, _nlws, _punct)
268
+ _core_token_compound = r'(?:(?:(?:\^[%s]?)?[^"%s%s)])+)' % (_nl, _nlws, _punct)
234
269
  _token = r'(?:[%s]+|%s)' % (_punct, _core_token)
235
270
  _token_compound = r'(?:[%s]+|%s)' % (_punct, _core_token_compound)
236
271
  _stoken = (r'(?:[%s]+|(?:%s|%s|%s)+)' %
@@ -341,7 +376,8 @@ class BatchLexer(RegexLexer):
341
376
  return state
342
377
 
343
378
  def _make_arithmetic_state(compound, _nl=_nl, _punct=_punct,
344
- _string=_string, _variable=_variable, _ws=_ws):
379
+ _string=_string, _variable=_variable,
380
+ _ws=_ws, _nlws=_nlws):
345
381
  op = r'=+\-*/!~'
346
382
  state = []
347
383
  if compound:
@@ -352,8 +388,8 @@ class BatchLexer(RegexLexer):
352
388
  (r'\d+', Number.Integer),
353
389
  (r'[(),]+', Punctuation),
354
390
  (r'([%s]|%%|\^\^)+' % op, Operator),
355
- (r'(%s|%s|(\^[%s]?)?[^()%s%%^"%s%s%s]|\^[%s%s]?%s)+' %
356
- (_string, _variable, _nl, op, _nl, _punct, _ws, _nl, _ws,
391
+ (r'(%s|%s|(\^[%s]?)?[^()%s%%\^"%s%s]|\^[%s]?%s)+' %
392
+ (_string, _variable, _nl, op, _nlws, _punct, _nlws,
357
393
  r'[^)]' if compound else r'[\w\W]'),
358
394
  using(this, state='variable')),
359
395
  (r'(?=[\x00|&])', Text, '#pop'),
@@ -387,15 +423,15 @@ class BatchLexer(RegexLexer):
387
423
  _core_token_compound=_core_token_compound,
388
424
  _nl=_nl, _punct=_punct, _stoken=_stoken,
389
425
  _string=_string, _space=_space,
390
- _variable=_variable, _ws=_ws):
426
+ _variable=_variable, _nlws=_nlws):
391
427
  stoken_compound = (r'(?:[%s]+|(?:%s|%s|%s)+)' %
392
428
  (_punct, _string, _variable, _core_token_compound))
393
429
  return [
394
- (r'((?:(?<=[%s%s])\d)?)(>>?&|<&)([%s%s]*)(\d)' %
395
- (_nl, _ws, _nl, _ws),
430
+ (r'((?:(?<=[%s])\d)?)(>>?&|<&)([%s]*)(\d)' %
431
+ (_nlws, _nlws),
396
432
  bygroups(Number.Integer, Punctuation, Text, Number.Integer)),
397
- (r'((?:(?<=[%s%s])(?<!\^[%s])\d)?)(>>?|<)(%s?%s)' %
398
- (_nl, _ws, _nl, _space, stoken_compound if compound else _stoken),
433
+ (r'((?:(?<=[%s])(?<!\^[%s])\d)?)(>>?|<)(%s?%s)' %
434
+ (_nlws, _nl, _space, stoken_compound if compound else _stoken),
399
435
  bygroups(Number.Integer, Punctuation, using(this, state='text')))
400
436
  ]
401
437
 
@@ -434,7 +470,7 @@ class BatchLexer(RegexLexer):
434
470
  'text': [
435
471
  (r'"', String.Double, 'string'),
436
472
  include('variable-or-escape'),
437
- (r'[^"%%^%s%s%s\d)]+|.' % (_nl, _punct, _ws), Text)
473
+ (r'[^"%%^%s%s\d)]+|.' % (_nlws, _punct), Text)
438
474
  ],
439
475
  'variable': [
440
476
  (r'"', String.Double, 'string'),
@@ -455,13 +491,13 @@ class BatchLexer(RegexLexer):
455
491
  include('follow')
456
492
  ],
457
493
  'for/f': [
458
- (r'(")((?:%s|[^"])*?")([%s%s]*)(\))' % (_variable, _nl, _ws),
494
+ (r'(")((?:%s|[^"])*?")([%s]*)(\))' % (_variable, _nlws),
459
495
  bygroups(String.Double, using(this, state='string'), Text,
460
496
  Punctuation)),
461
497
  (r'"', String.Double, ('#pop', 'for2', 'string')),
462
- (r"('(?:%%%%|%s|[\w\W])*?')([%s%s]*)(\))" % (_variable, _nl, _ws),
498
+ (r"('(?:%%%%|%s|[\w\W])*?')([%s]*)(\))" % (_variable, _nlws),
463
499
  bygroups(using(this, state='sqstring'), Text, Punctuation)),
464
- (r'(`(?:%%%%|%s|[\w\W])*?`)([%s%s]*)(\))' % (_variable, _nl, _ws),
500
+ (r'(`(?:%%%%|%s|[\w\W])*?`)([%s]*)(\))' % (_variable, _nlws),
465
501
  bygroups(using(this, state='bqstring'), Text, Punctuation)),
466
502
  include('for2')
467
503
  ],
@@ -507,7 +543,8 @@ class BatchLexer(RegexLexer):
507
543
 
508
544
  class MSDOSSessionLexer(ShellSessionBaseLexer):
509
545
  """
510
- Lexer for simplistic MSDOS sessions.
546
+ Lexer for MS DOS shell sessions, i.e. command lines, including a
547
+ prompt, interspersed with output.
511
548
 
512
549
  .. versionadded:: 2.1
513
550
  """
@@ -518,7 +555,7 @@ class MSDOSSessionLexer(ShellSessionBaseLexer):
518
555
  mimetypes = []
519
556
 
520
557
  _innerLexerCls = BatchLexer
521
- _ps1rgx = r'^([^>]+>)(.*\n?)'
558
+ _ps1rgx = re.compile(r'^([^>]*>)(.*\n?)')
522
559
  _ps2 = 'More? '
523
560
 
524
561
 
@@ -592,7 +629,8 @@ class TcshLexer(RegexLexer):
592
629
 
593
630
  class TcshSessionLexer(ShellSessionBaseLexer):
594
631
  """
595
- Lexer for Tcsh sessions.
632
+ Lexer for Tcsh sessions, i.e. command lines, including a
633
+ prompt, interspersed with output.
596
634
 
597
635
  .. versionadded:: 2.1
598
636
  """
@@ -603,7 +641,7 @@ class TcshSessionLexer(ShellSessionBaseLexer):
603
641
  mimetypes = []
604
642
 
605
643
  _innerLexerCls = TcshLexer
606
- _ps1rgx = r'^([^>]+>)(.*\n?)'
644
+ _ps1rgx = re.compile(r'^([^>]+>)(.*\n?)')
607
645
  _ps2 = '? '
608
646
 
609
647
 
@@ -638,13 +676,29 @@ class PowerShellLexer(RegexLexer):
638
676
  'wildcard').split()
639
677
 
640
678
  verbs = (
641
- 'write where wait use update unregister undo trace test tee take '
642
- 'suspend stop start split sort skip show set send select scroll resume '
643
- 'restore restart resolve resize reset rename remove register receive '
644
- 'read push pop ping out new move measure limit join invoke import '
645
- 'group get format foreach export expand exit enter enable disconnect '
646
- 'disable debug cxnew copy convertto convertfrom convert connect '
647
- 'complete compare clear checkpoint aggregate add').split()
679
+ 'write where watch wait use update unregister unpublish unprotect '
680
+ 'unlock uninstall undo unblock trace test tee take sync switch '
681
+ 'suspend submit stop step start split sort skip show set send select '
682
+ 'search scroll save revoke resume restore restart resolve resize '
683
+ 'reset request repair rename remove register redo receive read push '
684
+ 'publish protect pop ping out optimize open new move mount merge '
685
+ 'measure lock limit join invoke install initialize import hide group '
686
+ 'grant get format foreach find export expand exit enter enable edit '
687
+ 'dismount disconnect disable deny debug cxnew copy convertto '
688
+ 'convertfrom convert connect confirm compress complete compare close '
689
+ 'clear checkpoint block backup assert approve aggregate add').split()
690
+
691
+ aliases_ = (
692
+ 'ac asnp cat cd cfs chdir clc clear clhy cli clp cls clv cnsn '
693
+ 'compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo epal '
694
+ 'epcsv epsn erase etsn exsn fc fhx fl foreach ft fw gal gbp gc gci gcm '
695
+ 'gcs gdr ghy gi gjb gl gm gmo gp gps gpv group gsn gsnp gsv gu gv gwmi '
696
+ 'h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp '
697
+ 'ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv '
698
+ 'oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo '
699
+ 'rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc select '
700
+ 'set shcm si sl sleep sls sort sp spjb spps spsv start sujb sv swmi tee '
701
+ 'trcm type wget where wjb write').split()
648
702
 
649
703
  commenthelp = (
650
704
  'component description example externalhelp forwardhelpcategory '
@@ -672,6 +726,7 @@ class PowerShellLexer(RegexLexer):
672
726
  (r'(%s)\b' % '|'.join(keywords), Keyword),
673
727
  (r'-(%s)\b' % '|'.join(operators), Operator),
674
728
  (r'(%s)-[a-z_]\w*\b' % '|'.join(verbs), Name.Builtin),
729
+ (r'(%s)\s' % '|'.join(aliases_), Name.Builtin),
675
730
  (r'\[[a-z_\[][\w. `,\[\]]*\]', Name.Constant), # .net [type]s
676
731
  (r'-[a-z_]\w*', Name),
677
732
  (r'\w+', Name),
@@ -706,7 +761,8 @@ class PowerShellLexer(RegexLexer):
706
761
 
707
762
  class PowerShellSessionLexer(ShellSessionBaseLexer):
708
763
  """
709
- Lexer for simplistic Windows PowerShell sessions.
764
+ Lexer for PowerShell sessions, i.e. command lines, including a
765
+ prompt, interspersed with output.
710
766
 
711
767
  .. versionadded:: 2.1
712
768
  """
@@ -717,7 +773,7 @@ class PowerShellSessionLexer(ShellSessionBaseLexer):
717
773
  mimetypes = []
718
774
 
719
775
  _innerLexerCls = PowerShellLexer
720
- _ps1rgx = r'^(PS [^>]+> )(.*\n?)'
776
+ _ps1rgx = re.compile(r'^((?:\[[^]]+\]: )?PS[^>]*> ?)(.*\n?)')
721
777
  _ps2 = '>> '
722
778
 
723
779
 
@@ -792,3 +848,62 @@ class FishShellLexer(RegexLexer):
792
848
  include('root'),
793
849
  ],
794
850
  }
851
+
852
+ class ExeclineLexer(RegexLexer):
853
+ """
854
+ Lexer for Laurent Bercot's execline language
855
+ (https://skarnet.org/software/execline).
856
+
857
+ .. versionadded:: 2.7
858
+ """
859
+
860
+ name = 'execline'
861
+ aliases = ['execline']
862
+ filenames = ['*.exec']
863
+
864
+ tokens = {
865
+ 'root': [
866
+ include('basic'),
867
+ include('data'),
868
+ include('interp')
869
+ ],
870
+ 'interp': [
871
+ (r'\$\{', String.Interpol, 'curly'),
872
+ (r'\$[\w@#]+', Name.Variable), # user variable
873
+ (r'\$', Text),
874
+ ],
875
+ 'basic': [
876
+ (r'\b(background|backtick|cd|define|dollarat|elgetopt|'
877
+ r'elgetpositionals|elglob|emptyenv|envfile|exec|execlineb|'
878
+ r'exit|export|fdblock|fdclose|fdmove|fdreserve|fdswap|'
879
+ r'forbacktickx|foreground|forstdin|forx|getcwd|getpid|heredoc|'
880
+ r'homeof|if|ifelse|ifte|ifthenelse|importas|loopwhilex|'
881
+ r'multidefine|multisubstitute|pipeline|piperw|posix-cd|'
882
+ r'redirfd|runblock|shift|trap|tryexec|umask|unexport|wait|'
883
+ r'withstdinas)\b', Name.Builtin),
884
+ (r'\A#!.+\n', Comment.Hashbang),
885
+ (r'#.*\n', Comment.Single),
886
+ (r'[{}]', Operator)
887
+ ],
888
+ 'data': [
889
+ (r'(?s)"(\\.|[^"\\$])*"', String.Double),
890
+ (r'"', String.Double, 'string'),
891
+ (r'\s+', Text),
892
+ (r'[^\s{}$"\\]+', Text)
893
+ ],
894
+ 'string': [
895
+ (r'"', String.Double, '#pop'),
896
+ (r'(?s)(\\\\|\\.|[^"\\$])+', String.Double),
897
+ include('interp'),
898
+ ],
899
+ 'curly': [
900
+ (r'\}', String.Interpol, '#pop'),
901
+ (r'[\w#@]+', Name.Variable),
902
+ include('root')
903
+ ]
904
+
905
+ }
906
+
907
+ def analyse_text(text):
908
+ if shebang_matches(text, r'execlineb'):
909
+ return 1