pygments.rb 1.2.1 → 2.0.0.rc2

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 (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)