pygments.rb 1.2.1 → 2.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (378) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ci.yml +28 -0
  4. data/.github/workflows/release.yml +24 -0
  5. data/.gitignore +5 -6
  6. data/CHANGELOG.adoc +119 -0
  7. data/Gemfile +3 -1
  8. data/LICENSE +1 -1
  9. data/README.adoc +161 -0
  10. data/Rakefile +10 -21
  11. data/bench.rb +8 -7
  12. data/cache-lexers.rb +3 -2
  13. data/lib/pygments.rb +10 -11
  14. data/lib/pygments/lexer.rb +5 -5
  15. data/lib/pygments/mentos.py +23 -66
  16. data/lib/pygments/popen.rb +152 -204
  17. data/lib/pygments/version.rb +2 -2
  18. data/pygments.rb.gemspec +11 -9
  19. data/test/test_pygments.rb +51 -84
  20. data/vendor/pygments-main/{AUTHORS → Pygments-2.7.3.dist-info/AUTHORS} +21 -3
  21. data/vendor/pygments-main/Pygments-2.7.3.dist-info/INSTALLER +1 -0
  22. data/vendor/pygments-main/{LICENSE → Pygments-2.7.3.dist-info/LICENSE} +1 -1
  23. data/vendor/pygments-main/Pygments-2.7.3.dist-info/METADATA +49 -0
  24. data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +482 -0
  25. data/vendor/pygments-main/Pygments-2.7.3.dist-info/REQUESTED +0 -0
  26. data/vendor/pygments-main/Pygments-2.7.3.dist-info/WHEEL +5 -0
  27. data/vendor/pygments-main/Pygments-2.7.3.dist-info/entry_points.txt +3 -0
  28. data/vendor/pygments-main/Pygments-2.7.3.dist-info/top_level.txt +1 -0
  29. data/vendor/pygments-main/bin/pygmentize +8 -0
  30. data/vendor/pygments-main/pygments/__init__.py +6 -11
  31. data/vendor/pygments-main/pygments/__main__.py +18 -0
  32. data/vendor/pygments-main/pygments/cmdline.py +38 -29
  33. data/vendor/pygments-main/pygments/console.py +6 -9
  34. data/vendor/pygments-main/pygments/filter.py +4 -6
  35. data/vendor/pygments-main/pygments/filters/__init__.py +609 -21
  36. data/vendor/pygments-main/pygments/formatter.py +4 -4
  37. data/vendor/pygments-main/pygments/formatters/__init__.py +9 -8
  38. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -3
  39. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  40. data/vendor/pygments-main/pygments/formatters/html.py +223 -135
  41. data/vendor/pygments-main/pygments/formatters/img.py +68 -41
  42. data/vendor/pygments-main/pygments/formatters/irc.py +39 -39
  43. data/vendor/pygments-main/pygments/formatters/latex.py +56 -26
  44. data/vendor/pygments-main/pygments/formatters/other.py +12 -8
  45. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -29
  46. data/vendor/pygments-main/pygments/formatters/svg.py +38 -4
  47. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -31
  48. data/vendor/pygments-main/pygments/formatters/terminal256.py +22 -12
  49. data/vendor/pygments-main/pygments/lexer.py +41 -39
  50. data/vendor/pygments-main/pygments/lexers/__init__.py +342 -0
  51. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1645 -0
  52. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +232 -0
  53. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +71 -0
  54. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1725 -0
  55. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +5327 -0
  56. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +293 -0
  57. data/vendor/pygments-main/pygments/lexers/_mapping.py +551 -0
  58. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1172 -0
  59. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1282 -0
  60. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +2547 -0
  61. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +4753 -0
  62. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +678 -0
  63. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3094 -0
  64. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1161 -0
  65. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +558 -0
  66. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +421 -0
  67. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1004 -0
  68. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +113 -0
  69. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +280 -0
  70. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1939 -0
  71. data/vendor/pygments-main/pygments/lexers/actionscript.py +245 -0
  72. data/vendor/pygments-main/pygments/lexers/agile.py +24 -0
  73. data/vendor/pygments-main/pygments/lexers/algebra.py +240 -0
  74. data/vendor/pygments-main/pygments/lexers/ambient.py +76 -0
  75. data/vendor/pygments-main/pygments/lexers/ampl.py +87 -0
  76. data/vendor/pygments-main/pygments/lexers/apl.py +101 -0
  77. data/vendor/pygments-main/pygments/lexers/archetype.py +318 -0
  78. data/vendor/pygments-main/pygments/lexers/arrow.py +117 -0
  79. data/vendor/pygments-main/pygments/lexers/asm.py +1005 -0
  80. data/vendor/pygments-main/pygments/lexers/automation.py +374 -0
  81. data/vendor/pygments-main/pygments/lexers/bare.py +104 -0
  82. data/vendor/pygments-main/pygments/lexers/basic.py +662 -0
  83. data/vendor/pygments-main/pygments/lexers/bibtex.py +160 -0
  84. data/vendor/pygments-main/pygments/lexers/boa.py +102 -0
  85. data/vendor/pygments-main/pygments/lexers/business.py +627 -0
  86. data/vendor/pygments-main/pygments/lexers/c_cpp.py +344 -0
  87. data/vendor/pygments-main/pygments/lexers/c_like.py +566 -0
  88. data/vendor/pygments-main/pygments/lexers/capnproto.py +78 -0
  89. data/vendor/pygments-main/pygments/lexers/chapel.py +112 -0
  90. data/vendor/pygments-main/pygments/lexers/clean.py +179 -0
  91. data/vendor/pygments-main/pygments/lexers/compiled.py +34 -0
  92. data/vendor/pygments-main/pygments/lexers/configs.py +984 -0
  93. data/vendor/pygments-main/pygments/lexers/console.py +114 -0
  94. data/vendor/pygments-main/pygments/lexers/crystal.py +392 -0
  95. data/vendor/pygments-main/pygments/lexers/csound.py +467 -0
  96. data/vendor/pygments-main/pygments/lexers/css.py +691 -0
  97. data/vendor/pygments-main/pygments/lexers/d.py +256 -0
  98. data/vendor/pygments-main/pygments/lexers/dalvik.py +125 -0
  99. data/vendor/pygments-main/pygments/lexers/data.py +698 -0
  100. data/vendor/pygments-main/pygments/lexers/devicetree.py +109 -0
  101. data/vendor/pygments-main/pygments/lexers/diff.py +165 -0
  102. data/vendor/pygments-main/pygments/lexers/dotnet.py +707 -0
  103. data/vendor/pygments-main/pygments/lexers/dsls.py +960 -0
  104. data/vendor/pygments-main/pygments/lexers/dylan.py +287 -0
  105. data/vendor/pygments-main/pygments/lexers/ecl.py +139 -0
  106. data/vendor/pygments-main/pygments/lexers/eiffel.py +65 -0
  107. data/vendor/pygments-main/pygments/lexers/elm.py +121 -0
  108. data/vendor/pygments-main/pygments/lexers/email.py +151 -0
  109. data/vendor/pygments-main/pygments/lexers/erlang.py +530 -0
  110. data/vendor/pygments-main/pygments/lexers/esoteric.py +304 -0
  111. data/vendor/pygments-main/pygments/lexers/ezhil.py +77 -0
  112. data/vendor/pygments-main/pygments/lexers/factor.py +344 -0
  113. data/vendor/pygments-main/pygments/lexers/fantom.py +250 -0
  114. data/vendor/pygments-main/pygments/lexers/felix.py +273 -0
  115. data/vendor/pygments-main/pygments/lexers/floscript.py +83 -0
  116. data/vendor/pygments-main/pygments/lexers/forth.py +178 -0
  117. data/vendor/pygments-main/pygments/lexers/fortran.py +206 -0
  118. data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
  119. data/vendor/pygments-main/pygments/lexers/freefem.py +898 -0
  120. data/vendor/pygments-main/pygments/lexers/functional.py +21 -0
  121. data/vendor/pygments-main/pygments/lexers/gdscript.py +346 -0
  122. data/vendor/pygments-main/pygments/lexers/go.py +101 -0
  123. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +270 -0
  124. data/vendor/pygments-main/pygments/lexers/graph.py +85 -0
  125. data/vendor/pygments-main/pygments/lexers/graphics.py +800 -0
  126. data/vendor/pygments-main/pygments/lexers/haskell.py +870 -0
  127. data/vendor/pygments-main/pygments/lexers/haxe.py +936 -0
  128. data/vendor/pygments-main/pygments/lexers/hdl.py +472 -0
  129. data/vendor/pygments-main/pygments/lexers/hexdump.py +103 -0
  130. data/vendor/pygments-main/pygments/lexers/html.py +614 -0
  131. data/vendor/pygments-main/pygments/lexers/idl.py +281 -0
  132. data/vendor/pygments-main/pygments/lexers/igor.py +420 -0
  133. data/vendor/pygments-main/pygments/lexers/inferno.py +96 -0
  134. data/vendor/pygments-main/pygments/lexers/installers.py +322 -0
  135. data/vendor/pygments-main/pygments/lexers/int_fiction.py +1368 -0
  136. data/vendor/pygments-main/pygments/lexers/iolang.py +63 -0
  137. data/vendor/pygments-main/pygments/lexers/j.py +146 -0
  138. data/vendor/pygments-main/pygments/lexers/javascript.py +1540 -0
  139. data/vendor/pygments-main/pygments/lexers/julia.py +331 -0
  140. data/vendor/pygments-main/pygments/lexers/jvm.py +1673 -0
  141. data/vendor/pygments-main/pygments/lexers/lisp.py +2699 -0
  142. data/vendor/pygments-main/pygments/lexers/make.py +206 -0
  143. data/vendor/pygments-main/pygments/lexers/markup.py +765 -0
  144. data/vendor/pygments-main/pygments/lexers/math.py +21 -0
  145. data/vendor/pygments-main/pygments/lexers/matlab.py +720 -0
  146. data/vendor/pygments-main/pygments/lexers/mime.py +226 -0
  147. data/vendor/pygments-main/pygments/lexers/ml.py +958 -0
  148. data/vendor/pygments-main/pygments/lexers/modeling.py +366 -0
  149. data/vendor/pygments-main/pygments/lexers/modula2.py +1580 -0
  150. data/vendor/pygments-main/pygments/lexers/monte.py +204 -0
  151. data/vendor/pygments-main/pygments/lexers/mosel.py +448 -0
  152. data/vendor/pygments-main/pygments/lexers/ncl.py +894 -0
  153. data/vendor/pygments-main/pygments/lexers/nimrod.py +159 -0
  154. data/vendor/pygments-main/pygments/lexers/nit.py +64 -0
  155. data/vendor/pygments-main/pygments/lexers/nix.py +136 -0
  156. data/vendor/pygments-main/pygments/lexers/oberon.py +121 -0
  157. data/vendor/pygments-main/pygments/lexers/objective.py +504 -0
  158. data/vendor/pygments-main/pygments/lexers/ooc.py +85 -0
  159. data/vendor/pygments-main/pygments/lexers/other.py +41 -0
  160. data/vendor/pygments-main/pygments/lexers/parasail.py +79 -0
  161. data/vendor/pygments-main/pygments/lexers/parsers.py +800 -0
  162. data/vendor/pygments-main/pygments/lexers/pascal.py +644 -0
  163. data/vendor/pygments-main/pygments/lexers/pawn.py +205 -0
  164. data/vendor/pygments-main/pygments/lexers/perl.py +732 -0
  165. data/vendor/pygments-main/pygments/lexers/php.py +321 -0
  166. data/vendor/pygments-main/pygments/lexers/pointless.py +71 -0
  167. data/vendor/pygments-main/pygments/lexers/pony.py +94 -0
  168. data/vendor/pygments-main/pygments/lexers/praat.py +302 -0
  169. data/vendor/pygments-main/pygments/lexers/prolog.py +306 -0
  170. data/vendor/pygments-main/pygments/lexers/promql.py +183 -0
  171. data/vendor/pygments-main/pygments/lexers/python.py +1151 -0
  172. data/vendor/pygments-main/pygments/lexers/qvt.py +152 -0
  173. data/vendor/pygments-main/pygments/lexers/r.py +191 -0
  174. data/vendor/pygments-main/pygments/lexers/rdf.py +463 -0
  175. data/vendor/pygments-main/pygments/lexers/rebol.py +431 -0
  176. data/vendor/pygments-main/pygments/lexers/resource.py +85 -0
  177. data/vendor/pygments-main/pygments/lexers/ride.py +139 -0
  178. data/vendor/pygments-main/pygments/lexers/rnc.py +67 -0
  179. data/vendor/pygments-main/pygments/lexers/roboconf.py +82 -0
  180. data/vendor/pygments-main/pygments/lexers/robotframework.py +552 -0
  181. data/vendor/pygments-main/pygments/lexers/ruby.py +517 -0
  182. data/vendor/pygments-main/pygments/lexers/rust.py +224 -0
  183. data/vendor/pygments-main/pygments/lexers/sas.py +228 -0
  184. data/vendor/pygments-main/pygments/lexers/scdoc.py +83 -0
  185. data/vendor/pygments-main/pygments/lexers/scripting.py +1284 -0
  186. data/vendor/pygments-main/pygments/lexers/sgf.py +61 -0
  187. data/vendor/pygments-main/pygments/lexers/shell.py +914 -0
  188. data/vendor/pygments-main/pygments/lexers/sieve.py +69 -0
  189. data/vendor/pygments-main/pygments/lexers/slash.py +185 -0
  190. data/vendor/pygments-main/pygments/lexers/smalltalk.py +195 -0
  191. data/vendor/pygments-main/pygments/lexers/smv.py +79 -0
  192. data/vendor/pygments-main/pygments/lexers/snobol.py +83 -0
  193. data/vendor/pygments-main/pygments/lexers/solidity.py +92 -0
  194. data/vendor/pygments-main/pygments/lexers/special.py +105 -0
  195. data/vendor/pygments-main/pygments/lexers/sql.py +837 -0
  196. data/vendor/pygments-main/pygments/lexers/stata.py +171 -0
  197. data/vendor/pygments-main/pygments/lexers/supercollider.py +95 -0
  198. data/vendor/pygments-main/pygments/lexers/tcl.py +145 -0
  199. data/vendor/pygments-main/pygments/lexers/templates.py +2264 -0
  200. data/vendor/pygments-main/pygments/lexers/teraterm.py +335 -0
  201. data/vendor/pygments-main/pygments/lexers/testing.py +207 -0
  202. data/vendor/pygments-main/pygments/lexers/text.py +26 -0
  203. data/vendor/pygments-main/pygments/lexers/textedit.py +169 -0
  204. data/vendor/pygments-main/pygments/lexers/textfmts.py +430 -0
  205. data/vendor/pygments-main/pygments/lexers/theorem.py +474 -0
  206. data/vendor/pygments-main/pygments/lexers/tnt.py +263 -0
  207. data/vendor/pygments-main/pygments/lexers/trafficscript.py +54 -0
  208. data/vendor/pygments-main/pygments/lexers/typoscript.py +219 -0
  209. data/vendor/pygments-main/pygments/lexers/unicon.py +412 -0
  210. data/vendor/pygments-main/pygments/lexers/urbi.py +146 -0
  211. data/vendor/pygments-main/pygments/lexers/usd.py +90 -0
  212. data/vendor/pygments-main/pygments/lexers/varnish.py +190 -0
  213. data/vendor/pygments-main/pygments/lexers/verification.py +114 -0
  214. data/vendor/pygments-main/pygments/lexers/web.py +24 -0
  215. data/vendor/pygments-main/pygments/lexers/webidl.py +299 -0
  216. data/vendor/pygments-main/pygments/lexers/webmisc.py +991 -0
  217. data/vendor/pygments-main/pygments/lexers/whiley.py +116 -0
  218. data/vendor/pygments-main/pygments/lexers/x10.py +69 -0
  219. data/vendor/pygments-main/pygments/lexers/xorg.py +37 -0
  220. data/vendor/pygments-main/pygments/lexers/yang.py +104 -0
  221. data/vendor/pygments-main/pygments/lexers/zig.py +124 -0
  222. data/vendor/pygments-main/pygments/modeline.py +1 -1
  223. data/vendor/pygments-main/pygments/plugin.py +4 -2
  224. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  225. data/vendor/pygments-main/pygments/scanner.py +2 -2
  226. data/vendor/pygments-main/pygments/sphinxext.py +2 -4
  227. data/vendor/pygments-main/pygments/style.py +61 -24
  228. data/vendor/pygments-main/pygments/styles/__init__.py +10 -4
  229. data/vendor/pygments-main/pygments/styles/abap.py +1 -1
  230. data/vendor/pygments-main/pygments/styles/algol.py +1 -1
  231. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -1
  232. data/vendor/pygments-main/pygments/styles/arduino.py +2 -2
  233. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  234. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  235. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  236. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  237. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  238. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  239. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  240. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  241. data/vendor/pygments-main/pygments/styles/igor.py +1 -1
  242. data/vendor/pygments-main/pygments/styles/inkpot.py +67 -0
  243. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -1
  244. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  245. data/vendor/pygments-main/pygments/styles/monokai.py +4 -3
  246. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  247. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  248. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -1
  249. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -1
  250. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  251. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  252. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -1
  253. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  254. data/vendor/pygments-main/pygments/styles/sas.py +1 -1
  255. data/vendor/pygments-main/pygments/styles/solarized.py +134 -0
  256. data/vendor/pygments-main/pygments/styles/stata_dark.py +41 -0
  257. data/vendor/pygments-main/pygments/styles/{stata.py → stata_light.py} +14 -15
  258. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  259. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  260. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  261. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  262. data/vendor/pygments-main/pygments/styles/xcode.py +1 -1
  263. data/vendor/pygments-main/pygments/token.py +1 -1
  264. data/vendor/pygments-main/pygments/unistring.py +47 -108
  265. data/vendor/pygments-main/pygments/util.py +15 -92
  266. metadata +69 -136
  267. data/CHANGELOG.md +0 -111
  268. data/README.md +0 -121
  269. data/circle.yml +0 -20
  270. data/test/test_data.py +0 -514
  271. data/test/test_data_generated +0 -2582
  272. data/vendor/custom_lexers/github.py +0 -565
  273. data/vendor/pygments-main/CHANGES +0 -1186
  274. data/vendor/pygments-main/MANIFEST.in +0 -6
  275. data/vendor/pygments-main/Makefile +0 -65
  276. data/vendor/pygments-main/README.rst +0 -39
  277. data/vendor/pygments-main/REVISION +0 -1
  278. data/vendor/pygments-main/TODO +0 -12
  279. data/vendor/pygments-main/doc/Makefile +0 -153
  280. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  281. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  282. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  283. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  284. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  285. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  286. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  287. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  288. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  289. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  290. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  291. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  292. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  293. data/vendor/pygments-main/doc/conf.py +0 -241
  294. data/vendor/pygments-main/doc/docs/api.rst +0 -354
  295. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  296. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  297. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -166
  298. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  299. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  300. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  301. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  302. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  303. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  304. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  305. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -728
  306. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  307. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  308. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  309. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  310. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  311. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  312. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  313. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  314. data/vendor/pygments-main/doc/download.rst +0 -41
  315. data/vendor/pygments-main/doc/faq.rst +0 -139
  316. data/vendor/pygments-main/doc/index.rst +0 -54
  317. data/vendor/pygments-main/doc/languages.rst +0 -154
  318. data/vendor/pygments-main/doc/make.bat +0 -190
  319. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  320. data/vendor/pygments-main/external/autopygmentize +0 -101
  321. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  322. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  323. data/vendor/pygments-main/external/moin-parser.py +0 -112
  324. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  325. data/vendor/pygments-main/external/rst-directive.py +0 -82
  326. data/vendor/pygments-main/pygmentize +0 -8
  327. data/vendor/pygments-main/requirements.txt +0 -5
  328. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  329. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  330. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  331. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  332. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  333. data/vendor/pygments-main/scripts/pylintrc +0 -301
  334. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  335. data/vendor/pygments-main/setup.cfg +0 -10
  336. data/vendor/pygments-main/setup.py +0 -77
  337. data/vendor/pygments-main/tox.ini +0 -7
  338. data/vendor/simplejson/.gitignore +0 -10
  339. data/vendor/simplejson/.travis.yml +0 -5
  340. data/vendor/simplejson/CHANGES.txt +0 -291
  341. data/vendor/simplejson/LICENSE.txt +0 -19
  342. data/vendor/simplejson/MANIFEST.in +0 -5
  343. data/vendor/simplejson/README.rst +0 -19
  344. data/vendor/simplejson/conf.py +0 -179
  345. data/vendor/simplejson/index.rst +0 -628
  346. data/vendor/simplejson/scripts/make_docs.py +0 -18
  347. data/vendor/simplejson/setup.py +0 -104
  348. data/vendor/simplejson/simplejson/__init__.py +0 -510
  349. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  350. data/vendor/simplejson/simplejson/decoder.py +0 -425
  351. data/vendor/simplejson/simplejson/encoder.py +0 -567
  352. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  353. data/vendor/simplejson/simplejson/scanner.py +0 -77
  354. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  355. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  356. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  357. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  358. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  359. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  360. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  361. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  362. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  363. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  364. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  365. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  366. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  367. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  368. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  369. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  370. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  371. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  372. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  373. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  374. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  375. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  376. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  377. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  378. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -0,0 +1,206 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.lexers.make
4
+ ~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Lexers for Makefiles and similar.
7
+
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ import re
13
+
14
+ from pygments.lexer import Lexer, RegexLexer, include, bygroups, \
15
+ do_insertions, using
16
+ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
17
+ Punctuation
18
+ from pygments.lexers.shell import BashLexer
19
+
20
+ __all__ = ['MakefileLexer', 'BaseMakefileLexer', 'CMakeLexer']
21
+
22
+
23
+ class MakefileLexer(Lexer):
24
+ """
25
+ Lexer for BSD and GNU make extensions (lenient enough to handle both in
26
+ the same file even).
27
+
28
+ *Rewritten in Pygments 0.10.*
29
+ """
30
+
31
+ name = 'Makefile'
32
+ aliases = ['make', 'makefile', 'mf', 'bsdmake']
33
+ filenames = ['*.mak', '*.mk', 'Makefile', 'makefile', 'Makefile.*', 'GNUmakefile']
34
+ mimetypes = ['text/x-makefile']
35
+
36
+ r_special = re.compile(
37
+ r'^(?:'
38
+ # BSD Make
39
+ r'\.\s*(include|undef|error|warning|if|else|elif|endif|for|endfor)|'
40
+ # GNU Make
41
+ r'\s*(ifeq|ifneq|ifdef|ifndef|else|endif|-?include|define|endef|:|vpath)|'
42
+ # GNU Automake
43
+ r'\s*(if|else|endif))(?=\s)')
44
+ r_comment = re.compile(r'^\s*@?#')
45
+
46
+ def get_tokens_unprocessed(self, text):
47
+ ins = []
48
+ lines = text.splitlines(True)
49
+ done = ''
50
+ lex = BaseMakefileLexer(**self.options)
51
+ backslashflag = False
52
+ for line in lines:
53
+ if self.r_special.match(line) or backslashflag:
54
+ ins.append((len(done), [(0, Comment.Preproc, line)]))
55
+ backslashflag = line.strip().endswith('\\')
56
+ elif self.r_comment.match(line):
57
+ ins.append((len(done), [(0, Comment, line)]))
58
+ else:
59
+ done += line
60
+ yield from do_insertions(ins, lex.get_tokens_unprocessed(done))
61
+
62
+ def analyse_text(text):
63
+ # Many makefiles have $(BIG_CAPS) style variables
64
+ if re.search(r'\$\([A-Z_]+\)', text):
65
+ return 0.1
66
+
67
+
68
+ class BaseMakefileLexer(RegexLexer):
69
+ """
70
+ Lexer for simple Makefiles (no preprocessing).
71
+
72
+ .. versionadded:: 0.10
73
+ """
74
+
75
+ name = 'Base Makefile'
76
+ aliases = ['basemake']
77
+ filenames = []
78
+ mimetypes = []
79
+
80
+ tokens = {
81
+ 'root': [
82
+ # recipes (need to allow spaces because of expandtabs)
83
+ (r'^(?:[\t ]+.*\n|\n)+', using(BashLexer)),
84
+ # special variables
85
+ (r'\$[<@$+%?|*]', Keyword),
86
+ (r'\s+', Text),
87
+ (r'#.*?\n', Comment),
88
+ (r'(export)(\s+)(?=[\w${}\t -]+\n)',
89
+ bygroups(Keyword, Text), 'export'),
90
+ (r'export\s+', Keyword),
91
+ # assignment
92
+ (r'([\w${}().-]+)(\s*)([!?:+]?=)([ \t]*)((?:.*\\\n)+|.*\n)',
93
+ bygroups(Name.Variable, Text, Operator, Text, using(BashLexer))),
94
+ # strings
95
+ (r'(?s)"(\\\\|\\.|[^"\\])*"', String.Double),
96
+ (r"(?s)'(\\\\|\\.|[^'\\])*'", String.Single),
97
+ # targets
98
+ (r'([^\n:]+)(:+)([ \t]*)', bygroups(Name.Function, Operator, Text),
99
+ 'block-header'),
100
+ # expansions
101
+ (r'\$\(', Keyword, 'expansion'),
102
+ ],
103
+ 'expansion': [
104
+ (r'[^\w$().-]+', Text),
105
+ (r'[\w.-]+', Name.Variable),
106
+ (r'\$', Keyword),
107
+ (r'\(', Keyword, '#push'),
108
+ (r'\)', Keyword, '#pop'),
109
+ ],
110
+ 'export': [
111
+ (r'[\w${}-]+', Name.Variable),
112
+ (r'\n', Text, '#pop'),
113
+ (r'\s+', Text),
114
+ ],
115
+ 'block-header': [
116
+ (r'[,|]', Punctuation),
117
+ (r'#.*?\n', Comment, '#pop'),
118
+ (r'\\\n', Text), # line continuation
119
+ (r'\$\(', Keyword, 'expansion'),
120
+ (r'[a-zA-Z_]+', Name),
121
+ (r'\n', Text, '#pop'),
122
+ (r'.', Text),
123
+ ],
124
+ }
125
+
126
+
127
+ class CMakeLexer(RegexLexer):
128
+ """
129
+ Lexer for `CMake <http://cmake.org/Wiki/CMake>`_ files.
130
+
131
+ .. versionadded:: 1.2
132
+ """
133
+ name = 'CMake'
134
+ aliases = ['cmake']
135
+ filenames = ['*.cmake', 'CMakeLists.txt']
136
+ mimetypes = ['text/x-cmake']
137
+
138
+ tokens = {
139
+ 'root': [
140
+ # (r'(ADD_CUSTOM_COMMAND|ADD_CUSTOM_TARGET|ADD_DEFINITIONS|'
141
+ # r'ADD_DEPENDENCIES|ADD_EXECUTABLE|ADD_LIBRARY|ADD_SUBDIRECTORY|'
142
+ # r'ADD_TEST|AUX_SOURCE_DIRECTORY|BUILD_COMMAND|BUILD_NAME|'
143
+ # r'CMAKE_MINIMUM_REQUIRED|CONFIGURE_FILE|CREATE_TEST_SOURCELIST|'
144
+ # r'ELSE|ELSEIF|ENABLE_LANGUAGE|ENABLE_TESTING|ENDFOREACH|'
145
+ # r'ENDFUNCTION|ENDIF|ENDMACRO|ENDWHILE|EXEC_PROGRAM|'
146
+ # r'EXECUTE_PROCESS|EXPORT_LIBRARY_DEPENDENCIES|FILE|FIND_FILE|'
147
+ # r'FIND_LIBRARY|FIND_PACKAGE|FIND_PATH|FIND_PROGRAM|FLTK_WRAP_UI|'
148
+ # r'FOREACH|FUNCTION|GET_CMAKE_PROPERTY|GET_DIRECTORY_PROPERTY|'
149
+ # r'GET_FILENAME_COMPONENT|GET_SOURCE_FILE_PROPERTY|'
150
+ # r'GET_TARGET_PROPERTY|GET_TEST_PROPERTY|IF|INCLUDE|'
151
+ # r'INCLUDE_DIRECTORIES|INCLUDE_EXTERNAL_MSPROJECT|'
152
+ # r'INCLUDE_REGULAR_EXPRESSION|INSTALL|INSTALL_FILES|'
153
+ # r'INSTALL_PROGRAMS|INSTALL_TARGETS|LINK_DIRECTORIES|'
154
+ # r'LINK_LIBRARIES|LIST|LOAD_CACHE|LOAD_COMMAND|MACRO|'
155
+ # r'MAKE_DIRECTORY|MARK_AS_ADVANCED|MATH|MESSAGE|OPTION|'
156
+ # r'OUTPUT_REQUIRED_FILES|PROJECT|QT_WRAP_CPP|QT_WRAP_UI|REMOVE|'
157
+ # r'REMOVE_DEFINITIONS|SEPARATE_ARGUMENTS|SET|'
158
+ # r'SET_DIRECTORY_PROPERTIES|SET_SOURCE_FILES_PROPERTIES|'
159
+ # r'SET_TARGET_PROPERTIES|SET_TESTS_PROPERTIES|SITE_NAME|'
160
+ # r'SOURCE_GROUP|STRING|SUBDIR_DEPENDS|SUBDIRS|'
161
+ # r'TARGET_LINK_LIBRARIES|TRY_COMPILE|TRY_RUN|UNSET|'
162
+ # r'USE_MANGLED_MESA|UTILITY_SOURCE|VARIABLE_REQUIRES|'
163
+ # r'VTK_MAKE_INSTANTIATOR|VTK_WRAP_JAVA|VTK_WRAP_PYTHON|'
164
+ # r'VTK_WRAP_TCL|WHILE|WRITE_FILE|'
165
+ # r'COUNTARGS)\b', Name.Builtin, 'args'),
166
+ (r'\b(\w+)([ \t]*)(\()', bygroups(Name.Builtin, Text,
167
+ Punctuation), 'args'),
168
+ include('keywords'),
169
+ include('ws')
170
+ ],
171
+ 'args': [
172
+ (r'\(', Punctuation, '#push'),
173
+ (r'\)', Punctuation, '#pop'),
174
+ (r'(\$\{)(.+?)(\})', bygroups(Operator, Name.Variable, Operator)),
175
+ (r'(\$ENV\{)(.+?)(\})', bygroups(Operator, Name.Variable, Operator)),
176
+ (r'(\$<)(.+?)(>)', bygroups(Operator, Name.Variable, Operator)),
177
+ (r'(?s)".*?"', String.Double),
178
+ (r'\\\S+', String),
179
+ (r'[^)$"# \t\n]+', String),
180
+ (r'\n', Text), # explicitly legal
181
+ include('keywords'),
182
+ include('ws')
183
+ ],
184
+ 'string': [
185
+
186
+ ],
187
+ 'keywords': [
188
+ (r'\b(WIN32|UNIX|APPLE|CYGWIN|BORLAND|MINGW|MSVC|MSVC_IDE|MSVC60|'
189
+ r'MSVC70|MSVC71|MSVC80|MSVC90)\b', Keyword),
190
+ ],
191
+ 'ws': [
192
+ (r'[ \t]+', Text),
193
+ (r'#.*\n', Comment),
194
+ ]
195
+ }
196
+
197
+ def analyse_text(text):
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
+ )
204
+ if re.search(exp, text, flags=re.MULTILINE | re.IGNORECASE):
205
+ return 0.8
206
+ return 0.0
@@ -0,0 +1,765 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.lexers.markup
4
+ ~~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Lexers for non-HTML markup languages.
7
+
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ import re
13
+
14
+ from pygments.lexers.html import HtmlLexer, XmlLexer
15
+ from pygments.lexers.javascript import JavascriptLexer
16
+ from pygments.lexers.css import CssLexer
17
+
18
+ from pygments.lexer import RegexLexer, DelegatingLexer, include, bygroups, \
19
+ using, this, do_insertions, default, words
20
+ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
21
+ Number, Punctuation, Generic, Other
22
+ from pygments.util import get_bool_opt, ClassNotFound
23
+
24
+ __all__ = ['BBCodeLexer', 'MoinWikiLexer', 'RstLexer', 'TexLexer', 'GroffLexer',
25
+ 'MozPreprocHashLexer', 'MozPreprocPercentLexer',
26
+ 'MozPreprocXulLexer', 'MozPreprocJavascriptLexer',
27
+ 'MozPreprocCssLexer', 'MarkdownLexer', 'TiddlyWiki5Lexer']
28
+
29
+
30
+ class BBCodeLexer(RegexLexer):
31
+ """
32
+ A lexer that highlights BBCode(-like) syntax.
33
+
34
+ .. versionadded:: 0.6
35
+ """
36
+
37
+ name = 'BBCode'
38
+ aliases = ['bbcode']
39
+ mimetypes = ['text/x-bbcode']
40
+
41
+ tokens = {
42
+ 'root': [
43
+ (r'[^[]+', Text),
44
+ # tag/end tag begin
45
+ (r'\[/?\w+', Keyword, 'tag'),
46
+ # stray bracket
47
+ (r'\[', Text),
48
+ ],
49
+ 'tag': [
50
+ (r'\s+', Text),
51
+ # attribute with value
52
+ (r'(\w+)(=)("?[^\s"\]]+"?)',
53
+ bygroups(Name.Attribute, Operator, String)),
54
+ # tag argument (a la [color=green])
55
+ (r'(=)("?[^\s"\]]+"?)',
56
+ bygroups(Operator, String)),
57
+ # tag end
58
+ (r'\]', Keyword, '#pop'),
59
+ ],
60
+ }
61
+
62
+
63
+ class MoinWikiLexer(RegexLexer):
64
+ """
65
+ For MoinMoin (and Trac) Wiki markup.
66
+
67
+ .. versionadded:: 0.7
68
+ """
69
+
70
+ name = 'MoinMoin/Trac Wiki markup'
71
+ aliases = ['trac-wiki', 'moin']
72
+ filenames = []
73
+ mimetypes = ['text/x-trac-wiki']
74
+ flags = re.MULTILINE | re.IGNORECASE
75
+
76
+ tokens = {
77
+ 'root': [
78
+ (r'^#.*$', Comment),
79
+ (r'(!)(\S+)', bygroups(Keyword, Text)), # Ignore-next
80
+ # Titles
81
+ (r'^(=+)([^=]+)(=+)(\s*#.+)?$',
82
+ bygroups(Generic.Heading, using(this), Generic.Heading, String)),
83
+ # Literal code blocks, with optional shebang
84
+ (r'(\{\{\{)(\n#!.+)?', bygroups(Name.Builtin, Name.Namespace), 'codeblock'),
85
+ (r'(\'\'\'?|\|\||`|__|~~|\^|,,|::)', Comment), # Formatting
86
+ # Lists
87
+ (r'^( +)([.*-])( )', bygroups(Text, Name.Builtin, Text)),
88
+ (r'^( +)([a-z]{1,5}\.)( )', bygroups(Text, Name.Builtin, Text)),
89
+ # Other Formatting
90
+ (r'\[\[\w+.*?\]\]', Keyword), # Macro
91
+ (r'(\[[^\s\]]+)(\s+[^\]]+?)?(\])',
92
+ bygroups(Keyword, String, Keyword)), # Link
93
+ (r'^----+$', Keyword), # Horizontal rules
94
+ (r'[^\n\'\[{!_~^,|]+', Text),
95
+ (r'\n', Text),
96
+ (r'.', Text),
97
+ ],
98
+ 'codeblock': [
99
+ (r'\}\}\}', Name.Builtin, '#pop'),
100
+ # these blocks are allowed to be nested in Trac, but not MoinMoin
101
+ (r'\{\{\{', Text, '#push'),
102
+ (r'[^{}]+', Comment.Preproc), # slurp boring text
103
+ (r'.', Comment.Preproc), # allow loose { or }
104
+ ],
105
+ }
106
+
107
+
108
+ class RstLexer(RegexLexer):
109
+ """
110
+ For `reStructuredText <http://docutils.sf.net/rst.html>`_ markup.
111
+
112
+ .. versionadded:: 0.7
113
+
114
+ Additional options accepted:
115
+
116
+ `handlecodeblocks`
117
+ Highlight the contents of ``.. sourcecode:: language``,
118
+ ``.. code:: language`` and ``.. code-block:: language``
119
+ directives with a lexer for the given language (default:
120
+ ``True``).
121
+
122
+ .. versionadded:: 0.8
123
+ """
124
+ name = 'reStructuredText'
125
+ aliases = ['rst', 'rest', 'restructuredtext']
126
+ filenames = ['*.rst', '*.rest']
127
+ mimetypes = ["text/x-rst", "text/prs.fallenstein.rst"]
128
+ flags = re.MULTILINE
129
+
130
+ def _handle_sourcecode(self, match):
131
+ from pygments.lexers import get_lexer_by_name
132
+
133
+ # section header
134
+ yield match.start(1), Punctuation, match.group(1)
135
+ yield match.start(2), Text, match.group(2)
136
+ yield match.start(3), Operator.Word, match.group(3)
137
+ yield match.start(4), Punctuation, match.group(4)
138
+ yield match.start(5), Text, match.group(5)
139
+ yield match.start(6), Keyword, match.group(6)
140
+ yield match.start(7), Text, match.group(7)
141
+
142
+ # lookup lexer if wanted and existing
143
+ lexer = None
144
+ if self.handlecodeblocks:
145
+ try:
146
+ lexer = get_lexer_by_name(match.group(6).strip())
147
+ except ClassNotFound:
148
+ pass
149
+ indention = match.group(8)
150
+ indention_size = len(indention)
151
+ code = (indention + match.group(9) + match.group(10) + match.group(11))
152
+
153
+ # no lexer for this language. handle it like it was a code block
154
+ if lexer is None:
155
+ yield match.start(8), String, code
156
+ return
157
+
158
+ # highlight the lines with the lexer.
159
+ ins = []
160
+ codelines = code.splitlines(True)
161
+ code = ''
162
+ for line in codelines:
163
+ if len(line) > indention_size:
164
+ ins.append((len(code), [(0, Text, line[:indention_size])]))
165
+ code += line[indention_size:]
166
+ else:
167
+ code += line
168
+ yield from do_insertions(ins, lexer.get_tokens_unprocessed(code))
169
+
170
+ # from docutils.parsers.rst.states
171
+ closers = '\'")]}>\u2019\u201d\xbb!?'
172
+ unicode_delimiters = '\u2010\u2011\u2012\u2013\u2014\u00a0'
173
+ end_string_suffix = (r'((?=$)|(?=[-/:.,; \n\x00%s%s]))'
174
+ % (re.escape(unicode_delimiters),
175
+ re.escape(closers)))
176
+
177
+ tokens = {
178
+ 'root': [
179
+ # Heading with overline
180
+ (r'^(=+|-+|`+|:+|\.+|\'+|"+|~+|\^+|_+|\*+|\++|#+)([ \t]*\n)'
181
+ r'(.+)(\n)(\1)(\n)',
182
+ bygroups(Generic.Heading, Text, Generic.Heading,
183
+ Text, Generic.Heading, Text)),
184
+ # Plain heading
185
+ (r'^(\S.*)(\n)(={3,}|-{3,}|`{3,}|:{3,}|\.{3,}|\'{3,}|"{3,}|'
186
+ r'~{3,}|\^{3,}|_{3,}|\*{3,}|\+{3,}|#{3,})(\n)',
187
+ bygroups(Generic.Heading, Text, Generic.Heading, Text)),
188
+ # Bulleted lists
189
+ (r'^(\s*)([-*+])( .+\n(?:\1 .+\n)*)',
190
+ bygroups(Text, Number, using(this, state='inline'))),
191
+ # Numbered lists
192
+ (r'^(\s*)([0-9#ivxlcmIVXLCM]+\.)( .+\n(?:\1 .+\n)*)',
193
+ bygroups(Text, Number, using(this, state='inline'))),
194
+ (r'^(\s*)(\(?[0-9#ivxlcmIVXLCM]+\))( .+\n(?:\1 .+\n)*)',
195
+ bygroups(Text, Number, using(this, state='inline'))),
196
+ # Numbered, but keep words at BOL from becoming lists
197
+ (r'^(\s*)([A-Z]+\.)( .+\n(?:\1 .+\n)+)',
198
+ bygroups(Text, Number, using(this, state='inline'))),
199
+ (r'^(\s*)(\(?[A-Za-z]+\))( .+\n(?:\1 .+\n)+)',
200
+ bygroups(Text, Number, using(this, state='inline'))),
201
+ # Line blocks
202
+ (r'^(\s*)(\|)( .+\n(?:\| .+\n)*)',
203
+ bygroups(Text, Operator, using(this, state='inline'))),
204
+ # Sourcecode directives
205
+ (r'^( *\.\.)(\s*)((?:source)?code(?:-block)?)(::)([ \t]*)([^\n]+)'
206
+ r'(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\8.*)?\n)+)',
207
+ _handle_sourcecode),
208
+ # A directive
209
+ (r'^( *\.\.)(\s*)([\w:-]+?)(::)(?:([ \t]*)(.*))',
210
+ bygroups(Punctuation, Text, Operator.Word, Punctuation, Text,
211
+ using(this, state='inline'))),
212
+ # A reference target
213
+ (r'^( *\.\.)(\s*)(_(?:[^:\\]|\\.)+:)(.*?)$',
214
+ bygroups(Punctuation, Text, Name.Tag, using(this, state='inline'))),
215
+ # A footnote/citation target
216
+ (r'^( *\.\.)(\s*)(\[.+\])(.*?)$',
217
+ bygroups(Punctuation, Text, Name.Tag, using(this, state='inline'))),
218
+ # A substitution def
219
+ (r'^( *\.\.)(\s*)(\|.+\|)(\s*)([\w:-]+?)(::)(?:([ \t]*)(.*))',
220
+ bygroups(Punctuation, Text, Name.Tag, Text, Operator.Word,
221
+ Punctuation, Text, using(this, state='inline'))),
222
+ # Comments
223
+ (r'^ *\.\..*(\n( +.*\n|\n)+)?', Comment.Preproc),
224
+ # Field list marker
225
+ (r'^( *)(:(?:\\\\|\\:|[^:\n])+:(?=\s))([ \t]*)',
226
+ bygroups(Text, Name.Class, Text)),
227
+ # Definition list
228
+ (r'^(\S.*(?<!::)\n)((?:(?: +.*)\n)+)',
229
+ bygroups(using(this, state='inline'), using(this, state='inline'))),
230
+ # Code blocks
231
+ (r'(::)(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\3.*)?\n)+)',
232
+ bygroups(String.Escape, Text, String, String, Text, String)),
233
+ include('inline'),
234
+ ],
235
+ 'inline': [
236
+ (r'\\.', Text), # escape
237
+ (r'``', String, 'literal'), # code
238
+ (r'(`.+?)(<.+?>)(`__?)', # reference with inline target
239
+ bygroups(String, String.Interpol, String)),
240
+ (r'`.+?`__?', String), # reference
241
+ (r'(`.+?`)(:[a-zA-Z0-9:-]+?:)?',
242
+ bygroups(Name.Variable, Name.Attribute)), # role
243
+ (r'(:[a-zA-Z0-9:-]+?:)(`.+?`)',
244
+ bygroups(Name.Attribute, Name.Variable)), # role (content first)
245
+ (r'\*\*.+?\*\*', Generic.Strong), # Strong emphasis
246
+ (r'\*.+?\*', Generic.Emph), # Emphasis
247
+ (r'\[.*?\]_', String), # Footnote or citation
248
+ (r'<.+?>', Name.Tag), # Hyperlink
249
+ (r'[^\\\n\[*`:]+', Text),
250
+ (r'.', Text),
251
+ ],
252
+ 'literal': [
253
+ (r'[^`]+', String),
254
+ (r'``' + end_string_suffix, String, '#pop'),
255
+ (r'`', String),
256
+ ]
257
+ }
258
+
259
+ def __init__(self, **options):
260
+ self.handlecodeblocks = get_bool_opt(options, 'handlecodeblocks', True)
261
+ RegexLexer.__init__(self, **options)
262
+
263
+ def analyse_text(text):
264
+ if text[:2] == '..' and text[2:3] != '.':
265
+ return 0.3
266
+ p1 = text.find("\n")
267
+ p2 = text.find("\n", p1 + 1)
268
+ if (p2 > -1 and # has two lines
269
+ p1 * 2 + 1 == p2 and # they are the same length
270
+ text[p1+1] in '-=' and # the next line both starts and ends with
271
+ text[p1+1] == text[p2-1]): # ...a sufficiently high header
272
+ return 0.5
273
+
274
+
275
+ class TexLexer(RegexLexer):
276
+ """
277
+ Lexer for the TeX and LaTeX typesetting languages.
278
+ """
279
+
280
+ name = 'TeX'
281
+ aliases = ['tex', 'latex']
282
+ filenames = ['*.tex', '*.aux', '*.toc']
283
+ mimetypes = ['text/x-tex', 'text/x-latex']
284
+
285
+ tokens = {
286
+ 'general': [
287
+ (r'%.*?\n', Comment),
288
+ (r'[{}]', Name.Builtin),
289
+ (r'[&_^]', Name.Builtin),
290
+ ],
291
+ 'root': [
292
+ (r'\\\[', String.Backtick, 'displaymath'),
293
+ (r'\\\(', String, 'inlinemath'),
294
+ (r'\$\$', String.Backtick, 'displaymath'),
295
+ (r'\$', String, 'inlinemath'),
296
+ (r'\\([a-zA-Z]+|.)', Keyword, 'command'),
297
+ (r'\\$', Keyword),
298
+ include('general'),
299
+ (r'[^\\$%&_^{}]+', Text),
300
+ ],
301
+ 'math': [
302
+ (r'\\([a-zA-Z]+|.)', Name.Variable),
303
+ include('general'),
304
+ (r'[0-9]+', Number),
305
+ (r'[-=!+*/()\[\]]', Operator),
306
+ (r'[^=!+*/()\[\]\\$%&_^{}0-9-]+', Name.Builtin),
307
+ ],
308
+ 'inlinemath': [
309
+ (r'\\\)', String, '#pop'),
310
+ (r'\$', String, '#pop'),
311
+ include('math'),
312
+ ],
313
+ 'displaymath': [
314
+ (r'\\\]', String, '#pop'),
315
+ (r'\$\$', String, '#pop'),
316
+ (r'\$', Name.Builtin),
317
+ include('math'),
318
+ ],
319
+ 'command': [
320
+ (r'\[.*?\]', Name.Attribute),
321
+ (r'\*', Keyword),
322
+ default('#pop'),
323
+ ],
324
+ }
325
+
326
+ def analyse_text(text):
327
+ for start in ("\\documentclass", "\\input", "\\documentstyle",
328
+ "\\relax"):
329
+ if text[:len(start)] == start:
330
+ return True
331
+
332
+
333
+ class GroffLexer(RegexLexer):
334
+ """
335
+ Lexer for the (g)roff typesetting language, supporting groff
336
+ extensions. Mainly useful for highlighting manpage sources.
337
+
338
+ .. versionadded:: 0.6
339
+ """
340
+
341
+ name = 'Groff'
342
+ aliases = ['groff', 'nroff', 'man']
343
+ filenames = ['*.[1234567]', '*.man']
344
+ mimetypes = ['application/x-troff', 'text/troff']
345
+
346
+ tokens = {
347
+ 'root': [
348
+ (r'(\.)(\w+)', bygroups(Text, Keyword), 'request'),
349
+ (r'\.', Punctuation, 'request'),
350
+ # Regular characters, slurp till we find a backslash or newline
351
+ (r'[^\\\n]+', Text, 'textline'),
352
+ default('textline'),
353
+ ],
354
+ 'textline': [
355
+ include('escapes'),
356
+ (r'[^\\\n]+', Text),
357
+ (r'\n', Text, '#pop'),
358
+ ],
359
+ 'escapes': [
360
+ # groff has many ways to write escapes.
361
+ (r'\\"[^\n]*', Comment),
362
+ (r'\\[fn]\w', String.Escape),
363
+ (r'\\\(.{2}', String.Escape),
364
+ (r'\\.\[.*\]', String.Escape),
365
+ (r'\\.', String.Escape),
366
+ (r'\\\n', Text, 'request'),
367
+ ],
368
+ 'request': [
369
+ (r'\n', Text, '#pop'),
370
+ include('escapes'),
371
+ (r'"[^\n"]+"', String.Double),
372
+ (r'\d+', Number),
373
+ (r'\S+', String),
374
+ (r'\s+', Text),
375
+ ],
376
+ }
377
+
378
+ def analyse_text(text):
379
+ if text[:1] != '.':
380
+ return False
381
+ if text[:3] == '.\\"':
382
+ return True
383
+ if text[:4] == '.TH ':
384
+ return True
385
+ if text[1:3].isalnum() and text[3].isspace():
386
+ return 0.9
387
+
388
+
389
+ class MozPreprocHashLexer(RegexLexer):
390
+ """
391
+ Lexer for Mozilla Preprocessor files (with '#' as the marker).
392
+
393
+ Other data is left untouched.
394
+
395
+ .. versionadded:: 2.0
396
+ """
397
+ name = 'mozhashpreproc'
398
+ aliases = [name]
399
+ filenames = []
400
+ mimetypes = []
401
+
402
+ tokens = {
403
+ 'root': [
404
+ (r'^#', Comment.Preproc, ('expr', 'exprstart')),
405
+ (r'.+', Other),
406
+ ],
407
+ 'exprstart': [
408
+ (r'(literal)(.*)', bygroups(Comment.Preproc, Text), '#pop:2'),
409
+ (words((
410
+ 'define', 'undef', 'if', 'ifdef', 'ifndef', 'else', 'elif',
411
+ 'elifdef', 'elifndef', 'endif', 'expand', 'filter', 'unfilter',
412
+ 'include', 'includesubst', 'error')),
413
+ Comment.Preproc, '#pop'),
414
+ ],
415
+ 'expr': [
416
+ (words(('!', '!=', '==', '&&', '||')), Operator),
417
+ (r'(defined)(\()', bygroups(Keyword, Punctuation)),
418
+ (r'\)', Punctuation),
419
+ (r'[0-9]+', Number.Decimal),
420
+ (r'__\w+?__', Name.Variable),
421
+ (r'@\w+?@', Name.Class),
422
+ (r'\w+', Name),
423
+ (r'\n', Text, '#pop'),
424
+ (r'\s+', Text),
425
+ (r'\S', Punctuation),
426
+ ],
427
+ }
428
+
429
+
430
+ class MozPreprocPercentLexer(MozPreprocHashLexer):
431
+ """
432
+ Lexer for Mozilla Preprocessor files (with '%' as the marker).
433
+
434
+ Other data is left untouched.
435
+
436
+ .. versionadded:: 2.0
437
+ """
438
+ name = 'mozpercentpreproc'
439
+ aliases = [name]
440
+ filenames = []
441
+ mimetypes = []
442
+
443
+ tokens = {
444
+ 'root': [
445
+ (r'^%', Comment.Preproc, ('expr', 'exprstart')),
446
+ (r'.+', Other),
447
+ ],
448
+ }
449
+
450
+
451
+ class MozPreprocXulLexer(DelegatingLexer):
452
+ """
453
+ Subclass of the `MozPreprocHashLexer` that highlights unlexed data with the
454
+ `XmlLexer`.
455
+
456
+ .. versionadded:: 2.0
457
+ """
458
+ name = "XUL+mozpreproc"
459
+ aliases = ['xul+mozpreproc']
460
+ filenames = ['*.xul.in']
461
+ mimetypes = []
462
+
463
+ def __init__(self, **options):
464
+ super().__init__(XmlLexer, MozPreprocHashLexer, **options)
465
+
466
+
467
+ class MozPreprocJavascriptLexer(DelegatingLexer):
468
+ """
469
+ Subclass of the `MozPreprocHashLexer` that highlights unlexed data with the
470
+ `JavascriptLexer`.
471
+
472
+ .. versionadded:: 2.0
473
+ """
474
+ name = "Javascript+mozpreproc"
475
+ aliases = ['javascript+mozpreproc']
476
+ filenames = ['*.js.in']
477
+ mimetypes = []
478
+
479
+ def __init__(self, **options):
480
+ super().__init__(JavascriptLexer, MozPreprocHashLexer, **options)
481
+
482
+
483
+ class MozPreprocCssLexer(DelegatingLexer):
484
+ """
485
+ Subclass of the `MozPreprocHashLexer` that highlights unlexed data with the
486
+ `CssLexer`.
487
+
488
+ .. versionadded:: 2.0
489
+ """
490
+ name = "CSS+mozpreproc"
491
+ aliases = ['css+mozpreproc']
492
+ filenames = ['*.css.in']
493
+ mimetypes = []
494
+
495
+ def __init__(self, **options):
496
+ super().__init__(CssLexer, MozPreprocPercentLexer, **options)
497
+
498
+
499
+ class MarkdownLexer(RegexLexer):
500
+ """
501
+ For `Markdown <https://help.github.com/categories/writing-on-github/>`_ markup.
502
+
503
+ .. versionadded:: 2.2
504
+ """
505
+ name = 'markdown'
506
+ aliases = ['md']
507
+ filenames = ['*.md', '*.markdown']
508
+ mimetypes = ["text/x-markdown"]
509
+ flags = re.MULTILINE
510
+
511
+ def _handle_codeblock(self, match):
512
+ """
513
+ match args: 1:backticks, 2:lang_name, 3:newline, 4:code, 5:backticks
514
+ """
515
+ from pygments.lexers import get_lexer_by_name
516
+
517
+ # section header
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)
521
+
522
+ # lookup lexer if wanted and existing
523
+ lexer = None
524
+ if self.handlecodeblocks:
525
+ try:
526
+ lexer = get_lexer_by_name( match.group(2).strip() )
527
+ except ClassNotFound:
528
+ pass
529
+ code = match.group(4)
530
+
531
+ # no lexer for this language. handle it like it was a code block
532
+ if lexer is None:
533
+ yield match.start(4), String, code
534
+ else:
535
+ yield from do_insertions([], lexer.get_tokens_unprocessed(code))
536
+
537
+ yield match.start(5), String.Backtick, match.group(5)
538
+
539
+ tokens = {
540
+ 'root': [
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)),
549
+ # task list
550
+ (r'^(\s*)([*-] )(\[[ xX]\])( .+\n)',
551
+ bygroups(Text, Keyword, Keyword, using(this, state='inline'))),
552
+ # bulleted list
553
+ (r'^(\s*)([*-])(\s)(.+\n)',
554
+ bygroups(Text, Keyword, Text, using(this, state='inline'))),
555
+ # numbered list
556
+ (r'^(\s*)([0-9]+\.)( .+\n)',
557
+ bygroups(Text, Keyword, using(this, state='inline'))),
558
+ # quote
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)),
699
+ # text block
700
+ (r'^(```\n)([\w\W]*?)(^```$)', bygroups(String, Text, String)),
701
+ # code block with language
702
+ (r'^(```)(\w+)(\n)([\w\W]*?)(^```$)', _handle_codeblock),
703
+ # CSS style block
704
+ (r'^(<style>)(\n)([\w\W]*?)(^</style>$)', _handle_cssblock),
705
+
706
+ include('keywords'),
707
+ include('inline'),
708
+ ],
709
+ 'keywords': [
710
+ (words((
711
+ '\\define', '\\end', 'caption', 'created', 'modified', 'tags',
712
+ 'title', 'type'), prefix=r'^', suffix=r'\b'),
713
+ Keyword),
714
+ ],
715
+ 'inline': [
716
+ # escape
717
+ (r'\\.', Text),
718
+ # created or modified date
719
+ (r'\d{17}', Number.Integer),
720
+ # italics
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)),
729
+ # bold
730
+ (r"(\s)(''[^']+'')((?=\W|\n))",
731
+ bygroups(Text, Generic.Strong, Text)),
732
+ # strikethrough
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),
743
+ # inline code
744
+ (r'`[^`]+`', String.Backtick),
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)),
756
+
757
+ # general text, must come last!
758
+ (r'[\w]+', Text),
759
+ (r'.', Text)
760
+ ],
761
+ }
762
+
763
+ def __init__(self, **options):
764
+ self.handlecodeblocks = get_bool_opt(options, 'handlecodeblocks', True)
765
+ RegexLexer.__init__(self, **options)