pygments.rb 1.1.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ci.yml +28 -0
  4. data/.github/workflows/release.yml +24 -0
  5. data/.gitignore +5 -5
  6. data/CHANGELOG.adoc +128 -0
  7. data/Gemfile +3 -1
  8. data/LICENSE +1 -1
  9. data/README.adoc +160 -0
  10. data/Rakefile +13 -19
  11. data/bench.rb +8 -7
  12. data/cache-lexers.rb +3 -2
  13. data/lexers +0 -0
  14. data/lib/pygments.rb +10 -11
  15. data/lib/pygments/lexer.rb +5 -5
  16. data/lib/pygments/mentos.py +23 -110
  17. data/lib/pygments/popen.rb +148 -229
  18. data/lib/pygments/version.rb +2 -2
  19. data/pygments.rb.gemspec +12 -11
  20. data/test/test_pygments.rb +46 -104
  21. data/vendor/pygments-main/{AUTHORS → Pygments-2.7.3.dist-info/AUTHORS} +23 -3
  22. data/vendor/pygments-main/Pygments-2.7.3.dist-info/INSTALLER +1 -0
  23. data/vendor/pygments-main/{LICENSE → Pygments-2.7.3.dist-info/LICENSE} +1 -1
  24. data/vendor/pygments-main/Pygments-2.7.3.dist-info/METADATA +49 -0
  25. data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +482 -0
  26. data/vendor/pygments-main/Pygments-2.7.3.dist-info/REQUESTED +0 -0
  27. data/vendor/pygments-main/Pygments-2.7.3.dist-info/WHEEL +5 -0
  28. data/vendor/pygments-main/Pygments-2.7.3.dist-info/entry_points.txt +3 -0
  29. data/vendor/pygments-main/Pygments-2.7.3.dist-info/top_level.txt +1 -0
  30. data/vendor/pygments-main/bin/pygmentize +8 -0
  31. data/vendor/pygments-main/pygments/__init__.py +6 -11
  32. data/vendor/pygments-main/pygments/__main__.py +18 -0
  33. data/vendor/pygments-main/pygments/cmdline.py +94 -41
  34. data/vendor/pygments-main/pygments/console.py +6 -9
  35. data/vendor/pygments-main/pygments/filter.py +4 -6
  36. data/vendor/pygments-main/pygments/filters/__init__.py +609 -21
  37. data/vendor/pygments-main/pygments/formatter.py +4 -4
  38. data/vendor/pygments-main/pygments/formatters/__init__.py +42 -6
  39. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -3
  40. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  41. data/vendor/pygments-main/pygments/formatters/html.py +223 -135
  42. data/vendor/pygments-main/pygments/formatters/img.py +102 -38
  43. data/vendor/pygments-main/pygments/formatters/irc.py +39 -39
  44. data/vendor/pygments-main/pygments/formatters/latex.py +56 -26
  45. data/vendor/pygments-main/pygments/formatters/other.py +12 -8
  46. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -29
  47. data/vendor/pygments-main/pygments/formatters/svg.py +38 -4
  48. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -31
  49. data/vendor/pygments-main/pygments/formatters/terminal256.py +22 -12
  50. data/vendor/pygments-main/pygments/lexer.py +41 -39
  51. data/vendor/pygments-main/pygments/lexers/__init__.py +62 -15
  52. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +5 -5
  53. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +15 -15
  54. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +11 -12
  55. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1717 -1338
  56. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +8 -1
  57. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +2 -4
  58. data/vendor/pygments-main/pygments/lexers/_mapping.py +79 -33
  59. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +2 -2
  60. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1282 -0
  61. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
  62. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +17 -20
  63. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +73 -16
  64. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +2 -2
  65. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -3
  66. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +151 -125
  67. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +6 -4
  68. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
  69. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +113 -0
  70. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +280 -0
  71. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
  72. data/vendor/pygments-main/pygments/lexers/actionscript.py +8 -3
  73. data/vendor/pygments-main/pygments/lexers/agile.py +1 -1
  74. data/vendor/pygments-main/pygments/lexers/algebra.py +20 -1
  75. data/vendor/pygments-main/pygments/lexers/ambient.py +1 -1
  76. data/vendor/pygments-main/pygments/lexers/ampl.py +3 -3
  77. data/vendor/pygments-main/pygments/lexers/apl.py +15 -15
  78. data/vendor/pygments-main/pygments/lexers/archetype.py +3 -3
  79. data/vendor/pygments-main/pygments/lexers/arrow.py +117 -0
  80. data/vendor/pygments-main/pygments/lexers/asm.py +445 -70
  81. data/vendor/pygments-main/pygments/lexers/automation.py +3 -3
  82. data/vendor/pygments-main/pygments/lexers/bare.py +104 -0
  83. data/vendor/pygments-main/pygments/lexers/basic.py +166 -4
  84. data/vendor/pygments-main/pygments/lexers/bibtex.py +13 -9
  85. data/vendor/pygments-main/pygments/lexers/boa.py +102 -0
  86. data/vendor/pygments-main/pygments/lexers/business.py +69 -36
  87. data/vendor/pygments-main/pygments/lexers/c_cpp.py +137 -45
  88. data/vendor/pygments-main/pygments/lexers/c_like.py +68 -43
  89. data/vendor/pygments-main/pygments/lexers/capnproto.py +20 -21
  90. data/vendor/pygments-main/pygments/lexers/chapel.py +25 -14
  91. data/vendor/pygments-main/pygments/lexers/clean.py +135 -244
  92. data/vendor/pygments-main/pygments/lexers/compiled.py +1 -1
  93. data/vendor/pygments-main/pygments/lexers/configs.py +188 -37
  94. data/vendor/pygments-main/pygments/lexers/console.py +1 -1
  95. data/vendor/pygments-main/pygments/lexers/crystal.py +31 -23
  96. data/vendor/pygments-main/pygments/lexers/csound.py +288 -187
  97. data/vendor/pygments-main/pygments/lexers/css.py +18 -16
  98. data/vendor/pygments-main/pygments/lexers/d.py +10 -5
  99. data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -1
  100. data/vendor/pygments-main/pygments/lexers/data.py +240 -97
  101. data/vendor/pygments-main/pygments/lexers/devicetree.py +109 -0
  102. data/vendor/pygments-main/pygments/lexers/diff.py +4 -4
  103. data/vendor/pygments-main/pygments/lexers/dotnet.py +40 -24
  104. data/vendor/pygments-main/pygments/lexers/dsls.py +147 -65
  105. data/vendor/pygments-main/pygments/lexers/dylan.py +16 -18
  106. data/vendor/pygments-main/pygments/lexers/ecl.py +16 -2
  107. data/vendor/pygments-main/pygments/lexers/eiffel.py +1 -1
  108. data/vendor/pygments-main/pygments/lexers/elm.py +5 -5
  109. data/vendor/pygments-main/pygments/lexers/email.py +151 -0
  110. data/vendor/pygments-main/pygments/lexers/erlang.py +29 -32
  111. data/vendor/pygments-main/pygments/lexers/esoteric.py +54 -25
  112. data/vendor/pygments-main/pygments/lexers/ezhil.py +24 -15
  113. data/vendor/pygments-main/pygments/lexers/factor.py +1 -1
  114. data/vendor/pygments-main/pygments/lexers/fantom.py +1 -1
  115. data/vendor/pygments-main/pygments/lexers/felix.py +1 -1
  116. data/vendor/pygments-main/pygments/lexers/floscript.py +83 -0
  117. data/vendor/pygments-main/pygments/lexers/forth.py +41 -40
  118. data/vendor/pygments-main/pygments/lexers/fortran.py +5 -4
  119. data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -2
  120. data/vendor/pygments-main/pygments/lexers/freefem.py +898 -0
  121. data/vendor/pygments-main/pygments/lexers/functional.py +1 -1
  122. data/vendor/pygments-main/pygments/lexers/gdscript.py +346 -0
  123. data/vendor/pygments-main/pygments/lexers/go.py +1 -1
  124. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +63 -6
  125. data/vendor/pygments-main/pygments/lexers/graph.py +14 -9
  126. data/vendor/pygments-main/pygments/lexers/graphics.py +272 -25
  127. data/vendor/pygments-main/pygments/lexers/haskell.py +52 -22
  128. data/vendor/pygments-main/pygments/lexers/haxe.py +6 -6
  129. data/vendor/pygments-main/pygments/lexers/hdl.py +176 -86
  130. data/vendor/pygments-main/pygments/lexers/hexdump.py +18 -12
  131. data/vendor/pygments-main/pygments/lexers/html.py +31 -19
  132. data/vendor/pygments-main/pygments/lexers/idl.py +20 -9
  133. data/vendor/pygments-main/pygments/lexers/igor.py +244 -112
  134. data/vendor/pygments-main/pygments/lexers/inferno.py +2 -2
  135. data/vendor/pygments-main/pygments/lexers/installers.py +1 -1
  136. data/vendor/pygments-main/pygments/lexers/int_fiction.py +40 -15
  137. data/vendor/pygments-main/pygments/lexers/iolang.py +2 -2
  138. data/vendor/pygments-main/pygments/lexers/j.py +3 -3
  139. data/vendor/pygments-main/pygments/lexers/javascript.py +100 -66
  140. data/vendor/pygments-main/pygments/lexers/julia.py +46 -48
  141. data/vendor/pygments-main/pygments/lexers/jvm.py +265 -165
  142. data/vendor/pygments-main/pygments/lexers/lisp.py +882 -804
  143. data/vendor/pygments-main/pygments/lexers/make.py +10 -6
  144. data/vendor/pygments-main/pygments/lexers/markup.py +213 -43
  145. data/vendor/pygments-main/pygments/lexers/math.py +1 -1
  146. data/vendor/pygments-main/pygments/lexers/matlab.py +98 -41
  147. data/vendor/pygments-main/pygments/lexers/mime.py +226 -0
  148. data/vendor/pygments-main/pygments/lexers/ml.py +198 -9
  149. data/vendor/pygments-main/pygments/lexers/modeling.py +26 -18
  150. data/vendor/pygments-main/pygments/lexers/modula2.py +25 -6
  151. data/vendor/pygments-main/pygments/lexers/monte.py +4 -3
  152. data/vendor/pygments-main/pygments/lexers/mosel.py +448 -0
  153. data/vendor/pygments-main/pygments/lexers/ncl.py +85 -244
  154. data/vendor/pygments-main/pygments/lexers/nimrod.py +4 -4
  155. data/vendor/pygments-main/pygments/lexers/nit.py +1 -1
  156. data/vendor/pygments-main/pygments/lexers/nix.py +1 -1
  157. data/vendor/pygments-main/pygments/lexers/oberon.py +17 -1
  158. data/vendor/pygments-main/pygments/lexers/objective.py +16 -16
  159. data/vendor/pygments-main/pygments/lexers/ooc.py +1 -1
  160. data/vendor/pygments-main/pygments/lexers/other.py +1 -1
  161. data/vendor/pygments-main/pygments/lexers/parasail.py +1 -1
  162. data/vendor/pygments-main/pygments/lexers/parsers.py +23 -58
  163. data/vendor/pygments-main/pygments/lexers/pascal.py +23 -23
  164. data/vendor/pygments-main/pygments/lexers/pawn.py +30 -24
  165. data/vendor/pygments-main/pygments/lexers/perl.py +276 -160
  166. data/vendor/pygments-main/pygments/lexers/php.py +64 -10
  167. data/vendor/pygments-main/pygments/lexers/pointless.py +71 -0
  168. data/vendor/pygments-main/pygments/lexers/pony.py +94 -0
  169. data/vendor/pygments-main/pygments/lexers/praat.py +38 -30
  170. data/vendor/pygments-main/pygments/lexers/prolog.py +36 -36
  171. data/vendor/pygments-main/pygments/lexers/promql.py +183 -0
  172. data/vendor/pygments-main/pygments/lexers/python.py +439 -226
  173. data/vendor/pygments-main/pygments/lexers/qvt.py +6 -6
  174. data/vendor/pygments-main/pygments/lexers/r.py +13 -275
  175. data/vendor/pygments-main/pygments/lexers/rdf.py +232 -39
  176. data/vendor/pygments-main/pygments/lexers/rebol.py +8 -8
  177. data/vendor/pygments-main/pygments/lexers/resource.py +2 -2
  178. data/vendor/pygments-main/pygments/lexers/ride.py +139 -0
  179. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -1
  180. data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -1
  181. data/vendor/pygments-main/pygments/lexers/robotframework.py +23 -31
  182. data/vendor/pygments-main/pygments/lexers/ruby.py +22 -24
  183. data/vendor/pygments-main/pygments/lexers/rust.py +86 -71
  184. data/vendor/pygments-main/pygments/lexers/sas.py +7 -7
  185. data/vendor/pygments-main/pygments/lexers/scdoc.py +83 -0
  186. data/vendor/pygments-main/pygments/lexers/scripting.py +75 -13
  187. data/vendor/pygments-main/pygments/lexers/sgf.py +61 -0
  188. data/vendor/pygments-main/pygments/lexers/shell.py +175 -51
  189. data/vendor/pygments-main/pygments/lexers/sieve.py +69 -0
  190. data/vendor/pygments-main/pygments/lexers/slash.py +185 -0
  191. data/vendor/pygments-main/pygments/lexers/smalltalk.py +2 -2
  192. data/vendor/pygments-main/pygments/lexers/smv.py +30 -26
  193. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -1
  194. data/vendor/pygments-main/pygments/lexers/solidity.py +92 -0
  195. data/vendor/pygments-main/pygments/lexers/special.py +5 -3
  196. data/vendor/pygments-main/pygments/lexers/sql.py +333 -177
  197. data/vendor/pygments-main/pygments/lexers/stata.py +107 -42
  198. data/vendor/pygments-main/pygments/lexers/supercollider.py +6 -1
  199. data/vendor/pygments-main/pygments/lexers/tcl.py +1 -1
  200. data/vendor/pygments-main/pygments/lexers/templates.py +144 -132
  201. data/vendor/pygments-main/pygments/lexers/teraterm.py +335 -0
  202. data/vendor/pygments-main/pygments/lexers/testing.py +6 -6
  203. data/vendor/pygments-main/pygments/lexers/text.py +2 -1
  204. data/vendor/pygments-main/pygments/lexers/textedit.py +4 -4
  205. data/vendor/pygments-main/pygments/lexers/textfmts.py +146 -13
  206. data/vendor/pygments-main/pygments/lexers/theorem.py +69 -53
  207. data/vendor/pygments-main/pygments/lexers/tnt.py +263 -0
  208. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -1
  209. data/vendor/pygments-main/pygments/lexers/typoscript.py +8 -14
  210. data/vendor/pygments-main/pygments/lexers/unicon.py +412 -0
  211. data/vendor/pygments-main/pygments/lexers/urbi.py +14 -1
  212. data/vendor/pygments-main/pygments/lexers/usd.py +90 -0
  213. data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
  214. data/vendor/pygments-main/pygments/lexers/verification.py +15 -12
  215. data/vendor/pygments-main/pygments/lexers/web.py +1 -1
  216. data/vendor/pygments-main/pygments/lexers/webidl.py +299 -0
  217. data/vendor/pygments-main/pygments/lexers/webmisc.py +50 -38
  218. data/vendor/pygments-main/pygments/lexers/whiley.py +11 -12
  219. data/vendor/pygments-main/pygments/lexers/x10.py +1 -1
  220. data/vendor/pygments-main/pygments/lexers/xorg.py +37 -0
  221. data/vendor/pygments-main/pygments/lexers/yang.py +104 -0
  222. data/vendor/pygments-main/pygments/lexers/zig.py +124 -0
  223. data/vendor/pygments-main/pygments/modeline.py +6 -5
  224. data/vendor/pygments-main/pygments/plugin.py +14 -18
  225. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  226. data/vendor/pygments-main/pygments/scanner.py +2 -2
  227. data/vendor/pygments-main/pygments/sphinxext.py +2 -4
  228. data/vendor/pygments-main/pygments/style.py +61 -24
  229. data/vendor/pygments-main/pygments/styles/__init__.py +13 -5
  230. data/vendor/pygments-main/pygments/styles/abap.py +29 -0
  231. data/vendor/pygments-main/pygments/styles/algol.py +1 -1
  232. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -1
  233. data/vendor/pygments-main/pygments/styles/arduino.py +2 -2
  234. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  235. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  236. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  237. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  238. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  239. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  240. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  241. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  242. data/vendor/pygments-main/pygments/styles/igor.py +1 -1
  243. data/vendor/pygments-main/pygments/styles/inkpot.py +67 -0
  244. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -1
  245. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  246. data/vendor/pygments-main/pygments/styles/monokai.py +4 -3
  247. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  248. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  249. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -1
  250. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -1
  251. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  252. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  253. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +89 -0
  254. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  255. data/vendor/pygments-main/pygments/styles/sas.py +3 -0
  256. data/vendor/pygments-main/pygments/styles/solarized.py +134 -0
  257. data/vendor/pygments-main/pygments/styles/stata_dark.py +41 -0
  258. data/vendor/pygments-main/pygments/styles/stata_light.py +39 -0
  259. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  260. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  261. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  262. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  263. data/vendor/pygments-main/pygments/styles/xcode.py +1 -1
  264. data/vendor/pygments-main/pygments/token.py +1 -1
  265. data/vendor/pygments-main/pygments/unistring.py +47 -108
  266. data/vendor/pygments-main/pygments/util.py +19 -95
  267. metadata +71 -137
  268. data/CHANGELOG.md +0 -98
  269. data/README.md +0 -121
  270. data/circle.yml +0 -20
  271. data/test/test_data.c +0 -2581
  272. data/test/test_data.py +0 -514
  273. data/test/test_data_generated +0 -2582
  274. data/vendor/custom_lexers/github.py +0 -565
  275. data/vendor/pygments-main/CHANGES +0 -1163
  276. data/vendor/pygments-main/MANIFEST.in +0 -6
  277. data/vendor/pygments-main/Makefile +0 -65
  278. data/vendor/pygments-main/README.rst +0 -39
  279. data/vendor/pygments-main/REVISION +0 -1
  280. data/vendor/pygments-main/TODO +0 -12
  281. data/vendor/pygments-main/doc/Makefile +0 -153
  282. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  283. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  284. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  285. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  286. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  287. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  288. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  289. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  290. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  291. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  292. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  293. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  294. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  295. data/vendor/pygments-main/doc/conf.py +0 -241
  296. data/vendor/pygments-main/doc/docs/api.rst +0 -331
  297. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  298. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  299. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -149
  300. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  301. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  302. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  303. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  304. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  305. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  306. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  307. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -689
  308. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  309. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  310. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  311. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  312. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  313. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  314. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  315. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  316. data/vendor/pygments-main/doc/download.rst +0 -41
  317. data/vendor/pygments-main/doc/faq.rst +0 -139
  318. data/vendor/pygments-main/doc/index.rst +0 -54
  319. data/vendor/pygments-main/doc/languages.rst +0 -154
  320. data/vendor/pygments-main/doc/make.bat +0 -190
  321. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  322. data/vendor/pygments-main/external/autopygmentize +0 -84
  323. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  324. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  325. data/vendor/pygments-main/external/moin-parser.py +0 -112
  326. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  327. data/vendor/pygments-main/external/rst-directive.py +0 -82
  328. data/vendor/pygments-main/pygmentize +0 -8
  329. data/vendor/pygments-main/pygments/lexers/github.py +0 -565
  330. data/vendor/pygments-main/pygments/styles/stata.py +0 -37
  331. data/vendor/pygments-main/requirements.txt +0 -5
  332. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  333. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  334. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  335. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  336. data/vendor/pygments-main/scripts/find_error.py +0 -1
  337. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  338. data/vendor/pygments-main/scripts/pylintrc +0 -301
  339. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  340. data/vendor/pygments-main/setup.cfg +0 -10
  341. data/vendor/pygments-main/setup.py +0 -77
  342. data/vendor/pygments-main/tox.ini +0 -7
  343. data/vendor/simplejson/.gitignore +0 -10
  344. data/vendor/simplejson/.travis.yml +0 -5
  345. data/vendor/simplejson/CHANGES.txt +0 -291
  346. data/vendor/simplejson/LICENSE.txt +0 -19
  347. data/vendor/simplejson/MANIFEST.in +0 -5
  348. data/vendor/simplejson/README.rst +0 -19
  349. data/vendor/simplejson/conf.py +0 -179
  350. data/vendor/simplejson/index.rst +0 -628
  351. data/vendor/simplejson/scripts/make_docs.py +0 -18
  352. data/vendor/simplejson/setup.py +0 -104
  353. data/vendor/simplejson/simplejson/__init__.py +0 -510
  354. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  355. data/vendor/simplejson/simplejson/decoder.py +0 -425
  356. data/vendor/simplejson/simplejson/encoder.py +0 -567
  357. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  358. data/vendor/simplejson/simplejson/scanner.py +0 -77
  359. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  360. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  361. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  362. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  363. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  364. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  365. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  366. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  367. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  368. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  369. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  370. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  371. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  372. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  373. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  374. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  375. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  376. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  377. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  378. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  379. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  380. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  381. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  382. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  383. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -5,7 +5,7 @@
5
5
 
6
6
  Lexers for Makefiles and similar.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -57,8 +57,7 @@ class MakefileLexer(Lexer):
57
57
  ins.append((len(done), [(0, Comment, line)]))
58
58
  else:
59
59
  done += line
60
- for item in do_insertions(ins, lex.get_tokens_unprocessed(done)):
61
- yield item
60
+ yield from do_insertions(ins, lex.get_tokens_unprocessed(done))
62
61
 
63
62
  def analyse_text(text):
64
63
  # Many makefiles have $(BIG_CAPS) style variables
@@ -102,8 +101,8 @@ class BaseMakefileLexer(RegexLexer):
102
101
  (r'\$\(', Keyword, 'expansion'),
103
102
  ],
104
103
  'expansion': [
105
- (r'[^$a-zA-Z_()]+', Text),
106
- (r'[a-zA-Z_]+', Name.Variable),
104
+ (r'[^\w$().-]+', Text),
105
+ (r'[\w.-]+', Name.Variable),
107
106
  (r'\$', Keyword),
108
107
  (r'\(', Keyword, '#push'),
109
108
  (r'\)', Keyword, '#pop'),
@@ -196,7 +195,12 @@ class CMakeLexer(RegexLexer):
196
195
  }
197
196
 
198
197
  def analyse_text(text):
199
- exp = r'^ *CMAKE_MINIMUM_REQUIRED *\( *VERSION *\d(\.\d)* *( FATAL_ERROR)? *\) *$'
198
+ exp = (
199
+ r'^[ \t]*CMAKE_MINIMUM_REQUIRED[ \t]*'
200
+ r'\([ \t]*VERSION[ \t]*\d+(\.\d+)*[ \t]*'
201
+ r'([ \t]FATAL_ERROR)?[ \t]*\)[ \t]*'
202
+ r'(#[^\n]*)?$'
203
+ )
200
204
  if re.search(exp, text, flags=re.MULTILINE | re.IGNORECASE):
201
205
  return 0.8
202
206
  return 0.0
@@ -5,7 +5,7 @@
5
5
 
6
6
  Lexers for non-HTML markup languages.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -24,7 +24,7 @@ from pygments.util import get_bool_opt, ClassNotFound
24
24
  __all__ = ['BBCodeLexer', 'MoinWikiLexer', 'RstLexer', 'TexLexer', 'GroffLexer',
25
25
  'MozPreprocHashLexer', 'MozPreprocPercentLexer',
26
26
  'MozPreprocXulLexer', 'MozPreprocJavascriptLexer',
27
- 'MozPreprocCssLexer', 'MarkdownLexer']
27
+ 'MozPreprocCssLexer', 'MarkdownLexer', 'TiddlyWiki5Lexer']
28
28
 
29
29
 
30
30
  class BBCodeLexer(RegexLexer):
@@ -165,12 +165,11 @@ class RstLexer(RegexLexer):
165
165
  code += line[indention_size:]
166
166
  else:
167
167
  code += line
168
- for item in do_insertions(ins, lexer.get_tokens_unprocessed(code)):
169
- yield item
168
+ yield from do_insertions(ins, lexer.get_tokens_unprocessed(code))
170
169
 
171
170
  # from docutils.parsers.rst.states
172
- closers = u'\'")]}>\u2019\u201d\xbb!?'
173
- unicode_delimiters = u'\u2010\u2011\u2012\u2013\u2014\u00a0'
171
+ closers = '\'")]}>\u2019\u201d\xbb!?'
172
+ unicode_delimiters = '\u2010\u2011\u2012\u2013\u2014\u00a0'
174
173
  end_string_suffix = (r'((?=$)|(?=[-/:.,; \n\x00%s%s]))'
175
174
  % (re.escape(unicode_delimiters),
176
175
  re.escape(closers)))
@@ -204,7 +203,7 @@ class RstLexer(RegexLexer):
204
203
  bygroups(Text, Operator, using(this, state='inline'))),
205
204
  # Sourcecode directives
206
205
  (r'^( *\.\.)(\s*)((?:source)?code(?:-block)?)(::)([ \t]*)([^\n]+)'
207
- r'(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\8.*|)\n)+)',
206
+ r'(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\8.*)?\n)+)',
208
207
  _handle_sourcecode),
209
208
  # A directive
210
209
  (r'^( *\.\.)(\s*)([\w:-]+?)(::)(?:([ \t]*)(.*))',
@@ -222,15 +221,14 @@ class RstLexer(RegexLexer):
222
221
  Punctuation, Text, using(this, state='inline'))),
223
222
  # Comments
224
223
  (r'^ *\.\..*(\n( +.*\n|\n)+)?', Comment.Preproc),
225
- # Field list
226
- (r'^( *)(:[a-zA-Z-]+:)(\s*)$', bygroups(Text, Name.Class, Text)),
227
- (r'^( *)(:.*?:)([ \t]+)(.*?)$',
228
- bygroups(Text, Name.Class, Text, Name.Function)),
224
+ # Field list marker
225
+ (r'^( *)(:(?:\\\\|\\:|[^:\n])+:(?=\s))([ \t]*)',
226
+ bygroups(Text, Name.Class, Text)),
229
227
  # Definition list
230
228
  (r'^(\S.*(?<!::)\n)((?:(?: +.*)\n)+)',
231
229
  bygroups(using(this, state='inline'), using(this, state='inline'))),
232
230
  # Code blocks
233
- (r'(::)(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\3.*|)\n)+)',
231
+ (r'(::)(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\3.*)?\n)+)',
234
232
  bygroups(String.Escape, Text, String, String, Text, String)),
235
233
  include('inline'),
236
234
  ],
@@ -463,8 +461,7 @@ class MozPreprocXulLexer(DelegatingLexer):
463
461
  mimetypes = []
464
462
 
465
463
  def __init__(self, **options):
466
- super(MozPreprocXulLexer, self).__init__(
467
- XmlLexer, MozPreprocHashLexer, **options)
464
+ super().__init__(XmlLexer, MozPreprocHashLexer, **options)
468
465
 
469
466
 
470
467
  class MozPreprocJavascriptLexer(DelegatingLexer):
@@ -480,8 +477,7 @@ class MozPreprocJavascriptLexer(DelegatingLexer):
480
477
  mimetypes = []
481
478
 
482
479
  def __init__(self, **options):
483
- super(MozPreprocJavascriptLexer, self).__init__(
484
- JavascriptLexer, MozPreprocHashLexer, **options)
480
+ super().__init__(JavascriptLexer, MozPreprocHashLexer, **options)
485
481
 
486
482
 
487
483
  class MozPreprocCssLexer(DelegatingLexer):
@@ -497,8 +493,7 @@ class MozPreprocCssLexer(DelegatingLexer):
497
493
  mimetypes = []
498
494
 
499
495
  def __init__(self, **options):
500
- super(MozPreprocCssLexer, self).__init__(
501
- CssLexer, MozPreprocPercentLexer, **options)
496
+ super().__init__(CssLexer, MozPreprocPercentLexer, **options)
502
497
 
503
498
 
504
499
  class MarkdownLexer(RegexLexer):
@@ -509,7 +504,7 @@ class MarkdownLexer(RegexLexer):
509
504
  """
510
505
  name = 'markdown'
511
506
  aliases = ['md']
512
- filenames = ['*.md']
507
+ filenames = ['*.md', '*.markdown']
513
508
  mimetypes = ["text/x-markdown"]
514
509
  flags = re.MULTILINE
515
510
 
@@ -520,9 +515,9 @@ class MarkdownLexer(RegexLexer):
520
515
  from pygments.lexers import get_lexer_by_name
521
516
 
522
517
  # section header
523
- yield match.start(1), String , match.group(1)
524
- yield match.start(2), String , match.group(2)
525
- yield match.start(3), Text , match.group(3)
518
+ yield match.start(1), String.Backtick, match.group(1)
519
+ yield match.start(2), String.Backtick, match.group(2)
520
+ yield match.start(3), Text , match.group(3)
526
521
 
527
522
  # lookup lexer if wanted and existing
528
523
  lexer = None
@@ -536,57 +531,232 @@ class MarkdownLexer(RegexLexer):
536
531
  # no lexer for this language. handle it like it was a code block
537
532
  if lexer is None:
538
533
  yield match.start(4), String, code
539
- return
540
-
541
- for item in do_insertions([], lexer.get_tokens_unprocessed(code)):
542
- yield item
534
+ else:
535
+ yield from do_insertions([], lexer.get_tokens_unprocessed(code))
543
536
 
544
- yield match.start(5), String , match.group(5)
537
+ yield match.start(5), String.Backtick, match.group(5)
545
538
 
546
539
  tokens = {
547
540
  'root': [
548
- # heading with pound prefix
549
- (r'^(#)([^#].+\n)', bygroups(Generic.Heading, Text)),
550
- (r'^(#{2,6})(.+\n)', bygroups(Generic.Subheading, Text)),
541
+ # heading with '#' prefix (atx-style)
542
+ (r'(^#[^#].+)(\n)', bygroups(Generic.Heading, Text)),
543
+ # subheading with '#' prefix (atx-style)
544
+ (r'(^#{2,6}[^#].+)(\n)', bygroups(Generic.Subheading, Text)),
545
+ # heading with '=' underlines (Setext-style)
546
+ (r'^(.+)(\n)(=+)(\n)', bygroups(Generic.Heading, Text, Generic.Heading, Text)),
547
+ # subheading with '-' underlines (Setext-style)
548
+ (r'^(.+)(\n)(-+)(\n)', bygroups(Generic.Subheading, Text, Generic.Subheading, Text)),
551
549
  # task list
552
550
  (r'^(\s*)([*-] )(\[[ xX]\])( .+\n)',
553
551
  bygroups(Text, Keyword, Keyword, using(this, state='inline'))),
554
- # bulleted lists
552
+ # bulleted list
555
553
  (r'^(\s*)([*-])(\s)(.+\n)',
556
554
  bygroups(Text, Keyword, Text, using(this, state='inline'))),
557
- # numbered lists
555
+ # numbered list
558
556
  (r'^(\s*)([0-9]+\.)( .+\n)',
559
557
  bygroups(Text, Keyword, using(this, state='inline'))),
560
558
  # quote
561
559
  (r'^(\s*>\s)(.+\n)', bygroups(Keyword, Generic.Emph)),
560
+ # code block fenced by 3 backticks
561
+ (r'^(\s*```\n(.+\n)+\s*```$)', String.Backtick),
562
+ # code block with language
563
+ (r'^(\s*```)(\w+)(\n)([\w\W]*?)(^\s*```$)', _handle_codeblock),
564
+ # code block indented with 4 spaces or 1 tab
565
+ (r'(\n\n)((\ {4}|\t)(.+\n)+)', bygroups(Text, String.Backtick)),
566
+
567
+ include('inline'),
568
+ ],
569
+ 'inline': [
570
+ # escape
571
+ (r'\\.', Text),
572
+ # inline code
573
+ (r'([^`])(`[^`\n]+`)', bygroups(Text, String.Backtick)),
574
+ # warning: the following rules eat outer tags.
575
+ # eg. **foo _bar_ baz** => foo and baz are not recognized as bold
576
+ # bold fenced by '**'
577
+ (r'(\*\*[^* \n][^*\n]*\*\*)', bygroups(Generic.Strong)),
578
+ # # bold fenced by '__'
579
+ (r'(\_\_[^_ \n][^_\n]*\_\_)', bygroups(Generic.Strong)),
580
+ # italics fenced by '*'
581
+ (r'(\*[^* \n][^*\n]*\*)', bygroups(Generic.Emph)),
582
+ # italics fenced by '_'
583
+ (r'(\_[^_ \n][^_\n]*\_)', bygroups(Generic.Emph)),
584
+ # strikethrough
585
+ (r'([^~]*)(~~[^~]+~~)', bygroups(Text, Generic.Deleted)),
586
+ # mentions and topics (twitter and github stuff)
587
+ (r'[@#][\w/:]+', Name.Entity),
588
+ # (image?) links eg: ![Image of Yaktocat](https://octodex.github.com/images/yaktocat.png)
589
+ (r'(!?\[)([^]]+)(\])(\()([^)]+)(\))',
590
+ bygroups(Text, Name.Tag, Text, Text, Name.Attribute, Text)),
591
+ # reference-style links, e.g.:
592
+ # [an example][id]
593
+ # [id]: http://example.com/
594
+ (r'(\[)([^]]+)(\])(\[)([^]]*)(\])',
595
+ bygroups(Text, Name.Tag, Text, Text, Name.Label, Text)),
596
+ (r'^(\s*\[)([^]]*)(\]:\s*)(.+)',
597
+ bygroups(Text, Name.Label, Text, Name.Attribute)),
598
+
599
+ # general text, must come last!
600
+ (r'[^\\\s]+', Text),
601
+ (r'.', Text),
602
+ ],
603
+ }
604
+
605
+ def __init__(self, **options):
606
+ self.handlecodeblocks = get_bool_opt(options, 'handlecodeblocks', True)
607
+ RegexLexer.__init__(self, **options)
608
+
609
+
610
+ class TiddlyWiki5Lexer(RegexLexer):
611
+ """
612
+ For `TiddlyWiki5 <https://tiddlywiki.com/#TiddlerFiles>`_ markup.
613
+
614
+ .. versionadded:: 2.7
615
+ """
616
+ name = 'tiddler'
617
+ aliases = ['tid']
618
+ filenames = ['*.tid']
619
+ mimetypes = ["text/vnd.tiddlywiki"]
620
+ flags = re.MULTILINE
621
+
622
+ def _handle_codeblock(self, match):
623
+ """
624
+ match args: 1:backticks, 2:lang_name, 3:newline, 4:code, 5:backticks
625
+ """
626
+ from pygments.lexers import get_lexer_by_name
627
+
628
+ # section header
629
+ yield match.start(1), String, match.group(1)
630
+ yield match.start(2), String, match.group(2)
631
+ yield match.start(3), Text, match.group(3)
632
+
633
+ # lookup lexer if wanted and existing
634
+ lexer = None
635
+ if self.handlecodeblocks:
636
+ try:
637
+ lexer = get_lexer_by_name(match.group(2).strip())
638
+ except ClassNotFound:
639
+ pass
640
+ code = match.group(4)
641
+
642
+ # no lexer for this language. handle it like it was a code block
643
+ if lexer is None:
644
+ yield match.start(4), String, code
645
+ return
646
+
647
+ yield from do_insertions([], lexer.get_tokens_unprocessed(code))
648
+
649
+ yield match.start(5), String, match.group(5)
650
+
651
+ def _handle_cssblock(self, match):
652
+ """
653
+ match args: 1:style tag 2:newline, 3:code, 4:closing style tag
654
+ """
655
+ from pygments.lexers import get_lexer_by_name
656
+
657
+ # section header
658
+ yield match.start(1), String, match.group(1)
659
+ yield match.start(2), String, match.group(2)
660
+
661
+ lexer = None
662
+ if self.handlecodeblocks:
663
+ try:
664
+ lexer = get_lexer_by_name('css')
665
+ except ClassNotFound:
666
+ pass
667
+ code = match.group(3)
668
+
669
+ # no lexer for this language. handle it like it was a code block
670
+ if lexer is None:
671
+ yield match.start(3), String, code
672
+ return
673
+
674
+ yield from do_insertions([], lexer.get_tokens_unprocessed(code))
675
+
676
+ yield match.start(4), String, match.group(4)
677
+
678
+ tokens = {
679
+ 'root': [
680
+ # title in metadata section
681
+ (r'^(title)(:\s)(.+\n)', bygroups(Keyword, Text, Generic.Heading)),
682
+ # headings
683
+ (r'^(!)([^!].+\n)', bygroups(Generic.Heading, Text)),
684
+ (r'^(!{2,6})(.+\n)', bygroups(Generic.Subheading, Text)),
685
+ # bulleted or numbered lists or single-line block quotes
686
+ # (can be mixed)
687
+ (r'^(\s*)([*#>]+)(\s*)(.+\n)',
688
+ bygroups(Text, Keyword, Text, using(this, state='inline'))),
689
+ # multi-line block quotes
690
+ (r'^(<<<.*\n)([\w\W]*?)(^<<<.*$)', bygroups(String, Text, String)),
691
+ # table header
692
+ (r'^(\|.*?\|h)$', bygroups(Generic.Strong)),
693
+ # table footer or caption
694
+ (r'^(\|.*?\|[cf])$', bygroups(Generic.Emph)),
695
+ # table class
696
+ (r'^(\|.*?\|k)$', bygroups(Name.Tag)),
697
+ # definitions
698
+ (r'^(;.*)$', bygroups(Generic.Strong)),
562
699
  # text block
563
700
  (r'^(```\n)([\w\W]*?)(^```$)', bygroups(String, Text, String)),
564
701
  # code block with language
565
702
  (r'^(```)(\w+)(\n)([\w\W]*?)(^```$)', _handle_codeblock),
703
+ # CSS style block
704
+ (r'^(<style>)(\n)([\w\W]*?)(^</style>$)', _handle_cssblock),
566
705
 
706
+ include('keywords'),
567
707
  include('inline'),
568
708
  ],
709
+ 'keywords': [
710
+ (words((
711
+ '\\define', '\\end', 'caption', 'created', 'modified', 'tags',
712
+ 'title', 'type'), prefix=r'^', suffix=r'\b'),
713
+ Keyword),
714
+ ],
569
715
  'inline': [
570
716
  # escape
571
717
  (r'\\.', Text),
718
+ # created or modified date
719
+ (r'\d{17}', Number.Integer),
572
720
  # italics
573
- (r'(\s)([*_][^*_]+[*_])(\W|\n)', bygroups(Text, Generic.Emph, Text)),
721
+ (r'(\s)(//[^/]+//)((?=\W|\n))',
722
+ bygroups(Text, Generic.Emph, Text)),
723
+ # superscript
724
+ (r'(\s)(\^\^[^\^]+\^\^)', bygroups(Text, Generic.Emph)),
725
+ # subscript
726
+ (r'(\s)(,,[^,]+,,)', bygroups(Text, Generic.Emph)),
727
+ # underscore
728
+ (r'(\s)(__[^_]+__)', bygroups(Text, Generic.Strong)),
574
729
  # bold
575
- # warning: the following rule eats internal tags. eg. **foo _bar_ baz** bar is not italics
576
- (r'(\s)((\*\*|__).*\3)((?=\W|\n))', bygroups(Text, Generic.Strong, None, Text)),
577
- # "proper way" (r'(\s)([*_]{2}[^*_]+[*_]{2})((?=\W|\n))', bygroups(Text, Generic.Strong, Text)),
730
+ (r"(\s)(''[^']+'')((?=\W|\n))",
731
+ bygroups(Text, Generic.Strong, Text)),
578
732
  # strikethrough
579
- (r'(\s)(~~[^~]+~~)((?=\W|\n))', bygroups(Text, Generic.Deleted, Text)),
733
+ (r'(\s)(~~[^~]+~~)((?=\W|\n))',
734
+ bygroups(Text, Generic.Deleted, Text)),
735
+ # TiddlyWiki variables
736
+ (r'<<[^>]+>>', Name.Tag),
737
+ (r'\$\$[^$]+\$\$', Name.Tag),
738
+ (r'\$\([^)]+\)\$', Name.Tag),
739
+ # TiddlyWiki style or class
740
+ (r'^@@.*$', Name.Tag),
741
+ # HTML tags
742
+ (r'</?[^>]+>', Name.Tag),
580
743
  # inline code
581
744
  (r'`[^`]+`', String.Backtick),
582
- # mentions and topics (twitter and github stuff)
583
- (r'[@#][\w/:]+', Name.Entity),
584
- # (image?) links eg: ![Image of Yaktocat](https://octodex.github.com/images/yaktocat.png)
585
- (r'(!?\[)([^]]+)(\])(\()([^)]+)(\))', bygroups(Text, Name.Tag, Text, Text, Name.Attribute, Text)),
745
+ # HTML escaped symbols
746
+ (r'&\S*?;', String.Regex),
747
+ # Wiki links
748
+ (r'(\[{2})([^]\|]+)(\]{2})', bygroups(Text, Name.Tag, Text)),
749
+ # External links
750
+ (r'(\[{2})([^]\|]+)(\|)([^]\|]+)(\]{2})',
751
+ bygroups(Text, Name.Tag, Text, Name.Attribute, Text)),
752
+ # Transclusion
753
+ (r'(\{{2})([^}]+)(\}{2})', bygroups(Text, Name.Tag, Text)),
754
+ # URLs
755
+ (r'(\b.?.?tps?://[^\s"]+)', bygroups(Name.Attribute)),
586
756
 
587
757
  # general text, must come last!
588
- (r'[^\\\s]+', Text),
589
- (r'.', Text),
758
+ (r'[\w]+', Text),
759
+ (r'.', Text)
590
760
  ],
591
761
  }
592
762
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Just export lexers that were contained in this module.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -5,13 +5,14 @@
5
5
 
6
6
  Lexers for Matlab and related languages.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
12
12
  import re
13
13
 
14
- from pygments.lexer import Lexer, RegexLexer, bygroups, words, do_insertions
14
+ from pygments.lexer import Lexer, RegexLexer, bygroups, default, words, \
15
+ do_insertions
15
16
  from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
16
17
  Number, Punctuation, Generic, Whitespace
17
18
 
@@ -45,33 +46,35 @@ class MatlabLexer(RegexLexer):
45
46
  # specfun: Special Math functions
46
47
  # elmat: Elementary matrices and matrix manipulation
47
48
  #
48
- # taken from Matlab version 7.4.0.336 (R2007a)
49
+ # taken from Matlab version 9.4 (R2018a)
49
50
  #
50
51
  elfun = ("sin", "sind", "sinh", "asin", "asind", "asinh", "cos", "cosd", "cosh",
51
52
  "acos", "acosd", "acosh", "tan", "tand", "tanh", "atan", "atand", "atan2",
52
- "atanh", "sec", "secd", "sech", "asec", "asecd", "asech", "csc", "cscd",
53
+ "atan2d", "atanh", "sec", "secd", "sech", "asec", "asecd", "asech", "csc", "cscd",
53
54
  "csch", "acsc", "acscd", "acsch", "cot", "cotd", "coth", "acot", "acotd",
54
- "acoth", "hypot", "exp", "expm1", "log", "log1p", "log10", "log2", "pow2",
55
+ "acoth", "hypot", "deg2rad", "rad2deg", "exp", "expm1", "log", "log1p", "log10", "log2", "pow2",
55
56
  "realpow", "reallog", "realsqrt", "sqrt", "nthroot", "nextpow2", "abs",
56
57
  "angle", "complex", "conj", "imag", "real", "unwrap", "isreal", "cplxpair",
57
58
  "fix", "floor", "ceil", "round", "mod", "rem", "sign")
58
59
  specfun = ("airy", "besselj", "bessely", "besselh", "besseli", "besselk", "beta",
59
- "betainc", "betaln", "ellipj", "ellipke", "erf", "erfc", "erfcx",
60
- "erfinv", "expint", "gamma", "gammainc", "gammaln", "psi", "legendre",
60
+ "betainc", "betaincinv", "betaln", "ellipj", "ellipke", "erf", "erfc", "erfcx",
61
+ "erfinv", "erfcinv", "expint", "gamma", "gammainc", "gammaincinv", "gammaln", "psi", "legendre",
61
62
  "cross", "dot", "factor", "isprime", "primes", "gcd", "lcm", "rat",
62
63
  "rats", "perms", "nchoosek", "factorial", "cart2sph", "cart2pol",
63
64
  "pol2cart", "sph2cart", "hsv2rgb", "rgb2hsv")
64
- elmat = ("zeros", "ones", "eye", "repmat", "rand", "randn", "linspace", "logspace",
65
+ elmat = ("zeros", "ones", "eye", "repmat", "repelem", "linspace", "logspace",
65
66
  "freqspace", "meshgrid", "accumarray", "size", "length", "ndims", "numel",
66
- "disp", "isempty", "isequal", "isequalwithequalnans", "cat", "reshape",
67
- "diag", "blkdiag", "tril", "triu", "fliplr", "flipud", "flipdim", "rot90",
67
+ "disp", "isempty", "isequal", "isequaln", "cat", "reshape",
68
+ "diag", "blkdiag", "tril", "triu", "fliplr", "flipud", "flip", "rot90",
68
69
  "find", "end", "sub2ind", "ind2sub", "bsxfun", "ndgrid", "permute",
69
70
  "ipermute", "shiftdim", "circshift", "squeeze", "isscalar", "isvector",
70
- "ans", "eps", "realmax", "realmin", "pi", "i", "inf", "nan", "isnan",
71
- "isinf", "isfinite", "j", "why", "compan", "gallery", "hadamard", "hankel",
71
+ "isrow", "iscolumn", "ismatrix", "eps", "realmax", "realmin", "intmax", "intmin", "flintmax", "pi", "i", "inf", "nan", "isnan",
72
+ "isinf", "isfinite", "j", "true", "false", "compan", "gallery", "hadamard", "hankel",
72
73
  "hilb", "invhilb", "magic", "pascal", "rosser", "toeplitz", "vander",
73
74
  "wilkinson")
74
75
 
76
+ _operators = r'-|==|~=|<=|>=|<|>|&&|&|~|\|\|?|\.\*|\*|\+|\.\^|\.\\|\./|/|\\'
77
+
75
78
  tokens = {
76
79
  'root': [
77
80
  # line starting with '!' is sent as a system command. not sure what
@@ -79,25 +82,40 @@ class MatlabLexer(RegexLexer):
79
82
  (r'^!.*', String.Other),
80
83
  (r'%\{\s*\n', Comment.Multiline, 'blockcomment'),
81
84
  (r'%.*$', Comment),
82
- (r'^\s*function', Keyword, 'deffunc'),
83
-
84
- # from 'iskeyword' on version 7.11 (R2010):
85
- (words((
86
- 'break', 'case', 'catch', 'classdef', 'continue', 'else', 'elseif',
87
- 'end', 'enumerated', 'events', 'for', 'function', 'global', 'if',
88
- 'methods', 'otherwise', 'parfor', 'persistent', 'properties',
89
- 'return', 'spmd', 'switch', 'try', 'while'), suffix=r'\b'),
85
+ (r'^\s*function\b', Keyword, 'deffunc'),
86
+
87
+ # from 'iskeyword' on version 9.4 (R2018a):
88
+ # Check that there is no preceding dot, as keywords are valid field
89
+ # names.
90
+ (words(('break', 'case', 'catch', 'classdef', 'continue', 'else',
91
+ 'elseif', 'end', 'for', 'function',
92
+ 'global', 'if', 'otherwise', 'parfor',
93
+ 'persistent', 'return', 'spmd', 'switch',
94
+ 'try', 'while'),
95
+ prefix=r'(?<!\.)', suffix=r'\b'),
90
96
  Keyword),
91
97
 
92
98
  ("(" + "|".join(elfun + specfun + elmat) + r')\b', Name.Builtin),
93
99
 
94
100
  # line continuation with following comment:
95
- (r'\.\.\..*$', Comment),
101
+ (r'(\.\.\.)(.*)$', bygroups(Keyword, Comment)),
102
+
103
+ # command form:
104
+ # "How MATLAB Recognizes Command Syntax" specifies that an operator
105
+ # is recognized if it is either surrounded by spaces or by no
106
+ # spaces on both sides; only the former case matters for us. (This
107
+ # allows distinguishing `cd ./foo` from `cd ./ foo`.)
108
+ (r'(?:^|(?<=;))(\s*)(\w+)(\s+)(?!=|\(|(?:%s)\s+)' % _operators,
109
+ bygroups(Text, Name, Text), 'commandargs'),
96
110
 
97
111
  # operators:
98
- (r'-|==|~=|<|>|<=|>=|&&|&|~|\|\|?', Operator),
99
- # operators requiring escape for re:
100
- (r'\.\*|\*|\+|\.\^|\.\\|\.\/|\/|\\', Operator),
112
+ (_operators, Operator),
113
+
114
+ # numbers (must come before punctuation to handle `.5`; cannot use
115
+ # `\b` due to e.g. `5. + .5`).
116
+ (r'(?<!\w)((\d+\.\d*)|(\d*\.\d+))([eEf][+-]?\d+)?(?!\w)', Number.Float),
117
+ (r'\b\d+[eEf][+-]?[0-9]+\b', Number.Float),
118
+ (r'\b\d+\b', Number.Integer),
101
119
 
102
120
  # punctuation:
103
121
  (r'\[|\]|\(|\)|\{|\}|:|@|\.|,', Punctuation),
@@ -107,17 +125,12 @@ class MatlabLexer(RegexLexer):
107
125
  # (not great, but handles common cases...)
108
126
  (r'(?<=[\w)\].])\'+', Operator),
109
127
 
110
- (r'(\d+\.\d*|\d*\.\d+)([eEf][+-]?[0-9]+)?', Number.Float),
111
- (r'\d+[eEf][+-]?[0-9]+', Number.Float),
112
- (r'\d+', Number.Integer),
128
+ (r'"(""|[^"])*"', String),
113
129
 
114
130
  (r'(?<![\w)\].])\'', String, 'string'),
115
131
  (r'[a-zA-Z_]\w*', Name),
116
132
  (r'.', Text),
117
133
  ],
118
- 'string': [
119
- (r'[^\']*\'', String, '#pop')
120
- ],
121
134
  'blockcomment': [
122
135
  (r'^\s*%\}', Comment.Multiline, '#pop'),
123
136
  (r'^.*\n', Comment.Multiline),
@@ -131,12 +144,36 @@ class MatlabLexer(RegexLexer):
131
144
  # function with no args
132
145
  (r'(\s*)([a-zA-Z_]\w*)', bygroups(Text, Name.Function), '#pop'),
133
146
  ],
147
+ 'string': [
148
+ (r"[^']*'", String, '#pop'),
149
+ ],
150
+ 'commandargs': [
151
+ # If an equal sign or other operator is encountered, this
152
+ # isn't a command. It might be a variable assignment or
153
+ # comparison operation with multiple spaces before the
154
+ # equal sign or operator
155
+ (r"=", Punctuation, '#pop'),
156
+ (_operators, Operator, '#pop'),
157
+ (r"[ \t]+", Text),
158
+ ("'[^']*'", String),
159
+ (r"[^';\s]+", String),
160
+ (";", Punctuation, '#pop'),
161
+ default('#pop'),
162
+ ]
134
163
  }
135
164
 
136
165
  def analyse_text(text):
137
- if re.match('^\s*%', text, re.M): # comment
166
+ # function declaration.
167
+ first_non_comment = next((line for line in text.splitlines()
168
+ if not re.match(r'^\s*%', text)), '').strip()
169
+ if (first_non_comment.startswith('function')
170
+ and '{' not in first_non_comment):
171
+ return 1.
172
+ # comment
173
+ elif re.search(r'^\s*%', text, re.M):
138
174
  return 0.2
139
- elif re.match('^!\w+', text, re.M): # system cmd
175
+ # system cmd
176
+ elif re.search(r'^!\w+', text, re.M):
140
177
  return 0.2
141
178
 
142
179
 
@@ -158,6 +195,7 @@ class MatlabSessionLexer(Lexer):
158
195
 
159
196
  curcode = ''
160
197
  insertions = []
198
+ continuation = False
161
199
 
162
200
  for match in line_re.finditer(text):
163
201
  line = match.group()
@@ -180,21 +218,36 @@ class MatlabSessionLexer(Lexer):
180
218
  # line = "\n" + line
181
219
  token = (0, Generic.Traceback, line)
182
220
  insertions.append((idx, [token]))
183
-
221
+ elif continuation:
222
+ # line_start is the length of the most recent prompt symbol
223
+ line_start = len(insertions[-1][-1][-1])
224
+ # Set leading spaces with the length of the prompt to be a generic prompt
225
+ # This keeps code aligned when prompts are removed, say with some Javascript
226
+ if line.startswith(' '*line_start):
227
+ insertions.append((len(curcode),
228
+ [(0, Generic.Prompt, line[:line_start])]))
229
+ curcode += line[line_start:]
230
+ else:
231
+ curcode += line
184
232
  else:
185
233
  if curcode:
186
- for item in do_insertions(
187
- insertions, mlexer.get_tokens_unprocessed(curcode)):
188
- yield item
234
+ yield from do_insertions(
235
+ insertions, mlexer.get_tokens_unprocessed(curcode))
189
236
  curcode = ''
190
237
  insertions = []
191
238
 
192
239
  yield match.start(), Generic.Output, line
193
240
 
241
+ # Does not allow continuation if a comment is included after the ellipses.
242
+ # Continues any line that ends with ..., even comments (lines that start with %)
243
+ if line.strip().endswith('...'):
244
+ continuation = True
245
+ else:
246
+ continuation = False
247
+
194
248
  if curcode: # or item:
195
- for item in do_insertions(
196
- insertions, mlexer.get_tokens_unprocessed(curcode)):
197
- yield item
249
+ yield from do_insertions(
250
+ insertions, mlexer.get_tokens_unprocessed(curcode))
198
251
 
199
252
 
200
253
  class OctaveLexer(RegexLexer):
@@ -536,7 +589,7 @@ class OctaveLexer(RegexLexer):
536
589
  'root': [
537
590
  # We should look into multiline comments
538
591
  (r'[%#].*$', Comment),
539
- (r'^\s*function', Keyword, 'deffunc'),
592
+ (r'^\s*function\b', Keyword, 'deffunc'),
540
593
 
541
594
  # from 'iskeyword' on hg changeset 8cc154f45e37
542
595
  (words((
@@ -594,6 +647,10 @@ class OctaveLexer(RegexLexer):
594
647
  ],
595
648
  }
596
649
 
650
+ def analyse_text(text):
651
+ """Octave is quite hard to spot, and it looks like Matlab as well."""
652
+ return 0
653
+
597
654
 
598
655
  class ScilabLexer(RegexLexer):
599
656
  """
@@ -609,7 +666,7 @@ class ScilabLexer(RegexLexer):
609
666
  tokens = {
610
667
  'root': [
611
668
  (r'//.*?$', Comment.Single),
612
- (r'^\s*function', Keyword, 'deffunc'),
669
+ (r'^\s*function\b', Keyword, 'deffunc'),
613
670
 
614
671
  (words((
615
672
  '__FILE__', '__LINE__', 'break', 'case', 'catch', 'classdef', 'continue', 'do', 'else',