pygments.rb 1.2.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ci.yml +40 -0
  4. data/.github/workflows/release.yml +24 -0
  5. data/.gitignore +5 -5
  6. data/.rubocop.yml +18 -0
  7. data/CHANGELOG.adoc +132 -0
  8. data/Gemfile +3 -1
  9. data/LICENSE +1 -1
  10. data/README.adoc +160 -0
  11. data/Rakefile +12 -21
  12. data/bench.rb +14 -8
  13. data/{cache-lexers.rb → cache_lexers.rb} +3 -2
  14. data/lexers +0 -0
  15. data/lib/pygments.rb +10 -11
  16. data/lib/pygments/lexer.rb +6 -6
  17. data/lib/pygments/mentos.py +23 -110
  18. data/lib/pygments/popen.rb +196 -275
  19. data/lib/pygments/version.rb +2 -2
  20. data/pygments.rb.gemspec +12 -10
  21. data/test/test_pygments.rb +50 -110
  22. data/vendor/pygments-main/{AUTHORS → Pygments-2.8.0.dist-info/AUTHORS} +26 -3
  23. data/vendor/pygments-main/Pygments-2.8.0.dist-info/INSTALLER +1 -0
  24. data/vendor/pygments-main/{LICENSE → Pygments-2.8.0.dist-info/LICENSE} +1 -1
  25. data/vendor/pygments-main/Pygments-2.8.0.dist-info/METADATA +48 -0
  26. data/vendor/pygments-main/Pygments-2.8.0.dist-info/RECORD +494 -0
  27. data/vendor/pygments-main/Pygments-2.8.0.dist-info/REQUESTED +0 -0
  28. data/vendor/pygments-main/Pygments-2.8.0.dist-info/WHEEL +5 -0
  29. data/vendor/pygments-main/Pygments-2.8.0.dist-info/entry_points.txt +3 -0
  30. data/vendor/pygments-main/Pygments-2.8.0.dist-info/top_level.txt +1 -0
  31. data/vendor/pygments-main/bin/pygmentize +8 -0
  32. data/vendor/pygments-main/pygments/__init__.py +6 -12
  33. data/vendor/pygments-main/pygments/__main__.py +17 -0
  34. data/vendor/pygments-main/pygments/cmdline.py +213 -184
  35. data/vendor/pygments-main/pygments/console.py +6 -10
  36. data/vendor/pygments-main/pygments/filter.py +4 -7
  37. data/vendor/pygments-main/pygments/filters/__init__.py +609 -22
  38. data/vendor/pygments-main/pygments/formatter.py +4 -5
  39. data/vendor/pygments-main/pygments/formatters/__init__.py +10 -10
  40. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -4
  41. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
  42. data/vendor/pygments-main/pygments/formatters/html.py +242 -139
  43. data/vendor/pygments-main/pygments/formatters/img.py +91 -50
  44. data/vendor/pygments-main/pygments/formatters/irc.py +39 -40
  45. data/vendor/pygments-main/pygments/formatters/latex.py +62 -33
  46. data/vendor/pygments-main/pygments/formatters/other.py +18 -17
  47. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -30
  48. data/vendor/pygments-main/pygments/formatters/svg.py +40 -5
  49. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -32
  50. data/vendor/pygments-main/pygments/formatters/terminal256.py +45 -14
  51. data/vendor/pygments-main/pygments/lexer.py +47 -44
  52. data/vendor/pygments-main/pygments/lexers/__init__.py +29 -17
  53. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +5 -6
  54. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +15 -16
  55. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +21 -18
  56. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1717 -1339
  57. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -2
  58. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +2 -5
  59. data/vendor/pygments-main/pygments/lexers/_mapping.py +79 -31
  60. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +2 -3
  61. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1281 -0
  62. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +439 -386
  63. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +17 -21
  64. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +73 -17
  65. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +2 -3
  66. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -4
  67. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +151 -126
  68. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +96 -58
  69. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -2
  70. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +112 -0
  71. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +279 -0
  72. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -2
  73. data/vendor/pygments-main/pygments/lexers/actionscript.py +14 -10
  74. data/vendor/pygments-main/pygments/lexers/agile.py +1 -2
  75. data/vendor/pygments-main/pygments/lexers/algebra.py +20 -2
  76. data/vendor/pygments-main/pygments/lexers/ambient.py +2 -3
  77. data/vendor/pygments-main/pygments/lexers/amdgpu.py +48 -0
  78. data/vendor/pygments-main/pygments/lexers/ampl.py +3 -4
  79. data/vendor/pygments-main/pygments/lexers/apl.py +15 -16
  80. data/vendor/pygments-main/pygments/lexers/archetype.py +4 -5
  81. data/vendor/pygments-main/pygments/lexers/arrow.py +116 -0
  82. data/vendor/pygments-main/pygments/lexers/asm.py +440 -77
  83. data/vendor/pygments-main/pygments/lexers/automation.py +7 -2
  84. data/vendor/pygments-main/pygments/lexers/bare.py +103 -0
  85. data/vendor/pygments-main/pygments/lexers/basic.py +168 -7
  86. data/vendor/pygments-main/pygments/lexers/bibtex.py +5 -6
  87. data/vendor/pygments-main/pygments/lexers/boa.py +101 -0
  88. data/vendor/pygments-main/pygments/lexers/business.py +19 -5
  89. data/vendor/pygments-main/pygments/lexers/c_cpp.py +138 -48
  90. data/vendor/pygments-main/pygments/lexers/c_like.py +67 -43
  91. data/vendor/pygments-main/pygments/lexers/capnproto.py +7 -8
  92. data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
  93. data/vendor/pygments-main/pygments/lexers/chapel.py +25 -16
  94. data/vendor/pygments-main/pygments/lexers/clean.py +135 -245
  95. data/vendor/pygments-main/pygments/lexers/compiled.py +1 -2
  96. data/vendor/pygments-main/pygments/lexers/configs.py +190 -38
  97. data/vendor/pygments-main/pygments/lexers/console.py +1 -2
  98. data/vendor/pygments-main/pygments/lexers/crystal.py +54 -81
  99. data/vendor/pygments-main/pygments/lexers/csound.py +288 -188
  100. data/vendor/pygments-main/pygments/lexers/css.py +28 -23
  101. data/vendor/pygments-main/pygments/lexers/d.py +12 -8
  102. data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -2
  103. data/vendor/pygments-main/pygments/lexers/data.py +240 -98
  104. data/vendor/pygments-main/pygments/lexers/devicetree.py +108 -0
  105. data/vendor/pygments-main/pygments/lexers/diff.py +4 -5
  106. data/vendor/pygments-main/pygments/lexers/dotnet.py +46 -31
  107. data/vendor/pygments-main/pygments/lexers/dsls.py +146 -65
  108. data/vendor/pygments-main/pygments/lexers/dylan.py +16 -19
  109. data/vendor/pygments-main/pygments/lexers/ecl.py +17 -5
  110. data/vendor/pygments-main/pygments/lexers/eiffel.py +2 -3
  111. data/vendor/pygments-main/pygments/lexers/elm.py +5 -6
  112. data/vendor/pygments-main/pygments/lexers/email.py +150 -0
  113. data/vendor/pygments-main/pygments/lexers/erlang.py +29 -33
  114. data/vendor/pygments-main/pygments/lexers/esoteric.py +46 -20
  115. data/vendor/pygments-main/pygments/lexers/ezhil.py +21 -14
  116. data/vendor/pygments-main/pygments/lexers/factor.py +3 -4
  117. data/vendor/pygments-main/pygments/lexers/fantom.py +1 -2
  118. data/vendor/pygments-main/pygments/lexers/felix.py +1 -2
  119. data/vendor/pygments-main/pygments/lexers/floscript.py +82 -0
  120. data/vendor/pygments-main/pygments/lexers/forth.py +41 -41
  121. data/vendor/pygments-main/pygments/lexers/fortran.py +13 -10
  122. data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -3
  123. data/vendor/pygments-main/pygments/lexers/freefem.py +897 -0
  124. data/vendor/pygments-main/pygments/lexers/functional.py +1 -2
  125. data/vendor/pygments-main/pygments/lexers/futhark.py +110 -0
  126. data/vendor/pygments-main/pygments/lexers/gdscript.py +345 -0
  127. data/vendor/pygments-main/pygments/lexers/go.py +2 -3
  128. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +62 -6
  129. data/vendor/pygments-main/pygments/lexers/graph.py +14 -10
  130. data/vendor/pygments-main/pygments/lexers/graphics.py +274 -28
  131. data/vendor/pygments-main/pygments/lexers/graphviz.py +57 -0
  132. data/vendor/pygments-main/pygments/lexers/haskell.py +48 -22
  133. data/vendor/pygments-main/pygments/lexers/haxe.py +8 -9
  134. data/vendor/pygments-main/pygments/lexers/hdl.py +176 -90
  135. data/vendor/pygments-main/pygments/lexers/hexdump.py +1 -2
  136. data/vendor/pygments-main/pygments/lexers/html.py +37 -26
  137. data/vendor/pygments-main/pygments/lexers/idl.py +19 -9
  138. data/vendor/pygments-main/pygments/lexers/igor.py +244 -113
  139. data/vendor/pygments-main/pygments/lexers/inferno.py +2 -3
  140. data/vendor/pygments-main/pygments/lexers/installers.py +1 -2
  141. data/vendor/pygments-main/pygments/lexers/int_fiction.py +40 -16
  142. data/vendor/pygments-main/pygments/lexers/iolang.py +3 -4
  143. data/vendor/pygments-main/pygments/lexers/j.py +4 -5
  144. data/vendor/pygments-main/pygments/lexers/javascript.py +115 -104
  145. data/vendor/pygments-main/pygments/lexers/julia.py +44 -47
  146. data/vendor/pygments-main/pygments/lexers/jvm.py +368 -202
  147. data/vendor/pygments-main/pygments/lexers/lisp.py +887 -810
  148. data/vendor/pygments-main/pygments/lexers/make.py +12 -9
  149. data/vendor/pygments-main/pygments/lexers/markup.py +212 -45
  150. data/vendor/pygments-main/pygments/lexers/math.py +1 -2
  151. data/vendor/pygments-main/pygments/lexers/matlab.py +2705 -88
  152. data/vendor/pygments-main/pygments/lexers/mime.py +225 -0
  153. data/vendor/pygments-main/pygments/lexers/ml.py +203 -15
  154. data/vendor/pygments-main/pygments/lexers/modeling.py +26 -19
  155. data/vendor/pygments-main/pygments/lexers/modula2.py +27 -9
  156. data/vendor/pygments-main/pygments/lexers/monte.py +1 -2
  157. data/vendor/pygments-main/pygments/lexers/mosel.py +447 -0
  158. data/vendor/pygments-main/pygments/lexers/ncl.py +1 -2
  159. data/vendor/pygments-main/pygments/lexers/nimrod.py +4 -5
  160. data/vendor/pygments-main/pygments/lexers/nit.py +1 -2
  161. data/vendor/pygments-main/pygments/lexers/nix.py +1 -2
  162. data/vendor/pygments-main/pygments/lexers/oberon.py +17 -2
  163. data/vendor/pygments-main/pygments/lexers/objective.py +18 -19
  164. data/vendor/pygments-main/pygments/lexers/ooc.py +1 -2
  165. data/vendor/pygments-main/pygments/lexers/other.py +1 -2
  166. data/vendor/pygments-main/pygments/lexers/parasail.py +1 -2
  167. data/vendor/pygments-main/pygments/lexers/parsers.py +47 -83
  168. data/vendor/pygments-main/pygments/lexers/pascal.py +22 -23
  169. data/vendor/pygments-main/pygments/lexers/pawn.py +31 -28
  170. data/vendor/pygments-main/pygments/lexers/perl.py +260 -149
  171. data/vendor/pygments-main/pygments/lexers/php.py +66 -13
  172. data/vendor/pygments-main/pygments/lexers/pointless.py +70 -0
  173. data/vendor/pygments-main/pygments/lexers/pony.py +93 -0
  174. data/vendor/pygments-main/pygments/lexers/praat.py +38 -31
  175. data/vendor/pygments-main/pygments/lexers/prolog.py +38 -39
  176. data/vendor/pygments-main/pygments/lexers/promql.py +182 -0
  177. data/vendor/pygments-main/pygments/lexers/python.py +450 -231
  178. data/vendor/pygments-main/pygments/lexers/qvt.py +6 -7
  179. data/vendor/pygments-main/pygments/lexers/r.py +13 -276
  180. data/vendor/pygments-main/pygments/lexers/rdf.py +232 -40
  181. data/vendor/pygments-main/pygments/lexers/rebol.py +8 -9
  182. data/vendor/pygments-main/pygments/lexers/resource.py +2 -3
  183. data/vendor/pygments-main/pygments/lexers/ride.py +138 -0
  184. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -2
  185. data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -2
  186. data/vendor/pygments-main/pygments/lexers/robotframework.py +23 -32
  187. data/vendor/pygments-main/pygments/lexers/ruby.py +50 -46
  188. data/vendor/pygments-main/pygments/lexers/rust.py +76 -73
  189. data/vendor/pygments-main/pygments/lexers/sas.py +1 -2
  190. data/vendor/pygments-main/pygments/lexers/scdoc.py +82 -0
  191. data/vendor/pygments-main/pygments/lexers/scripting.py +79 -18
  192. data/vendor/pygments-main/pygments/lexers/sgf.py +60 -0
  193. data/vendor/pygments-main/pygments/lexers/shell.py +164 -49
  194. data/vendor/pygments-main/pygments/lexers/sieve.py +68 -0
  195. data/vendor/pygments-main/pygments/lexers/slash.py +184 -0
  196. data/vendor/pygments-main/pygments/lexers/smalltalk.py +2 -3
  197. data/vendor/pygments-main/pygments/lexers/smv.py +3 -4
  198. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -2
  199. data/vendor/pygments-main/pygments/lexers/solidity.py +91 -0
  200. data/vendor/pygments-main/pygments/lexers/special.py +31 -28
  201. data/vendor/pygments-main/pygments/lexers/sql.py +330 -179
  202. data/vendor/pygments-main/pygments/lexers/stata.py +107 -45
  203. data/vendor/pygments-main/pygments/lexers/supercollider.py +8 -4
  204. data/vendor/pygments-main/pygments/lexers/tcl.py +1 -2
  205. data/vendor/pygments-main/pygments/lexers/templates.py +116 -136
  206. data/vendor/pygments-main/pygments/lexers/teraterm.py +334 -0
  207. data/vendor/pygments-main/pygments/lexers/testing.py +6 -7
  208. data/vendor/pygments-main/pygments/lexers/text.py +2 -2
  209. data/vendor/pygments-main/pygments/lexers/textedit.py +6 -7
  210. data/vendor/pygments-main/pygments/lexers/textfmts.py +146 -14
  211. data/vendor/pygments-main/pygments/lexers/theorem.py +74 -56
  212. data/vendor/pygments-main/pygments/lexers/tnt.py +262 -0
  213. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -2
  214. data/vendor/pygments-main/pygments/lexers/typoscript.py +4 -12
  215. data/vendor/pygments-main/pygments/lexers/unicon.py +411 -0
  216. data/vendor/pygments-main/pygments/lexers/urbi.py +16 -4
  217. data/vendor/pygments-main/pygments/lexers/usd.py +89 -0
  218. data/vendor/pygments-main/pygments/lexers/varnish.py +4 -5
  219. data/vendor/pygments-main/pygments/lexers/verification.py +13 -11
  220. data/vendor/pygments-main/pygments/lexers/web.py +1 -2
  221. data/vendor/pygments-main/pygments/lexers/webidl.py +298 -0
  222. data/vendor/pygments-main/pygments/lexers/webmisc.py +35 -32
  223. data/vendor/pygments-main/pygments/lexers/whiley.py +5 -6
  224. data/vendor/pygments-main/pygments/lexers/x10.py +2 -3
  225. data/vendor/pygments-main/pygments/lexers/xorg.py +5 -5
  226. data/vendor/pygments-main/pygments/lexers/yang.py +103 -0
  227. data/vendor/pygments-main/pygments/lexers/zig.py +123 -0
  228. data/vendor/pygments-main/pygments/modeline.py +1 -2
  229. data/vendor/pygments-main/pygments/plugin.py +4 -3
  230. data/vendor/pygments-main/pygments/regexopt.py +1 -2
  231. data/vendor/pygments-main/pygments/scanner.py +2 -3
  232. data/vendor/pygments-main/pygments/sphinxext.py +2 -5
  233. data/vendor/pygments-main/pygments/style.py +61 -25
  234. data/vendor/pygments-main/pygments/styles/__init__.py +12 -5
  235. data/vendor/pygments-main/pygments/styles/abap.py +1 -2
  236. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  237. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  238. data/vendor/pygments-main/pygments/styles/arduino.py +2 -3
  239. data/vendor/pygments-main/pygments/styles/autumn.py +1 -2
  240. data/vendor/pygments-main/pygments/styles/borland.py +1 -2
  241. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  242. data/vendor/pygments-main/pygments/styles/colorful.py +1 -2
  243. data/vendor/pygments-main/pygments/styles/default.py +1 -2
  244. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  245. data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
  246. data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
  247. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  248. data/vendor/pygments-main/pygments/styles/inkpot.py +66 -0
  249. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -2
  250. data/vendor/pygments-main/pygments/styles/manni.py +1 -2
  251. data/vendor/pygments-main/pygments/styles/material.py +118 -0
  252. data/vendor/pygments-main/pygments/styles/monokai.py +4 -4
  253. data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
  254. data/vendor/pygments-main/pygments/styles/native.py +1 -2
  255. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -2
  256. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -2
  257. data/vendor/pygments-main/pygments/styles/pastie.py +1 -2
  258. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  259. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -2
  260. data/vendor/pygments-main/pygments/styles/rrt.py +1 -2
  261. data/vendor/pygments-main/pygments/styles/sas.py +1 -2
  262. data/vendor/pygments-main/pygments/styles/solarized.py +136 -0
  263. data/vendor/pygments-main/pygments/styles/stata_dark.py +40 -0
  264. data/vendor/pygments-main/pygments/styles/{stata.py → stata_light.py} +14 -16
  265. data/vendor/pygments-main/pygments/styles/tango.py +1 -2
  266. data/vendor/pygments-main/pygments/styles/trac.py +1 -2
  267. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  268. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  269. data/vendor/pygments-main/pygments/styles/xcode.py +1 -2
  270. data/vendor/pygments-main/pygments/styles/zenburn.py +80 -0
  271. data/vendor/pygments-main/pygments/token.py +1 -2
  272. data/vendor/pygments-main/pygments/unistring.py +47 -109
  273. data/vendor/pygments-main/pygments/util.py +16 -96
  274. metadata +76 -137
  275. data/CHANGELOG.md +0 -105
  276. data/README.md +0 -121
  277. data/circle.yml +0 -20
  278. data/test/test_data.c +0 -2581
  279. data/test/test_data.py +0 -514
  280. data/test/test_data_generated +0 -2582
  281. data/vendor/custom_lexers/github.py +0 -565
  282. data/vendor/pygments-main/CHANGES +0 -1186
  283. data/vendor/pygments-main/MANIFEST.in +0 -6
  284. data/vendor/pygments-main/Makefile +0 -65
  285. data/vendor/pygments-main/README.rst +0 -39
  286. data/vendor/pygments-main/REVISION +0 -1
  287. data/vendor/pygments-main/TODO +0 -12
  288. data/vendor/pygments-main/doc/Makefile +0 -153
  289. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  290. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  291. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  292. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  293. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  294. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  295. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  296. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  297. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  298. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  299. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  300. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  301. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  302. data/vendor/pygments-main/doc/conf.py +0 -241
  303. data/vendor/pygments-main/doc/docs/api.rst +0 -354
  304. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  305. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  306. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -166
  307. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  308. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  309. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  310. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  311. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  312. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  313. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  314. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -728
  315. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  316. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  317. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  318. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  319. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  320. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  321. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  322. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  323. data/vendor/pygments-main/doc/download.rst +0 -41
  324. data/vendor/pygments-main/doc/faq.rst +0 -139
  325. data/vendor/pygments-main/doc/index.rst +0 -54
  326. data/vendor/pygments-main/doc/languages.rst +0 -154
  327. data/vendor/pygments-main/doc/make.bat +0 -190
  328. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  329. data/vendor/pygments-main/external/autopygmentize +0 -101
  330. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  331. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  332. data/vendor/pygments-main/external/moin-parser.py +0 -112
  333. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  334. data/vendor/pygments-main/external/rst-directive.py +0 -82
  335. data/vendor/pygments-main/pygmentize +0 -8
  336. data/vendor/pygments-main/pygments/lexers/github.py +0 -565
  337. data/vendor/pygments-main/requirements.txt +0 -5
  338. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  339. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  340. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  341. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  342. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  343. data/vendor/pygments-main/scripts/pylintrc +0 -301
  344. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  345. data/vendor/pygments-main/setup.cfg +0 -10
  346. data/vendor/pygments-main/setup.py +0 -77
  347. data/vendor/pygments-main/tox.ini +0 -7
  348. data/vendor/simplejson/.gitignore +0 -10
  349. data/vendor/simplejson/.travis.yml +0 -5
  350. data/vendor/simplejson/CHANGES.txt +0 -291
  351. data/vendor/simplejson/LICENSE.txt +0 -19
  352. data/vendor/simplejson/MANIFEST.in +0 -5
  353. data/vendor/simplejson/README.rst +0 -19
  354. data/vendor/simplejson/conf.py +0 -179
  355. data/vendor/simplejson/index.rst +0 -628
  356. data/vendor/simplejson/scripts/make_docs.py +0 -18
  357. data/vendor/simplejson/setup.py +0 -104
  358. data/vendor/simplejson/simplejson/__init__.py +0 -510
  359. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  360. data/vendor/simplejson/simplejson/decoder.py +0 -425
  361. data/vendor/simplejson/simplejson/encoder.py +0 -567
  362. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  363. data/vendor/simplejson/simplejson/scanner.py +0 -77
  364. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  365. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  366. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  367. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  368. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  369. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  370. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  371. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  372. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  373. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  374. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  375. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  376. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  377. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  378. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  379. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  380. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  381. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  382. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  383. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  384. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  385. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  386. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  387. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  388. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.dylan
4
3
  ~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for the Dylan language.
7
6
 
8
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -32,27 +31,27 @@ class DylanLexer(RegexLexer):
32
31
 
33
32
  flags = re.IGNORECASE
34
33
 
35
- builtins = set((
34
+ builtins = {
36
35
  'subclass', 'abstract', 'block', 'concrete', 'constant', 'class',
37
36
  'compiler-open', 'compiler-sideways', 'domain', 'dynamic',
38
37
  'each-subclass', 'exception', 'exclude', 'function', 'generic',
39
38
  'handler', 'inherited', 'inline', 'inline-only', 'instance',
40
39
  'interface', 'import', 'keyword', 'library', 'macro', 'method',
41
40
  'module', 'open', 'primary', 'required', 'sealed', 'sideways',
42
- 'singleton', 'slot', 'thread', 'variable', 'virtual'))
41
+ 'singleton', 'slot', 'thread', 'variable', 'virtual'}
43
42
 
44
- keywords = set((
43
+ keywords = {
45
44
  'above', 'afterwards', 'begin', 'below', 'by', 'case', 'cleanup',
46
45
  'create', 'define', 'else', 'elseif', 'end', 'export', 'finally',
47
46
  'for', 'from', 'if', 'in', 'let', 'local', 'otherwise', 'rename',
48
47
  'select', 'signal', 'then', 'to', 'unless', 'until', 'use', 'when',
49
- 'while'))
48
+ 'while'}
50
49
 
51
- operators = set((
50
+ operators = {
52
51
  '~', '+', '-', '*', '|', '^', '=', '==', '~=', '~==', '<', '<=',
53
- '>', '>=', '&', '|'))
52
+ '>', '>=', '&', '|'}
54
53
 
55
- functions = set((
54
+ functions = {
56
55
  'abort', 'abs', 'add', 'add!', 'add-method', 'add-new', 'add-new!',
57
56
  'all-superclasses', 'always', 'any?', 'applicable-method?', 'apply',
58
57
  'aref', 'aref-setter', 'as', 'as-lowercase', 'as-lowercase!',
@@ -86,7 +85,7 @@ class DylanLexer(RegexLexer):
86
85
  'subtype?', 'table-protocol', 'tail', 'tail-setter', 'third',
87
86
  'third-setter', 'truncate', 'truncate/', 'type-error-expected-type',
88
87
  'type-error-value', 'type-for-copy', 'type-union', 'union', 'values',
89
- 'vector', 'zero?'))
88
+ 'vector', 'zero?'}
90
89
 
91
90
  valid_name = '\\\\?[\\w!&*<>|^$%@\\-+~?/=]+'
92
91
 
@@ -179,10 +178,10 @@ class DylanLexer(RegexLexer):
179
178
  (valid_name + ':', Keyword),
180
179
 
181
180
  # class names
182
- (r'<' + valid_name + '>', Name.Class),
181
+ ('<' + valid_name + '>', Name.Class),
183
182
 
184
183
  # define variable forms.
185
- (r'\*' + valid_name + '\*', Name.Variable.Global),
184
+ (r'\*' + valid_name + r'\*', Name.Variable.Global),
186
185
 
187
186
  # define constant forms.
188
187
  (r'\$' + valid_name, Name.Constant),
@@ -260,7 +259,7 @@ class DylanConsoleLexer(Lexer):
260
259
  mimetypes = ['text/x-dylan-console']
261
260
 
262
261
  _line_re = re.compile('.*?\n')
263
- _prompt_re = re.compile('\?| ')
262
+ _prompt_re = re.compile(r'\?| ')
264
263
 
265
264
  def get_tokens_unprocessed(self, text):
266
265
  dylexer = DylanLexer(**self.options)
@@ -277,13 +276,11 @@ class DylanConsoleLexer(Lexer):
277
276
  curcode += line[end:]
278
277
  else:
279
278
  if curcode:
280
- for item in do_insertions(insertions,
281
- dylexer.get_tokens_unprocessed(curcode)):
282
- yield item
279
+ yield from do_insertions(insertions,
280
+ dylexer.get_tokens_unprocessed(curcode))
283
281
  curcode = ''
284
282
  insertions = []
285
283
  yield match.start(), Generic.Output, line
286
284
  if curcode:
287
- for item in do_insertions(insertions,
288
- dylexer.get_tokens_unprocessed(curcode)):
289
- yield item
285
+ yield from do_insertions(insertions,
286
+ dylexer.get_tokens_unprocessed(curcode))
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.ecl
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for the ECL language.
7
6
 
8
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -13,7 +12,7 @@ import re
13
12
 
14
13
  from pygments.lexer import RegexLexer, include, bygroups, words
15
14
  from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
16
- Number, Punctuation, Error
15
+ Number, Punctuation
17
16
 
18
17
  __all__ = ['ECLLexer']
19
18
 
@@ -21,7 +20,7 @@ __all__ = ['ECLLexer']
21
20
  class ECLLexer(RegexLexer):
22
21
  """
23
22
  Lexer for the declarative big-data `ECL
24
- <http://hpccsystems.com/community/docs/ecl-language-reference/html>`_
23
+ <https://hpccsystems.com/training/documentation/ecl-language-reference/html>`_
25
24
  language.
26
25
 
27
26
  .. versionadded:: 1.5
@@ -56,7 +55,6 @@ class ECLLexer(RegexLexer):
56
55
  (r'0x[0-9a-f]+[lu]*', Number.Hex),
57
56
  (r'0[0-7]+[lu]*', Number.Oct),
58
57
  (r'\d+[lu]*', Number.Integer),
59
- (r'\*/', Error),
60
58
  (r'[~!%^&*+=|?:<>/-]+', Operator),
61
59
  (r'[{}()\[\],.;]', Punctuation),
62
60
  (r'[a-z_]\w*', Name),
@@ -123,3 +121,17 @@ class ECLLexer(RegexLexer):
123
121
  (r'[^"\']+', String),
124
122
  ],
125
123
  }
124
+
125
+ def analyse_text(text):
126
+ """This is very difficult to guess relative to other business languages.
127
+ -> in conjuction with BEGIN/END seems relatively rare though."""
128
+ result = 0
129
+
130
+ if '->' in text:
131
+ result += 0.01
132
+ if 'BEGIN' in text:
133
+ result += 0.01
134
+ if 'END' in text:
135
+ result += 0.01
136
+
137
+ return result
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.eiffel
4
3
  ~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for the Eiffel language.
7
6
 
8
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -45,7 +44,7 @@ class EiffelLexer(RegexLexer):
45
44
  'require', 'rescue', 'retry', 'select', 'separate', 'then',
46
45
  'undefine', 'until', 'variant', 'when'), prefix=r'(?i)\b', suffix=r'\b'),
47
46
  Keyword.Reserved),
48
- (r'"\[(([^\]%]|\n)|%(.|\n)|\][^"])*?\]"', String),
47
+ (r'"\[([^\]%]|%(.|\n)|\][^"])*?\]"', String),
49
48
  (r'"([^"%\n]|%.)*?"', String),
50
49
  include('numbers'),
51
50
  (r"'([^'%]|%'|%%)'", String.Char),
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.elm
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for the Elm programming language.
7
6
 
8
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -27,7 +26,7 @@ class ElmLexer(RegexLexer):
27
26
  filenames = ['*.elm']
28
27
  mimetypes = ['text/x-elm']
29
28
 
30
- validName = r'[a-z_][a-zA-Z_\']*'
29
+ validName = r'[a-z_][a-zA-Z0-9_\']*'
31
30
 
32
31
  specialName = r'^main '
33
32
 
@@ -40,7 +39,7 @@ class ElmLexer(RegexLexer):
40
39
  reservedWords = words((
41
40
  'alias', 'as', 'case', 'else', 'if', 'import', 'in',
42
41
  'let', 'module', 'of', 'port', 'then', 'type', 'where',
43
- ), suffix=r'\b')
42
+ ), suffix=r'\b')
44
43
 
45
44
  tokens = {
46
45
  'root': [
@@ -68,7 +67,7 @@ class ElmLexer(RegexLexer):
68
67
  (reservedWords, Keyword.Reserved),
69
68
 
70
69
  # Types
71
- (r'[A-Z]\w*', Keyword.Type),
70
+ (r'[A-Z][a-zA-Z0-9_]*', Keyword.Type),
72
71
 
73
72
  # Main
74
73
  (specialName, Keyword.Reserved),
@@ -77,7 +76,7 @@ class ElmLexer(RegexLexer):
77
76
  (words((builtinOps), prefix=r'\(', suffix=r'\)'), Name.Function),
78
77
 
79
78
  # Infix Operators
80
- (words((builtinOps)), Name.Function),
79
+ (words(builtinOps), Name.Function),
81
80
 
82
81
  # Numbers
83
82
  include('numbers'),
@@ -0,0 +1,150 @@
1
+ """
2
+ pygments.lexers.email
3
+ ~~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexer for the raw E-mail.
6
+
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+
11
+ from pygments.lexer import RegexLexer, DelegatingLexer, bygroups
12
+ from pygments.lexers.mime import MIMELexer
13
+ from pygments.token import Text, Keyword, Name, String, Number, Comment
14
+ from pygments.util import get_bool_opt
15
+
16
+ __all__ = ["EmailLexer"]
17
+
18
+
19
+ class EmailHeaderLexer(RegexLexer):
20
+ """
21
+ Sub-lexer for raw E-mail. This lexer only process header part of e-mail.
22
+
23
+ .. versionadded:: 2.5
24
+ """
25
+
26
+ def __init__(self, **options):
27
+ super().__init__(**options)
28
+ self.highlight_x = get_bool_opt(options, "highlight-X-header", False)
29
+
30
+ def get_x_header_tokens(self, match):
31
+ if self.highlight_x:
32
+ # field
33
+ yield match.start(1), Name.Tag, match.group(1)
34
+
35
+ # content
36
+ default_actions = self.get_tokens_unprocessed(
37
+ match.group(2), stack=("root", "header"))
38
+ yield from default_actions
39
+ else:
40
+ # lowlight
41
+ yield match.start(1), Comment.Special, match.group(1)
42
+ yield match.start(2), Comment.Multiline, match.group(2)
43
+
44
+ tokens = {
45
+ "root": [
46
+ (r"^(?:[A-WYZ]|X400)[\w\-]*:", Name.Tag, "header"),
47
+ (r"^(X-(?:\w[\w\-]*:))([\s\S]*?\n)(?![ \t])", get_x_header_tokens),
48
+ ],
49
+ "header": [
50
+ # folding
51
+ (r"\n[ \t]", Text.Whitespace),
52
+ (r"\n(?![ \t])", Text.Whitespace, "#pop"),
53
+
54
+ # keywords
55
+ (r"\bE?SMTPS?\b", Keyword),
56
+ (r"\b(?:HE|EH)LO\b", Keyword),
57
+
58
+ # mailbox
59
+ (r"[\w\.\-\+=]+@[\w\.\-]+", Name.Label),
60
+ (r"<[\w\.\-\+=]+@[\w\.\-]+>", Name.Label),
61
+
62
+ # domain
63
+ (r"\b(\w[\w\.-]*\.[\w\.-]*\w[a-zA-Z]+)\b", Name.Function),
64
+
65
+ # IPv4
66
+ (
67
+ r"(?<=\b)(?:(?:25[0-5]|2[0-4][0-9]|1?[0-9][0-9]?)\.){3}(?:25[0"
68
+ r"-5]|2[0-4][0-9]|1?[0-9][0-9]?)(?=\b)",
69
+ Number.Integer,
70
+ ),
71
+
72
+ # IPv6
73
+ (r"(?<=\b)([0-9a-fA-F]{1,4}:){1,7}:(?!\b)", Number.Hex),
74
+ (r"(?<=\b):((:[0-9a-fA-F]{1,4}){1,7}|:)(?=\b)", Number.Hex),
75
+ (r"(?<=\b)([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}(?=\b)", Number.Hex),
76
+ (r"(?<=\b)([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}(?=\b)", Number.Hex),
77
+ (r"(?<=\b)[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})(?=\b)", Number.Hex),
78
+ (r"(?<=\b)fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}(?=\b)", Number.Hex),
79
+ (r"(?<=\b)([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}(?=\b)", Number.Hex),
80
+ (r"(?<=\b)([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}(?=\b)",
81
+ Number.Hex),
82
+ (r"(?<=\b)([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}(?=\b)",
83
+ Number.Hex),
84
+ (r"(?<=\b)([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}(?=\b)",
85
+ Number.Hex),
86
+ (
87
+ r"(?<=\b)::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}"
88
+ r"[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}"
89
+ r"[0-9])(?=\b)",
90
+ Number.Hex,
91
+ ),
92
+ (
93
+ r"(?<=\b)([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-"
94
+ r"9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-"
95
+ r"9])(?=\b)",
96
+ Number.Hex,
97
+ ),
98
+
99
+ # Date time
100
+ (
101
+ r"(?:(Sun|Mon|Tue|Wed|Thu|Fri|Sat),\s+)?(0[1-9]|[1-2]?[0-9]|3["
102
+ r"01])\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+("
103
+ r"19[0-9]{2}|[2-9][0-9]{3})\s+(2[0-3]|[0-1][0-9]):([0-5][0-9])"
104
+ r"(?::(60|[0-5][0-9]))?(?:\.\d{1,5})?\s+([-\+][0-9]{2}[0-5][0-"
105
+ r"9]|\(?(?:UTC?|GMT|(?:E|C|M|P)(?:ST|ET|DT)|[A-IK-Z])\)?)",
106
+ Name.Decorator,
107
+ ),
108
+
109
+ # RFC-2047 encoded string
110
+ (
111
+ r"(=\?)([\w-]+)(\?)([BbQq])(\?)([\[\w!\"#$%&\'()*+,-./:;<=>@[\\"
112
+ r"\]^_`{|}~]+)(\?=)",
113
+ bygroups(
114
+ String.Affix,
115
+ Name.Constant,
116
+ String.Affix,
117
+ Keyword.Constant,
118
+ String.Affix,
119
+ Number.Hex,
120
+ String.Affix
121
+ )
122
+ ),
123
+
124
+ # others
125
+ (r'[\s]+', Text.Whitespace),
126
+ (r'[\S]', Text),
127
+ ],
128
+ }
129
+
130
+
131
+ class EmailLexer(DelegatingLexer):
132
+ """
133
+ Lexer for raw E-mail.
134
+
135
+ Additional options accepted:
136
+
137
+ `highlight-X-header`
138
+ Highlight the fields of ``X-`` user-defined email header. (default:
139
+ ``False``).
140
+
141
+ .. versionadded:: 2.5
142
+ """
143
+
144
+ name = "E-mail"
145
+ aliases = ["email", "eml"]
146
+ filenames = ["*.eml"]
147
+ mimetypes = ["message/rfc822"]
148
+
149
+ def __init__(self, **options):
150
+ super().__init__(EmailHeaderLexer, MIMELexer, Comment, **options)
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.erlang
4
3
  ~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Erlang.
7
6
 
8
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -163,7 +162,7 @@ class ErlangShellLexer(Lexer):
163
162
  filenames = ['*.erl-sh']
164
163
  mimetypes = ['text/x-erl-shellsession']
165
164
 
166
- _prompt_re = re.compile(r'\d+>(?=\s|\Z)')
165
+ _prompt_re = re.compile(r'(?:\([\w@_.]+\))?\d+>(?=\s|\Z)')
167
166
 
168
167
  def get_tokens_unprocessed(self, text):
169
168
  erlexer = ErlangLexer(**self.options)
@@ -180,9 +179,8 @@ class ErlangShellLexer(Lexer):
180
179
  curcode += line[end:]
181
180
  else:
182
181
  if curcode:
183
- for item in do_insertions(insertions,
184
- erlexer.get_tokens_unprocessed(curcode)):
185
- yield item
182
+ yield from do_insertions(insertions,
183
+ erlexer.get_tokens_unprocessed(curcode))
186
184
  curcode = ''
187
185
  insertions = []
188
186
  if line.startswith('*'):
@@ -190,9 +188,8 @@ class ErlangShellLexer(Lexer):
190
188
  else:
191
189
  yield match.start(), Generic.Output, line
192
190
  if curcode:
193
- for item in do_insertions(insertions,
194
- erlexer.get_tokens_unprocessed(curcode)):
195
- yield item
191
+ yield from do_insertions(insertions,
192
+ erlexer.get_tokens_unprocessed(curcode))
196
193
 
197
194
 
198
195
  def gen_elixir_string_rules(name, symbol, token):
@@ -207,10 +204,10 @@ def gen_elixir_string_rules(name, symbol, token):
207
204
  return states
208
205
 
209
206
 
210
- def gen_elixir_sigstr_rules(term, token, interpol=True):
207
+ def gen_elixir_sigstr_rules(term, term_class, token, interpol=True):
211
208
  if interpol:
212
209
  return [
213
- (r'[^#%s\\]+' % (term,), token),
210
+ (r'[^#%s\\]+' % (term_class,), token),
214
211
  include('escapes'),
215
212
  (r'\\.', token),
216
213
  (r'%s[a-zA-Z]*' % (term,), token, '#pop'),
@@ -218,7 +215,7 @@ def gen_elixir_sigstr_rules(term, token, interpol=True):
218
215
  ]
219
216
  else:
220
217
  return [
221
- (r'[^%s\\]+' % (term,), token),
218
+ (r'[^%s\\]+' % (term_class,), token),
222
219
  (r'\\.', token),
223
220
  (r'%s[a-zA-Z]*' % (term,), token, '#pop'),
224
221
  ]
@@ -233,7 +230,7 @@ class ElixirLexer(RegexLexer):
233
230
 
234
231
  name = 'Elixir'
235
232
  aliases = ['elixir', 'ex', 'exs']
236
- filenames = ['*.ex', '*.exs']
233
+ filenames = ['*.ex', '*.eex', '*.exs']
237
234
  mimetypes = ['text/x-elixir']
238
235
 
239
236
  KEYWORD = ('fn', 'do', 'end', 'after', 'else', 'rescue', 'catch')
@@ -291,14 +288,14 @@ class ElixirLexer(RegexLexer):
291
288
  def gen_elixir_sigil_rules():
292
289
  # all valid sigil terminators (excluding heredocs)
293
290
  terminators = [
294
- (r'\{', r'\}', 'cb'),
295
- (r'\[', r'\]', 'sb'),
296
- (r'\(', r'\)', 'pa'),
297
- (r'<', r'>', 'ab'),
298
- (r'/', r'/', 'slas'),
299
- (r'\|', r'\|', 'pipe'),
300
- ('"', '"', 'quot'),
301
- ("'", "'", 'apos'),
291
+ (r'\{', r'\}', '}', 'cb'),
292
+ (r'\[', r'\]', r'\]', 'sb'),
293
+ (r'\(', r'\)', ')', 'pa'),
294
+ ('<', '>', '>', 'ab'),
295
+ ('/', '/', '/', 'slas'),
296
+ (r'\|', r'\|', '|', 'pipe'),
297
+ ('"', '"', '"', 'quot'),
298
+ ("'", "'", "'", 'apos'),
302
299
  ]
303
300
 
304
301
  # heredocs have slightly different rules
@@ -328,14 +325,15 @@ class ElixirLexer(RegexLexer):
328
325
  include('heredoc_no_interpol'),
329
326
  ]
330
327
 
331
- for lterm, rterm, name in terminators:
328
+ for lterm, rterm, rterm_class, name in terminators:
332
329
  states['sigils'] += [
333
330
  (r'~[a-z]' + lterm, token, name + '-intp'),
334
331
  (r'~[A-Z]' + lterm, token, name + '-no-intp'),
335
332
  ]
336
- states[name + '-intp'] = gen_elixir_sigstr_rules(rterm, token)
333
+ states[name + '-intp'] = \
334
+ gen_elixir_sigstr_rules(rterm, rterm_class, token)
337
335
  states[name + '-no-intp'] = \
338
- gen_elixir_sigstr_rules(rterm, token, interpol=False)
336
+ gen_elixir_sigstr_rules(rterm, rterm_class, token, interpol=False)
339
337
 
340
338
  return states
341
339
 
@@ -344,7 +342,7 @@ class ElixirLexer(RegexLexer):
344
342
  op1_re = "|".join(re.escape(s) for s in OPERATORS1)
345
343
  ops_re = r'(?:%s|%s|%s)' % (op3_re, op2_re, op1_re)
346
344
  punctuation_re = "|".join(re.escape(s) for s in PUNCTUATION)
347
- alnum = '\w'
345
+ alnum = r'\w'
348
346
  name_re = r'(?:\.\.\.|[a-z_]%s*[!?]?)' % alnum
349
347
  modname_re = r'[A-Z]%(alnum)s*(?:\.[A-Z]%(alnum)s*)*' % {'alnum': alnum}
350
348
  complex_name_re = r'(?:%s|%s|%s)' % (name_re, modname_re, ops_re)
@@ -495,7 +493,7 @@ class ElixirConsoleLexer(Lexer):
495
493
  aliases = ['iex']
496
494
  mimetypes = ['text/x-elixir-shellsession']
497
495
 
498
- _prompt_re = re.compile('(iex|\.{3})(\(\d+\))?> ')
496
+ _prompt_re = re.compile(r'(iex|\.{3})((?:\([\w@_.]+\))?\d+|\(\d+\))?> ')
499
497
 
500
498
  def get_tokens_unprocessed(self, text):
501
499
  exlexer = ElixirLexer(**self.options)
@@ -505,7 +503,7 @@ class ElixirConsoleLexer(Lexer):
505
503
  insertions = []
506
504
  for match in line_re.finditer(text):
507
505
  line = match.group()
508
- if line.startswith(u'** '):
506
+ if line.startswith('** '):
509
507
  in_error = True
510
508
  insertions.append((len(curcode),
511
509
  [(0, Generic.Error, line[:-1])]))
@@ -520,14 +518,12 @@ class ElixirConsoleLexer(Lexer):
520
518
  curcode += line[end:]
521
519
  else:
522
520
  if curcode:
523
- for item in do_insertions(
524
- insertions, exlexer.get_tokens_unprocessed(curcode)):
525
- yield item
521
+ yield from do_insertions(
522
+ insertions, exlexer.get_tokens_unprocessed(curcode))
526
523
  curcode = ''
527
524
  insertions = []
528
525
  token = Generic.Error if in_error else Generic.Output
529
526
  yield match.start(), token, line
530
527
  if curcode:
531
- for item in do_insertions(
532
- insertions, exlexer.get_tokens_unprocessed(curcode)):
533
- yield item
528
+ yield from do_insertions(
529
+ insertions, exlexer.get_tokens_unprocessed(curcode))