pygments.rb 1.2.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ci.yml +40 -0
  4. data/.github/workflows/release.yml +24 -0
  5. data/.gitignore +4 -6
  6. data/.rubocop.yml +16 -0
  7. data/CHANGELOG.adoc +137 -0
  8. data/Gemfile +3 -1
  9. data/LICENSE +1 -1
  10. data/README.adoc +159 -0
  11. data/Rakefile +8 -32
  12. data/bench.rb +14 -8
  13. data/lib/pygments.rb +16 -14
  14. data/lib/pygments/lexer.rb +87 -65
  15. data/lib/pygments/mentos.py +23 -110
  16. data/lib/pygments/popen.rb +188 -284
  17. data/lib/pygments/version.rb +2 -2
  18. data/pygments.rb.gemspec +20 -13
  19. data/test/test_pygments.rb +50 -110
  20. data/vendor/pygments-main/{AUTHORS → Pygments-2.8.1.dist-info/AUTHORS} +26 -3
  21. data/vendor/pygments-main/Pygments-2.8.1.dist-info/INSTALLER +1 -0
  22. data/vendor/pygments-main/{LICENSE → Pygments-2.8.1.dist-info/LICENSE} +1 -1
  23. data/vendor/pygments-main/Pygments-2.8.1.dist-info/METADATA +48 -0
  24. data/vendor/pygments-main/Pygments-2.8.1.dist-info/RECORD +494 -0
  25. data/vendor/pygments-main/Pygments-2.8.1.dist-info/REQUESTED +0 -0
  26. data/vendor/pygments-main/Pygments-2.8.1.dist-info/WHEEL +5 -0
  27. data/vendor/pygments-main/Pygments-2.8.1.dist-info/entry_points.txt +3 -0
  28. data/vendor/pygments-main/Pygments-2.8.1.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 -12
  31. data/vendor/pygments-main/pygments/__main__.py +17 -0
  32. data/vendor/pygments-main/pygments/cmdline.py +213 -184
  33. data/vendor/pygments-main/pygments/console.py +6 -10
  34. data/vendor/pygments-main/pygments/filter.py +4 -7
  35. data/vendor/pygments-main/pygments/filters/__init__.py +609 -22
  36. data/vendor/pygments-main/pygments/formatter.py +4 -5
  37. data/vendor/pygments-main/pygments/formatters/__init__.py +10 -10
  38. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -4
  39. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
  40. data/vendor/pygments-main/pygments/formatters/html.py +242 -139
  41. data/vendor/pygments-main/pygments/formatters/img.py +91 -50
  42. data/vendor/pygments-main/pygments/formatters/irc.py +39 -40
  43. data/vendor/pygments-main/pygments/formatters/latex.py +62 -33
  44. data/vendor/pygments-main/pygments/formatters/other.py +18 -17
  45. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -30
  46. data/vendor/pygments-main/pygments/formatters/svg.py +40 -5
  47. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -32
  48. data/vendor/pygments-main/pygments/formatters/terminal256.py +45 -14
  49. data/vendor/pygments-main/pygments/lexer.py +47 -44
  50. data/vendor/pygments-main/pygments/lexers/__init__.py +341 -0
  51. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1644 -0
  52. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +231 -0
  53. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +75 -0
  54. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1724 -0
  55. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +5326 -0
  56. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +292 -0
  57. data/vendor/pygments-main/pygments/lexers/_mapping.py +554 -0
  58. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1171 -0
  59. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1281 -0
  60. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +2600 -0
  61. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +4752 -0
  62. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +677 -0
  63. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3093 -0
  64. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1160 -0
  65. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +557 -0
  66. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +457 -0
  67. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1003 -0
  68. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +112 -0
  69. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +279 -0
  70. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1938 -0
  71. data/vendor/pygments-main/pygments/lexers/actionscript.py +244 -0
  72. data/vendor/pygments-main/pygments/lexers/agile.py +23 -0
  73. data/vendor/pygments-main/pygments/lexers/algebra.py +239 -0
  74. data/vendor/pygments-main/pygments/lexers/ambient.py +75 -0
  75. data/vendor/pygments-main/pygments/lexers/amdgpu.py +48 -0
  76. data/vendor/pygments-main/pygments/lexers/ampl.py +86 -0
  77. data/vendor/pygments-main/pygments/lexers/apl.py +100 -0
  78. data/vendor/pygments-main/pygments/lexers/archetype.py +317 -0
  79. data/vendor/pygments-main/pygments/lexers/arrow.py +116 -0
  80. data/vendor/pygments-main/pygments/lexers/asm.py +1004 -0
  81. data/vendor/pygments-main/pygments/lexers/automation.py +379 -0
  82. data/vendor/pygments-main/pygments/lexers/bare.py +103 -0
  83. data/vendor/pygments-main/pygments/lexers/basic.py +661 -0
  84. data/vendor/pygments-main/pygments/lexers/bibtex.py +159 -0
  85. data/vendor/pygments-main/pygments/lexers/boa.py +101 -0
  86. data/vendor/pygments-main/pygments/lexers/business.py +626 -0
  87. data/vendor/pygments-main/pygments/lexers/c_cpp.py +342 -0
  88. data/vendor/pygments-main/pygments/lexers/c_like.py +565 -0
  89. data/vendor/pygments-main/pygments/lexers/capnproto.py +77 -0
  90. data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
  91. data/vendor/pygments-main/pygments/lexers/chapel.py +111 -0
  92. data/vendor/pygments-main/pygments/lexers/clean.py +178 -0
  93. data/vendor/pygments-main/pygments/lexers/compiled.py +33 -0
  94. data/vendor/pygments-main/pygments/lexers/configs.py +985 -0
  95. data/vendor/pygments-main/pygments/lexers/console.py +113 -0
  96. data/vendor/pygments-main/pygments/lexers/crystal.py +366 -0
  97. data/vendor/pygments-main/pygments/lexers/csound.py +466 -0
  98. data/vendor/pygments-main/pygments/lexers/css.py +694 -0
  99. data/vendor/pygments-main/pygments/lexers/d.py +255 -0
  100. data/vendor/pygments-main/pygments/lexers/dalvik.py +124 -0
  101. data/vendor/pygments-main/pygments/lexers/data.py +697 -0
  102. data/vendor/pygments-main/pygments/lexers/devicetree.py +108 -0
  103. data/vendor/pygments-main/pygments/lexers/diff.py +164 -0
  104. data/vendor/pygments-main/pygments/lexers/dotnet.py +706 -0
  105. data/vendor/pygments-main/pygments/lexers/dsls.py +959 -0
  106. data/vendor/pygments-main/pygments/lexers/dylan.py +286 -0
  107. data/vendor/pygments-main/pygments/lexers/ecl.py +137 -0
  108. data/vendor/pygments-main/pygments/lexers/eiffel.py +64 -0
  109. data/vendor/pygments-main/pygments/lexers/elm.py +120 -0
  110. data/vendor/pygments-main/pygments/lexers/email.py +150 -0
  111. data/vendor/pygments-main/pygments/lexers/erlang.py +529 -0
  112. data/vendor/pygments-main/pygments/lexers/esoteric.py +303 -0
  113. data/vendor/pygments-main/pygments/lexers/ezhil.py +76 -0
  114. data/vendor/pygments-main/pygments/lexers/factor.py +343 -0
  115. data/vendor/pygments-main/pygments/lexers/fantom.py +249 -0
  116. data/vendor/pygments-main/pygments/lexers/felix.py +272 -0
  117. data/vendor/pygments-main/pygments/lexers/floscript.py +82 -0
  118. data/vendor/pygments-main/pygments/lexers/forth.py +177 -0
  119. data/vendor/pygments-main/pygments/lexers/fortran.py +208 -0
  120. data/vendor/pygments-main/pygments/lexers/foxpro.py +427 -0
  121. data/vendor/pygments-main/pygments/lexers/freefem.py +897 -0
  122. data/vendor/pygments-main/pygments/lexers/functional.py +20 -0
  123. data/vendor/pygments-main/pygments/lexers/futhark.py +110 -0
  124. data/vendor/pygments-main/pygments/lexers/gdscript.py +345 -0
  125. data/vendor/pygments-main/pygments/lexers/go.py +100 -0
  126. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +269 -0
  127. data/vendor/pygments-main/pygments/lexers/graph.py +84 -0
  128. data/vendor/pygments-main/pygments/lexers/graphics.py +799 -0
  129. data/vendor/pygments-main/pygments/lexers/graphviz.py +57 -0
  130. data/vendor/pygments-main/pygments/lexers/haskell.py +869 -0
  131. data/vendor/pygments-main/pygments/lexers/haxe.py +935 -0
  132. data/vendor/pygments-main/pygments/lexers/hdl.py +468 -0
  133. data/vendor/pygments-main/pygments/lexers/hexdump.py +102 -0
  134. data/vendor/pygments-main/pygments/lexers/html.py +613 -0
  135. data/vendor/pygments-main/pygments/lexers/idl.py +280 -0
  136. data/vendor/pygments-main/pygments/lexers/igor.py +419 -0
  137. data/vendor/pygments-main/pygments/lexers/inferno.py +95 -0
  138. data/vendor/pygments-main/pygments/lexers/installers.py +321 -0
  139. data/vendor/pygments-main/pygments/lexers/int_fiction.py +1367 -0
  140. data/vendor/pygments-main/pygments/lexers/iolang.py +62 -0
  141. data/vendor/pygments-main/pygments/lexers/j.py +145 -0
  142. data/vendor/pygments-main/pygments/lexers/javascript.py +1536 -0
  143. data/vendor/pygments-main/pygments/lexers/julia.py +330 -0
  144. data/vendor/pygments-main/pygments/lexers/jvm.py +1739 -0
  145. data/vendor/pygments-main/pygments/lexers/lisp.py +2698 -0
  146. data/vendor/pygments-main/pygments/lexers/make.py +205 -0
  147. data/vendor/pygments-main/pygments/lexers/markup.py +762 -0
  148. data/vendor/pygments-main/pygments/lexers/math.py +20 -0
  149. data/vendor/pygments-main/pygments/lexers/matlab.py +3280 -0
  150. data/vendor/pygments-main/pygments/lexers/mime.py +225 -0
  151. data/vendor/pygments-main/pygments/lexers/ml.py +957 -0
  152. data/vendor/pygments-main/pygments/lexers/modeling.py +365 -0
  153. data/vendor/pygments-main/pygments/lexers/modula2.py +1579 -0
  154. data/vendor/pygments-main/pygments/lexers/monte.py +203 -0
  155. data/vendor/pygments-main/pygments/lexers/mosel.py +447 -0
  156. data/vendor/pygments-main/pygments/lexers/ncl.py +893 -0
  157. data/vendor/pygments-main/pygments/lexers/nimrod.py +158 -0
  158. data/vendor/pygments-main/pygments/lexers/nit.py +63 -0
  159. data/vendor/pygments-main/pygments/lexers/nix.py +135 -0
  160. data/vendor/pygments-main/pygments/lexers/oberon.py +120 -0
  161. data/vendor/pygments-main/pygments/lexers/objective.py +503 -0
  162. data/vendor/pygments-main/pygments/lexers/ooc.py +84 -0
  163. data/vendor/pygments-main/pygments/lexers/other.py +40 -0
  164. data/vendor/pygments-main/pygments/lexers/parasail.py +78 -0
  165. data/vendor/pygments-main/pygments/lexers/parsers.py +799 -0
  166. data/vendor/pygments-main/pygments/lexers/pascal.py +643 -0
  167. data/vendor/pygments-main/pygments/lexers/pawn.py +202 -0
  168. data/vendor/pygments-main/pygments/lexers/perl.py +731 -0
  169. data/vendor/pygments-main/pygments/lexers/php.py +320 -0
  170. data/vendor/pygments-main/pygments/lexers/pointless.py +70 -0
  171. data/vendor/pygments-main/pygments/lexers/pony.py +93 -0
  172. data/vendor/pygments-main/pygments/lexers/praat.py +301 -0
  173. data/vendor/pygments-main/pygments/lexers/prolog.py +305 -0
  174. data/vendor/pygments-main/pygments/lexers/promql.py +182 -0
  175. data/vendor/pygments-main/pygments/lexers/python.py +1158 -0
  176. data/vendor/pygments-main/pygments/lexers/qvt.py +151 -0
  177. data/vendor/pygments-main/pygments/lexers/r.py +190 -0
  178. data/vendor/pygments-main/pygments/lexers/rdf.py +462 -0
  179. data/vendor/pygments-main/pygments/lexers/rebol.py +430 -0
  180. data/vendor/pygments-main/pygments/lexers/resource.py +84 -0
  181. data/vendor/pygments-main/pygments/lexers/ride.py +138 -0
  182. data/vendor/pygments-main/pygments/lexers/rnc.py +66 -0
  183. data/vendor/pygments-main/pygments/lexers/roboconf.py +81 -0
  184. data/vendor/pygments-main/pygments/lexers/robotframework.py +551 -0
  185. data/vendor/pygments-main/pygments/lexers/ruby.py +523 -0
  186. data/vendor/pygments-main/pygments/lexers/rust.py +223 -0
  187. data/vendor/pygments-main/pygments/lexers/sas.py +227 -0
  188. data/vendor/pygments-main/pygments/lexers/scdoc.py +82 -0
  189. data/vendor/pygments-main/pygments/lexers/scripting.py +1283 -0
  190. data/vendor/pygments-main/pygments/lexers/sgf.py +60 -0
  191. data/vendor/pygments-main/pygments/lexers/shell.py +909 -0
  192. data/vendor/pygments-main/pygments/lexers/sieve.py +68 -0
  193. data/vendor/pygments-main/pygments/lexers/slash.py +184 -0
  194. data/vendor/pygments-main/pygments/lexers/smalltalk.py +194 -0
  195. data/vendor/pygments-main/pygments/lexers/smv.py +78 -0
  196. data/vendor/pygments-main/pygments/lexers/snobol.py +82 -0
  197. data/vendor/pygments-main/pygments/lexers/solidity.py +91 -0
  198. data/vendor/pygments-main/pygments/lexers/special.py +106 -0
  199. data/vendor/pygments-main/pygments/lexers/sql.py +832 -0
  200. data/vendor/pygments-main/pygments/lexers/stata.py +170 -0
  201. data/vendor/pygments-main/pygments/lexers/supercollider.py +94 -0
  202. data/vendor/pygments-main/pygments/lexers/tcl.py +144 -0
  203. data/vendor/pygments-main/pygments/lexers/templates.py +2263 -0
  204. data/vendor/pygments-main/pygments/lexers/teraterm.py +334 -0
  205. data/vendor/pygments-main/pygments/lexers/testing.py +206 -0
  206. data/vendor/pygments-main/pygments/lexers/text.py +25 -0
  207. data/vendor/pygments-main/pygments/lexers/textedit.py +168 -0
  208. data/vendor/pygments-main/pygments/lexers/textfmts.py +429 -0
  209. data/vendor/pygments-main/pygments/lexers/theorem.py +476 -0
  210. data/vendor/pygments-main/pygments/lexers/tnt.py +262 -0
  211. data/vendor/pygments-main/pygments/lexers/trafficscript.py +53 -0
  212. data/vendor/pygments-main/pygments/lexers/typoscript.py +218 -0
  213. data/vendor/pygments-main/pygments/lexers/unicon.py +411 -0
  214. data/vendor/pygments-main/pygments/lexers/urbi.py +145 -0
  215. data/vendor/pygments-main/pygments/lexers/usd.py +89 -0
  216. data/vendor/pygments-main/pygments/lexers/varnish.py +189 -0
  217. data/vendor/pygments-main/pygments/lexers/verification.py +113 -0
  218. data/vendor/pygments-main/pygments/lexers/web.py +23 -0
  219. data/vendor/pygments-main/pygments/lexers/webidl.py +298 -0
  220. data/vendor/pygments-main/pygments/lexers/webmisc.py +991 -0
  221. data/vendor/pygments-main/pygments/lexers/whiley.py +115 -0
  222. data/vendor/pygments-main/pygments/lexers/x10.py +68 -0
  223. data/vendor/pygments-main/pygments/lexers/xorg.py +36 -0
  224. data/vendor/pygments-main/pygments/lexers/yang.py +103 -0
  225. data/vendor/pygments-main/pygments/lexers/zig.py +123 -0
  226. data/vendor/pygments-main/pygments/modeline.py +1 -2
  227. data/vendor/pygments-main/pygments/plugin.py +4 -3
  228. data/vendor/pygments-main/pygments/regexopt.py +1 -2
  229. data/vendor/pygments-main/pygments/scanner.py +2 -3
  230. data/vendor/pygments-main/pygments/sphinxext.py +2 -5
  231. data/vendor/pygments-main/pygments/style.py +61 -25
  232. data/vendor/pygments-main/pygments/styles/__init__.py +12 -5
  233. data/vendor/pygments-main/pygments/styles/abap.py +1 -2
  234. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  235. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  236. data/vendor/pygments-main/pygments/styles/arduino.py +2 -3
  237. data/vendor/pygments-main/pygments/styles/autumn.py +1 -2
  238. data/vendor/pygments-main/pygments/styles/borland.py +1 -2
  239. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  240. data/vendor/pygments-main/pygments/styles/colorful.py +1 -2
  241. data/vendor/pygments-main/pygments/styles/default.py +1 -2
  242. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  243. data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
  244. data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
  245. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  246. data/vendor/pygments-main/pygments/styles/inkpot.py +66 -0
  247. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -2
  248. data/vendor/pygments-main/pygments/styles/manni.py +1 -2
  249. data/vendor/pygments-main/pygments/styles/material.py +118 -0
  250. data/vendor/pygments-main/pygments/styles/monokai.py +4 -4
  251. data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
  252. data/vendor/pygments-main/pygments/styles/native.py +1 -2
  253. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -2
  254. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -2
  255. data/vendor/pygments-main/pygments/styles/pastie.py +1 -2
  256. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  257. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -2
  258. data/vendor/pygments-main/pygments/styles/rrt.py +1 -2
  259. data/vendor/pygments-main/pygments/styles/sas.py +1 -2
  260. data/vendor/pygments-main/pygments/styles/solarized.py +136 -0
  261. data/vendor/pygments-main/pygments/styles/stata_dark.py +40 -0
  262. data/vendor/pygments-main/pygments/styles/{stata.py → stata_light.py} +14 -16
  263. data/vendor/pygments-main/pygments/styles/tango.py +1 -2
  264. data/vendor/pygments-main/pygments/styles/trac.py +1 -2
  265. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  266. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  267. data/vendor/pygments-main/pygments/styles/xcode.py +1 -2
  268. data/vendor/pygments-main/pygments/styles/zenburn.py +80 -0
  269. data/vendor/pygments-main/pygments/token.py +1 -2
  270. data/vendor/pygments-main/pygments/unistring.py +47 -109
  271. data/vendor/pygments-main/pygments/util.py +16 -96
  272. metadata +81 -139
  273. data/CHANGELOG.md +0 -111
  274. data/README.md +0 -121
  275. data/cache-lexers.rb +0 -8
  276. data/circle.yml +0 -20
  277. data/test/test_data.c +0 -2581
  278. data/test/test_data.py +0 -514
  279. data/test/test_data_generated +0 -2582
  280. data/vendor/custom_lexers/github.py +0 -565
  281. data/vendor/pygments-main/CHANGES +0 -1186
  282. data/vendor/pygments-main/MANIFEST.in +0 -6
  283. data/vendor/pygments-main/Makefile +0 -65
  284. data/vendor/pygments-main/README.rst +0 -39
  285. data/vendor/pygments-main/REVISION +0 -1
  286. data/vendor/pygments-main/TODO +0 -12
  287. data/vendor/pygments-main/doc/Makefile +0 -153
  288. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  289. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  290. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  291. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  292. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  293. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  294. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  295. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  296. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  297. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  298. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  299. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  300. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  301. data/vendor/pygments-main/doc/conf.py +0 -241
  302. data/vendor/pygments-main/doc/docs/api.rst +0 -354
  303. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  304. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  305. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -166
  306. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  307. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  308. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  309. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  310. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  311. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  312. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  313. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -728
  314. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  315. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  316. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  317. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  318. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  319. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  320. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  321. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  322. data/vendor/pygments-main/doc/download.rst +0 -41
  323. data/vendor/pygments-main/doc/faq.rst +0 -139
  324. data/vendor/pygments-main/doc/index.rst +0 -54
  325. data/vendor/pygments-main/doc/languages.rst +0 -154
  326. data/vendor/pygments-main/doc/make.bat +0 -190
  327. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  328. data/vendor/pygments-main/external/autopygmentize +0 -101
  329. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  330. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  331. data/vendor/pygments-main/external/moin-parser.py +0 -112
  332. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  333. data/vendor/pygments-main/external/rst-directive.py +0 -82
  334. data/vendor/pygments-main/pygmentize +0 -8
  335. data/vendor/pygments-main/requirements.txt +0 -5
  336. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  337. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  338. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  339. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  340. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  341. data/vendor/pygments-main/scripts/pylintrc +0 -301
  342. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  343. data/vendor/pygments-main/setup.cfg +0 -10
  344. data/vendor/pygments-main/setup.py +0 -77
  345. data/vendor/pygments-main/tox.ini +0 -7
  346. data/vendor/simplejson/.gitignore +0 -10
  347. data/vendor/simplejson/.travis.yml +0 -5
  348. data/vendor/simplejson/CHANGES.txt +0 -291
  349. data/vendor/simplejson/LICENSE.txt +0 -19
  350. data/vendor/simplejson/MANIFEST.in +0 -5
  351. data/vendor/simplejson/README.rst +0 -19
  352. data/vendor/simplejson/conf.py +0 -179
  353. data/vendor/simplejson/index.rst +0 -628
  354. data/vendor/simplejson/scripts/make_docs.py +0 -18
  355. data/vendor/simplejson/setup.py +0 -104
  356. data/vendor/simplejson/simplejson/__init__.py +0 -510
  357. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  358. data/vendor/simplejson/simplejson/decoder.py +0 -425
  359. data/vendor/simplejson/simplejson/encoder.py +0 -567
  360. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  361. data/vendor/simplejson/simplejson/scanner.py +0 -77
  362. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  363. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  364. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  365. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  366. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  367. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  368. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  369. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  370. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  371. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  372. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  373. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  374. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  375. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  376. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  377. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  378. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  379. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  380. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  381. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  382. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  383. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  384. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  385. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  386. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -1,16 +1,15 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.formatters.other
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Other formatters: NullFormatter, RawTokenFormatter.
7
6
 
8
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
12
11
  from pygments.formatter import Formatter
13
- from pygments.util import OptionError, get_choice_opt
12
+ from pygments.util import get_choice_opt
14
13
  from pygments.token import Token
15
14
  from pygments.console import colorize
16
15
 
@@ -87,42 +86,44 @@ class RawTokenFormatter(Formatter):
87
86
  if self.compress == 'gz':
88
87
  import gzip
89
88
  outfile = gzip.GzipFile('', 'wb', 9, outfile)
90
- def write(text):
91
- outfile.write(text.encode())
92
- flush = outfile.flush
89
+
90
+ write = outfile.write
91
+ flush = outfile.close
93
92
  elif self.compress == 'bz2':
94
93
  import bz2
95
94
  compressor = bz2.BZ2Compressor(9)
95
+
96
96
  def write(text):
97
- outfile.write(compressor.compress(text.encode()))
97
+ outfile.write(compressor.compress(text))
98
+
98
99
  def flush():
99
100
  outfile.write(compressor.flush())
100
101
  outfile.flush()
101
102
  else:
102
- def write(text):
103
- outfile.write(text.encode())
103
+ write = outfile.write
104
104
  flush = outfile.flush
105
105
 
106
106
  if self.error_color:
107
107
  for ttype, value in tokensource:
108
- line = "%s\t%r\n" % (ttype, value)
108
+ line = b"%r\t%r\n" % (ttype, value)
109
109
  if ttype is Token.Error:
110
110
  write(colorize(self.error_color, line))
111
111
  else:
112
112
  write(line)
113
113
  else:
114
114
  for ttype, value in tokensource:
115
- write("%s\t%r\n" % (ttype, value))
115
+ write(b"%r\t%r\n" % (ttype, value))
116
116
  flush()
117
117
 
118
- TESTCASE_BEFORE = u'''\
119
- def testNeedsName(self):
118
+
119
+ TESTCASE_BEFORE = '''\
120
+ def testNeedsName(lexer):
120
121
  fragment = %r
121
122
  tokens = [
122
123
  '''
123
- TESTCASE_AFTER = u'''\
124
+ TESTCASE_AFTER = '''\
124
125
  ]
125
- self.assertEqual(tokens, list(self.lexer.get_tokens(fragment)))
126
+ assert list(lexer.get_tokens(fragment)) == tokens
126
127
  '''
127
128
 
128
129
 
@@ -148,8 +149,8 @@ class TestcaseFormatter(Formatter):
148
149
  rawbuf.append(value)
149
150
  outbuf.append('%s(%s, %r),\n' % (indentation, ttype, value))
150
151
 
151
- before = TESTCASE_BEFORE % (u''.join(rawbuf),)
152
- during = u''.join(outbuf)
152
+ before = TESTCASE_BEFORE % (''.join(rawbuf),)
153
+ during = ''.join(outbuf)
153
154
  after = TESTCASE_AFTER
154
155
  if self.encoding is None:
155
156
  outfile.write(before + during + after)
@@ -1,16 +1,15 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.formatters.rtf
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  A formatter that generates RTF files.
7
6
 
8
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
12
11
  from pygments.formatter import Formatter
13
- from pygments.util import get_int_opt, _surrogatepair
12
+ from pygments.util import get_int_opt, surrogatepair
14
13
 
15
14
 
16
15
  __all__ = ['RtfFormatter']
@@ -35,7 +34,7 @@ class RtfFormatter(Formatter):
35
34
  ``'default'``).
36
35
 
37
36
  `fontface`
38
- The used font famliy, for example ``Bitstream Vera Sans``. Defaults to
37
+ The used font family, for example ``Bitstream Vera Sans``. Defaults to
39
38
  some generic font which is supposed to have fixed width.
40
39
 
41
40
  `fontsize`
@@ -65,14 +64,14 @@ class RtfFormatter(Formatter):
65
64
  self.fontsize = get_int_opt(options, 'fontsize', 0)
66
65
 
67
66
  def _escape(self, text):
68
- return text.replace(u'\\', u'\\\\') \
69
- .replace(u'{', u'\\{') \
70
- .replace(u'}', u'\\}')
67
+ return text.replace('\\', '\\\\') \
68
+ .replace('{', '\\{') \
69
+ .replace('}', '\\}')
71
70
 
72
71
  def _escape_text(self, text):
73
- # empty strings, should give a small performance improvment
72
+ # empty strings, should give a small performance improvement
74
73
  if not text:
75
- return u''
74
+ return ''
76
75
 
77
76
  # escape text
78
77
  text = self._escape(text)
@@ -85,21 +84,21 @@ class RtfFormatter(Formatter):
85
84
  buf.append(str(c))
86
85
  elif (2**7) <= cn < (2**16):
87
86
  # single unicode escape sequence
88
- buf.append(u'{\\u%d}' % cn)
87
+ buf.append('{\\u%d}' % cn)
89
88
  elif (2**16) <= cn:
90
89
  # RTF limits unicode to 16 bits.
91
90
  # Force surrogate pairs
92
- buf.append(u'{\\u%d}{\\u%d}' % _surrogatepair(cn))
91
+ buf.append('{\\u%d}{\\u%d}' % surrogatepair(cn))
93
92
 
94
- return u''.join(buf).replace(u'\n', u'\\par\n')
93
+ return ''.join(buf).replace('\n', '\\par\n')
95
94
 
96
95
  def format_unencoded(self, tokensource, outfile):
97
96
  # rtf 1.8 header
98
- outfile.write(u'{\\rtf1\\ansi\\uc0\\deff0'
99
- u'{\\fonttbl{\\f0\\fmodern\\fprq1\\fcharset0%s;}}'
100
- u'{\\colortbl;' % (self.fontface and
101
- u' ' + self._escape(self.fontface) or
102
- u''))
97
+ outfile.write('{\\rtf1\\ansi\\uc0\\deff0'
98
+ '{\\fonttbl{\\f0\\fmodern\\fprq1\\fcharset0%s;}}'
99
+ '{\\colortbl;' % (self.fontface and
100
+ ' ' + self._escape(self.fontface) or
101
+ ''))
103
102
 
104
103
  # convert colors and save them in a mapping to access them later.
105
104
  color_mapping = {}
@@ -108,15 +107,15 @@ class RtfFormatter(Formatter):
108
107
  for color in style['color'], style['bgcolor'], style['border']:
109
108
  if color and color not in color_mapping:
110
109
  color_mapping[color] = offset
111
- outfile.write(u'\\red%d\\green%d\\blue%d;' % (
110
+ outfile.write('\\red%d\\green%d\\blue%d;' % (
112
111
  int(color[0:2], 16),
113
112
  int(color[2:4], 16),
114
113
  int(color[4:6], 16)
115
114
  ))
116
115
  offset += 1
117
- outfile.write(u'}\\f0 ')
116
+ outfile.write('}\\f0 ')
118
117
  if self.fontsize:
119
- outfile.write(u'\\fs%d' % (self.fontsize))
118
+ outfile.write('\\fs%d' % self.fontsize)
120
119
 
121
120
  # highlight stream
122
121
  for ttype, value in tokensource:
@@ -125,23 +124,23 @@ class RtfFormatter(Formatter):
125
124
  style = self.style.style_for_token(ttype)
126
125
  buf = []
127
126
  if style['bgcolor']:
128
- buf.append(u'\\cb%d' % color_mapping[style['bgcolor']])
127
+ buf.append('\\cb%d' % color_mapping[style['bgcolor']])
129
128
  if style['color']:
130
- buf.append(u'\\cf%d' % color_mapping[style['color']])
129
+ buf.append('\\cf%d' % color_mapping[style['color']])
131
130
  if style['bold']:
132
- buf.append(u'\\b')
131
+ buf.append('\\b')
133
132
  if style['italic']:
134
- buf.append(u'\\i')
133
+ buf.append('\\i')
135
134
  if style['underline']:
136
- buf.append(u'\\ul')
135
+ buf.append('\\ul')
137
136
  if style['border']:
138
- buf.append(u'\\chbrdr\\chcfpat%d' %
137
+ buf.append('\\chbrdr\\chcfpat%d' %
139
138
  color_mapping[style['border']])
140
- start = u''.join(buf)
139
+ start = ''.join(buf)
141
140
  if start:
142
- outfile.write(u'{%s ' % start)
141
+ outfile.write('{%s ' % start)
143
142
  outfile.write(self._escape_text(value))
144
143
  if start:
145
- outfile.write(u'}')
144
+ outfile.write('}')
146
145
 
147
- outfile.write(u'}')
146
+ outfile.write('}')
@@ -1,15 +1,15 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.formatters.svg
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Formatter for SVG output.
7
6
 
8
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
12
11
  from pygments.formatter import Formatter
12
+ from pygments.token import Comment
13
13
  from pygments.util import get_bool_opt, get_int_opt
14
14
 
15
15
  __all__ = ['SvgFormatter']
@@ -52,6 +52,19 @@ class SvgFormatter(Formatter):
52
52
  The value to give the wrapping ``<g>`` element's ``font-size``
53
53
  attribute, defaults to ``"14px"``.
54
54
 
55
+ `linenos`
56
+ If ``True``, add line numbers (default: ``False``).
57
+
58
+ `linenostart`
59
+ The line number for the first line (default: ``1``).
60
+
61
+ `linenostep`
62
+ If set to a number n > 1, only every nth line number is printed.
63
+
64
+ `linenowidth`
65
+ Maximum width devoted to line numbers (default: ``3*ystep``, sufficient
66
+ for up to 4-digit line numbers. Increase width for longer code blocks).
67
+
55
68
  `xoffset`
56
69
  Starting offset in X direction, defaults to ``0``.
57
70
 
@@ -92,6 +105,10 @@ class SvgFormatter(Formatter):
92
105
  self.yoffset = get_int_opt(options, 'yoffset', int_fs)
93
106
  self.ystep = get_int_opt(options, 'ystep', int_fs + 5)
94
107
  self.spacehack = get_bool_opt(options, 'spacehack', True)
108
+ self.linenos = get_bool_opt(options,'linenos',False)
109
+ self.linenostart = get_int_opt(options,'linenostart',1)
110
+ self.linenostep = get_int_opt(options,'linenostep',1)
111
+ self.linenowidth = get_int_opt(options,'linenowidth', 3*self.ystep)
95
112
  self._stylecache = {}
96
113
 
97
114
  def format_unencoded(self, tokensource, outfile):
@@ -115,7 +132,20 @@ class SvgFormatter(Formatter):
115
132
  outfile.write('<svg xmlns="http://www.w3.org/2000/svg">\n')
116
133
  outfile.write('<g font-family="%s" font-size="%s">\n' %
117
134
  (self.fontfamily, self.fontsize))
118
- outfile.write('<text x="%s" y="%s" xml:space="preserve">' % (x, y))
135
+
136
+ counter = self.linenostart
137
+ counter_step = self.linenostep
138
+ counter_style = self._get_style(Comment)
139
+ line_x = x
140
+
141
+ if self.linenos:
142
+ if counter % counter_step == 0:
143
+ outfile.write('<text x="%s" y="%s" %s text-anchor="end">%s</text>' %
144
+ (x+self.linenowidth,y,counter_style,counter))
145
+ line_x += self.linenowidth + self.ystep
146
+ counter += 1
147
+
148
+ outfile.write('<text x="%s" y="%s" xml:space="preserve">' % (line_x, y))
119
149
  for ttype, value in tokensource:
120
150
  style = self._get_style(ttype)
121
151
  tspan = style and '<tspan' + style + '>' or ''
@@ -127,8 +157,13 @@ class SvgFormatter(Formatter):
127
157
  for part in parts[:-1]:
128
158
  outfile.write(tspan + part + tspanend)
129
159
  y += self.ystep
130
- outfile.write('</text>\n<text x="%s" y="%s" '
131
- 'xml:space="preserve">' % (x, y))
160
+ outfile.write('</text>\n')
161
+ if self.linenos and counter % counter_step == 0:
162
+ outfile.write('<text x="%s" y="%s" text-anchor="end" %s>%s</text>' %
163
+ (x+self.linenowidth,y,counter_style,counter))
164
+
165
+ counter += 1
166
+ outfile.write('<text x="%s" y="%s" ' 'xml:space="preserve">' % (line_x,y))
132
167
  outfile.write(tspan + parts[-1] + tspanend)
133
168
  outfile.write('</text>')
134
169
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.formatters.terminal
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Formatter for terminal output with ANSI sequences.
7
6
 
8
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -26,33 +25,33 @@ __all__ = ['TerminalFormatter']
26
25
  TERMINAL_COLORS = {
27
26
  Token: ('', ''),
28
27
 
29
- Whitespace: ('lightgray', 'darkgray'),
30
- Comment: ('lightgray', 'darkgray'),
31
- Comment.Preproc: ('teal', 'turquoise'),
32
- Keyword: ('darkblue', 'blue'),
33
- Keyword.Type: ('teal', 'turquoise'),
34
- Operator.Word: ('purple', 'fuchsia'),
35
- Name.Builtin: ('teal', 'turquoise'),
36
- Name.Function: ('darkgreen', 'green'),
37
- Name.Namespace: ('_teal_', '_turquoise_'),
38
- Name.Class: ('_darkgreen_', '_green_'),
39
- Name.Exception: ('teal', 'turquoise'),
40
- Name.Decorator: ('darkgray', 'lightgray'),
41
- Name.Variable: ('darkred', 'red'),
42
- Name.Constant: ('darkred', 'red'),
43
- Name.Attribute: ('teal', 'turquoise'),
44
- Name.Tag: ('blue', 'blue'),
45
- String: ('brown', 'brown'),
46
- Number: ('darkblue', 'blue'),
47
-
48
- Generic.Deleted: ('red', 'red'),
49
- Generic.Inserted: ('darkgreen', 'green'),
28
+ Whitespace: ('gray', 'brightblack'),
29
+ Comment: ('gray', 'brightblack'),
30
+ Comment.Preproc: ('cyan', 'brightcyan'),
31
+ Keyword: ('blue', 'brightblue'),
32
+ Keyword.Type: ('cyan', 'brightcyan'),
33
+ Operator.Word: ('magenta', 'brightmagenta'),
34
+ Name.Builtin: ('cyan', 'brightcyan'),
35
+ Name.Function: ('green', 'brightgreen'),
36
+ Name.Namespace: ('_cyan_', '_brightcyan_'),
37
+ Name.Class: ('_green_', '_brightgreen_'),
38
+ Name.Exception: ('cyan', 'brightcyan'),
39
+ Name.Decorator: ('brightblack', 'gray'),
40
+ Name.Variable: ('red', 'brightred'),
41
+ Name.Constant: ('red', 'brightred'),
42
+ Name.Attribute: ('cyan', 'brightcyan'),
43
+ Name.Tag: ('brightblue', 'brightblue'),
44
+ String: ('yellow', 'yellow'),
45
+ Number: ('blue', 'brightblue'),
46
+
47
+ Generic.Deleted: ('brightred', 'brightred'),
48
+ Generic.Inserted: ('green', 'brightgreen'),
50
49
  Generic.Heading: ('**', '**'),
51
- Generic.Subheading: ('*purple*', '*fuchsia*'),
50
+ Generic.Subheading: ('*magenta*', '*brightmagenta*'),
52
51
  Generic.Prompt: ('**', '**'),
53
- Generic.Error: ('red', 'red'),
52
+ Generic.Error: ('brightred', 'brightred'),
54
53
 
55
- Error: ('_red_', '_red_'),
54
+ Error: ('_brightred_', '_brightred_'),
56
55
  }
57
56
 
58
57
 
@@ -92,12 +91,6 @@ class TerminalFormatter(Formatter):
92
91
  self._lineno = 0
93
92
 
94
93
  def format(self, tokensource, outfile):
95
- # hack: if the output is a terminal and has an encoding set,
96
- # use that to avoid unicode encode problems
97
- if not self.encoding and hasattr(outfile, "encoding") and \
98
- hasattr(outfile, "isatty") and outfile.isatty() and \
99
- sys.version_info < (3,):
100
- self.encoding = outfile.encoding
101
94
  return Formatter.format(self, tokensource, outfile)
102
95
 
103
96
  def _write_lineno(self, outfile):
@@ -1,4 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.formatters.terminal256
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -11,7 +10,7 @@
11
10
 
12
11
  Formatter version 1.
13
12
 
14
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
13
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
15
14
  :license: BSD, see LICENSE for details.
16
15
  """
17
16
 
@@ -35,11 +34,12 @@ __all__ = ['Terminal256Formatter', 'TerminalTrueColorFormatter']
35
34
 
36
35
 
37
36
  class EscapeSequence:
38
- def __init__(self, fg=None, bg=None, bold=False, underline=False):
37
+ def __init__(self, fg=None, bg=None, bold=False, underline=False, italic=False):
39
38
  self.fg = fg
40
39
  self.bg = bg
41
40
  self.bold = bold
42
41
  self.underline = underline
42
+ self.italic = italic
43
43
 
44
44
  def escape(self, attrs):
45
45
  if len(attrs):
@@ -50,7 +50,7 @@ class EscapeSequence:
50
50
  attrs = []
51
51
  if self.fg is not None:
52
52
  if self.fg in ansicolors:
53
- esc = codes[self.fg[5:]]
53
+ esc = codes[self.fg.replace('ansi','')]
54
54
  if ';01m' in esc:
55
55
  self.bold = True
56
56
  # extract fg color code.
@@ -59,7 +59,7 @@ class EscapeSequence:
59
59
  attrs.extend(("38", "5", "%i" % self.fg))
60
60
  if self.bg is not None:
61
61
  if self.bg in ansicolors:
62
- esc = codes[self.bg[5:]]
62
+ esc = codes[self.bg.replace('ansi','')]
63
63
  # extract fg color code, add 10 for bg.
64
64
  attrs.append(str(int(esc[2:4])+10))
65
65
  else:
@@ -68,6 +68,8 @@ class EscapeSequence:
68
68
  attrs.append("01")
69
69
  if self.underline:
70
70
  attrs.append("04")
71
+ if self.italic:
72
+ attrs.append("03")
71
73
  return self.escape(attrs)
72
74
 
73
75
  def true_color_string(self):
@@ -80,6 +82,8 @@ class EscapeSequence:
80
82
  attrs.append("01")
81
83
  if self.underline:
82
84
  attrs.append("04")
85
+ if self.italic:
86
+ attrs.append("03")
83
87
  return self.escape(attrs)
84
88
 
85
89
  def reset_string(self):
@@ -88,7 +92,7 @@ class EscapeSequence:
88
92
  attrs.append("39")
89
93
  if self.bg is not None:
90
94
  attrs.append("49")
91
- if self.bold or self.underline:
95
+ if self.bold or self.underline or self.italic:
92
96
  attrs.append("00")
93
97
  return self.escape(attrs)
94
98
 
@@ -110,11 +114,21 @@ class Terminal256Formatter(Formatter):
110
114
  `Terminal256Formatter` will map these to non extended foreground color.
111
115
  See :ref:`AnsiTerminalStyle` for more information.
112
116
 
117
+ .. versionchanged:: 2.4
118
+ The ANSI color names have been updated with names that are easier to
119
+ understand and align with colornames of other projects and terminals.
120
+ See :ref:`this table <new-ansi-color-names>` for more information.
121
+
122
+
113
123
  Options accepted:
114
124
 
115
125
  `style`
116
126
  The style to use, can be a string or a Style subclass (default:
117
127
  ``'default'``).
128
+
129
+ `linenos`
130
+ Set to ``True`` to have line numbers on the terminal output as well
131
+ (default: ``False`` = no line numbers).
118
132
  """
119
133
  name = 'Terminal256'
120
134
  aliases = ['terminal256', 'console256', '256']
@@ -129,10 +143,14 @@ class Terminal256Formatter(Formatter):
129
143
 
130
144
  self.usebold = 'nobold' not in options
131
145
  self.useunderline = 'nounderline' not in options
146
+ self.useitalic = 'noitalic' not in options
132
147
 
133
148
  self._build_color_table() # build an RGB-to-256 color conversion table
134
149
  self._setup_styles() # convert selected style's colors to term. colors
135
150
 
151
+ self.linenos = options.get('linenos', False)
152
+ self._lineno = 0
153
+
136
154
  def _build_color_table(self):
137
155
  # colors 0..15: 16 basic colors
138
156
 
@@ -189,7 +207,7 @@ class Terminal256Formatter(Formatter):
189
207
  def _color_index(self, color):
190
208
  index = self.best_match.get(color, None)
191
209
  if color in ansicolors:
192
- # strip the `#ansi` part and look up code
210
+ # strip the `ansi/#ansi` part and look up code
193
211
  index = color
194
212
  self.best_match[color] = index
195
213
  if index is None:
@@ -221,19 +239,22 @@ class Terminal256Formatter(Formatter):
221
239
  escape.bold = True
222
240
  if self.useunderline and ndef['underline']:
223
241
  escape.underline = True
242
+ if self.useitalic and ndef['italic']:
243
+ escape.italic = True
224
244
  self.style_string[str(ttype)] = (escape.color_string(),
225
245
  escape.reset_string())
226
246
 
247
+ def _write_lineno(self, outfile):
248
+ self._lineno += 1
249
+ outfile.write("%s%04d: " % (self._lineno != 1 and '\n' or '', self._lineno))
250
+
227
251
  def format(self, tokensource, outfile):
228
- # hack: if the output is a terminal and has an encoding set,
229
- # use that to avoid unicode encode problems
230
- if not self.encoding and hasattr(outfile, "encoding") and \
231
- hasattr(outfile, "isatty") and outfile.isatty() and \
232
- sys.version_info < (3,):
233
- self.encoding = outfile.encoding
234
252
  return Formatter.format(self, tokensource, outfile)
235
253
 
236
254
  def format_unencoded(self, tokensource, outfile):
255
+ if self.linenos:
256
+ self._write_lineno(outfile)
257
+
237
258
  for ttype, value in tokensource:
238
259
  not_found = True
239
260
  while ttype and not_found:
@@ -247,7 +268,11 @@ class Terminal256Formatter(Formatter):
247
268
  for line in spl[:-1]:
248
269
  if line:
249
270
  outfile.write(on + line + off)
250
- outfile.write('\n')
271
+ if self.linenos:
272
+ self._write_lineno(outfile)
273
+ else:
274
+ outfile.write('\n')
275
+
251
276
  if spl[-1]:
252
277
  outfile.write(on + spl[-1] + off)
253
278
 
@@ -262,6 +287,10 @@ class Terminal256Formatter(Formatter):
262
287
  if not_found:
263
288
  outfile.write(value)
264
289
 
290
+ if self.linenos:
291
+ outfile.write("\n")
292
+
293
+
265
294
 
266
295
  class TerminalTrueColorFormatter(Terminal256Formatter):
267
296
  r"""
@@ -305,5 +334,7 @@ class TerminalTrueColorFormatter(Terminal256Formatter):
305
334
  escape.bold = True
306
335
  if self.useunderline and ndef['underline']:
307
336
  escape.underline = True
337
+ if self.useitalic and ndef['italic']:
338
+ escape.italic = True
308
339
  self.style_string[str(ttype)] = (escape.true_color_string(),
309
340
  escape.reset_string())