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