pygments.rb 1.1.0 → 2.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (382) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ci.yml +28 -0
  4. data/.github/workflows/release.yml +24 -0
  5. data/.gitignore +5 -5
  6. data/CHANGELOG.adoc +119 -0
  7. data/Gemfile +3 -1
  8. data/LICENSE +1 -1
  9. data/README.adoc +161 -0
  10. data/Rakefile +12 -19
  11. data/bench.rb +8 -7
  12. data/cache-lexers.rb +3 -2
  13. data/lexers +0 -0
  14. data/lib/pygments.rb +11 -16
  15. data/lib/pygments/lexer.rb +6 -4
  16. data/lib/pygments/mentos.py +23 -66
  17. data/lib/pygments/popen.rb +155 -207
  18. data/lib/pygments/version.rb +3 -1
  19. data/pygments.rb.gemspec +11 -9
  20. data/test/test_pygments.rb +53 -83
  21. data/vendor/pygments-main/{AUTHORS → Pygments-2.7.3.dist-info/AUTHORS} +23 -3
  22. data/vendor/pygments-main/Pygments-2.7.3.dist-info/INSTALLER +1 -0
  23. data/vendor/pygments-main/{LICENSE → Pygments-2.7.3.dist-info/LICENSE} +1 -1
  24. data/vendor/pygments-main/Pygments-2.7.3.dist-info/METADATA +49 -0
  25. data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +482 -0
  26. data/vendor/pygments-main/Pygments-2.7.3.dist-info/REQUESTED +0 -0
  27. data/vendor/pygments-main/Pygments-2.7.3.dist-info/WHEEL +5 -0
  28. data/vendor/pygments-main/Pygments-2.7.3.dist-info/entry_points.txt +3 -0
  29. data/vendor/pygments-main/Pygments-2.7.3.dist-info/top_level.txt +1 -0
  30. data/vendor/pygments-main/bin/pygmentize +8 -0
  31. data/vendor/pygments-main/pygments/__init__.py +6 -11
  32. data/vendor/pygments-main/pygments/__main__.py +18 -0
  33. data/vendor/pygments-main/pygments/cmdline.py +94 -41
  34. data/vendor/pygments-main/pygments/console.py +6 -9
  35. data/vendor/pygments-main/pygments/filter.py +4 -6
  36. data/vendor/pygments-main/pygments/filters/__init__.py +609 -21
  37. data/vendor/pygments-main/pygments/formatter.py +4 -4
  38. data/vendor/pygments-main/pygments/formatters/__init__.py +42 -6
  39. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -3
  40. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  41. data/vendor/pygments-main/pygments/formatters/html.py +223 -135
  42. data/vendor/pygments-main/pygments/formatters/img.py +102 -38
  43. data/vendor/pygments-main/pygments/formatters/irc.py +39 -39
  44. data/vendor/pygments-main/pygments/formatters/latex.py +56 -26
  45. data/vendor/pygments-main/pygments/formatters/other.py +12 -8
  46. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -29
  47. data/vendor/pygments-main/pygments/formatters/svg.py +38 -4
  48. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -31
  49. data/vendor/pygments-main/pygments/formatters/terminal256.py +22 -12
  50. data/vendor/pygments-main/pygments/lexer.py +41 -39
  51. data/vendor/pygments-main/pygments/lexers/__init__.py +62 -15
  52. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +5 -5
  53. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +15 -15
  54. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +11 -12
  55. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1717 -1338
  56. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +8 -1
  57. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +2 -4
  58. data/vendor/pygments-main/pygments/lexers/_mapping.py +79 -33
  59. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +2 -2
  60. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1282 -0
  61. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
  62. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +17 -20
  63. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +73 -16
  64. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +2 -2
  65. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -3
  66. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +151 -125
  67. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +6 -4
  68. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
  69. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +113 -0
  70. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +280 -0
  71. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
  72. data/vendor/pygments-main/pygments/lexers/actionscript.py +8 -3
  73. data/vendor/pygments-main/pygments/lexers/agile.py +1 -1
  74. data/vendor/pygments-main/pygments/lexers/algebra.py +20 -1
  75. data/vendor/pygments-main/pygments/lexers/ambient.py +1 -1
  76. data/vendor/pygments-main/pygments/lexers/ampl.py +3 -3
  77. data/vendor/pygments-main/pygments/lexers/apl.py +15 -15
  78. data/vendor/pygments-main/pygments/lexers/archetype.py +3 -3
  79. data/vendor/pygments-main/pygments/lexers/arrow.py +117 -0
  80. data/vendor/pygments-main/pygments/lexers/asm.py +445 -70
  81. data/vendor/pygments-main/pygments/lexers/automation.py +3 -3
  82. data/vendor/pygments-main/pygments/lexers/bare.py +104 -0
  83. data/vendor/pygments-main/pygments/lexers/basic.py +166 -4
  84. data/vendor/pygments-main/pygments/lexers/bibtex.py +13 -9
  85. data/vendor/pygments-main/pygments/lexers/boa.py +102 -0
  86. data/vendor/pygments-main/pygments/lexers/business.py +69 -36
  87. data/vendor/pygments-main/pygments/lexers/c_cpp.py +137 -45
  88. data/vendor/pygments-main/pygments/lexers/c_like.py +68 -43
  89. data/vendor/pygments-main/pygments/lexers/capnproto.py +20 -21
  90. data/vendor/pygments-main/pygments/lexers/chapel.py +25 -14
  91. data/vendor/pygments-main/pygments/lexers/clean.py +135 -244
  92. data/vendor/pygments-main/pygments/lexers/compiled.py +1 -1
  93. data/vendor/pygments-main/pygments/lexers/configs.py +188 -37
  94. data/vendor/pygments-main/pygments/lexers/console.py +1 -1
  95. data/vendor/pygments-main/pygments/lexers/crystal.py +31 -23
  96. data/vendor/pygments-main/pygments/lexers/csound.py +288 -187
  97. data/vendor/pygments-main/pygments/lexers/css.py +18 -16
  98. data/vendor/pygments-main/pygments/lexers/d.py +10 -5
  99. data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -1
  100. data/vendor/pygments-main/pygments/lexers/data.py +240 -97
  101. data/vendor/pygments-main/pygments/lexers/devicetree.py +109 -0
  102. data/vendor/pygments-main/pygments/lexers/diff.py +4 -4
  103. data/vendor/pygments-main/pygments/lexers/dotnet.py +40 -24
  104. data/vendor/pygments-main/pygments/lexers/dsls.py +147 -65
  105. data/vendor/pygments-main/pygments/lexers/dylan.py +16 -18
  106. data/vendor/pygments-main/pygments/lexers/ecl.py +16 -2
  107. data/vendor/pygments-main/pygments/lexers/eiffel.py +1 -1
  108. data/vendor/pygments-main/pygments/lexers/elm.py +5 -5
  109. data/vendor/pygments-main/pygments/lexers/email.py +151 -0
  110. data/vendor/pygments-main/pygments/lexers/erlang.py +29 -32
  111. data/vendor/pygments-main/pygments/lexers/esoteric.py +54 -25
  112. data/vendor/pygments-main/pygments/lexers/ezhil.py +24 -15
  113. data/vendor/pygments-main/pygments/lexers/factor.py +1 -1
  114. data/vendor/pygments-main/pygments/lexers/fantom.py +1 -1
  115. data/vendor/pygments-main/pygments/lexers/felix.py +1 -1
  116. data/vendor/pygments-main/pygments/lexers/floscript.py +83 -0
  117. data/vendor/pygments-main/pygments/lexers/forth.py +41 -40
  118. data/vendor/pygments-main/pygments/lexers/fortran.py +5 -4
  119. data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -2
  120. data/vendor/pygments-main/pygments/lexers/freefem.py +898 -0
  121. data/vendor/pygments-main/pygments/lexers/functional.py +1 -1
  122. data/vendor/pygments-main/pygments/lexers/gdscript.py +346 -0
  123. data/vendor/pygments-main/pygments/lexers/go.py +1 -1
  124. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +63 -6
  125. data/vendor/pygments-main/pygments/lexers/graph.py +14 -9
  126. data/vendor/pygments-main/pygments/lexers/graphics.py +272 -25
  127. data/vendor/pygments-main/pygments/lexers/haskell.py +52 -22
  128. data/vendor/pygments-main/pygments/lexers/haxe.py +6 -6
  129. data/vendor/pygments-main/pygments/lexers/hdl.py +176 -86
  130. data/vendor/pygments-main/pygments/lexers/hexdump.py +18 -12
  131. data/vendor/pygments-main/pygments/lexers/html.py +31 -19
  132. data/vendor/pygments-main/pygments/lexers/idl.py +20 -9
  133. data/vendor/pygments-main/pygments/lexers/igor.py +244 -112
  134. data/vendor/pygments-main/pygments/lexers/inferno.py +2 -2
  135. data/vendor/pygments-main/pygments/lexers/installers.py +1 -1
  136. data/vendor/pygments-main/pygments/lexers/int_fiction.py +40 -15
  137. data/vendor/pygments-main/pygments/lexers/iolang.py +2 -2
  138. data/vendor/pygments-main/pygments/lexers/j.py +3 -3
  139. data/vendor/pygments-main/pygments/lexers/javascript.py +100 -66
  140. data/vendor/pygments-main/pygments/lexers/julia.py +46 -48
  141. data/vendor/pygments-main/pygments/lexers/jvm.py +265 -165
  142. data/vendor/pygments-main/pygments/lexers/lisp.py +882 -804
  143. data/vendor/pygments-main/pygments/lexers/make.py +10 -6
  144. data/vendor/pygments-main/pygments/lexers/markup.py +213 -43
  145. data/vendor/pygments-main/pygments/lexers/math.py +1 -1
  146. data/vendor/pygments-main/pygments/lexers/matlab.py +98 -41
  147. data/vendor/pygments-main/pygments/lexers/mime.py +226 -0
  148. data/vendor/pygments-main/pygments/lexers/ml.py +198 -9
  149. data/vendor/pygments-main/pygments/lexers/modeling.py +26 -18
  150. data/vendor/pygments-main/pygments/lexers/modula2.py +25 -6
  151. data/vendor/pygments-main/pygments/lexers/monte.py +4 -3
  152. data/vendor/pygments-main/pygments/lexers/mosel.py +448 -0
  153. data/vendor/pygments-main/pygments/lexers/ncl.py +85 -244
  154. data/vendor/pygments-main/pygments/lexers/nimrod.py +4 -4
  155. data/vendor/pygments-main/pygments/lexers/nit.py +1 -1
  156. data/vendor/pygments-main/pygments/lexers/nix.py +1 -1
  157. data/vendor/pygments-main/pygments/lexers/oberon.py +17 -1
  158. data/vendor/pygments-main/pygments/lexers/objective.py +16 -16
  159. data/vendor/pygments-main/pygments/lexers/ooc.py +1 -1
  160. data/vendor/pygments-main/pygments/lexers/other.py +1 -1
  161. data/vendor/pygments-main/pygments/lexers/parasail.py +1 -1
  162. data/vendor/pygments-main/pygments/lexers/parsers.py +23 -58
  163. data/vendor/pygments-main/pygments/lexers/pascal.py +23 -23
  164. data/vendor/pygments-main/pygments/lexers/pawn.py +30 -24
  165. data/vendor/pygments-main/pygments/lexers/perl.py +276 -160
  166. data/vendor/pygments-main/pygments/lexers/php.py +64 -10
  167. data/vendor/pygments-main/pygments/lexers/pointless.py +71 -0
  168. data/vendor/pygments-main/pygments/lexers/pony.py +94 -0
  169. data/vendor/pygments-main/pygments/lexers/praat.py +38 -30
  170. data/vendor/pygments-main/pygments/lexers/prolog.py +36 -36
  171. data/vendor/pygments-main/pygments/lexers/promql.py +183 -0
  172. data/vendor/pygments-main/pygments/lexers/python.py +439 -226
  173. data/vendor/pygments-main/pygments/lexers/qvt.py +6 -6
  174. data/vendor/pygments-main/pygments/lexers/r.py +13 -275
  175. data/vendor/pygments-main/pygments/lexers/rdf.py +232 -39
  176. data/vendor/pygments-main/pygments/lexers/rebol.py +8 -8
  177. data/vendor/pygments-main/pygments/lexers/resource.py +2 -2
  178. data/vendor/pygments-main/pygments/lexers/ride.py +139 -0
  179. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -1
  180. data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -1
  181. data/vendor/pygments-main/pygments/lexers/robotframework.py +23 -31
  182. data/vendor/pygments-main/pygments/lexers/ruby.py +22 -24
  183. data/vendor/pygments-main/pygments/lexers/rust.py +86 -71
  184. data/vendor/pygments-main/pygments/lexers/sas.py +7 -7
  185. data/vendor/pygments-main/pygments/lexers/scdoc.py +83 -0
  186. data/vendor/pygments-main/pygments/lexers/scripting.py +75 -13
  187. data/vendor/pygments-main/pygments/lexers/sgf.py +61 -0
  188. data/vendor/pygments-main/pygments/lexers/shell.py +175 -51
  189. data/vendor/pygments-main/pygments/lexers/sieve.py +69 -0
  190. data/vendor/pygments-main/pygments/lexers/slash.py +185 -0
  191. data/vendor/pygments-main/pygments/lexers/smalltalk.py +2 -2
  192. data/vendor/pygments-main/pygments/lexers/smv.py +30 -26
  193. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -1
  194. data/vendor/pygments-main/pygments/lexers/solidity.py +92 -0
  195. data/vendor/pygments-main/pygments/lexers/special.py +5 -3
  196. data/vendor/pygments-main/pygments/lexers/sql.py +333 -177
  197. data/vendor/pygments-main/pygments/lexers/stata.py +107 -42
  198. data/vendor/pygments-main/pygments/lexers/supercollider.py +6 -1
  199. data/vendor/pygments-main/pygments/lexers/tcl.py +1 -1
  200. data/vendor/pygments-main/pygments/lexers/templates.py +144 -132
  201. data/vendor/pygments-main/pygments/lexers/teraterm.py +335 -0
  202. data/vendor/pygments-main/pygments/lexers/testing.py +6 -6
  203. data/vendor/pygments-main/pygments/lexers/text.py +2 -1
  204. data/vendor/pygments-main/pygments/lexers/textedit.py +4 -4
  205. data/vendor/pygments-main/pygments/lexers/textfmts.py +146 -13
  206. data/vendor/pygments-main/pygments/lexers/theorem.py +69 -53
  207. data/vendor/pygments-main/pygments/lexers/tnt.py +263 -0
  208. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -1
  209. data/vendor/pygments-main/pygments/lexers/typoscript.py +8 -14
  210. data/vendor/pygments-main/pygments/lexers/unicon.py +412 -0
  211. data/vendor/pygments-main/pygments/lexers/urbi.py +14 -1
  212. data/vendor/pygments-main/pygments/lexers/usd.py +90 -0
  213. data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
  214. data/vendor/pygments-main/pygments/lexers/verification.py +15 -12
  215. data/vendor/pygments-main/pygments/lexers/web.py +1 -1
  216. data/vendor/pygments-main/pygments/lexers/webidl.py +299 -0
  217. data/vendor/pygments-main/pygments/lexers/webmisc.py +50 -38
  218. data/vendor/pygments-main/pygments/lexers/whiley.py +11 -12
  219. data/vendor/pygments-main/pygments/lexers/x10.py +1 -1
  220. data/vendor/pygments-main/pygments/lexers/xorg.py +37 -0
  221. data/vendor/pygments-main/pygments/lexers/yang.py +104 -0
  222. data/vendor/pygments-main/pygments/lexers/zig.py +124 -0
  223. data/vendor/pygments-main/pygments/modeline.py +6 -5
  224. data/vendor/pygments-main/pygments/plugin.py +14 -18
  225. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  226. data/vendor/pygments-main/pygments/scanner.py +2 -2
  227. data/vendor/pygments-main/pygments/sphinxext.py +2 -4
  228. data/vendor/pygments-main/pygments/style.py +61 -24
  229. data/vendor/pygments-main/pygments/styles/__init__.py +13 -5
  230. data/vendor/pygments-main/pygments/styles/abap.py +29 -0
  231. data/vendor/pygments-main/pygments/styles/algol.py +1 -1
  232. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -1
  233. data/vendor/pygments-main/pygments/styles/arduino.py +2 -2
  234. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  235. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  236. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  237. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  238. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  239. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  240. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  241. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  242. data/vendor/pygments-main/pygments/styles/igor.py +1 -1
  243. data/vendor/pygments-main/pygments/styles/inkpot.py +67 -0
  244. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -1
  245. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  246. data/vendor/pygments-main/pygments/styles/monokai.py +4 -3
  247. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  248. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  249. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -1
  250. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -1
  251. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  252. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  253. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +89 -0
  254. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  255. data/vendor/pygments-main/pygments/styles/sas.py +3 -0
  256. data/vendor/pygments-main/pygments/styles/solarized.py +134 -0
  257. data/vendor/pygments-main/pygments/styles/stata_dark.py +41 -0
  258. data/vendor/pygments-main/pygments/styles/stata_light.py +39 -0
  259. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  260. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  261. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  262. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  263. data/vendor/pygments-main/pygments/styles/xcode.py +1 -1
  264. data/vendor/pygments-main/pygments/token.py +1 -1
  265. data/vendor/pygments-main/pygments/unistring.py +47 -108
  266. data/vendor/pygments-main/pygments/util.py +19 -95
  267. metadata +72 -137
  268. data/CHANGELOG.md +0 -89
  269. data/README.md +0 -121
  270. data/circle.yml +0 -20
  271. data/test/test_data.py +0 -514
  272. data/test/test_data_generated +0 -2582
  273. data/vendor/custom_lexers/github.py +0 -565
  274. data/vendor/pygments-main/CHANGES +0 -1163
  275. data/vendor/pygments-main/MANIFEST.in +0 -6
  276. data/vendor/pygments-main/Makefile +0 -65
  277. data/vendor/pygments-main/README.rst +0 -39
  278. data/vendor/pygments-main/REVISION +0 -1
  279. data/vendor/pygments-main/TODO +0 -12
  280. data/vendor/pygments-main/doc/Makefile +0 -153
  281. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  282. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  283. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  284. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  285. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  286. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  287. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  288. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  289. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  290. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  291. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  292. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  293. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  294. data/vendor/pygments-main/doc/conf.py +0 -241
  295. data/vendor/pygments-main/doc/docs/api.rst +0 -331
  296. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  297. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  298. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -149
  299. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  300. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  301. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  302. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  303. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  304. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  305. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  306. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -689
  307. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  308. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  309. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  310. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  311. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  312. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  313. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  314. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  315. data/vendor/pygments-main/doc/download.rst +0 -41
  316. data/vendor/pygments-main/doc/faq.rst +0 -139
  317. data/vendor/pygments-main/doc/index.rst +0 -54
  318. data/vendor/pygments-main/doc/languages.rst +0 -154
  319. data/vendor/pygments-main/doc/make.bat +0 -190
  320. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  321. data/vendor/pygments-main/external/autopygmentize +0 -84
  322. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  323. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  324. data/vendor/pygments-main/external/moin-parser.py +0 -112
  325. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  326. data/vendor/pygments-main/external/rst-directive.py +0 -82
  327. data/vendor/pygments-main/pygmentize +0 -8
  328. data/vendor/pygments-main/pygments/lexers/github.py +0 -565
  329. data/vendor/pygments-main/pygments/styles/stata.py +0 -37
  330. data/vendor/pygments-main/requirements.txt +0 -5
  331. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  332. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  333. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  334. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  335. data/vendor/pygments-main/scripts/find_error.py +0 -1
  336. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  337. data/vendor/pygments-main/scripts/pylintrc +0 -301
  338. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  339. data/vendor/pygments-main/setup.cfg +0 -10
  340. data/vendor/pygments-main/setup.py +0 -77
  341. data/vendor/pygments-main/tox.ini +0 -7
  342. data/vendor/simplejson/.gitignore +0 -10
  343. data/vendor/simplejson/.travis.yml +0 -5
  344. data/vendor/simplejson/CHANGES.txt +0 -291
  345. data/vendor/simplejson/LICENSE.txt +0 -19
  346. data/vendor/simplejson/MANIFEST.in +0 -5
  347. data/vendor/simplejson/README.rst +0 -19
  348. data/vendor/simplejson/conf.py +0 -179
  349. data/vendor/simplejson/index.rst +0 -628
  350. data/vendor/simplejson/scripts/make_docs.py +0 -18
  351. data/vendor/simplejson/setup.py +0 -104
  352. data/vendor/simplejson/simplejson/__init__.py +0 -510
  353. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  354. data/vendor/simplejson/simplejson/decoder.py +0 -425
  355. data/vendor/simplejson/simplejson/encoder.py +0 -567
  356. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  357. data/vendor/simplejson/simplejson/scanner.py +0 -77
  358. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  359. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  360. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  361. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  362. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  363. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  364. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  365. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  366. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  367. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  368. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  369. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  370. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  371. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  372. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  373. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  374. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  375. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  376. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  377. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  378. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  379. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  380. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  381. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  382. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.35.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ pygmentize = pygments.cmdline:main
3
+
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/python3.8
2
+ # -*- coding: utf-8 -*-
3
+ import re
4
+ import sys
5
+ from pygments.cmdline import main
6
+ if __name__ == '__main__':
7
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
8
+ sys.exit(main())
@@ -17,19 +17,18 @@
17
17
  * it is usable as a command-line tool and as a library
18
18
  * ... and it highlights even Brainfuck!
19
19
 
20
- The `Pygments tip`_ is installable with ``easy_install Pygments==dev``.
20
+ The `Pygments master branch`_ is installable with ``easy_install Pygments==dev``.
21
21
 
22
- .. _Pygments tip:
23
- http://bitbucket.org/birkenfeld/pygments-main/get/tip.zip#egg=Pygments-dev
22
+ .. _Pygments master branch:
23
+ https://github.com/pygments/pygments/archive/master.zip#egg=Pygments-dev
24
24
 
25
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
25
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
26
26
  :license: BSD, see LICENSE for details.
27
27
  """
28
28
  import sys
29
+ from io import StringIO, BytesIO
29
30
 
30
- from pygments.util import StringIO, BytesIO
31
-
32
- __version__ = '2.2a0'
31
+ __version__ = '2.7.3'
33
32
  __docformat__ = 'restructuredtext'
34
33
 
35
34
  __all__ = ['lex', 'format', 'highlight']
@@ -84,7 +83,3 @@ def highlight(code, lexer, formatter, outfile=None):
84
83
  """
85
84
  return format(lex(code, lexer), formatter, outfile)
86
85
 
87
-
88
- if __name__ == '__main__': # pragma: no cover
89
- from pygments.cmdline import main
90
- sys.exit(main(sys.argv))
@@ -0,0 +1,18 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.__main__
4
+ ~~~~~~~~~~~~~~~~~
5
+
6
+ Main entry point for ``python -m pygments``.
7
+
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ import sys
13
+ import pygments.cmdline
14
+
15
+ try:
16
+ sys.exit(pygments.cmdline.main(sys.argv))
17
+ except KeyboardInterrupt:
18
+ sys.exit(1)
@@ -5,33 +5,34 @@
5
5
 
6
6
  Command line interface.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
12
- from __future__ import print_function
13
-
12
+ import os
14
13
  import sys
15
14
  import getopt
16
15
  from textwrap import dedent
17
16
 
18
17
  from pygments import __version__, highlight
19
18
  from pygments.util import ClassNotFound, OptionError, docstring_headline, \
20
- guess_decode, guess_decode_from_terminal, terminal_encoding
19
+ guess_decode, guess_decode_from_terminal, terminal_encoding, \
20
+ UnclosingTextIOWrapper
21
21
  from pygments.lexers import get_all_lexers, get_lexer_by_name, guess_lexer, \
22
- get_lexer_for_filename, find_lexer_class_for_filename
22
+ load_lexer_from_file, get_lexer_for_filename, find_lexer_class_for_filename
23
23
  from pygments.lexers.special import TextLexer
24
24
  from pygments.formatters.latex import LatexEmbeddedLexer, LatexFormatter
25
25
  from pygments.formatters import get_all_formatters, get_formatter_by_name, \
26
- get_formatter_for_filename, find_formatter_class
26
+ load_formatter_from_file, get_formatter_for_filename, find_formatter_class
27
27
  from pygments.formatters.terminal import TerminalFormatter
28
+ from pygments.formatters.terminal256 import Terminal256Formatter
28
29
  from pygments.filters import get_all_filters, find_filter_class
29
30
  from pygments.styles import get_all_styles, get_style_by_name
30
31
 
31
32
 
32
33
  USAGE = """\
33
34
  Usage: %s [-l <lexer> | -g] [-F <filter>[:<options>]] [-f <formatter>]
34
- [-O <options>] [-P <option=value>] [-s] [-v] [-o <outfile>] [<infile>]
35
+ [-O <options>] [-P <option=value>] [-s] [-v] [-x] [-o <outfile>] [<infile>]
35
36
 
36
37
  %s -S <style> -f <formatter> [-a <arg>] [-O <options>] [-P <option=value>]
37
38
  %s -L [<which> ...]
@@ -57,6 +58,14 @@ Likewise, <formatter> is a formatter name, and will be guessed from
57
58
  the extension of the output file name. If no output file is given,
58
59
  the terminal formatter will be used by default.
59
60
 
61
+ The additional option -x allows custom lexers and formatters to be
62
+ loaded from a .py file relative to the current working directory. For
63
+ example, ``-l ./customlexer.py -x``. By default, this option expects a
64
+ file with a class named CustomLexer or CustomFormatter; you can also
65
+ specify your own class name with a colon (``-l ./lexer.py:MyLexer``).
66
+ Users should be very careful not to use this option with untrusted files,
67
+ because it will import and run them.
68
+
60
69
  With the -O option, you can give the lexer and formatter a comma-
61
70
  separated list of options, e.g. ``-O bg=light,python=cool``.
62
71
 
@@ -223,7 +232,7 @@ def main_inner(popts, args, usage):
223
232
  return 0
224
233
 
225
234
  if opts.pop('-V', None) is not None:
226
- print('Pygments version %s, (c) 2006-2015 by Georg Brandl.' % __version__)
235
+ print('Pygments version %s, (c) 2006-2020 by Georg Brandl.' % __version__)
227
236
  return 0
228
237
 
229
238
  # handle ``pygmentize -L``
@@ -314,17 +323,44 @@ def main_inner(popts, args, usage):
314
323
  F_opts = _parse_filters(F_opts)
315
324
  opts.pop('-F', None)
316
325
 
326
+ allow_custom_lexer_formatter = False
327
+ # -x: allow custom (eXternal) lexers and formatters
328
+ if opts.pop('-x', None) is not None:
329
+ allow_custom_lexer_formatter = True
330
+
317
331
  # select lexer
318
332
  lexer = None
319
333
 
320
334
  # given by name?
321
335
  lexername = opts.pop('-l', None)
322
336
  if lexername:
323
- try:
324
- lexer = get_lexer_by_name(lexername, **parsed_opts)
325
- except (OptionError, ClassNotFound) as err:
326
- print('Error:', err, file=sys.stderr)
327
- return 1
337
+ # custom lexer, located relative to user's cwd
338
+ if allow_custom_lexer_formatter and '.py' in lexername:
339
+ try:
340
+ filename = None
341
+ name = None
342
+ if ':' in lexername:
343
+ filename, name = lexername.rsplit(':', 1)
344
+
345
+ if '.py' in name:
346
+ # This can happen on Windows: If the lexername is
347
+ # C:\lexer.py -- return to normal load path in that case
348
+ name = None
349
+
350
+ if filename and name:
351
+ lexer = load_lexer_from_file(filename, name,
352
+ **parsed_opts)
353
+ else:
354
+ lexer = load_lexer_from_file(lexername, **parsed_opts)
355
+ except ClassNotFound as err:
356
+ print('Error:', err, file=sys.stderr)
357
+ return 1
358
+ else:
359
+ try:
360
+ lexer = get_lexer_by_name(lexername, **parsed_opts)
361
+ except (OptionError, ClassNotFound) as err:
362
+ print('Error:', err, file=sys.stderr)
363
+ return 1
328
364
 
329
365
  # read input code
330
366
  code = None
@@ -369,11 +405,7 @@ def main_inner(popts, args, usage):
369
405
  elif '-s' not in opts: # treat stdin as full file (-s support is later)
370
406
  # read code from terminal, always in binary mode since we want to
371
407
  # decode ourselves and be tolerant with it
372
- if sys.version_info > (3,):
373
- # Python 3: we have to use .buffer to get a binary stream
374
- code = sys.stdin.buffer.read()
375
- else:
376
- code = sys.stdin.read()
408
+ code = sys.stdin.buffer.read() # use .buffer to get a binary stream
377
409
  if not inencoding:
378
410
  code, inencoding = guess_decode_from_terminal(code, sys.stdin)
379
411
  # else the lexer will do the decoding
@@ -401,11 +433,32 @@ def main_inner(popts, args, usage):
401
433
  outfn = opts.pop('-o', None)
402
434
  fmter = opts.pop('-f', None)
403
435
  if fmter:
404
- try:
405
- fmter = get_formatter_by_name(fmter, **parsed_opts)
406
- except (OptionError, ClassNotFound) as err:
407
- print('Error:', err, file=sys.stderr)
408
- return 1
436
+ # custom formatter, located relative to user's cwd
437
+ if allow_custom_lexer_formatter and '.py' in fmter:
438
+ try:
439
+ filename = None
440
+ name = None
441
+ if ':' in fmter:
442
+ # Same logic as above for custom lexer
443
+ filename, name = fmter.rsplit(':', 1)
444
+
445
+ if '.py' in name:
446
+ name = None
447
+
448
+ if filename and name:
449
+ fmter = load_formatter_from_file(filename, name,
450
+ **parsed_opts)
451
+ else:
452
+ fmter = load_formatter_from_file(fmter, **parsed_opts)
453
+ except ClassNotFound as err:
454
+ print('Error:', err, file=sys.stderr)
455
+ return 1
456
+ else:
457
+ try:
458
+ fmter = get_formatter_by_name(fmter, **parsed_opts)
459
+ except (OptionError, ClassNotFound) as err:
460
+ print('Error:', err, file=sys.stderr)
461
+ return 1
409
462
 
410
463
  if outfn:
411
464
  if not fmter:
@@ -421,12 +474,11 @@ def main_inner(popts, args, usage):
421
474
  return 1
422
475
  else:
423
476
  if not fmter:
424
- fmter = TerminalFormatter(**parsed_opts)
425
- if sys.version_info > (3,):
426
- # Python 3: we have to use .buffer to get a binary stream
427
- outfile = sys.stdout.buffer
428
- else:
429
- outfile = sys.stdout
477
+ if '256' in os.environ.get('TERM', ''):
478
+ fmter = Terminal256Formatter(**parsed_opts)
479
+ else:
480
+ fmter = TerminalFormatter(**parsed_opts)
481
+ outfile = sys.stdout.buffer
430
482
 
431
483
  # determine output encoding if not explicitly selected
432
484
  if not outencoding:
@@ -441,10 +493,8 @@ def main_inner(popts, args, usage):
441
493
  if not outfn and sys.platform in ('win32', 'cygwin') and \
442
494
  fmter.name in ('Terminal', 'Terminal256'): # pragma: no cover
443
495
  # unfortunately colorama doesn't support binary streams on Py3
444
- if sys.version_info > (3,):
445
- from pygments.util import UnclosingTextIOWrapper
446
- outfile = UnclosingTextIOWrapper(outfile, encoding=fmter.encoding)
447
- fmter.encoding = None
496
+ outfile = UnclosingTextIOWrapper(outfile, encoding=fmter.encoding)
497
+ fmter.encoding = None
448
498
  try:
449
499
  import colorama.initialise
450
500
  except ImportError:
@@ -465,17 +515,17 @@ def main_inner(popts, args, usage):
465
515
  # ... and do it!
466
516
  if '-s' not in opts:
467
517
  # process whole input as per normal...
468
- highlight(code, lexer, fmter, outfile)
518
+ try:
519
+ highlight(code, lexer, fmter, outfile)
520
+ finally:
521
+ if outfn:
522
+ outfile.close()
469
523
  return 0
470
524
  else:
471
525
  # line by line processing of stdin (eg: for 'tail -f')...
472
526
  try:
473
527
  while 1:
474
- if sys.version_info > (3,):
475
- # Python 3: we have to use .buffer to get a binary stream
476
- line = sys.stdin.buffer.readline()
477
- else:
478
- line = sys.stdin.readline()
528
+ line = sys.stdin.buffer.readline()
479
529
  if not line:
480
530
  break
481
531
  if not inencoding:
@@ -486,6 +536,9 @@ def main_inner(popts, args, usage):
486
536
  return 0
487
537
  except KeyboardInterrupt: # pragma: no cover
488
538
  return 0
539
+ finally:
540
+ if outfn:
541
+ outfile.close()
489
542
 
490
543
 
491
544
  def main(args=sys.argv):
@@ -495,7 +548,7 @@ def main(args=sys.argv):
495
548
  usage = USAGE % ((args[0],) * 6)
496
549
 
497
550
  try:
498
- popts, args = getopt.getopt(args[1:], "l:f:F:o:O:P:LS:a:N:vhVHgs")
551
+ popts, args = getopt.getopt(args[1:], "l:f:F:o:O:P:LS:a:N:vhVHgsx")
499
552
  except getopt.GetoptError:
500
553
  print(usage, file=sys.stderr)
501
554
  return 2
@@ -510,7 +563,7 @@ def main(args=sys.argv):
510
563
  file=sys.stderr)
511
564
  print('Please report the whole traceback to the issue tracker at',
512
565
  file=sys.stderr)
513
- print('<https://bitbucket.org/birkenfeld/pygments-main/issues>.',
566
+ print('<https://github.com/pygments/pygments/issues>.',
514
567
  file=sys.stderr)
515
568
  print('*' * 65, file=sys.stderr)
516
569
  print(file=sys.stderr)
@@ -5,7 +5,7 @@
5
5
 
6
6
  Format colored console output.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -22,22 +22,19 @@ codes["underline"] = esc + "04m"
22
22
  codes["blink"] = esc + "05m"
23
23
  codes["overline"] = esc + "06m"
24
24
 
25
- dark_colors = ["black", "darkred", "darkgreen", "brown", "darkblue",
26
- "purple", "teal", "lightgray"]
27
- light_colors = ["darkgray", "red", "green", "yellow", "blue",
28
- "fuchsia", "turquoise", "white"]
25
+ dark_colors = ["black", "red", "green", "yellow", "blue",
26
+ "magenta", "cyan", "gray"]
27
+ light_colors = ["brightblack", "brightred", "brightgreen", "brightyellow", "brightblue",
28
+ "brightmagenta", "brightcyan", "white"]
29
29
 
30
30
  x = 30
31
31
  for d, l in zip(dark_colors, light_colors):
32
32
  codes[d] = esc + "%im" % x
33
- codes[l] = esc + "%i;01m" % x
33
+ codes[l] = esc + "%im" % (60 + x)
34
34
  x += 1
35
35
 
36
36
  del d, l, x
37
37
 
38
- codes["darkteal"] = codes["turquoise"]
39
- codes["darkyellow"] = codes["brown"]
40
- codes["fuscia"] = codes["fuchsia"]
41
38
  codes["white"] = codes["bold"]
42
39
 
43
40
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Module that implements the default filter.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -17,8 +17,7 @@ def apply_filters(stream, filters, lexer=None):
17
17
  filter, otherwise the filter receives `None`.
18
18
  """
19
19
  def _apply(filter_, stream):
20
- for token in filter_.filter(lexer, stream):
21
- yield token
20
+ yield from filter_.filter(lexer, stream)
22
21
  for filter_ in filters:
23
22
  stream = _apply(filter_, stream)
24
23
  return stream
@@ -40,7 +39,7 @@ def simplefilter(f):
40
39
  })
41
40
 
42
41
 
43
- class Filter(object):
42
+ class Filter:
44
43
  """
45
44
  Default filter. Subclass this class or use the `simplefilter`
46
45
  decorator to create own filters.
@@ -70,5 +69,4 @@ class FunctionFilter(Filter):
70
69
 
71
70
  def filter(self, lexer, stream):
72
71
  # pylint: disable=not-callable
73
- for ttype, value in self.function(lexer, stream, self.options):
74
- yield ttype, value
72
+ yield from self.function(lexer, stream, self.options)
@@ -6,7 +6,7 @@
6
6
  Module containing filter lookup functions and default
7
7
  filters.
8
8
 
9
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
9
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
10
10
  :license: BSD, see LICENSE for details.
11
11
  """
12
12
 
@@ -16,7 +16,7 @@ from pygments.token import String, Comment, Keyword, Name, Error, Whitespace, \
16
16
  string_to_tokentype
17
17
  from pygments.filter import Filter
18
18
  from pygments.util import get_list_opt, get_int_opt, get_bool_opt, \
19
- get_choice_opt, ClassNotFound, OptionError, text_type, string_types
19
+ get_choice_opt, ClassNotFound, OptionError
20
20
  from pygments.plugin import find_plugin_filters
21
21
 
22
22
 
@@ -45,8 +45,7 @@ def get_filter_by_name(filtername, **options):
45
45
 
46
46
  def get_all_filters():
47
47
  """Return a generator of all filter names."""
48
- for name in FILTERS:
49
- yield name
48
+ yield from FILTERS
50
49
  for name, _ in find_plugin_filters():
51
50
  yield name
52
51
 
@@ -88,9 +87,597 @@ class CodeTagFilter(Filter):
88
87
  if ttype in String.Doc or \
89
88
  ttype in Comment and \
90
89
  ttype not in Comment.Preproc:
91
- for sttype, svalue in _replace_special(ttype, value, regex,
92
- Comment.Special):
93
- yield sttype, svalue
90
+ yield from _replace_special(ttype, value, regex, Comment.Special)
91
+ else:
92
+ yield ttype, value
93
+
94
+
95
+ class SymbolFilter(Filter):
96
+ """Convert mathematical symbols such as \\<longrightarrow> in Isabelle
97
+ or \\longrightarrow in LaTeX into Unicode characters.
98
+
99
+ This is mostly useful for HTML or console output when you want to
100
+ approximate the source rendering you'd see in an IDE.
101
+
102
+ Options accepted:
103
+
104
+ `lang` : string
105
+ The symbol language. Must be one of ``'isabelle'`` or
106
+ ``'latex'``. The default is ``'isabelle'``.
107
+ """
108
+
109
+ latex_symbols = {
110
+ '\\alpha' : '\U000003b1',
111
+ '\\beta' : '\U000003b2',
112
+ '\\gamma' : '\U000003b3',
113
+ '\\delta' : '\U000003b4',
114
+ '\\varepsilon' : '\U000003b5',
115
+ '\\zeta' : '\U000003b6',
116
+ '\\eta' : '\U000003b7',
117
+ '\\vartheta' : '\U000003b8',
118
+ '\\iota' : '\U000003b9',
119
+ '\\kappa' : '\U000003ba',
120
+ '\\lambda' : '\U000003bb',
121
+ '\\mu' : '\U000003bc',
122
+ '\\nu' : '\U000003bd',
123
+ '\\xi' : '\U000003be',
124
+ '\\pi' : '\U000003c0',
125
+ '\\varrho' : '\U000003c1',
126
+ '\\sigma' : '\U000003c3',
127
+ '\\tau' : '\U000003c4',
128
+ '\\upsilon' : '\U000003c5',
129
+ '\\varphi' : '\U000003c6',
130
+ '\\chi' : '\U000003c7',
131
+ '\\psi' : '\U000003c8',
132
+ '\\omega' : '\U000003c9',
133
+ '\\Gamma' : '\U00000393',
134
+ '\\Delta' : '\U00000394',
135
+ '\\Theta' : '\U00000398',
136
+ '\\Lambda' : '\U0000039b',
137
+ '\\Xi' : '\U0000039e',
138
+ '\\Pi' : '\U000003a0',
139
+ '\\Sigma' : '\U000003a3',
140
+ '\\Upsilon' : '\U000003a5',
141
+ '\\Phi' : '\U000003a6',
142
+ '\\Psi' : '\U000003a8',
143
+ '\\Omega' : '\U000003a9',
144
+ '\\leftarrow' : '\U00002190',
145
+ '\\longleftarrow' : '\U000027f5',
146
+ '\\rightarrow' : '\U00002192',
147
+ '\\longrightarrow' : '\U000027f6',
148
+ '\\Leftarrow' : '\U000021d0',
149
+ '\\Longleftarrow' : '\U000027f8',
150
+ '\\Rightarrow' : '\U000021d2',
151
+ '\\Longrightarrow' : '\U000027f9',
152
+ '\\leftrightarrow' : '\U00002194',
153
+ '\\longleftrightarrow' : '\U000027f7',
154
+ '\\Leftrightarrow' : '\U000021d4',
155
+ '\\Longleftrightarrow' : '\U000027fa',
156
+ '\\mapsto' : '\U000021a6',
157
+ '\\longmapsto' : '\U000027fc',
158
+ '\\relbar' : '\U00002500',
159
+ '\\Relbar' : '\U00002550',
160
+ '\\hookleftarrow' : '\U000021a9',
161
+ '\\hookrightarrow' : '\U000021aa',
162
+ '\\leftharpoondown' : '\U000021bd',
163
+ '\\rightharpoondown' : '\U000021c1',
164
+ '\\leftharpoonup' : '\U000021bc',
165
+ '\\rightharpoonup' : '\U000021c0',
166
+ '\\rightleftharpoons' : '\U000021cc',
167
+ '\\leadsto' : '\U0000219d',
168
+ '\\downharpoonleft' : '\U000021c3',
169
+ '\\downharpoonright' : '\U000021c2',
170
+ '\\upharpoonleft' : '\U000021bf',
171
+ '\\upharpoonright' : '\U000021be',
172
+ '\\restriction' : '\U000021be',
173
+ '\\uparrow' : '\U00002191',
174
+ '\\Uparrow' : '\U000021d1',
175
+ '\\downarrow' : '\U00002193',
176
+ '\\Downarrow' : '\U000021d3',
177
+ '\\updownarrow' : '\U00002195',
178
+ '\\Updownarrow' : '\U000021d5',
179
+ '\\langle' : '\U000027e8',
180
+ '\\rangle' : '\U000027e9',
181
+ '\\lceil' : '\U00002308',
182
+ '\\rceil' : '\U00002309',
183
+ '\\lfloor' : '\U0000230a',
184
+ '\\rfloor' : '\U0000230b',
185
+ '\\flqq' : '\U000000ab',
186
+ '\\frqq' : '\U000000bb',
187
+ '\\bot' : '\U000022a5',
188
+ '\\top' : '\U000022a4',
189
+ '\\wedge' : '\U00002227',
190
+ '\\bigwedge' : '\U000022c0',
191
+ '\\vee' : '\U00002228',
192
+ '\\bigvee' : '\U000022c1',
193
+ '\\forall' : '\U00002200',
194
+ '\\exists' : '\U00002203',
195
+ '\\nexists' : '\U00002204',
196
+ '\\neg' : '\U000000ac',
197
+ '\\Box' : '\U000025a1',
198
+ '\\Diamond' : '\U000025c7',
199
+ '\\vdash' : '\U000022a2',
200
+ '\\models' : '\U000022a8',
201
+ '\\dashv' : '\U000022a3',
202
+ '\\surd' : '\U0000221a',
203
+ '\\le' : '\U00002264',
204
+ '\\ge' : '\U00002265',
205
+ '\\ll' : '\U0000226a',
206
+ '\\gg' : '\U0000226b',
207
+ '\\lesssim' : '\U00002272',
208
+ '\\gtrsim' : '\U00002273',
209
+ '\\lessapprox' : '\U00002a85',
210
+ '\\gtrapprox' : '\U00002a86',
211
+ '\\in' : '\U00002208',
212
+ '\\notin' : '\U00002209',
213
+ '\\subset' : '\U00002282',
214
+ '\\supset' : '\U00002283',
215
+ '\\subseteq' : '\U00002286',
216
+ '\\supseteq' : '\U00002287',
217
+ '\\sqsubset' : '\U0000228f',
218
+ '\\sqsupset' : '\U00002290',
219
+ '\\sqsubseteq' : '\U00002291',
220
+ '\\sqsupseteq' : '\U00002292',
221
+ '\\cap' : '\U00002229',
222
+ '\\bigcap' : '\U000022c2',
223
+ '\\cup' : '\U0000222a',
224
+ '\\bigcup' : '\U000022c3',
225
+ '\\sqcup' : '\U00002294',
226
+ '\\bigsqcup' : '\U00002a06',
227
+ '\\sqcap' : '\U00002293',
228
+ '\\Bigsqcap' : '\U00002a05',
229
+ '\\setminus' : '\U00002216',
230
+ '\\propto' : '\U0000221d',
231
+ '\\uplus' : '\U0000228e',
232
+ '\\bigplus' : '\U00002a04',
233
+ '\\sim' : '\U0000223c',
234
+ '\\doteq' : '\U00002250',
235
+ '\\simeq' : '\U00002243',
236
+ '\\approx' : '\U00002248',
237
+ '\\asymp' : '\U0000224d',
238
+ '\\cong' : '\U00002245',
239
+ '\\equiv' : '\U00002261',
240
+ '\\Join' : '\U000022c8',
241
+ '\\bowtie' : '\U00002a1d',
242
+ '\\prec' : '\U0000227a',
243
+ '\\succ' : '\U0000227b',
244
+ '\\preceq' : '\U0000227c',
245
+ '\\succeq' : '\U0000227d',
246
+ '\\parallel' : '\U00002225',
247
+ '\\mid' : '\U000000a6',
248
+ '\\pm' : '\U000000b1',
249
+ '\\mp' : '\U00002213',
250
+ '\\times' : '\U000000d7',
251
+ '\\div' : '\U000000f7',
252
+ '\\cdot' : '\U000022c5',
253
+ '\\star' : '\U000022c6',
254
+ '\\circ' : '\U00002218',
255
+ '\\dagger' : '\U00002020',
256
+ '\\ddagger' : '\U00002021',
257
+ '\\lhd' : '\U000022b2',
258
+ '\\rhd' : '\U000022b3',
259
+ '\\unlhd' : '\U000022b4',
260
+ '\\unrhd' : '\U000022b5',
261
+ '\\triangleleft' : '\U000025c3',
262
+ '\\triangleright' : '\U000025b9',
263
+ '\\triangle' : '\U000025b3',
264
+ '\\triangleq' : '\U0000225c',
265
+ '\\oplus' : '\U00002295',
266
+ '\\bigoplus' : '\U00002a01',
267
+ '\\otimes' : '\U00002297',
268
+ '\\bigotimes' : '\U00002a02',
269
+ '\\odot' : '\U00002299',
270
+ '\\bigodot' : '\U00002a00',
271
+ '\\ominus' : '\U00002296',
272
+ '\\oslash' : '\U00002298',
273
+ '\\dots' : '\U00002026',
274
+ '\\cdots' : '\U000022ef',
275
+ '\\sum' : '\U00002211',
276
+ '\\prod' : '\U0000220f',
277
+ '\\coprod' : '\U00002210',
278
+ '\\infty' : '\U0000221e',
279
+ '\\int' : '\U0000222b',
280
+ '\\oint' : '\U0000222e',
281
+ '\\clubsuit' : '\U00002663',
282
+ '\\diamondsuit' : '\U00002662',
283
+ '\\heartsuit' : '\U00002661',
284
+ '\\spadesuit' : '\U00002660',
285
+ '\\aleph' : '\U00002135',
286
+ '\\emptyset' : '\U00002205',
287
+ '\\nabla' : '\U00002207',
288
+ '\\partial' : '\U00002202',
289
+ '\\flat' : '\U0000266d',
290
+ '\\natural' : '\U0000266e',
291
+ '\\sharp' : '\U0000266f',
292
+ '\\angle' : '\U00002220',
293
+ '\\copyright' : '\U000000a9',
294
+ '\\textregistered' : '\U000000ae',
295
+ '\\textonequarter' : '\U000000bc',
296
+ '\\textonehalf' : '\U000000bd',
297
+ '\\textthreequarters' : '\U000000be',
298
+ '\\textordfeminine' : '\U000000aa',
299
+ '\\textordmasculine' : '\U000000ba',
300
+ '\\euro' : '\U000020ac',
301
+ '\\pounds' : '\U000000a3',
302
+ '\\yen' : '\U000000a5',
303
+ '\\textcent' : '\U000000a2',
304
+ '\\textcurrency' : '\U000000a4',
305
+ '\\textdegree' : '\U000000b0',
306
+ }
307
+
308
+ isabelle_symbols = {
309
+ '\\<zero>' : '\U0001d7ec',
310
+ '\\<one>' : '\U0001d7ed',
311
+ '\\<two>' : '\U0001d7ee',
312
+ '\\<three>' : '\U0001d7ef',
313
+ '\\<four>' : '\U0001d7f0',
314
+ '\\<five>' : '\U0001d7f1',
315
+ '\\<six>' : '\U0001d7f2',
316
+ '\\<seven>' : '\U0001d7f3',
317
+ '\\<eight>' : '\U0001d7f4',
318
+ '\\<nine>' : '\U0001d7f5',
319
+ '\\<A>' : '\U0001d49c',
320
+ '\\<B>' : '\U0000212c',
321
+ '\\<C>' : '\U0001d49e',
322
+ '\\<D>' : '\U0001d49f',
323
+ '\\<E>' : '\U00002130',
324
+ '\\<F>' : '\U00002131',
325
+ '\\<G>' : '\U0001d4a2',
326
+ '\\<H>' : '\U0000210b',
327
+ '\\<I>' : '\U00002110',
328
+ '\\<J>' : '\U0001d4a5',
329
+ '\\<K>' : '\U0001d4a6',
330
+ '\\<L>' : '\U00002112',
331
+ '\\<M>' : '\U00002133',
332
+ '\\<N>' : '\U0001d4a9',
333
+ '\\<O>' : '\U0001d4aa',
334
+ '\\<P>' : '\U0001d4ab',
335
+ '\\<Q>' : '\U0001d4ac',
336
+ '\\<R>' : '\U0000211b',
337
+ '\\<S>' : '\U0001d4ae',
338
+ '\\<T>' : '\U0001d4af',
339
+ '\\<U>' : '\U0001d4b0',
340
+ '\\<V>' : '\U0001d4b1',
341
+ '\\<W>' : '\U0001d4b2',
342
+ '\\<X>' : '\U0001d4b3',
343
+ '\\<Y>' : '\U0001d4b4',
344
+ '\\<Z>' : '\U0001d4b5',
345
+ '\\<a>' : '\U0001d5ba',
346
+ '\\<b>' : '\U0001d5bb',
347
+ '\\<c>' : '\U0001d5bc',
348
+ '\\<d>' : '\U0001d5bd',
349
+ '\\<e>' : '\U0001d5be',
350
+ '\\<f>' : '\U0001d5bf',
351
+ '\\<g>' : '\U0001d5c0',
352
+ '\\<h>' : '\U0001d5c1',
353
+ '\\<i>' : '\U0001d5c2',
354
+ '\\<j>' : '\U0001d5c3',
355
+ '\\<k>' : '\U0001d5c4',
356
+ '\\<l>' : '\U0001d5c5',
357
+ '\\<m>' : '\U0001d5c6',
358
+ '\\<n>' : '\U0001d5c7',
359
+ '\\<o>' : '\U0001d5c8',
360
+ '\\<p>' : '\U0001d5c9',
361
+ '\\<q>' : '\U0001d5ca',
362
+ '\\<r>' : '\U0001d5cb',
363
+ '\\<s>' : '\U0001d5cc',
364
+ '\\<t>' : '\U0001d5cd',
365
+ '\\<u>' : '\U0001d5ce',
366
+ '\\<v>' : '\U0001d5cf',
367
+ '\\<w>' : '\U0001d5d0',
368
+ '\\<x>' : '\U0001d5d1',
369
+ '\\<y>' : '\U0001d5d2',
370
+ '\\<z>' : '\U0001d5d3',
371
+ '\\<AA>' : '\U0001d504',
372
+ '\\<BB>' : '\U0001d505',
373
+ '\\<CC>' : '\U0000212d',
374
+ '\\<DD>' : '\U0001d507',
375
+ '\\<EE>' : '\U0001d508',
376
+ '\\<FF>' : '\U0001d509',
377
+ '\\<GG>' : '\U0001d50a',
378
+ '\\<HH>' : '\U0000210c',
379
+ '\\<II>' : '\U00002111',
380
+ '\\<JJ>' : '\U0001d50d',
381
+ '\\<KK>' : '\U0001d50e',
382
+ '\\<LL>' : '\U0001d50f',
383
+ '\\<MM>' : '\U0001d510',
384
+ '\\<NN>' : '\U0001d511',
385
+ '\\<OO>' : '\U0001d512',
386
+ '\\<PP>' : '\U0001d513',
387
+ '\\<QQ>' : '\U0001d514',
388
+ '\\<RR>' : '\U0000211c',
389
+ '\\<SS>' : '\U0001d516',
390
+ '\\<TT>' : '\U0001d517',
391
+ '\\<UU>' : '\U0001d518',
392
+ '\\<VV>' : '\U0001d519',
393
+ '\\<WW>' : '\U0001d51a',
394
+ '\\<XX>' : '\U0001d51b',
395
+ '\\<YY>' : '\U0001d51c',
396
+ '\\<ZZ>' : '\U00002128',
397
+ '\\<aa>' : '\U0001d51e',
398
+ '\\<bb>' : '\U0001d51f',
399
+ '\\<cc>' : '\U0001d520',
400
+ '\\<dd>' : '\U0001d521',
401
+ '\\<ee>' : '\U0001d522',
402
+ '\\<ff>' : '\U0001d523',
403
+ '\\<gg>' : '\U0001d524',
404
+ '\\<hh>' : '\U0001d525',
405
+ '\\<ii>' : '\U0001d526',
406
+ '\\<jj>' : '\U0001d527',
407
+ '\\<kk>' : '\U0001d528',
408
+ '\\<ll>' : '\U0001d529',
409
+ '\\<mm>' : '\U0001d52a',
410
+ '\\<nn>' : '\U0001d52b',
411
+ '\\<oo>' : '\U0001d52c',
412
+ '\\<pp>' : '\U0001d52d',
413
+ '\\<qq>' : '\U0001d52e',
414
+ '\\<rr>' : '\U0001d52f',
415
+ '\\<ss>' : '\U0001d530',
416
+ '\\<tt>' : '\U0001d531',
417
+ '\\<uu>' : '\U0001d532',
418
+ '\\<vv>' : '\U0001d533',
419
+ '\\<ww>' : '\U0001d534',
420
+ '\\<xx>' : '\U0001d535',
421
+ '\\<yy>' : '\U0001d536',
422
+ '\\<zz>' : '\U0001d537',
423
+ '\\<alpha>' : '\U000003b1',
424
+ '\\<beta>' : '\U000003b2',
425
+ '\\<gamma>' : '\U000003b3',
426
+ '\\<delta>' : '\U000003b4',
427
+ '\\<epsilon>' : '\U000003b5',
428
+ '\\<zeta>' : '\U000003b6',
429
+ '\\<eta>' : '\U000003b7',
430
+ '\\<theta>' : '\U000003b8',
431
+ '\\<iota>' : '\U000003b9',
432
+ '\\<kappa>' : '\U000003ba',
433
+ '\\<lambda>' : '\U000003bb',
434
+ '\\<mu>' : '\U000003bc',
435
+ '\\<nu>' : '\U000003bd',
436
+ '\\<xi>' : '\U000003be',
437
+ '\\<pi>' : '\U000003c0',
438
+ '\\<rho>' : '\U000003c1',
439
+ '\\<sigma>' : '\U000003c3',
440
+ '\\<tau>' : '\U000003c4',
441
+ '\\<upsilon>' : '\U000003c5',
442
+ '\\<phi>' : '\U000003c6',
443
+ '\\<chi>' : '\U000003c7',
444
+ '\\<psi>' : '\U000003c8',
445
+ '\\<omega>' : '\U000003c9',
446
+ '\\<Gamma>' : '\U00000393',
447
+ '\\<Delta>' : '\U00000394',
448
+ '\\<Theta>' : '\U00000398',
449
+ '\\<Lambda>' : '\U0000039b',
450
+ '\\<Xi>' : '\U0000039e',
451
+ '\\<Pi>' : '\U000003a0',
452
+ '\\<Sigma>' : '\U000003a3',
453
+ '\\<Upsilon>' : '\U000003a5',
454
+ '\\<Phi>' : '\U000003a6',
455
+ '\\<Psi>' : '\U000003a8',
456
+ '\\<Omega>' : '\U000003a9',
457
+ '\\<bool>' : '\U0001d539',
458
+ '\\<complex>' : '\U00002102',
459
+ '\\<nat>' : '\U00002115',
460
+ '\\<rat>' : '\U0000211a',
461
+ '\\<real>' : '\U0000211d',
462
+ '\\<int>' : '\U00002124',
463
+ '\\<leftarrow>' : '\U00002190',
464
+ '\\<longleftarrow>' : '\U000027f5',
465
+ '\\<rightarrow>' : '\U00002192',
466
+ '\\<longrightarrow>' : '\U000027f6',
467
+ '\\<Leftarrow>' : '\U000021d0',
468
+ '\\<Longleftarrow>' : '\U000027f8',
469
+ '\\<Rightarrow>' : '\U000021d2',
470
+ '\\<Longrightarrow>' : '\U000027f9',
471
+ '\\<leftrightarrow>' : '\U00002194',
472
+ '\\<longleftrightarrow>' : '\U000027f7',
473
+ '\\<Leftrightarrow>' : '\U000021d4',
474
+ '\\<Longleftrightarrow>' : '\U000027fa',
475
+ '\\<mapsto>' : '\U000021a6',
476
+ '\\<longmapsto>' : '\U000027fc',
477
+ '\\<midarrow>' : '\U00002500',
478
+ '\\<Midarrow>' : '\U00002550',
479
+ '\\<hookleftarrow>' : '\U000021a9',
480
+ '\\<hookrightarrow>' : '\U000021aa',
481
+ '\\<leftharpoondown>' : '\U000021bd',
482
+ '\\<rightharpoondown>' : '\U000021c1',
483
+ '\\<leftharpoonup>' : '\U000021bc',
484
+ '\\<rightharpoonup>' : '\U000021c0',
485
+ '\\<rightleftharpoons>' : '\U000021cc',
486
+ '\\<leadsto>' : '\U0000219d',
487
+ '\\<downharpoonleft>' : '\U000021c3',
488
+ '\\<downharpoonright>' : '\U000021c2',
489
+ '\\<upharpoonleft>' : '\U000021bf',
490
+ '\\<upharpoonright>' : '\U000021be',
491
+ '\\<restriction>' : '\U000021be',
492
+ '\\<Colon>' : '\U00002237',
493
+ '\\<up>' : '\U00002191',
494
+ '\\<Up>' : '\U000021d1',
495
+ '\\<down>' : '\U00002193',
496
+ '\\<Down>' : '\U000021d3',
497
+ '\\<updown>' : '\U00002195',
498
+ '\\<Updown>' : '\U000021d5',
499
+ '\\<langle>' : '\U000027e8',
500
+ '\\<rangle>' : '\U000027e9',
501
+ '\\<lceil>' : '\U00002308',
502
+ '\\<rceil>' : '\U00002309',
503
+ '\\<lfloor>' : '\U0000230a',
504
+ '\\<rfloor>' : '\U0000230b',
505
+ '\\<lparr>' : '\U00002987',
506
+ '\\<rparr>' : '\U00002988',
507
+ '\\<lbrakk>' : '\U000027e6',
508
+ '\\<rbrakk>' : '\U000027e7',
509
+ '\\<lbrace>' : '\U00002983',
510
+ '\\<rbrace>' : '\U00002984',
511
+ '\\<guillemotleft>' : '\U000000ab',
512
+ '\\<guillemotright>' : '\U000000bb',
513
+ '\\<bottom>' : '\U000022a5',
514
+ '\\<top>' : '\U000022a4',
515
+ '\\<and>' : '\U00002227',
516
+ '\\<And>' : '\U000022c0',
517
+ '\\<or>' : '\U00002228',
518
+ '\\<Or>' : '\U000022c1',
519
+ '\\<forall>' : '\U00002200',
520
+ '\\<exists>' : '\U00002203',
521
+ '\\<nexists>' : '\U00002204',
522
+ '\\<not>' : '\U000000ac',
523
+ '\\<box>' : '\U000025a1',
524
+ '\\<diamond>' : '\U000025c7',
525
+ '\\<turnstile>' : '\U000022a2',
526
+ '\\<Turnstile>' : '\U000022a8',
527
+ '\\<tturnstile>' : '\U000022a9',
528
+ '\\<TTurnstile>' : '\U000022ab',
529
+ '\\<stileturn>' : '\U000022a3',
530
+ '\\<surd>' : '\U0000221a',
531
+ '\\<le>' : '\U00002264',
532
+ '\\<ge>' : '\U00002265',
533
+ '\\<lless>' : '\U0000226a',
534
+ '\\<ggreater>' : '\U0000226b',
535
+ '\\<lesssim>' : '\U00002272',
536
+ '\\<greatersim>' : '\U00002273',
537
+ '\\<lessapprox>' : '\U00002a85',
538
+ '\\<greaterapprox>' : '\U00002a86',
539
+ '\\<in>' : '\U00002208',
540
+ '\\<notin>' : '\U00002209',
541
+ '\\<subset>' : '\U00002282',
542
+ '\\<supset>' : '\U00002283',
543
+ '\\<subseteq>' : '\U00002286',
544
+ '\\<supseteq>' : '\U00002287',
545
+ '\\<sqsubset>' : '\U0000228f',
546
+ '\\<sqsupset>' : '\U00002290',
547
+ '\\<sqsubseteq>' : '\U00002291',
548
+ '\\<sqsupseteq>' : '\U00002292',
549
+ '\\<inter>' : '\U00002229',
550
+ '\\<Inter>' : '\U000022c2',
551
+ '\\<union>' : '\U0000222a',
552
+ '\\<Union>' : '\U000022c3',
553
+ '\\<squnion>' : '\U00002294',
554
+ '\\<Squnion>' : '\U00002a06',
555
+ '\\<sqinter>' : '\U00002293',
556
+ '\\<Sqinter>' : '\U00002a05',
557
+ '\\<setminus>' : '\U00002216',
558
+ '\\<propto>' : '\U0000221d',
559
+ '\\<uplus>' : '\U0000228e',
560
+ '\\<Uplus>' : '\U00002a04',
561
+ '\\<noteq>' : '\U00002260',
562
+ '\\<sim>' : '\U0000223c',
563
+ '\\<doteq>' : '\U00002250',
564
+ '\\<simeq>' : '\U00002243',
565
+ '\\<approx>' : '\U00002248',
566
+ '\\<asymp>' : '\U0000224d',
567
+ '\\<cong>' : '\U00002245',
568
+ '\\<smile>' : '\U00002323',
569
+ '\\<equiv>' : '\U00002261',
570
+ '\\<frown>' : '\U00002322',
571
+ '\\<Join>' : '\U000022c8',
572
+ '\\<bowtie>' : '\U00002a1d',
573
+ '\\<prec>' : '\U0000227a',
574
+ '\\<succ>' : '\U0000227b',
575
+ '\\<preceq>' : '\U0000227c',
576
+ '\\<succeq>' : '\U0000227d',
577
+ '\\<parallel>' : '\U00002225',
578
+ '\\<bar>' : '\U000000a6',
579
+ '\\<plusminus>' : '\U000000b1',
580
+ '\\<minusplus>' : '\U00002213',
581
+ '\\<times>' : '\U000000d7',
582
+ '\\<div>' : '\U000000f7',
583
+ '\\<cdot>' : '\U000022c5',
584
+ '\\<star>' : '\U000022c6',
585
+ '\\<bullet>' : '\U00002219',
586
+ '\\<circ>' : '\U00002218',
587
+ '\\<dagger>' : '\U00002020',
588
+ '\\<ddagger>' : '\U00002021',
589
+ '\\<lhd>' : '\U000022b2',
590
+ '\\<rhd>' : '\U000022b3',
591
+ '\\<unlhd>' : '\U000022b4',
592
+ '\\<unrhd>' : '\U000022b5',
593
+ '\\<triangleleft>' : '\U000025c3',
594
+ '\\<triangleright>' : '\U000025b9',
595
+ '\\<triangle>' : '\U000025b3',
596
+ '\\<triangleq>' : '\U0000225c',
597
+ '\\<oplus>' : '\U00002295',
598
+ '\\<Oplus>' : '\U00002a01',
599
+ '\\<otimes>' : '\U00002297',
600
+ '\\<Otimes>' : '\U00002a02',
601
+ '\\<odot>' : '\U00002299',
602
+ '\\<Odot>' : '\U00002a00',
603
+ '\\<ominus>' : '\U00002296',
604
+ '\\<oslash>' : '\U00002298',
605
+ '\\<dots>' : '\U00002026',
606
+ '\\<cdots>' : '\U000022ef',
607
+ '\\<Sum>' : '\U00002211',
608
+ '\\<Prod>' : '\U0000220f',
609
+ '\\<Coprod>' : '\U00002210',
610
+ '\\<infinity>' : '\U0000221e',
611
+ '\\<integral>' : '\U0000222b',
612
+ '\\<ointegral>' : '\U0000222e',
613
+ '\\<clubsuit>' : '\U00002663',
614
+ '\\<diamondsuit>' : '\U00002662',
615
+ '\\<heartsuit>' : '\U00002661',
616
+ '\\<spadesuit>' : '\U00002660',
617
+ '\\<aleph>' : '\U00002135',
618
+ '\\<emptyset>' : '\U00002205',
619
+ '\\<nabla>' : '\U00002207',
620
+ '\\<partial>' : '\U00002202',
621
+ '\\<flat>' : '\U0000266d',
622
+ '\\<natural>' : '\U0000266e',
623
+ '\\<sharp>' : '\U0000266f',
624
+ '\\<angle>' : '\U00002220',
625
+ '\\<copyright>' : '\U000000a9',
626
+ '\\<registered>' : '\U000000ae',
627
+ '\\<hyphen>' : '\U000000ad',
628
+ '\\<inverse>' : '\U000000af',
629
+ '\\<onequarter>' : '\U000000bc',
630
+ '\\<onehalf>' : '\U000000bd',
631
+ '\\<threequarters>' : '\U000000be',
632
+ '\\<ordfeminine>' : '\U000000aa',
633
+ '\\<ordmasculine>' : '\U000000ba',
634
+ '\\<section>' : '\U000000a7',
635
+ '\\<paragraph>' : '\U000000b6',
636
+ '\\<exclamdown>' : '\U000000a1',
637
+ '\\<questiondown>' : '\U000000bf',
638
+ '\\<euro>' : '\U000020ac',
639
+ '\\<pounds>' : '\U000000a3',
640
+ '\\<yen>' : '\U000000a5',
641
+ '\\<cent>' : '\U000000a2',
642
+ '\\<currency>' : '\U000000a4',
643
+ '\\<degree>' : '\U000000b0',
644
+ '\\<amalg>' : '\U00002a3f',
645
+ '\\<mho>' : '\U00002127',
646
+ '\\<lozenge>' : '\U000025ca',
647
+ '\\<wp>' : '\U00002118',
648
+ '\\<wrong>' : '\U00002240',
649
+ '\\<struct>' : '\U000022c4',
650
+ '\\<acute>' : '\U000000b4',
651
+ '\\<index>' : '\U00000131',
652
+ '\\<dieresis>' : '\U000000a8',
653
+ '\\<cedilla>' : '\U000000b8',
654
+ '\\<hungarumlaut>' : '\U000002dd',
655
+ '\\<some>' : '\U000003f5',
656
+ '\\<newline>' : '\U000023ce',
657
+ '\\<open>' : '\U00002039',
658
+ '\\<close>' : '\U0000203a',
659
+ '\\<here>' : '\U00002302',
660
+ '\\<^sub>' : '\U000021e9',
661
+ '\\<^sup>' : '\U000021e7',
662
+ '\\<^bold>' : '\U00002759',
663
+ '\\<^bsub>' : '\U000021d8',
664
+ '\\<^esub>' : '\U000021d9',
665
+ '\\<^bsup>' : '\U000021d7',
666
+ '\\<^esup>' : '\U000021d6',
667
+ }
668
+
669
+ lang_map = {'isabelle' : isabelle_symbols, 'latex' : latex_symbols}
670
+
671
+ def __init__(self, **options):
672
+ Filter.__init__(self, **options)
673
+ lang = get_choice_opt(options, 'lang',
674
+ ['isabelle', 'latex'], 'isabelle')
675
+ self.symbols = self.lang_map[lang]
676
+
677
+ def filter(self, lexer, stream):
678
+ for ttype, value in stream:
679
+ if value in self.symbols:
680
+ yield ttype, self.symbols[value]
94
681
  else:
95
682
  yield ttype, value
96
683
 
@@ -113,7 +700,7 @@ class KeywordCaseFilter(Filter):
113
700
  Filter.__init__(self, **options)
114
701
  case = get_choice_opt(options, 'case',
115
702
  ['lower', 'upper', 'capitalize'], 'lower')
116
- self.convert = getattr(text_type, case)
703
+ self.convert = getattr(str, case)
117
704
 
118
705
  def filter(self, lexer, stream):
119
706
  for ttype, value in stream:
@@ -229,11 +816,11 @@ class VisibleWhitespaceFilter(Filter):
229
816
 
230
817
  def __init__(self, **options):
231
818
  Filter.__init__(self, **options)
232
- for name, default in [('spaces', u'·'),
233
- ('tabs', u'»'),
234
- ('newlines', u'¶')]:
819
+ for name, default in [('spaces', '·'),
820
+ ('tabs', '»'),
821
+ ('newlines', '¶')]:
235
822
  opt = options.get(name, False)
236
- if isinstance(opt, string_types) and len(opt) == 1:
823
+ if isinstance(opt, str) and len(opt) == 1:
237
824
  setattr(self, name, opt)
238
825
  else:
239
826
  setattr(self, name, (opt and default or ''))
@@ -246,10 +833,11 @@ class VisibleWhitespaceFilter(Filter):
246
833
 
247
834
  def filter(self, lexer, stream):
248
835
  if self.wstt:
249
- spaces = self.spaces or u' '
250
- tabs = self.tabs or u'\t'
251
- newlines = self.newlines or u'\n'
836
+ spaces = self.spaces or ' '
837
+ tabs = self.tabs or '\t'
838
+ newlines = self.newlines or '\n'
252
839
  regex = re.compile(r'\s')
840
+
253
841
  def replacefunc(wschar):
254
842
  if wschar == ' ':
255
843
  return spaces
@@ -260,9 +848,8 @@ class VisibleWhitespaceFilter(Filter):
260
848
  return wschar
261
849
 
262
850
  for ttype, value in stream:
263
- for sttype, svalue in _replace_special(ttype, value, regex,
264
- Whitespace, replacefunc):
265
- yield sttype, svalue
851
+ yield from _replace_special(ttype, value, regex, Whitespace,
852
+ replacefunc)
266
853
  else:
267
854
  spaces, tabs, newlines = self.spaces, self.tabs, self.newlines
268
855
  # simpler processing
@@ -298,18 +885,18 @@ class GobbleFilter(Filter):
298
885
  if left < len(value):
299
886
  return value[left:], 0
300
887
  else:
301
- return u'', left - len(value)
888
+ return '', left - len(value)
302
889
 
303
890
  def filter(self, lexer, stream):
304
891
  n = self.n
305
- left = n # How many characters left to gobble.
892
+ left = n # How many characters left to gobble.
306
893
  for ttype, value in stream:
307
894
  # Remove ``left`` tokens from first line, ``n`` from all others.
308
895
  parts = value.split('\n')
309
896
  (parts[0], left) = self.gobble(parts[0], left)
310
897
  for i in range(1, len(parts)):
311
898
  (parts[i], left) = self.gobble(parts[i], n)
312
- value = u'\n'.join(parts)
899
+ value = '\n'.join(parts)
313
900
 
314
901
  if value != '':
315
902
  yield ttype, value
@@ -347,4 +934,5 @@ FILTERS = {
347
934
  'whitespace': VisibleWhitespaceFilter,
348
935
  'gobble': GobbleFilter,
349
936
  'tokenmerge': TokenMergeFilter,
937
+ 'symbols': SymbolFilter,
350
938
  }