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.rebol
4
3
  ~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for the REBOL and related languages.
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
 
@@ -102,12 +101,12 @@ class RebolLexer(RegexLexer):
102
101
  yield match.start(), Generic.Heading, word
103
102
  elif re.match("to-.*", word):
104
103
  yield match.start(), Keyword, word
105
- elif re.match('(\+|-|\*|/|//|\*\*|and|or|xor|=\?|=|==|<>|<|>|<=|>=)$',
104
+ elif re.match(r'(\+|-|\*|/|//|\*\*|and|or|xor|=\?|=|==|<>|<|>|<=|>=)$',
106
105
  word):
107
106
  yield match.start(), Operator, word
108
- elif re.match(".*\?$", word):
107
+ elif re.match(r".*\?$", word):
109
108
  yield match.start(), Keyword, word
110
- elif re.match(".*\!$", word):
109
+ elif re.match(r".*\!$", word):
111
110
  yield match.start(), Keyword.Type, word
112
111
  elif re.match("'.*", word):
113
112
  yield match.start(), Name.Variable.Instance, word # lit-word
@@ -239,7 +238,7 @@ class RebolLexer(RegexLexer):
239
238
  if re.match(r'^\s*REBOL\s*\[', text, re.IGNORECASE):
240
239
  # The code starts with REBOL header
241
240
  return 1.0
242
- elif re.search(r'\s*REBOL\s*[', text, re.IGNORECASE):
241
+ elif re.search(r'\s*REBOL\s*\[', text, re.IGNORECASE):
243
242
  # The code contains REBOL header but also some text before it
244
243
  return 0.5
245
244
 
@@ -297,10 +296,10 @@ class RedLexer(RegexLexer):
297
296
  yield match.start(), Keyword.Namespace, word
298
297
  elif re.match("to-.*", word):
299
298
  yield match.start(), Keyword, word
300
- elif re.match('(\+|-\*\*|-|\*\*|//|/|\*|and|or|xor|=\?|===|==|=|<>|<=|>=|'
301
- '<<<|>>>|<<|>>|<|>%)$', word):
299
+ elif re.match(r'(\+|-\*\*|-|\*\*|//|/|\*|and|or|xor|=\?|===|==|=|<>|<=|>=|'
300
+ r'<<<|>>>|<<|>>|<|>%)$', word):
302
301
  yield match.start(), Operator, word
303
- elif re.match(".*\!$", word):
302
+ elif re.match(r".*\!$", word):
304
303
  yield match.start(), Keyword.Type, word
305
304
  elif re.match("'.*", word):
306
305
  yield match.start(), Name.Variable.Instance, word # lit-word
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.resource
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for resource definition files.
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
 
@@ -26,7 +25,7 @@ class ResourceLexer(RegexLexer):
26
25
  """
27
26
  name = 'ResourceBundle'
28
27
  aliases = ['resource', 'resourcebundle']
29
- filenames = ['*.txt']
28
+ filenames = []
30
29
 
31
30
  _types = (':table', ':array', ':string', ':bin', ':import', ':intvector',
32
31
  ':int', ':alias')
@@ -0,0 +1,138 @@
1
+ """
2
+ pygments.lexers.ride
3
+ ~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexer for the Ride programming language.
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, words, include
12
+ from pygments.token import Comment, Keyword, Name, Number, Punctuation, String, Text
13
+
14
+ __all__ = ['RideLexer']
15
+
16
+
17
+ class RideLexer(RegexLexer):
18
+ """
19
+ For `Ride <https://docs.wavesplatform.com/en/ride/about-ride.html>`_
20
+ source code.
21
+
22
+ .. versionadded:: 2.6
23
+ """
24
+
25
+ name = 'Ride'
26
+ aliases = ['ride']
27
+ filenames = ['*.ride']
28
+ mimetypes = ['text/x-ride']
29
+
30
+ validName = r'[a-zA-Z_][a-zA-Z0-9_\']*'
31
+
32
+ builtinOps = (
33
+ '||', '|', '>=', '>', '==', '!',
34
+ '=', '<=', '<', '::', ':+', ':', '!=', '/',
35
+ '.', '=>', '-', '+', '*', '&&', '%', '++',
36
+ )
37
+
38
+ globalVariablesName = (
39
+ 'NOALG', 'MD5', 'SHA1', 'SHA224', 'SHA256', 'SHA384', 'SHA512',
40
+ 'SHA3224', 'SHA3256', 'SHA3384', 'SHA3512', 'nil', 'this', 'unit',
41
+ 'height', 'lastBlock', 'Buy', 'Sell', 'CEILING', 'FLOOR', 'DOWN',
42
+ 'HALFDOWN', 'HALFEVEN', 'HALFUP', 'UP',
43
+ )
44
+
45
+ typesName = (
46
+ 'Unit', 'Int', 'Boolean', 'ByteVector', 'String', 'Address', 'Alias',
47
+ 'Transfer', 'AssetPair', 'DataEntry', 'Order', 'Transaction',
48
+ 'GenesisTransaction', 'PaymentTransaction', 'ReissueTransaction',
49
+ 'BurnTransaction', 'MassTransferTransaction', 'ExchangeTransaction',
50
+ 'TransferTransaction', 'SetAssetScriptTransaction',
51
+ 'InvokeScriptTransaction', 'IssueTransaction', 'LeaseTransaction',
52
+ 'LeaseCancelTransaction', 'CreateAliasTransaction',
53
+ 'SetScriptTransaction', 'SponsorFeeTransaction', 'DataTransaction',
54
+ 'WriteSet', 'AttachedPayment', 'ScriptTransfer', 'TransferSet',
55
+ 'ScriptResult', 'Invocation', 'Asset', 'BlockInfo', 'Issue', 'Reissue',
56
+ 'Burn', 'NoAlg', 'Md5', 'Sha1', 'Sha224', 'Sha256', 'Sha384', 'Sha512',
57
+ 'Sha3224', 'Sha3256', 'Sha3384', 'Sha3512', 'BinaryEntry',
58
+ 'BooleanEntry', 'IntegerEntry', 'StringEntry', 'List', 'Ceiling',
59
+ 'Down', 'Floor', 'HalfDown', 'HalfEven', 'HalfUp', 'Up',
60
+ )
61
+
62
+ functionsName = (
63
+ 'fraction', 'size', 'toBytes', 'take', 'drop', 'takeRight', 'dropRight',
64
+ 'toString', 'isDefined', 'extract', 'throw', 'getElement', 'value',
65
+ 'cons', 'toUtf8String', 'toInt', 'indexOf', 'lastIndexOf', 'split',
66
+ 'parseInt', 'parseIntValue', 'keccak256', 'blake2b256', 'sha256',
67
+ 'sigVerify', 'toBase58String', 'fromBase58String', 'toBase64String',
68
+ 'fromBase64String', 'transactionById', 'transactionHeightById',
69
+ 'getInteger', 'getBoolean', 'getBinary', 'getString',
70
+ 'addressFromPublicKey', 'addressFromString', 'addressFromRecipient',
71
+ 'assetBalance', 'wavesBalance', 'getIntegerValue', 'getBooleanValue',
72
+ 'getBinaryValue', 'getStringValue', 'addressFromStringValue',
73
+ 'assetInfo', 'rsaVerify', 'checkMerkleProof', 'median',
74
+ 'valueOrElse', 'valueOrErrorMessage', 'contains', 'log', 'pow',
75
+ 'toBase16String', 'fromBase16String', 'blockInfoByHeight',
76
+ 'transferTransactionById',
77
+ )
78
+
79
+ reservedWords = words((
80
+ 'match', 'case', 'else', 'func', 'if',
81
+ 'let', 'then', '@Callable', '@Verifier',
82
+ ), suffix=r'\b')
83
+
84
+ tokens = {
85
+ 'root': [
86
+ # Comments
87
+ (r'#.*', Comment.Single),
88
+ # Whitespace
89
+ (r'\s+', Text),
90
+ # Strings
91
+ (r'"', String, 'doublequote'),
92
+ (r'utf8\'', String, 'utf8quote'),
93
+ (r'base(58|64|16)\'', String, 'singlequote'),
94
+ # Keywords
95
+ (reservedWords, Keyword.Reserved),
96
+ (r'\{-#.*?#-\}', Keyword.Reserved),
97
+ (r'FOLD<\d+>', Keyword.Reserved),
98
+ # Types
99
+ (words(typesName), Keyword.Type),
100
+ # Main
101
+ # (specialName, Keyword.Reserved),
102
+ # Prefix Operators
103
+ (words(builtinOps, prefix=r'\(', suffix=r'\)'), Name.Function),
104
+ # Infix Operators
105
+ (words(builtinOps), Name.Function),
106
+ (words(globalVariablesName), Name.Function),
107
+ (words(functionsName), Name.Function),
108
+ # Numbers
109
+ include('numbers'),
110
+ # Variable Names
111
+ (validName, Name.Variable),
112
+ # Parens
113
+ (r'[,()\[\]{}]', Punctuation),
114
+ ],
115
+
116
+ 'doublequote': [
117
+ (r'\\u[0-9a-fA-F]{4}', String.Escape),
118
+ (r'\\[nrfvb\\"]', String.Escape),
119
+ (r'[^"]', String),
120
+ (r'"', String, '#pop'),
121
+ ],
122
+
123
+ 'utf8quote': [
124
+ (r'\\u[0-9a-fA-F]{4}', String.Escape),
125
+ (r'\\[nrfvb\\\']', String.Escape),
126
+ (r'[^\']', String),
127
+ (r'\'', String, '#pop'),
128
+ ],
129
+
130
+ 'singlequote': [
131
+ (r'[^\']', String),
132
+ (r'\'', String, '#pop'),
133
+ ],
134
+
135
+ 'numbers': [
136
+ (r'_?\d+', Number.Integer),
137
+ ],
138
+ }
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.rnc
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for Relax-NG Compact syntax
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
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.roboconf
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Roboconf DSL.
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
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.robotframework
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for Robot Framework.
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,6 @@ import re
27
26
 
28
27
  from pygments.lexer import Lexer
29
28
  from pygments.token import Token
30
- from pygments.util import text_type
31
29
 
32
30
  __all__ = ['RobotFrameworkLexer']
33
31
 
@@ -64,7 +62,7 @@ class RobotFrameworkLexer(Lexer):
64
62
  """
65
63
  name = 'RobotFramework'
66
64
  aliases = ['robotframework']
67
- filenames = ['*.txt', '*.robot']
65
+ filenames = ['*.robot']
68
66
  mimetypes = ['text/x-robotframework']
69
67
 
70
68
  def __init__(self, **options):
@@ -80,11 +78,11 @@ class RobotFrameworkLexer(Lexer):
80
78
  for value, token in row_tokenizer.tokenize(row):
81
79
  for value, token in var_tokenizer.tokenize(value, token):
82
80
  if value:
83
- yield index, token, text_type(value)
81
+ yield index, token, str(value)
84
82
  index += len(value)
85
83
 
86
84
 
87
- class VariableTokenizer(object):
85
+ class VariableTokenizer:
88
86
 
89
87
  def tokenize(self, string, token):
90
88
  var = VariableSplitter(string, identifiers='$@%&')
@@ -99,19 +97,16 @@ class VariableTokenizer(object):
99
97
  before = string[:var.start]
100
98
  yield before, orig_token
101
99
  yield var.identifier + '{', SYNTAX
102
- for value, token in self.tokenize(var.base, VARIABLE):
103
- yield value, token
100
+ yield from self.tokenize(var.base, VARIABLE)
104
101
  yield '}', SYNTAX
105
102
  if var.index:
106
103
  yield '[', SYNTAX
107
- for value, token in self.tokenize(var.index, VARIABLE):
108
- yield value, token
104
+ yield from self.tokenize(var.index, VARIABLE)
109
105
  yield ']', SYNTAX
110
- for value, token in self.tokenize(string[var.end:], orig_token):
111
- yield value, token
106
+ yield from self.tokenize(string[var.end:], orig_token)
112
107
 
113
108
 
114
- class RowTokenizer(object):
109
+ class RowTokenizer:
115
110
 
116
111
  def __init__(self):
117
112
  self._table = UnknownTable()
@@ -124,6 +119,7 @@ class RowTokenizer(object):
124
119
  'metadata': settings,
125
120
  'variables': variables, 'variable': variables,
126
121
  'testcases': testcases, 'testcase': testcases,
122
+ 'tasks': testcases, 'task': testcases,
127
123
  'keywords': keywords, 'keyword': keywords,
128
124
  'userkeywords': keywords, 'userkeyword': keywords}
129
125
 
@@ -138,9 +134,8 @@ class RowTokenizer(object):
138
134
  elif index == 0 and value.startswith('*'):
139
135
  self._table = self._start_table(value)
140
136
  heading = True
141
- for value, token in self._tokenize(value, index, commented,
142
- separator, heading):
143
- yield value, token
137
+ yield from self._tokenize(value, index, commented,
138
+ separator, heading)
144
139
  self._table.end_row()
145
140
 
146
141
  def _start_table(self, header):
@@ -155,25 +150,22 @@ class RowTokenizer(object):
155
150
  elif heading:
156
151
  yield value, HEADING
157
152
  else:
158
- for value, token in self._table.tokenize(value, index):
159
- yield value, token
153
+ yield from self._table.tokenize(value, index)
160
154
 
161
155
 
162
- class RowSplitter(object):
156
+ class RowSplitter:
163
157
  _space_splitter = re.compile('( {2,})')
164
- _pipe_splitter = re.compile('((?:^| +)\|(?: +|$))')
158
+ _pipe_splitter = re.compile(r'((?:^| +)\|(?: +|$))')
165
159
 
166
160
  def split(self, row):
167
161
  splitter = (row.startswith('| ') and self._split_from_pipes
168
162
  or self._split_from_spaces)
169
- for value in splitter(row):
170
- yield value
163
+ yield from splitter(row)
171
164
  yield '\n'
172
165
 
173
166
  def _split_from_spaces(self, row):
174
167
  yield '' # Start with (pseudo)separator similarly as with pipes
175
- for value in self._space_splitter.split(row):
176
- yield value
168
+ yield from self._space_splitter.split(row)
177
169
 
178
170
  def _split_from_pipes(self, row):
179
171
  _, separator, rest = self._pipe_splitter.split(row, 1)
@@ -185,7 +177,7 @@ class RowSplitter(object):
185
177
  yield rest
186
178
 
187
179
 
188
- class Tokenizer(object):
180
+ class Tokenizer:
189
181
  _tokens = None
190
182
 
191
183
  def __init__(self):
@@ -216,11 +208,11 @@ class Comment(Tokenizer):
216
208
  class Setting(Tokenizer):
217
209
  _tokens = (SETTING, ARGUMENT)
218
210
  _keyword_settings = ('suitesetup', 'suiteprecondition', 'suiteteardown',
219
- 'suitepostcondition', 'testsetup', 'testprecondition',
220
- 'testteardown', 'testpostcondition', 'testtemplate')
211
+ 'suitepostcondition', 'testsetup', 'tasksetup', 'testprecondition',
212
+ 'testteardown','taskteardown', 'testpostcondition', 'testtemplate', 'tasktemplate')
221
213
  _import_settings = ('library', 'resource', 'variables')
222
214
  _other_settings = ('documentation', 'metadata', 'forcetags', 'defaulttags',
223
- 'testtimeout')
215
+ 'testtimeout','tasktimeout')
224
216
  _custom_tokenizer = None
225
217
 
226
218
  def __init__(self, template_setter=None):
@@ -292,7 +284,7 @@ class KeywordCall(Tokenizer):
292
284
  return GherkinTokenizer().tokenize(value, KEYWORD)
293
285
 
294
286
 
295
- class GherkinTokenizer(object):
287
+ class GherkinTokenizer:
296
288
  _gherkin_prefix = re.compile('^(Given|When|Then|And) ', re.IGNORECASE)
297
289
 
298
290
  def tokenize(self, value, token):
@@ -320,7 +312,7 @@ class ForLoop(Tokenizer):
320
312
  return token
321
313
 
322
314
 
323
- class _Table(object):
315
+ class _Table:
324
316
  _tokenizer_class = None
325
317
 
326
318
  def __init__(self, prev_tokenizer=None):
@@ -333,8 +325,7 @@ class _Table(object):
333
325
  self._tokenizer = self._prev_tokenizer
334
326
  yield value, SYNTAX
335
327
  else:
336
- for value_and_token in self._tokenize(value, index):
337
- yield value_and_token
328
+ yield from self._tokenize(value, index)
338
329
  self._prev_values_on_row.append(value)
339
330
 
340
331
  def _continues(self, value, index):
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.ruby
4
3
  ~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Ruby and related languages.
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
 
@@ -43,23 +42,25 @@ class RubyLexer(ExtendedRegexLexer):
43
42
 
44
43
  def heredoc_callback(self, match, ctx):
45
44
  # okay, this is the hardest part of parsing Ruby...
46
- # match: 1 = <<-?, 2 = quote? 3 = name 4 = quote? 5 = rest of line
45
+ # match: 1 = <<[-~]?, 2 = quote? 3 = name 4 = quote? 5 = rest of line
47
46
 
48
47
  start = match.start(1)
49
- yield start, Operator, match.group(1) # <<-?
48
+ yield start, Operator, match.group(1) # <<[-~]?
50
49
  yield match.start(2), String.Heredoc, match.group(2) # quote ", ', `
51
50
  yield match.start(3), String.Delimiter, match.group(3) # heredoc name
52
51
  yield match.start(4), String.Heredoc, match.group(4) # quote again
53
52
 
54
53
  heredocstack = ctx.__dict__.setdefault('heredocstack', [])
55
54
  outermost = not bool(heredocstack)
56
- heredocstack.append((match.group(1) == '<<-', match.group(3)))
55
+ heredocstack.append((match.group(1) in ('<<-', '<<~'), match.group(3)))
57
56
 
58
57
  ctx.pos = match.start(5)
59
58
  ctx.end = match.end(5)
60
- # this may find other heredocs
61
- for i, t, v in self.get_tokens_unprocessed(context=ctx):
62
- yield i, t, v
59
+ # this may find other heredocs, so limit the recursion depth
60
+ if len(heredocstack) < 100:
61
+ yield from self.get_tokens_unprocessed(context=ctx)
62
+ else:
63
+ yield ctx.pos, String.Heredoc, match.group(5)
63
64
  ctx.pos = match.end()
64
65
 
65
66
  if outermost:
@@ -108,17 +109,18 @@ class RubyLexer(ExtendedRegexLexer):
108
109
  # easy ones
109
110
  (r'\:@{0,2}[a-zA-Z_]\w*[!?]?', String.Symbol),
110
111
  (words(RUBY_OPERATORS, prefix=r'\:@{0,2}'), String.Symbol),
111
- (r":'(\\\\|\\'|[^'])*'", String.Symbol),
112
- (r"'(\\\\|\\'|[^'])*'", String.Single),
112
+ (r":'(\\\\|\\[^\\]|[^'\\])*'", String.Symbol),
113
113
  (r':"', String.Symbol, 'simple-sym'),
114
114
  (r'([a-zA-Z_]\w*)(:)(?!:)',
115
115
  bygroups(String.Symbol, Punctuation)), # Since Ruby 1.9
116
- (r'"', String.Double, 'simple-string'),
116
+ (r'"', String.Double, 'simple-string-double'),
117
+ (r"'", String.Single, 'simple-string-single'),
117
118
  (r'(?<!\.)`', String.Backtick, 'simple-backtick'),
118
119
  ]
119
120
 
120
- # double-quoted string and symbol
121
- for name, ttype, end in ('string', String.Double, '"'), \
121
+ # quoted string and symbol
122
+ for name, ttype, end in ('string-double', String.Double, '"'), \
123
+ ('string-single', String.Single, "'"),\
122
124
  ('sym', String.Symbol, '"'), \
123
125
  ('backtick', String.Backtick, '`'):
124
126
  states['simple-'+name] = [
@@ -247,10 +249,10 @@ class RubyLexer(ExtendedRegexLexer):
247
249
  Name.Builtin),
248
250
  (r'__(FILE|LINE)__\b', Name.Builtin.Pseudo),
249
251
  # normal heredocs
250
- (r'(?<!\w)(<<-?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)',
252
+ (r'(?<!\w)(<<[-~]?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)',
251
253
  heredoc_callback),
252
254
  # empty string heredocs
253
- (r'(<<-?)("|\')()(\2)(.*?\n)', heredoc_callback),
255
+ (r'(<<[-~]?)("|\')()(\2)(.*?\n)', heredoc_callback),
254
256
  (r'__END__', Comment.Preproc, 'end-part'),
255
257
  # multiline regex (after keywords or assignments)
256
258
  (r'(?:^|(?<=[=<>~!:])|'
@@ -327,9 +329,13 @@ class RubyLexer(ExtendedRegexLexer):
327
329
  ],
328
330
  'funcname': [
329
331
  (r'\(', Punctuation, 'defexpr'),
330
- (r'(?:([a-zA-Z_]\w*)(\.))?'
331
- r'([a-zA-Z_]\w*[!?]?|\*\*?|[-+]@?|'
332
- r'[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)',
332
+ (r'(?:([a-zA-Z_]\w*)(\.))?' # optional scope name, like "self."
333
+ r'('
334
+ r'[a-zA-Z\u0080-\uffff][a-zA-Z0-9_\u0080-\uffff]*[!?=]?' # method name
335
+ r'|!=|!~|=~|\*\*?|[-+!~]@?|[/%&|^]|<=>|<[<=]?|>[>=]?|===?' # or operator override
336
+ r'|\[\]=?' # or element reference/assignment override
337
+ r'|`' # or the undocumented backtick override
338
+ r')',
333
339
  bygroups(Name.Class, Operator, Name.Function), '#pop'),
334
340
  default('#pop')
335
341
  ],
@@ -403,8 +409,8 @@ class RubyConsoleLexer(Lexer):
403
409
  aliases = ['rbcon', 'irb']
404
410
  mimetypes = ['text/x-ruby-shellsession']
405
411
 
406
- _prompt_re = re.compile('irb\([a-zA-Z_]\w*\):\d{3}:\d+[>*"\'] '
407
- '|>> |\?> ')
412
+ _prompt_re = re.compile(r'irb\([a-zA-Z_]\w*\):\d{3}:\d+[>*"\'] '
413
+ r'|>> |\?> ')
408
414
 
409
415
  def get_tokens_unprocessed(self, text):
410
416
  rblexer = RubyLexer(**self.options)
@@ -421,16 +427,14 @@ class RubyConsoleLexer(Lexer):
421
427
  curcode += line[end:]
422
428
  else:
423
429
  if curcode:
424
- for item in do_insertions(
425
- insertions, rblexer.get_tokens_unprocessed(curcode)):
426
- yield item
430
+ yield from do_insertions(
431
+ insertions, rblexer.get_tokens_unprocessed(curcode))
427
432
  curcode = ''
428
433
  insertions = []
429
434
  yield match.start(), Generic.Output, line
430
435
  if curcode:
431
- for item in do_insertions(
432
- insertions, rblexer.get_tokens_unprocessed(curcode)):
433
- yield item
436
+ yield from do_insertions(
437
+ insertions, rblexer.get_tokens_unprocessed(curcode))
434
438
 
435
439
 
436
440
  class FancyLexer(RegexLexer):
@@ -451,26 +455,26 @@ class FancyLexer(RegexLexer):
451
455
  tokens = {
452
456
  # copied from PerlLexer:
453
457
  'balanced-regex': [
454
- (r'/(\\\\|\\/|[^/])*/[egimosx]*', String.Regex, '#pop'),
455
- (r'!(\\\\|\\!|[^!])*![egimosx]*', String.Regex, '#pop'),
458
+ (r'/(\\\\|\\[^\\]|[^/\\])*/[egimosx]*', String.Regex, '#pop'),
459
+ (r'!(\\\\|\\[^\\]|[^!\\])*![egimosx]*', String.Regex, '#pop'),
456
460
  (r'\\(\\\\|[^\\])*\\[egimosx]*', String.Regex, '#pop'),
457
- (r'\{(\\\\|\\\}|[^}])*\}[egimosx]*', String.Regex, '#pop'),
458
- (r'<(\\\\|\\>|[^>])*>[egimosx]*', String.Regex, '#pop'),
459
- (r'\[(\\\\|\\\]|[^\]])*\][egimosx]*', String.Regex, '#pop'),
460
- (r'\((\\\\|\\\)|[^)])*\)[egimosx]*', String.Regex, '#pop'),
461
- (r'@(\\\\|\\@|[^@])*@[egimosx]*', String.Regex, '#pop'),
462
- (r'%(\\\\|\\%|[^%])*%[egimosx]*', String.Regex, '#pop'),
463
- (r'\$(\\\\|\\\$|[^$])*\$[egimosx]*', String.Regex, '#pop'),
461
+ (r'\{(\\\\|\\[^\\]|[^}\\])*\}[egimosx]*', String.Regex, '#pop'),
462
+ (r'<(\\\\|\\[^\\]|[^>\\])*>[egimosx]*', String.Regex, '#pop'),
463
+ (r'\[(\\\\|\\[^\\]|[^\]\\])*\][egimosx]*', String.Regex, '#pop'),
464
+ (r'\((\\\\|\\[^\\]|[^)\\])*\)[egimosx]*', String.Regex, '#pop'),
465
+ (r'@(\\\\|\\[^\\]|[^@\\])*@[egimosx]*', String.Regex, '#pop'),
466
+ (r'%(\\\\|\\[^\\]|[^%\\])*%[egimosx]*', String.Regex, '#pop'),
467
+ (r'\$(\\\\|\\[^\\]|[^$\\])*\$[egimosx]*', String.Regex, '#pop'),
464
468
  ],
465
469
  'root': [
466
470
  (r'\s+', Text),
467
471
 
468
472
  # balanced delimiters (copied from PerlLexer):
469
- (r's\{(\\\\|\\\}|[^}])*\}\s*', String.Regex, 'balanced-regex'),
470
- (r's<(\\\\|\\>|[^>])*>\s*', String.Regex, 'balanced-regex'),
471
- (r's\[(\\\\|\\\]|[^\]])*\]\s*', String.Regex, 'balanced-regex'),
472
- (r's\((\\\\|\\\)|[^)])*\)\s*', String.Regex, 'balanced-regex'),
473
- (r'm?/(\\\\|\\/|[^/\n])*/[gcimosx]*', String.Regex),
473
+ (r's\{(\\\\|\\[^\\]|[^}\\])*\}\s*', String.Regex, 'balanced-regex'),
474
+ (r's<(\\\\|\\[^\\]|[^>\\])*>\s*', String.Regex, 'balanced-regex'),
475
+ (r's\[(\\\\|\\[^\\]|[^\]\\])*\]\s*', String.Regex, 'balanced-regex'),
476
+ (r's\((\\\\|\\[^\\]|[^)\\])*\)\s*', String.Regex, 'balanced-regex'),
477
+ (r'm?/(\\\\|\\[^\\]|[^///\n])*/[gcimosx]*', String.Regex),
474
478
  (r'm(?=[/!\\{<\[(@%$])', String.Regex, 'balanced-regex'),
475
479
 
476
480
  # Comments
@@ -478,9 +482,9 @@ class FancyLexer(RegexLexer):
478
482
  # Symbols
479
483
  (r'\'([^\'\s\[\](){}]+|\[\])', String.Symbol),
480
484
  # Multi-line DoubleQuotedString
481
- (r'"""(\\\\|\\"|[^"])*"""', String),
485
+ (r'"""(\\\\|\\[^\\]|[^\\])*?"""', String),
482
486
  # DoubleQuotedString
483
- (r'"(\\\\|\\"|[^"])*"', String),
487
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
484
488
  # keywords
485
489
  (r'(def|class|try|catch|finally|retry|return|return_local|match|'
486
490
  r'case|->|=>)\b', Keyword),
@@ -498,11 +502,11 @@ class FancyLexer(RegexLexer):
498
502
  (r'[a-zA-Z](\w|[-+?!=*/^><%])*:', Name.Function),
499
503
  # operators, must be below functions
500
504
  (r'[-+*/~,<>=&!?%^\[\].$]+', Operator),
501
- ('[A-Z]\w*', Name.Constant),
502
- ('@[a-zA-Z_]\w*', Name.Variable.Instance),
503
- ('@@[a-zA-Z_]\w*', Name.Variable.Class),
505
+ (r'[A-Z]\w*', Name.Constant),
506
+ (r'@[a-zA-Z_]\w*', Name.Variable.Instance),
507
+ (r'@@[a-zA-Z_]\w*', Name.Variable.Class),
504
508
  ('@@?', Operator),
505
- ('[a-zA-Z_]\w*', Name),
509
+ (r'[a-zA-Z_]\w*', Name),
506
510
  # numbers - / checks are necessary to avoid mismarking regexes,
507
511
  # see comment in RubyLexer
508
512
  (r'(0[oO]?[0-7]+(?:_[0-7]+)*)(\s*)([/?])?',