pygments.rb 2.0.0 → 2.1.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 (265) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +12 -0
  3. data/.rubocop.yml +18 -0
  4. data/CHANGELOG.adoc +4 -0
  5. data/Rakefile +1 -3
  6. data/bench.rb +9 -4
  7. data/{cache-lexers.rb → cache_lexers.rb} +0 -0
  8. data/lib/pygments/lexer.rb +1 -1
  9. data/lib/pygments/popen.rb +129 -127
  10. data/lib/pygments/version.rb +1 -1
  11. data/pygments.rb.gemspec +1 -1
  12. data/test/test_pygments.rb +6 -8
  13. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/AUTHORS +5 -0
  14. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/INSTALLER +0 -0
  15. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/LICENSE +1 -1
  16. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/METADATA +8 -9
  17. data/vendor/pygments-main/Pygments-2.8.0.dist-info/RECORD +494 -0
  18. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/REQUESTED +0 -0
  19. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/WHEEL +0 -0
  20. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/entry_points.txt +0 -0
  21. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/top_level.txt +0 -0
  22. data/vendor/pygments-main/pygments/__init__.py +2 -3
  23. data/vendor/pygments-main/pygments/__main__.py +1 -2
  24. data/vendor/pygments-main/pygments/cmdline.py +179 -159
  25. data/vendor/pygments-main/pygments/console.py +1 -2
  26. data/vendor/pygments-main/pygments/filter.py +1 -2
  27. data/vendor/pygments-main/pygments/filters/__init__.py +1 -2
  28. data/vendor/pygments-main/pygments/formatter.py +1 -2
  29. data/vendor/pygments-main/pygments/formatters/__init__.py +2 -3
  30. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -2
  31. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
  32. data/vendor/pygments-main/pygments/formatters/html.py +33 -18
  33. data/vendor/pygments-main/pygments/formatters/img.py +24 -10
  34. data/vendor/pygments-main/pygments/formatters/irc.py +1 -2
  35. data/vendor/pygments-main/pygments/formatters/latex.py +8 -9
  36. data/vendor/pygments-main/pygments/formatters/other.py +7 -10
  37. data/vendor/pygments-main/pygments/formatters/rtf.py +1 -2
  38. data/vendor/pygments-main/pygments/formatters/svg.py +5 -4
  39. data/vendor/pygments-main/pygments/formatters/terminal.py +1 -2
  40. data/vendor/pygments-main/pygments/formatters/terminal256.py +24 -3
  41. data/vendor/pygments-main/pygments/lexer.py +7 -6
  42. data/vendor/pygments-main/pygments/lexers/__init__.py +2 -3
  43. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1 -2
  44. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +1 -2
  45. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +16 -12
  46. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1 -2
  47. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -2
  48. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +1 -2
  49. data/vendor/pygments-main/pygments/lexers/_mapping.py +6 -3
  50. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -2
  51. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +2 -3
  52. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +439 -386
  53. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +1 -2
  54. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +1 -2
  55. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +1 -2
  56. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -2
  57. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +1 -2
  58. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +91 -55
  59. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -2
  60. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +1 -2
  61. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +1 -2
  62. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -2
  63. data/vendor/pygments-main/pygments/lexers/actionscript.py +7 -8
  64. data/vendor/pygments-main/pygments/lexers/agile.py +1 -2
  65. data/vendor/pygments-main/pygments/lexers/algebra.py +1 -2
  66. data/vendor/pygments-main/pygments/lexers/ambient.py +2 -3
  67. data/vendor/pygments-main/pygments/lexers/amdgpu.py +48 -0
  68. data/vendor/pygments-main/pygments/lexers/ampl.py +1 -2
  69. data/vendor/pygments-main/pygments/lexers/apl.py +1 -2
  70. data/vendor/pygments-main/pygments/lexers/archetype.py +2 -3
  71. data/vendor/pygments-main/pygments/lexers/arrow.py +1 -2
  72. data/vendor/pygments-main/pygments/lexers/asm.py +1 -2
  73. data/vendor/pygments-main/pygments/lexers/automation.py +7 -2
  74. data/vendor/pygments-main/pygments/lexers/bare.py +1 -2
  75. data/vendor/pygments-main/pygments/lexers/basic.py +3 -4
  76. data/vendor/pygments-main/pygments/lexers/bibtex.py +1 -2
  77. data/vendor/pygments-main/pygments/lexers/boa.py +4 -5
  78. data/vendor/pygments-main/pygments/lexers/business.py +3 -4
  79. data/vendor/pygments-main/pygments/lexers/c_cpp.py +2 -4
  80. data/vendor/pygments-main/pygments/lexers/c_like.py +1 -2
  81. data/vendor/pygments-main/pygments/lexers/capnproto.py +1 -2
  82. data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
  83. data/vendor/pygments-main/pygments/lexers/chapel.py +3 -4
  84. data/vendor/pygments-main/pygments/lexers/clean.py +1 -2
  85. data/vendor/pygments-main/pygments/lexers/compiled.py +1 -2
  86. data/vendor/pygments-main/pygments/lexers/configs.py +6 -5
  87. data/vendor/pygments-main/pygments/lexers/console.py +1 -2
  88. data/vendor/pygments-main/pygments/lexers/crystal.py +53 -79
  89. data/vendor/pygments-main/pygments/lexers/csound.py +1 -2
  90. data/vendor/pygments-main/pygments/lexers/css.py +11 -8
  91. data/vendor/pygments-main/pygments/lexers/d.py +3 -4
  92. data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -2
  93. data/vendor/pygments-main/pygments/lexers/data.py +2 -3
  94. data/vendor/pygments-main/pygments/lexers/devicetree.py +1 -2
  95. data/vendor/pygments-main/pygments/lexers/diff.py +1 -2
  96. data/vendor/pygments-main/pygments/lexers/dotnet.py +7 -8
  97. data/vendor/pygments-main/pygments/lexers/dsls.py +3 -4
  98. data/vendor/pygments-main/pygments/lexers/dylan.py +1 -2
  99. data/vendor/pygments-main/pygments/lexers/ecl.py +4 -6
  100. data/vendor/pygments-main/pygments/lexers/eiffel.py +2 -3
  101. data/vendor/pygments-main/pygments/lexers/elm.py +1 -2
  102. data/vendor/pygments-main/pygments/lexers/email.py +1 -2
  103. data/vendor/pygments-main/pygments/lexers/erlang.py +1 -2
  104. data/vendor/pygments-main/pygments/lexers/esoteric.py +1 -2
  105. data/vendor/pygments-main/pygments/lexers/ezhil.py +1 -2
  106. data/vendor/pygments-main/pygments/lexers/factor.py +3 -4
  107. data/vendor/pygments-main/pygments/lexers/fantom.py +1 -2
  108. data/vendor/pygments-main/pygments/lexers/felix.py +1 -2
  109. data/vendor/pygments-main/pygments/lexers/floscript.py +1 -2
  110. data/vendor/pygments-main/pygments/lexers/forth.py +2 -3
  111. data/vendor/pygments-main/pygments/lexers/fortran.py +9 -7
  112. data/vendor/pygments-main/pygments/lexers/foxpro.py +1 -2
  113. data/vendor/pygments-main/pygments/lexers/freefem.py +1 -2
  114. data/vendor/pygments-main/pygments/lexers/functional.py +1 -2
  115. data/vendor/pygments-main/pygments/lexers/futhark.py +110 -0
  116. data/vendor/pygments-main/pygments/lexers/gdscript.py +1 -2
  117. data/vendor/pygments-main/pygments/lexers/go.py +2 -3
  118. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +1 -2
  119. data/vendor/pygments-main/pygments/lexers/graph.py +1 -2
  120. data/vendor/pygments-main/pygments/lexers/graphics.py +3 -4
  121. data/vendor/pygments-main/pygments/lexers/graphviz.py +57 -0
  122. data/vendor/pygments-main/pygments/lexers/haskell.py +1 -2
  123. data/vendor/pygments-main/pygments/lexers/haxe.py +3 -4
  124. data/vendor/pygments-main/pygments/lexers/hdl.py +2 -6
  125. data/vendor/pygments-main/pygments/lexers/hexdump.py +1 -2
  126. data/vendor/pygments-main/pygments/lexers/html.py +7 -8
  127. data/vendor/pygments-main/pygments/lexers/idl.py +1 -2
  128. data/vendor/pygments-main/pygments/lexers/igor.py +1 -2
  129. data/vendor/pygments-main/pygments/lexers/inferno.py +1 -2
  130. data/vendor/pygments-main/pygments/lexers/installers.py +1 -2
  131. data/vendor/pygments-main/pygments/lexers/int_fiction.py +1 -2
  132. data/vendor/pygments-main/pygments/lexers/iolang.py +2 -3
  133. data/vendor/pygments-main/pygments/lexers/j.py +2 -3
  134. data/vendor/pygments-main/pygments/lexers/javascript.py +57 -61
  135. data/vendor/pygments-main/pygments/lexers/julia.py +1 -2
  136. data/vendor/pygments-main/pygments/lexers/jvm.py +174 -108
  137. data/vendor/pygments-main/pygments/lexers/lisp.py +7 -8
  138. data/vendor/pygments-main/pygments/lexers/make.py +3 -4
  139. data/vendor/pygments-main/pygments/lexers/markup.py +11 -14
  140. data/vendor/pygments-main/pygments/lexers/math.py +1 -2
  141. data/vendor/pygments-main/pygments/lexers/matlab.py +2644 -84
  142. data/vendor/pygments-main/pygments/lexers/mime.py +2 -3
  143. data/vendor/pygments-main/pygments/lexers/ml.py +7 -8
  144. data/vendor/pygments-main/pygments/lexers/modeling.py +1 -2
  145. data/vendor/pygments-main/pygments/lexers/modula2.py +3 -4
  146. data/vendor/pygments-main/pygments/lexers/monte.py +1 -2
  147. data/vendor/pygments-main/pygments/lexers/mosel.py +1 -2
  148. data/vendor/pygments-main/pygments/lexers/ncl.py +1 -2
  149. data/vendor/pygments-main/pygments/lexers/nimrod.py +1 -2
  150. data/vendor/pygments-main/pygments/lexers/nit.py +1 -2
  151. data/vendor/pygments-main/pygments/lexers/nix.py +1 -2
  152. data/vendor/pygments-main/pygments/lexers/oberon.py +1 -2
  153. data/vendor/pygments-main/pygments/lexers/objective.py +3 -4
  154. data/vendor/pygments-main/pygments/lexers/ooc.py +1 -2
  155. data/vendor/pygments-main/pygments/lexers/other.py +1 -2
  156. data/vendor/pygments-main/pygments/lexers/parasail.py +1 -2
  157. data/vendor/pygments-main/pygments/lexers/parsers.py +25 -26
  158. data/vendor/pygments-main/pygments/lexers/pascal.py +1 -2
  159. data/vendor/pygments-main/pygments/lexers/pawn.py +2 -5
  160. data/vendor/pygments-main/pygments/lexers/perl.py +1 -2
  161. data/vendor/pygments-main/pygments/lexers/php.py +3 -4
  162. data/vendor/pygments-main/pygments/lexers/pointless.py +1 -2
  163. data/vendor/pygments-main/pygments/lexers/pony.py +1 -2
  164. data/vendor/pygments-main/pygments/lexers/praat.py +1 -2
  165. data/vendor/pygments-main/pygments/lexers/prolog.py +3 -4
  166. data/vendor/pygments-main/pygments/lexers/promql.py +1 -2
  167. data/vendor/pygments-main/pygments/lexers/python.py +19 -12
  168. data/vendor/pygments-main/pygments/lexers/qvt.py +1 -2
  169. data/vendor/pygments-main/pygments/lexers/r.py +1 -2
  170. data/vendor/pygments-main/pygments/lexers/rdf.py +1 -2
  171. data/vendor/pygments-main/pygments/lexers/rebol.py +1 -2
  172. data/vendor/pygments-main/pygments/lexers/resource.py +1 -2
  173. data/vendor/pygments-main/pygments/lexers/ride.py +1 -2
  174. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -2
  175. data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -2
  176. data/vendor/pygments-main/pygments/lexers/robotframework.py +1 -2
  177. data/vendor/pygments-main/pygments/lexers/ruby.py +30 -24
  178. data/vendor/pygments-main/pygments/lexers/rust.py +1 -2
  179. data/vendor/pygments-main/pygments/lexers/sas.py +1 -2
  180. data/vendor/pygments-main/pygments/lexers/scdoc.py +1 -2
  181. data/vendor/pygments-main/pygments/lexers/scripting.py +5 -6
  182. data/vendor/pygments-main/pygments/lexers/sgf.py +1 -2
  183. data/vendor/pygments-main/pygments/lexers/shell.py +5 -10
  184. data/vendor/pygments-main/pygments/lexers/sieve.py +1 -2
  185. data/vendor/pygments-main/pygments/lexers/slash.py +1 -2
  186. data/vendor/pygments-main/pygments/lexers/smalltalk.py +1 -2
  187. data/vendor/pygments-main/pygments/lexers/smv.py +1 -2
  188. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -2
  189. data/vendor/pygments-main/pygments/lexers/solidity.py +1 -2
  190. data/vendor/pygments-main/pygments/lexers/special.py +29 -28
  191. data/vendor/pygments-main/pygments/lexers/sql.py +8 -13
  192. data/vendor/pygments-main/pygments/lexers/stata.py +1 -2
  193. data/vendor/pygments-main/pygments/lexers/supercollider.py +3 -4
  194. data/vendor/pygments-main/pygments/lexers/tcl.py +1 -2
  195. data/vendor/pygments-main/pygments/lexers/templates.py +15 -16
  196. data/vendor/pygments-main/pygments/lexers/teraterm.py +1 -2
  197. data/vendor/pygments-main/pygments/lexers/testing.py +1 -2
  198. data/vendor/pygments-main/pygments/lexers/text.py +1 -2
  199. data/vendor/pygments-main/pygments/lexers/textedit.py +3 -4
  200. data/vendor/pygments-main/pygments/lexers/textfmts.py +1 -2
  201. data/vendor/pygments-main/pygments/lexers/theorem.py +7 -5
  202. data/vendor/pygments-main/pygments/lexers/tnt.py +1 -2
  203. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -2
  204. data/vendor/pygments-main/pygments/lexers/typoscript.py +1 -2
  205. data/vendor/pygments-main/pygments/lexers/unicon.py +1 -2
  206. data/vendor/pygments-main/pygments/lexers/urbi.py +3 -4
  207. data/vendor/pygments-main/pygments/lexers/usd.py +1 -2
  208. data/vendor/pygments-main/pygments/lexers/varnish.py +2 -3
  209. data/vendor/pygments-main/pygments/lexers/verification.py +1 -2
  210. data/vendor/pygments-main/pygments/lexers/web.py +1 -2
  211. data/vendor/pygments-main/pygments/lexers/webidl.py +1 -2
  212. data/vendor/pygments-main/pygments/lexers/webmisc.py +5 -5
  213. data/vendor/pygments-main/pygments/lexers/whiley.py +1 -2
  214. data/vendor/pygments-main/pygments/lexers/x10.py +2 -3
  215. data/vendor/pygments-main/pygments/lexers/xorg.py +1 -2
  216. data/vendor/pygments-main/pygments/lexers/yang.py +1 -2
  217. data/vendor/pygments-main/pygments/lexers/zig.py +1 -2
  218. data/vendor/pygments-main/pygments/modeline.py +1 -2
  219. data/vendor/pygments-main/pygments/plugin.py +2 -3
  220. data/vendor/pygments-main/pygments/regexopt.py +1 -2
  221. data/vendor/pygments-main/pygments/scanner.py +1 -2
  222. data/vendor/pygments-main/pygments/sphinxext.py +1 -2
  223. data/vendor/pygments-main/pygments/style.py +3 -4
  224. data/vendor/pygments-main/pygments/styles/__init__.py +3 -2
  225. data/vendor/pygments-main/pygments/styles/abap.py +1 -2
  226. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  227. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  228. data/vendor/pygments-main/pygments/styles/arduino.py +1 -2
  229. data/vendor/pygments-main/pygments/styles/autumn.py +1 -2
  230. data/vendor/pygments-main/pygments/styles/borland.py +1 -2
  231. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  232. data/vendor/pygments-main/pygments/styles/colorful.py +1 -2
  233. data/vendor/pygments-main/pygments/styles/default.py +1 -2
  234. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  235. data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
  236. data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
  237. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  238. data/vendor/pygments-main/pygments/styles/inkpot.py +1 -2
  239. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -2
  240. data/vendor/pygments-main/pygments/styles/manni.py +1 -2
  241. data/vendor/pygments-main/pygments/styles/material.py +118 -0
  242. data/vendor/pygments-main/pygments/styles/monokai.py +1 -2
  243. data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
  244. data/vendor/pygments-main/pygments/styles/native.py +1 -2
  245. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -2
  246. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -2
  247. data/vendor/pygments-main/pygments/styles/pastie.py +1 -2
  248. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  249. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -2
  250. data/vendor/pygments-main/pygments/styles/rrt.py +1 -2
  251. data/vendor/pygments-main/pygments/styles/sas.py +1 -2
  252. data/vendor/pygments-main/pygments/styles/solarized.py +4 -2
  253. data/vendor/pygments-main/pygments/styles/stata_dark.py +1 -2
  254. data/vendor/pygments-main/pygments/styles/stata_light.py +1 -2
  255. data/vendor/pygments-main/pygments/styles/tango.py +1 -2
  256. data/vendor/pygments-main/pygments/styles/trac.py +1 -2
  257. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  258. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  259. data/vendor/pygments-main/pygments/styles/xcode.py +1 -2
  260. data/vendor/pygments-main/pygments/styles/zenburn.py +80 -0
  261. data/vendor/pygments-main/pygments/token.py +1 -2
  262. data/vendor/pygments-main/pygments/unistring.py +1 -2
  263. data/vendor/pygments-main/pygments/util.py +2 -5
  264. metadata +21 -14
  265. data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +0 -482
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.console
4
3
  ~~~~~~~~~~~~~~~~
5
4
 
6
5
  Format colored console output.
7
6
 
8
- :copyright: Copyright 2006-2020 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
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.filter
4
3
  ~~~~~~~~~~~~~~~
5
4
 
6
5
  Module that implements the default filter.
7
6
 
8
- :copyright: Copyright 2006-2020 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
 
@@ -1,4 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.filters
4
3
  ~~~~~~~~~~~~~~~~
@@ -6,7 +5,7 @@
6
5
  Module containing filter lookup functions and default
7
6
  filters.
8
7
 
9
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
10
9
  :license: BSD, see LICENSE for details.
11
10
  """
12
11
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.formatter
4
3
  ~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Base formatter class.
7
6
 
8
- :copyright: Copyright 2006-2020 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
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.formatters
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Pygments formatters.
7
6
 
8
- :copyright: Copyright 2006-2020 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
 
@@ -107,7 +106,7 @@ def load_formatter_from_file(filename, formattername="CustomFormatter",
107
106
  formatter_class = custom_namespace[formattername]
108
107
  # And finally instantiate it with the options
109
108
  return formatter_class(**options)
110
- except IOError as err:
109
+ except OSError as err:
111
110
  raise ClassNotFound('cannot read %s: %s' % (filename, err))
112
111
  except ClassNotFound:
113
112
  raise
@@ -1,4 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.formatters._mapping
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -9,7 +8,7 @@
9
8
 
10
9
  Do not alter the FORMATTERS dictionary by hand.
11
10
 
12
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
11
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
13
12
  :license: BSD, see LICENSE for details.
14
13
  """
15
14
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.formatters.bbcode
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  BBcode formatter.
7
6
 
8
- :copyright: Copyright 2006-2020 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
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.formatters.html
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Formatter for HTML output.
7
6
 
8
- :copyright: Copyright 2006-2020 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
 
@@ -63,7 +62,7 @@ def _get_ttype_class(ttype):
63
62
  CSSFILE_TEMPLATE = '''\
64
63
  /*
65
64
  generated by Pygments <https://pygments.org/>
66
- Copyright 2006-2020 by the Pygments team.
65
+ Copyright 2006-2021 by the Pygments team.
67
66
  Licensed under the BSD license, see LICENSE for details.
68
67
  */
69
68
  %(styledefs)s
@@ -74,7 +73,7 @@ DOC_HEADER = '''\
74
73
  "http://www.w3.org/TR/html4/strict.dtd">
75
74
  <!--
76
75
  generated by Pygments <https://pygments.org/>
77
- Copyright 2006-2020 by the Pygments team.
76
+ Copyright 2006-2021 by the Pygments team.
78
77
  Licensed under the BSD license, see LICENSE for details.
79
78
  -->
80
79
  <html>
@@ -457,20 +456,20 @@ class HtmlFormatter(Formatter):
457
456
  return ''
458
457
 
459
458
  def _get_css_classes(self, ttype):
460
- """Generate the opening <span> tag for a given token type using CSS classes."""
459
+ """Return the CSS classes of this token type prefixed with the classprefix option."""
461
460
  cls = self._get_css_class(ttype)
462
461
  while ttype not in STANDARD_TYPES:
463
462
  ttype = ttype.parent
464
463
  cls = self._get_css_class(ttype) + ' ' + cls
465
- return cls and '<span class="%s">' % cls or ''
464
+ return cls or ''
466
465
 
467
466
  def _get_css_inline_styles(self, ttype):
468
- """Generate the opening <span> tag for a given token type using inline CSS styles."""
467
+ """Return the inline CSS styles for this token type."""
469
468
  cclass = self.ttype2class.get(ttype)
470
469
  while cclass is None:
471
470
  ttype = ttype.parent
472
471
  cclass = self.ttype2class.get(ttype)
473
- return cclass and '<span style="%s">' % self.class2style[cclass][0] or ''
472
+ return cclass or ''
474
473
 
475
474
  def _create_stylesheet(self):
476
475
  t2c = self.ttype2class = {Token: ''}
@@ -553,9 +552,9 @@ class HtmlFormatter(Formatter):
553
552
  def get_linenos_style_defs(self):
554
553
  lines = [
555
554
  'pre { %s }' % self._pre_style,
556
- 'td.linenos pre { %s }' % self._linenos_style,
555
+ 'td.linenos .normal { %s }' % self._linenos_style,
557
556
  'span.linenos { %s }' % self._linenos_style,
558
- 'td.linenos pre.special { %s }' % self._linenos_special_style,
557
+ 'td.linenos .special { %s }' % self._linenos_special_style,
559
558
  'span.linenos.special { %s }' % self._linenos_special_style,
560
559
  ]
561
560
 
@@ -628,7 +627,7 @@ class HtmlFormatter(Formatter):
628
627
  with open(cssfilename, "w") as cf:
629
628
  cf.write(CSSFILE_TEMPLATE %
630
629
  {'styledefs': self.get_style_defs('body')})
631
- except IOError as err:
630
+ except OSError as err:
632
631
  err.strerror = 'Error writing CSS file: ' + err.strerror
633
632
  raise
634
633
 
@@ -683,7 +682,7 @@ class HtmlFormatter(Formatter):
683
682
  if special_line:
684
683
  style = ' class="special"'
685
684
  else:
686
- style = ''
685
+ style = ' class="normal"'
687
686
 
688
687
  if style:
689
688
  line = '<span%s>%s</span>' % (style, line)
@@ -710,6 +709,8 @@ class HtmlFormatter(Formatter):
710
709
  st = self.linenostep
711
710
  num = self.linenostart
712
711
  mw = len(str(len(inner_lines) + num - 1))
712
+ la = self.lineanchors
713
+ aln = self.anchorlinenos
713
714
  nocls = self.noclasses
714
715
 
715
716
  for _, inner_line in inner_lines:
@@ -733,9 +734,15 @@ class HtmlFormatter(Formatter):
733
734
  style = ' class="linenos"'
734
735
 
735
736
  if style:
736
- yield 1, '<span%s>%s</span>' % (style, line) + inner_line
737
+ linenos = '<span%s>%s</span>' % (style, line)
738
+ else:
739
+ linenos = line
740
+
741
+ if aln:
742
+ yield 1, ('<a href="#%s-%d">%s</a>' % (la, num, linenos) +
743
+ inner_line)
737
744
  else:
738
- yield 1, line + inner_line
745
+ yield 1, linenos + inner_line
739
746
  num += 1
740
747
 
741
748
  def _wrap_lineanchors(self, inner):
@@ -816,9 +823,12 @@ class HtmlFormatter(Formatter):
816
823
  cspan = self.span_element_openers[ttype]
817
824
  except KeyError:
818
825
  if nocls:
819
- cspan = self.span_element_openers[ttype] = self._get_css_inline_styles(ttype)
826
+ css_style = self._get_css_inline_styles(ttype)
827
+ cspan = css_style and '<span style="%s">' % self.class2style[css_style][0] or ''
820
828
  else:
821
- cspan = self.span_element_openers[ttype] = self._get_css_classes(ttype)
829
+ css_class = self._get_css_classes(ttype)
830
+ cspan = css_class and '<span class="%s">' % css_class or ''
831
+ self.span_element_openers[ttype] = cspan
822
832
 
823
833
  parts = self._translate_parts(value)
824
834
 
@@ -920,11 +930,16 @@ class HtmlFormatter(Formatter):
920
930
  linewise, e.g. line number generators.
921
931
  """
922
932
  source = self._format_lines(tokensource)
933
+
934
+ # As a special case, we wrap line numbers before line highlighting
935
+ # so the line numbers get wrapped in the highlighting tag.
936
+ if not self.nowrap and self.linenos == 2:
937
+ source = self._wrap_inlinelinenos(source)
938
+
923
939
  if self.hl_lines:
924
940
  source = self._highlight_lines(source)
941
+
925
942
  if not self.nowrap:
926
- if self.linenos == 2:
927
- source = self._wrap_inlinelinenos(source)
928
943
  if self.lineanchors:
929
944
  source = self._wrap_lineanchors(source)
930
945
  if self.linespans:
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.formatters.img
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Formatter for Pixmap output.
7
6
 
8
- :copyright: Copyright 2006-2020 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
 
@@ -156,7 +155,7 @@ class FontManager:
156
155
  valname = '%s%s%s' % (basename, style and ' '+style, suffix)
157
156
  val, _ = _winreg.QueryValueEx(key, valname)
158
157
  return val
159
- except EnvironmentError:
158
+ except OSError:
160
159
  continue
161
160
  else:
162
161
  if fail:
@@ -190,7 +189,7 @@ class FontManager:
190
189
  lookuperror = err
191
190
  finally:
192
191
  _winreg.CloseKey(key)
193
- except EnvironmentError:
192
+ except OSError:
194
193
  pass
195
194
  else:
196
195
  # If we get here, we checked all registry keys and had no luck
@@ -453,6 +452,16 @@ class ImageFormatter(Formatter):
453
452
  fill = '#000'
454
453
  return fill
455
454
 
455
+ def _get_text_bg_color(self, style):
456
+ """
457
+ Get the correct background color for the token from the style.
458
+ """
459
+ if style['bgcolor'] is not None:
460
+ bg_color = '#' + style['bgcolor']
461
+ else:
462
+ bg_color = None
463
+ return bg_color
464
+
456
465
  def _get_style_font(self, style):
457
466
  """
458
467
  Get the correct font for the style.
@@ -475,14 +484,15 @@ class ImageFormatter(Formatter):
475
484
  str(lineno).rjust(self.line_number_chars),
476
485
  font=self.fonts.get_font(self.line_number_bold,
477
486
  self.line_number_italic),
478
- fill=self.line_number_fg,
487
+ text_fg=self.line_number_fg,
488
+ text_bg=None,
479
489
  )
480
490
 
481
- def _draw_text(self, pos, text, font, **kw):
491
+ def _draw_text(self, pos, text, font, text_fg, text_bg):
482
492
  """
483
493
  Remember a single drawable tuple to paint later.
484
494
  """
485
- self.drawables.append((pos, text, font, kw))
495
+ self.drawables.append((pos, text, font, text_fg, text_bg))
486
496
 
487
497
  def _create_drawables(self, tokensource):
488
498
  """
@@ -507,7 +517,8 @@ class ImageFormatter(Formatter):
507
517
  self._get_text_pos(linelength, lineno),
508
518
  temp,
509
519
  font = self._get_style_font(style),
510
- fill = self._get_text_color(style)
520
+ text_fg = self._get_text_color(style),
521
+ text_bg = self._get_text_bg_color(style),
511
522
  )
512
523
  temp_width, temp_hight = self.fonts.get_text_size(temp)
513
524
  linelength += temp_width
@@ -577,8 +588,11 @@ class ImageFormatter(Formatter):
577
588
  y = self._get_line_y(linenumber - 1)
578
589
  draw.rectangle([(x, y), (x + rectw, y + recth)],
579
590
  fill=self.hl_color)
580
- for pos, value, font, kw in self.drawables:
581
- draw.text(pos, value, font=font, **kw)
591
+ for pos, value, font, text_fg, text_bg in self.drawables:
592
+ if text_bg:
593
+ text_size = draw.textsize(text=value, font=font)
594
+ draw.rectangle([pos[0], pos[1], pos[0] + text_size[0], pos[1] + text_size[1]], fill=text_bg)
595
+ draw.text(pos, value, font=font, fill=text_fg)
582
596
  im.save(outfile, self.image_format.upper())
583
597
 
584
598
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.formatters.irc
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Formatter for IRC output
7
6
 
8
- :copyright: Copyright 2006-2020 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
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.formatters.latex
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Formatter for LaTeX fancyvrb output.
7
6
 
8
- :copyright: Copyright 2006-2020 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
 
@@ -300,13 +299,13 @@ class LatexFormatter(Formatter):
300
299
  cmndef += (r'\def\$$@tc##1{\textcolor[rgb]{%s}{##1}}' %
301
300
  rgbcolor(ndef['color']))
302
301
  if ndef['border']:
303
- cmndef += (r'\def\$$@bc##1{\setlength{\fboxsep}{0pt}'
304
- r'\fcolorbox[rgb]{%s}{%s}{\strut ##1}}' %
302
+ cmndef += (r'\def\$$@bc##1{{\setlength{\fboxsep}{-\fboxrule}'
303
+ r'\fcolorbox[rgb]{%s}{%s}{\strut ##1}}}' %
305
304
  (rgbcolor(ndef['border']),
306
305
  rgbcolor(ndef['bgcolor'])))
307
306
  elif ndef['bgcolor']:
308
- cmndef += (r'\def\$$@bc##1{\setlength{\fboxsep}{0pt}'
309
- r'\colorbox[rgb]{%s}{\strut ##1}}' %
307
+ cmndef += (r'\def\$$@bc##1{{\setlength{\fboxsep}{0pt}'
308
+ r'\colorbox[rgb]{%s}{\strut ##1}}}' %
310
309
  rgbcolor(ndef['bgcolor']))
311
310
  if cmndef == '':
312
311
  continue
@@ -322,8 +321,7 @@ class LatexFormatter(Formatter):
322
321
  cp = self.commandprefix
323
322
  styles = []
324
323
  for name, definition in self.cmd2def.items():
325
- styles.append(r'\expandafter\def\csname %s@tok@%s\endcsname{%s}' %
326
- (cp, name, definition))
324
+ styles.append(r'\@namedef{%s@tok@%s}{%s}' % (cp, name, definition))
327
325
  return STYLE_TEMPLATE % {'cp': self.commandprefix,
328
326
  'styles': '\n'.join(styles)}
329
327
 
@@ -343,7 +341,8 @@ class LatexFormatter(Formatter):
343
341
  (start and ',firstnumber=%d' % start or '') +
344
342
  (step and ',stepnumber=%d' % step or ''))
345
343
  if self.mathescape or self.texcomments or self.escapeinside:
346
- outfile.write(',codes={\\catcode`\\$=3\\catcode`\\^=7\\catcode`\\_=8}')
344
+ outfile.write(',codes={\\catcode`\\$=3\\catcode`\\^=7'
345
+ '\\catcode`\\_=8\\relax}')
347
346
  if self.verboptions:
348
347
  outfile.write(',' + self.verboptions)
349
348
  outfile.write(']\n')
@@ -1,11 +1,10 @@
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-2020 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
 
@@ -88,34 +87,32 @@ class RawTokenFormatter(Formatter):
88
87
  import gzip
89
88
  outfile = gzip.GzipFile('', 'wb', 9, outfile)
90
89
 
91
- def write(text):
92
- outfile.write(text.encode())
93
- flush = outfile.flush
90
+ write = outfile.write
91
+ flush = outfile.close
94
92
  elif self.compress == 'bz2':
95
93
  import bz2
96
94
  compressor = bz2.BZ2Compressor(9)
97
95
 
98
96
  def write(text):
99
- outfile.write(compressor.compress(text.encode()))
97
+ outfile.write(compressor.compress(text))
100
98
 
101
99
  def flush():
102
100
  outfile.write(compressor.flush())
103
101
  outfile.flush()
104
102
  else:
105
- def write(text):
106
- outfile.write(text.encode())
103
+ write = outfile.write
107
104
  flush = outfile.flush
108
105
 
109
106
  if self.error_color:
110
107
  for ttype, value in tokensource:
111
- line = "%s\t%r\n" % (ttype, value)
108
+ line = b"%r\t%r\n" % (ttype, value)
112
109
  if ttype is Token.Error:
113
110
  write(colorize(self.error_color, line))
114
111
  else:
115
112
  write(line)
116
113
  else:
117
114
  for ttype, value in tokensource:
118
- write("%s\t%r\n" % (ttype, value))
115
+ write(b"%r\t%r\n" % (ttype, value))
119
116
  flush()
120
117
 
121
118