pygments.rb 1.2.1 → 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 (381) 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 -6
  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 +11 -21
  11. data/bench.rb +8 -7
  12. data/cache-lexers.rb +3 -2
  13. data/lexers +0 -0
  14. data/lib/pygments/lexer.rb +5 -5
  15. data/lib/pygments/mentos.py +23 -110
  16. data/lib/pygments/popen.rb +148 -229
  17. data/lib/pygments/version.rb +2 -2
  18. data/lib/pygments.rb +10 -11
  19. data/pygments.rb.gemspec +12 -10
  20. data/test/test_pygments.rb +46 -104
  21. data/vendor/pygments-main/{AUTHORS → Pygments-2.7.3.dist-info/AUTHORS} +21 -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 +38 -29
  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 +9 -8
  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 +68 -41
  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 +28 -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 +1 -1
  57. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +2 -4
  58. data/vendor/pygments-main/pygments/lexers/_mapping.py +74 -29
  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 +440 -76
  81. data/vendor/pygments-main/pygments/lexers/automation.py +1 -1
  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 +5 -5
  85. data/vendor/pygments-main/pygments/lexers/boa.py +102 -0
  86. data/vendor/pygments-main/pygments/lexers/business.py +17 -2
  87. data/vendor/pygments-main/pygments/lexers/c_cpp.py +137 -45
  88. data/vendor/pygments-main/pygments/lexers/c_like.py +67 -42
  89. data/vendor/pygments-main/pygments/lexers/capnproto.py +7 -7
  90. data/vendor/pygments-main/pygments/lexers/chapel.py +23 -13
  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 +187 -36
  94. data/vendor/pygments-main/pygments/lexers/console.py +1 -1
  95. data/vendor/pygments-main/pygments/lexers/crystal.py +3 -4
  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 +144 -62
  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 +46 -19
  112. data/vendor/pygments-main/pygments/lexers/ezhil.py +21 -13
  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 +62 -5
  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 +48 -21
  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 +1 -1
  131. data/vendor/pygments-main/pygments/lexers/html.py +31 -19
  132. data/vendor/pygments-main/pygments/lexers/idl.py +19 -8
  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 +60 -45
  140. data/vendor/pygments-main/pygments/lexers/julia.py +44 -46
  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 +1 -1
  152. data/vendor/pygments-main/pygments/lexers/mosel.py +448 -0
  153. data/vendor/pygments-main/pygments/lexers/ncl.py +1 -1
  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 +22 -22
  164. data/vendor/pygments-main/pygments/lexers/pawn.py +30 -24
  165. data/vendor/pygments-main/pygments/lexers/perl.py +260 -148
  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 -227
  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 +76 -72
  184. data/vendor/pygments-main/pygments/lexers/sas.py +1 -1
  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 +162 -42
  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 +3 -3
  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 -44
  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 +102 -121
  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 +4 -11
  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 +3 -3
  214. data/vendor/pygments-main/pygments/lexers/verification.py +13 -10
  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 +31 -28
  218. data/vendor/pygments-main/pygments/lexers/whiley.py +5 -5
  219. data/vendor/pygments-main/pygments/lexers/x10.py +1 -1
  220. data/vendor/pygments-main/pygments/lexers/xorg.py +5 -4
  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 +1 -1
  224. data/vendor/pygments-main/pygments/plugin.py +4 -2
  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 +10 -4
  230. data/vendor/pygments-main/pygments/styles/abap.py +1 -1
  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 +1 -1
  254. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  255. data/vendor/pygments-main/pygments/styles/sas.py +1 -1
  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.py → stata_light.py} +14 -15
  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 +15 -92
  267. metadata +68 -136
  268. data/CHANGELOG.md +0 -111
  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 -1186
  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 -354
  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 -166
  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 -728
  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 -101
  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/requirements.txt +0 -5
  331. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  332. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  333. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  334. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  335. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  336. data/vendor/pygments-main/scripts/pylintrc +0 -301
  337. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  338. data/vendor/pygments-main/setup.cfg +0 -10
  339. data/vendor/pygments-main/setup.py +0 -77
  340. data/vendor/pygments-main/tox.ini +0 -7
  341. data/vendor/simplejson/.gitignore +0 -10
  342. data/vendor/simplejson/.travis.yml +0 -5
  343. data/vendor/simplejson/CHANGES.txt +0 -291
  344. data/vendor/simplejson/LICENSE.txt +0 -19
  345. data/vendor/simplejson/MANIFEST.in +0 -5
  346. data/vendor/simplejson/README.rst +0 -19
  347. data/vendor/simplejson/conf.py +0 -179
  348. data/vendor/simplejson/index.rst +0 -628
  349. data/vendor/simplejson/scripts/make_docs.py +0 -18
  350. data/vendor/simplejson/setup.py +0 -104
  351. data/vendor/simplejson/simplejson/__init__.py +0 -510
  352. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  353. data/vendor/simplejson/simplejson/decoder.py +0 -425
  354. data/vendor/simplejson/simplejson/encoder.py +0 -567
  355. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  356. data/vendor/simplejson/simplejson/scanner.py +0 -77
  357. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  358. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  359. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  360. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  361. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  362. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  363. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  364. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  365. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  366. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  367. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  368. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  369. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  370. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  371. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  372. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  373. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  374. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  375. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  376. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  377. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  378. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  379. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  380. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  381. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -5,7 +5,7 @@
5
5
 
6
6
  Lexer for scripting and embedded languages.
7
7
 
8
- :copyright: Copyright 2006-2017 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
 
@@ -15,11 +15,11 @@ from pygments.lexer import RegexLexer, include, bygroups, default, combined, \
15
15
  words
16
16
  from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
17
17
  Number, Punctuation, Error, Whitespace, Other
18
- from pygments.util import get_bool_opt, get_list_opt, iteritems
18
+ from pygments.util import get_bool_opt, get_list_opt
19
19
 
20
20
  __all__ = ['LuaLexer', 'MoonScriptLexer', 'ChaiscriptLexer', 'LSLLexer',
21
21
  'AppleScriptLexer', 'RexxLexer', 'MOOCodeLexer', 'HybrisLexer',
22
- 'EasytrieveLexer', 'JclLexer']
22
+ 'EasytrieveLexer', 'JclLexer', 'MiniScriptLexer']
23
23
 
24
24
 
25
25
  class LuaLexer(RegexLexer):
@@ -104,7 +104,7 @@ class LuaLexer(RegexLexer):
104
104
  (r'%s(?=%s*[.:])' % (_name, _s), Name.Class),
105
105
  (_name, Name.Function, '#pop'),
106
106
  # inline function
107
- ('\(', Punctuation, '#pop'),
107
+ (r'\(', Punctuation, '#pop'),
108
108
  ],
109
109
 
110
110
  'goto': [
@@ -142,7 +142,7 @@ class LuaLexer(RegexLexer):
142
142
  self._functions = set()
143
143
  if self.func_name_highlighting:
144
144
  from pygments.lexers._lua_builtins import MODULES
145
- for mod, func in iteritems(MODULES):
145
+ for mod, func in MODULES.items():
146
146
  if mod not in self.disabled_modules:
147
147
  self._functions.update(func)
148
148
  RegexLexer.__init__(self, **options)
@@ -157,12 +157,11 @@ class LuaLexer(RegexLexer):
157
157
  elif '.' in value:
158
158
  a, b = value.split('.')
159
159
  yield index, Name, a
160
- yield index + len(a), Punctuation, u'.'
160
+ yield index + len(a), Punctuation, '.'
161
161
  yield index + len(a) + 1, Name, b
162
162
  continue
163
163
  yield index, token, value
164
164
 
165
-
166
165
  class MoonScriptLexer(LuaLexer):
167
166
  """
168
167
  For `MoonScript <http://moonscript.org>`_ source code.
@@ -660,18 +659,18 @@ class AppleScriptLexer(RegexLexer):
660
659
  tokens = {
661
660
  'root': [
662
661
  (r'\s+', Text),
663
- (u'¬\\n', String.Escape),
662
+ (r'¬\n', String.Escape),
664
663
  (r"'s\s+", Text), # This is a possessive, consider moving
665
664
  (r'(--|#).*?$', Comment),
666
665
  (r'\(\*', Comment.Multiline, 'comment'),
667
666
  (r'[(){}!,.:]', Punctuation),
668
- (u'(«)([^»]+)(»)',
667
+ (r'(«)([^»]+)(»)',
669
668
  bygroups(Text, Name.Builtin, Text)),
670
669
  (r'\b((?:considering|ignoring)\s*)'
671
670
  r'(application responses|case|diacriticals|hyphens|'
672
671
  r'numeric strings|punctuation|white space)',
673
672
  bygroups(Keyword, Name.Builtin)),
674
- (u'(-|\\*|\\+|&|≠|>=?|<=?|=|≥|≤|/|÷|\\^)', Operator),
673
+ (r'(-|\*|\+|&|≠|>=?|<=?|=|≥|≤|/|÷|\^)', Operator),
675
674
  (r"\b(%s)\b" % '|'.join(Operators), Operator.Word),
676
675
  (r'^(\s*(?:on|end)\s+)'
677
676
  r'(%s)' % '|'.join(StudioEvents[::-1]),
@@ -696,8 +695,8 @@ class AppleScriptLexer(RegexLexer):
696
695
  (r'[-+]?\d+', Number.Integer),
697
696
  ],
698
697
  'comment': [
699
- ('\(\*', Comment.Multiline, '#push'),
700
- ('\*\)', Comment.Multiline, '#pop'),
698
+ (r'\(\*', Comment.Multiline, '#push'),
699
+ (r'\*\)', Comment.Multiline, '#pop'),
701
700
  ('[^*(]+', Comment.Multiline),
702
701
  ('[*(]', Comment.Multiline),
703
702
  ],
@@ -945,6 +944,15 @@ class HybrisLexer(RegexLexer):
945
944
  ],
946
945
  }
947
946
 
947
+ def analyse_text(text):
948
+ """public method and private method don't seem to be quite common
949
+ elsewhere."""
950
+ result = 0
951
+ if re.search(r'\b(?:public|private)\s+method\b', text):
952
+ result += 0.01
953
+ return result
954
+
955
+
948
956
 
949
957
  class EasytrieveLexer(RegexLexer):
950
958
  """
@@ -977,7 +985,7 @@ class EasytrieveLexer(RegexLexer):
977
985
  _DELIMITER_PATTERN = '[' + _DELIMITERS + ']'
978
986
  _DELIMITER_PATTERN_CAPTURE = '(' + _DELIMITER_PATTERN + ')'
979
987
  _NON_DELIMITER_OR_COMMENT_PATTERN = '[^' + _DELIMITERS_OR_COMENT + ']'
980
- _OPERATORS_PATTERN = u'[.+\\-/=\\[\\](){}<>;,&%¬]'
988
+ _OPERATORS_PATTERN = '[.+\\-/=\\[\\](){}<>;,&%¬]'
981
989
  _KEYWORDS = [
982
990
  'AFTER-BREAK', 'AFTER-LINE', 'AFTER-SCREEN', 'AIM', 'AND', 'ATTR',
983
991
  'BEFORE', 'BEFORE-BREAK', 'BEFORE-LINE', 'BEFORE-SCREEN', 'BUSHU',
@@ -1220,3 +1228,57 @@ class JclLexer(RegexLexer):
1220
1228
  result = 1.0
1221
1229
  assert 0.0 <= result <= 1.0
1222
1230
  return result
1231
+
1232
+
1233
+ class MiniScriptLexer(RegexLexer):
1234
+ """
1235
+ For `MiniScript <https://miniscript.org>`_ source code.
1236
+
1237
+ .. versionadded:: 2.6
1238
+ """
1239
+
1240
+ name = "MiniScript"
1241
+ aliases = ["ms", "miniscript"]
1242
+ filenames = ["*.ms"]
1243
+ mimetypes = ['text/x-minicript', 'application/x-miniscript']
1244
+
1245
+ tokens = {
1246
+ 'root': [
1247
+ (r'#!(.*?)$', Comment.Preproc),
1248
+ default('base'),
1249
+ ],
1250
+ 'base': [
1251
+ ('//.*$', Comment.Single),
1252
+ (r'(?i)(\d*\.\d+|\d+\.\d*)(e[+-]?\d+)?', Number),
1253
+ (r'(?i)\d+e[+-]?\d+', Number),
1254
+ (r'\d+', Number),
1255
+ (r'\n', Text),
1256
+ (r'[^\S\n]+', Text),
1257
+ (r'"', String, 'string_double'),
1258
+ (r'(==|!=|<=|>=|[=+\-*/%^<>.:])', Operator),
1259
+ (r'[;,\[\]{}()]', Punctuation),
1260
+ (words((
1261
+ 'break', 'continue', 'else', 'end', 'for', 'function', 'if',
1262
+ 'in', 'isa', 'then', 'repeat', 'return', 'while'), suffix=r'\b'),
1263
+ Keyword),
1264
+ (words((
1265
+ 'abs', 'acos', 'asin', 'atan', 'ceil', 'char', 'cos', 'floor',
1266
+ 'log', 'round', 'rnd', 'pi', 'sign', 'sin', 'sqrt', 'str', 'tan',
1267
+ 'hasIndex', 'indexOf', 'len', 'val', 'code', 'remove', 'lower',
1268
+ 'upper', 'replace', 'split', 'indexes', 'values', 'join', 'sum',
1269
+ 'sort', 'shuffle', 'push', 'pop', 'pull', 'range',
1270
+ 'print', 'input', 'time', 'wait', 'locals', 'globals', 'outer',
1271
+ 'yield'), suffix=r'\b'),
1272
+ Name.Builtin),
1273
+ (r'(true|false|null)\b', Keyword.Constant),
1274
+ (r'(and|or|not|new)\b', Operator.Word),
1275
+ (r'(self|super|__isa)\b', Name.Builtin.Pseudo),
1276
+ (r'[a-zA-Z_]\w*', Name.Variable)
1277
+ ],
1278
+ 'string_double': [
1279
+ (r'[^"\n]+', String),
1280
+ (r'""', String),
1281
+ (r'"', String, '#pop'),
1282
+ (r'\n', Text, '#pop'), # Stray linefeed also terminates strings.
1283
+ ]
1284
+ }
@@ -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-2017 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,8 +19,9 @@ 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
 
@@ -38,7 +39,7 @@ class BashLexer(RegexLexer):
38
39
  '*.exheres-0', '*.exlib', '*.zsh',
39
40
  '.bashrc', 'bashrc', '.bash_*', 'bash_*', 'zshrc', '.zshrc',
40
41
  'PKGBUILD']
41
- mimetypes = ['application/x-sh', 'application/x-shellscript']
42
+ mimetypes = ['application/x-sh', 'application/x-shellscript', 'text/x-shellscript']
42
43
 
43
44
  tokens = {
44
45
  'root': [
@@ -76,7 +77,7 @@ class BashLexer(RegexLexer):
76
77
  (r'&&|\|\|', Operator),
77
78
  ],
78
79
  'data': [
79
- (r'(?s)\$?"(\\\\|\\[0-7]+|\\.|[^"\\$])*"', String.Double),
80
+ (r'(?s)\$?"(\\.|[^"\\$])*"', String.Double),
80
81
  (r'"', String.Double, 'string'),
81
82
  (r"(?s)\$'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single),
82
83
  (r"(?s)'.*?'", String.Single),
@@ -126,12 +127,38 @@ class BashLexer(RegexLexer):
126
127
  return 0.2
127
128
 
128
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
+
129
153
  class ShellSessionBaseLexer(Lexer):
130
154
  """
131
- Base lexer for simplistic shell sessions.
155
+ Base lexer for shell sessions.
132
156
 
133
157
  .. versionadded:: 2.1
134
158
  """
159
+
160
+ _venv = re.compile(r'^(\([^)]*\))(\s*)')
161
+
135
162
  def get_tokens_unprocessed(self, text):
136
163
  innerlexer = self._innerLexerCls(**self.options)
137
164
 
@@ -142,11 +169,24 @@ class ShellSessionBaseLexer(Lexer):
142
169
 
143
170
  for match in line_re.finditer(text):
144
171
  line = match.group()
145
- m = re.match(self._ps1rgx, line)
146
172
  if backslash_continuation:
147
173
  curcode += line
148
174
  backslash_continuation = curcode.endswith('\\\n')
149
- 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:
150
190
  # To support output lexers (say diff output), the output
151
191
  # needs to be broken by prompts whenever the output lexer
152
192
  # changes.
@@ -178,7 +218,8 @@ class ShellSessionBaseLexer(Lexer):
178
218
 
179
219
  class BashSessionLexer(ShellSessionBaseLexer):
180
220
  """
181
- Lexer for simplistic shell sessions.
221
+ Lexer for Bash shell sessions, i.e. command lines, including a
222
+ prompt, interspersed with output.
182
223
 
183
224
  .. versionadded:: 1.1
184
225
  """
@@ -189,9 +230,9 @@ class BashSessionLexer(ShellSessionBaseLexer):
189
230
  mimetypes = ['application/x-shell-session', 'application/x-sh-session']
190
231
 
191
232
  _innerLexerCls = BashLexer
192
- _ps1rgx = \
233
+ _ps1rgx = re.compile(
193
234
  r'^((?:(?:\[.*?\])|(?:\(\S+\))?(?:| |sh\S*?|\w+\S+[@:]\S+(?:\s+\S+)' \
194
- r'?|\[\S+[@:][^\n]+\].+))\s*[$#%])(.*\n?)'
235
+ r'?|\[\S+[@:][^\n]+\].+))\s*[$#%])(.*\n?)')
195
236
  _ps2 = '>'
196
237
 
197
238
 
@@ -211,14 +252,14 @@ class BatchLexer(RegexLexer):
211
252
  _nl = r'\n\x1a'
212
253
  _punct = r'&<>|'
213
254
  _ws = r'\t\v\f\r ,;=\xa0'
255
+ _nlws = r'\s\x1a\xa0,;='
214
256
  _space = r'(?:(?:(?:\^[%s])?[%s])+)' % (_nl, _ws)
215
257
  _keyword_terminator = (r'(?=(?:\^[%s]?)?[%s+./:[\\\]]|[%s%s(])' %
216
258
  (_nl, _ws, _nl, _punct))
217
259
  _token_terminator = r'(?=\^?[%s]|[%s%s])' % (_ws, _punct, _nl)
218
260
  _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))
261
+ _label = r'(?:(?:[^%s%s+:^]|\^[%s]?[\w\W])*)' % (_nlws, _punct, _nl)
262
+ _label_compound = r'(?:(?:[^%s%s+:^)]|\^[%s]?[^)])*)' % (_nlws, _punct, _nl)
222
263
  _number = r'(?:-?(?:0[0-7]+|0x[\da-f]+|\d+)%s)' % _token_terminator
223
264
  _opword = r'(?:equ|geq|gtr|leq|lss|neq)'
224
265
  _string = r'(?:"[^%s"]*(?:"|(?=[%s])))' % (_nl, _nl)
@@ -228,9 +269,8 @@ class BatchLexer(RegexLexer):
228
269
  r'(?:\^?![^!:%s]+(?::(?:~(?:-?\d+)?(?:,(?:-?\d+)?)?|(?:'
229
270
  r'[^!%s^]|\^[^!%s])[^=%s]*=(?:[^!%s^]|\^[^!%s])*)?)?\^?!))' %
230
271
  (_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)
272
+ _core_token = r'(?:(?:(?:\^[%s]?)?[^"%s%s])+)' % (_nl, _nlws, _punct)
273
+ _core_token_compound = r'(?:(?:(?:\^[%s]?)?[^"%s%s)])+)' % (_nl, _nlws, _punct)
234
274
  _token = r'(?:[%s]+|%s)' % (_punct, _core_token)
235
275
  _token_compound = r'(?:[%s]+|%s)' % (_punct, _core_token_compound)
236
276
  _stoken = (r'(?:[%s]+|(?:%s|%s|%s)+)' %
@@ -341,7 +381,8 @@ class BatchLexer(RegexLexer):
341
381
  return state
342
382
 
343
383
  def _make_arithmetic_state(compound, _nl=_nl, _punct=_punct,
344
- _string=_string, _variable=_variable, _ws=_ws):
384
+ _string=_string, _variable=_variable,
385
+ _ws=_ws, _nlws=_nlws):
345
386
  op = r'=+\-*/!~'
346
387
  state = []
347
388
  if compound:
@@ -352,8 +393,8 @@ class BatchLexer(RegexLexer):
352
393
  (r'\d+', Number.Integer),
353
394
  (r'[(),]+', Punctuation),
354
395
  (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,
396
+ (r'(%s|%s|(\^[%s]?)?[^()%s%%\^"%s%s]|\^[%s]?%s)+' %
397
+ (_string, _variable, _nl, op, _nlws, _punct, _nlws,
357
398
  r'[^)]' if compound else r'[\w\W]'),
358
399
  using(this, state='variable')),
359
400
  (r'(?=[\x00|&])', Text, '#pop'),
@@ -387,15 +428,15 @@ class BatchLexer(RegexLexer):
387
428
  _core_token_compound=_core_token_compound,
388
429
  _nl=_nl, _punct=_punct, _stoken=_stoken,
389
430
  _string=_string, _space=_space,
390
- _variable=_variable, _ws=_ws):
431
+ _variable=_variable, _nlws=_nlws):
391
432
  stoken_compound = (r'(?:[%s]+|(?:%s|%s|%s)+)' %
392
433
  (_punct, _string, _variable, _core_token_compound))
393
434
  return [
394
- (r'((?:(?<=[%s%s])\d)?)(>>?&|<&)([%s%s]*)(\d)' %
395
- (_nl, _ws, _nl, _ws),
435
+ (r'((?:(?<=[%s])\d)?)(>>?&|<&)([%s]*)(\d)' %
436
+ (_nlws, _nlws),
396
437
  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),
438
+ (r'((?:(?<=[%s])(?<!\^[%s])\d)?)(>>?|<)(%s?%s)' %
439
+ (_nlws, _nl, _space, stoken_compound if compound else _stoken),
399
440
  bygroups(Number.Integer, Punctuation, using(this, state='text')))
400
441
  ]
401
442
 
@@ -434,7 +475,7 @@ class BatchLexer(RegexLexer):
434
475
  'text': [
435
476
  (r'"', String.Double, 'string'),
436
477
  include('variable-or-escape'),
437
- (r'[^"%%^%s%s%s\d)]+|.' % (_nl, _punct, _ws), Text)
478
+ (r'[^"%%^%s%s\d)]+|.' % (_nlws, _punct), Text)
438
479
  ],
439
480
  'variable': [
440
481
  (r'"', String.Double, 'string'),
@@ -455,13 +496,13 @@ class BatchLexer(RegexLexer):
455
496
  include('follow')
456
497
  ],
457
498
  'for/f': [
458
- (r'(")((?:%s|[^"])*?")([%s%s]*)(\))' % (_variable, _nl, _ws),
499
+ (r'(")((?:%s|[^"])*?")([%s]*)(\))' % (_variable, _nlws),
459
500
  bygroups(String.Double, using(this, state='string'), Text,
460
501
  Punctuation)),
461
502
  (r'"', String.Double, ('#pop', 'for2', 'string')),
462
- (r"('(?:%%%%|%s|[\w\W])*?')([%s%s]*)(\))" % (_variable, _nl, _ws),
503
+ (r"('(?:%%%%|%s|[\w\W])*?')([%s]*)(\))" % (_variable, _nlws),
463
504
  bygroups(using(this, state='sqstring'), Text, Punctuation)),
464
- (r'(`(?:%%%%|%s|[\w\W])*?`)([%s%s]*)(\))' % (_variable, _nl, _ws),
505
+ (r'(`(?:%%%%|%s|[\w\W])*?`)([%s]*)(\))' % (_variable, _nlws),
465
506
  bygroups(using(this, state='bqstring'), Text, Punctuation)),
466
507
  include('for2')
467
508
  ],
@@ -507,7 +548,8 @@ class BatchLexer(RegexLexer):
507
548
 
508
549
  class MSDOSSessionLexer(ShellSessionBaseLexer):
509
550
  """
510
- Lexer for simplistic MSDOS sessions.
551
+ Lexer for MS DOS shell sessions, i.e. command lines, including a
552
+ prompt, interspersed with output.
511
553
 
512
554
  .. versionadded:: 2.1
513
555
  """
@@ -518,7 +560,7 @@ class MSDOSSessionLexer(ShellSessionBaseLexer):
518
560
  mimetypes = []
519
561
 
520
562
  _innerLexerCls = BatchLexer
521
- _ps1rgx = r'^([^>]+>)(.*\n?)'
563
+ _ps1rgx = re.compile(r'^([^>]*>)(.*\n?)')
522
564
  _ps2 = 'More? '
523
565
 
524
566
 
@@ -592,7 +634,8 @@ class TcshLexer(RegexLexer):
592
634
 
593
635
  class TcshSessionLexer(ShellSessionBaseLexer):
594
636
  """
595
- Lexer for Tcsh sessions.
637
+ Lexer for Tcsh sessions, i.e. command lines, including a
638
+ prompt, interspersed with output.
596
639
 
597
640
  .. versionadded:: 2.1
598
641
  """
@@ -603,7 +646,7 @@ class TcshSessionLexer(ShellSessionBaseLexer):
603
646
  mimetypes = []
604
647
 
605
648
  _innerLexerCls = TcshLexer
606
- _ps1rgx = r'^([^>]+>)(.*\n?)'
649
+ _ps1rgx = re.compile(r'^([^>]+>)(.*\n?)')
607
650
  _ps2 = '? '
608
651
 
609
652
 
@@ -638,13 +681,29 @@ class PowerShellLexer(RegexLexer):
638
681
  'wildcard').split()
639
682
 
640
683
  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()
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()
648
707
 
649
708
  commenthelp = (
650
709
  'component description example externalhelp forwardhelpcategory '
@@ -672,6 +731,7 @@ class PowerShellLexer(RegexLexer):
672
731
  (r'(%s)\b' % '|'.join(keywords), Keyword),
673
732
  (r'-(%s)\b' % '|'.join(operators), Operator),
674
733
  (r'(%s)-[a-z_]\w*\b' % '|'.join(verbs), Name.Builtin),
734
+ (r'(%s)\s' % '|'.join(aliases_), Name.Builtin),
675
735
  (r'\[[a-z_\[][\w. `,\[\]]*\]', Name.Constant), # .net [type]s
676
736
  (r'-[a-z_]\w*', Name),
677
737
  (r'\w+', Name),
@@ -706,7 +766,8 @@ class PowerShellLexer(RegexLexer):
706
766
 
707
767
  class PowerShellSessionLexer(ShellSessionBaseLexer):
708
768
  """
709
- Lexer for simplistic Windows PowerShell sessions.
769
+ Lexer for PowerShell sessions, i.e. command lines, including a
770
+ prompt, interspersed with output.
710
771
 
711
772
  .. versionadded:: 2.1
712
773
  """
@@ -717,7 +778,7 @@ class PowerShellSessionLexer(ShellSessionBaseLexer):
717
778
  mimetypes = []
718
779
 
719
780
  _innerLexerCls = PowerShellLexer
720
- _ps1rgx = r'^(PS [^>]+> )(.*\n?)'
781
+ _ps1rgx = re.compile(r'^((?:\[[^]]+\]: )?PS[^>]*> ?)(.*\n?)')
721
782
  _ps2 = '>> '
722
783
 
723
784
 
@@ -792,3 +853,62 @@ class FishShellLexer(RegexLexer):
792
853
  include('root'),
793
854
  ],
794
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