pygments.rb 1.1.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (230) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -1
  3. data/Rakefile +1 -0
  4. data/lib/pygments/version.rb +1 -1
  5. data/pygments.rb.gemspec +1 -2
  6. data/vendor/pygments-main/AUTHORS +2 -0
  7. data/vendor/pygments-main/CHANGES +27 -4
  8. data/vendor/pygments-main/LICENSE +1 -1
  9. data/vendor/pygments-main/MANIFEST.in +1 -1
  10. data/vendor/pygments-main/Makefile +1 -1
  11. data/vendor/pygments-main/REVISION +1 -1
  12. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +1 -1
  13. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +1 -1
  14. data/vendor/pygments-main/doc/docs/api.rst +23 -0
  15. data/vendor/pygments-main/doc/docs/cmdline.rst +17 -0
  16. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +42 -3
  17. data/vendor/pygments-main/external/autopygmentize +28 -11
  18. data/vendor/pygments-main/external/markdown-processor.py +1 -1
  19. data/vendor/pygments-main/external/moin-parser.py +1 -1
  20. data/vendor/pygments-main/external/rst-directive.py +1 -1
  21. data/vendor/pygments-main/pygments/__init__.py +2 -2
  22. data/vendor/pygments-main/pygments/cmdline.py +61 -17
  23. data/vendor/pygments-main/pygments/console.py +1 -1
  24. data/vendor/pygments-main/pygments/filter.py +1 -1
  25. data/vendor/pygments-main/pygments/filters/__init__.py +1 -1
  26. data/vendor/pygments-main/pygments/formatter.py +1 -1
  27. data/vendor/pygments-main/pygments/formatters/__init__.py +37 -2
  28. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -1
  29. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  30. data/vendor/pygments-main/pygments/formatters/html.py +1 -1
  31. data/vendor/pygments-main/pygments/formatters/img.py +38 -1
  32. data/vendor/pygments-main/pygments/formatters/irc.py +1 -1
  33. data/vendor/pygments-main/pygments/formatters/latex.py +1 -1
  34. data/vendor/pygments-main/pygments/formatters/other.py +1 -1
  35. data/vendor/pygments-main/pygments/formatters/rtf.py +1 -1
  36. data/vendor/pygments-main/pygments/formatters/svg.py +1 -1
  37. data/vendor/pygments-main/pygments/formatters/terminal.py +1 -1
  38. data/vendor/pygments-main/pygments/formatters/terminal256.py +1 -1
  39. data/vendor/pygments-main/pygments/lexer.py +1 -1
  40. data/vendor/pygments-main/pygments/lexers/__init__.py +39 -5
  41. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1 -1
  42. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +1 -1
  43. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +1 -1
  44. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1 -1
  45. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +8 -1
  46. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +1 -1
  47. data/vendor/pygments-main/pygments/lexers/_mapping.py +6 -5
  48. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -1
  49. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
  50. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +1 -1
  51. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +1 -1
  52. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +1 -1
  53. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -1
  54. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +1 -1
  55. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +1 -1
  56. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
  57. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
  58. data/vendor/pygments-main/pygments/lexers/actionscript.py +1 -1
  59. data/vendor/pygments-main/pygments/lexers/agile.py +1 -1
  60. data/vendor/pygments-main/pygments/lexers/algebra.py +1 -1
  61. data/vendor/pygments-main/pygments/lexers/ambient.py +1 -1
  62. data/vendor/pygments-main/pygments/lexers/ampl.py +1 -1
  63. data/vendor/pygments-main/pygments/lexers/apl.py +1 -1
  64. data/vendor/pygments-main/pygments/lexers/archetype.py +1 -1
  65. data/vendor/pygments-main/pygments/lexers/asm.py +21 -10
  66. data/vendor/pygments-main/pygments/lexers/automation.py +3 -3
  67. data/vendor/pygments-main/pygments/lexers/basic.py +1 -1
  68. data/vendor/pygments-main/pygments/lexers/bibtex.py +9 -5
  69. data/vendor/pygments-main/pygments/lexers/business.py +53 -35
  70. data/vendor/pygments-main/pygments/lexers/c_cpp.py +1 -1
  71. data/vendor/pygments-main/pygments/lexers/c_like.py +2 -2
  72. data/vendor/pygments-main/pygments/lexers/capnproto.py +14 -15
  73. data/vendor/pygments-main/pygments/lexers/chapel.py +4 -3
  74. data/vendor/pygments-main/pygments/lexers/clean.py +11 -11
  75. data/vendor/pygments-main/pygments/lexers/compiled.py +1 -1
  76. data/vendor/pygments-main/pygments/lexers/configs.py +3 -3
  77. data/vendor/pygments-main/pygments/lexers/console.py +1 -1
  78. data/vendor/pygments-main/pygments/lexers/crystal.py +29 -20
  79. data/vendor/pygments-main/pygments/lexers/csound.py +1 -1
  80. data/vendor/pygments-main/pygments/lexers/css.py +1 -1
  81. data/vendor/pygments-main/pygments/lexers/d.py +1 -1
  82. data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -1
  83. data/vendor/pygments-main/pygments/lexers/data.py +1 -1
  84. data/vendor/pygments-main/pygments/lexers/diff.py +1 -1
  85. data/vendor/pygments-main/pygments/lexers/dotnet.py +1 -1
  86. data/vendor/pygments-main/pygments/lexers/dsls.py +4 -4
  87. data/vendor/pygments-main/pygments/lexers/dylan.py +1 -1
  88. data/vendor/pygments-main/pygments/lexers/ecl.py +1 -1
  89. data/vendor/pygments-main/pygments/lexers/eiffel.py +1 -1
  90. data/vendor/pygments-main/pygments/lexers/elm.py +1 -1
  91. data/vendor/pygments-main/pygments/lexers/erlang.py +1 -1
  92. data/vendor/pygments-main/pygments/lexers/esoteric.py +9 -7
  93. data/vendor/pygments-main/pygments/lexers/ezhil.py +4 -3
  94. data/vendor/pygments-main/pygments/lexers/factor.py +1 -1
  95. data/vendor/pygments-main/pygments/lexers/fantom.py +1 -1
  96. data/vendor/pygments-main/pygments/lexers/felix.py +1 -1
  97. data/vendor/pygments-main/pygments/lexers/forth.py +1 -1
  98. data/vendor/pygments-main/pygments/lexers/fortran.py +1 -1
  99. data/vendor/pygments-main/pygments/lexers/foxpro.py +1 -1
  100. data/vendor/pygments-main/pygments/lexers/functional.py +1 -1
  101. data/vendor/pygments-main/pygments/lexers/go.py +1 -1
  102. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +2 -2
  103. data/vendor/pygments-main/pygments/lexers/graph.py +1 -1
  104. data/vendor/pygments-main/pygments/lexers/graphics.py +1 -1
  105. data/vendor/pygments-main/pygments/lexers/haskell.py +5 -2
  106. data/vendor/pygments-main/pygments/lexers/haxe.py +1 -1
  107. data/vendor/pygments-main/pygments/lexers/hdl.py +1 -1
  108. data/vendor/pygments-main/pygments/lexers/hexdump.py +18 -12
  109. data/vendor/pygments-main/pygments/lexers/html.py +1 -1
  110. data/vendor/pygments-main/pygments/lexers/idl.py +2 -2
  111. data/vendor/pygments-main/pygments/lexers/igor.py +1 -1
  112. data/vendor/pygments-main/pygments/lexers/inferno.py +1 -1
  113. data/vendor/pygments-main/pygments/lexers/installers.py +1 -1
  114. data/vendor/pygments-main/pygments/lexers/int_fiction.py +1 -1
  115. data/vendor/pygments-main/pygments/lexers/iolang.py +1 -1
  116. data/vendor/pygments-main/pygments/lexers/j.py +1 -1
  117. data/vendor/pygments-main/pygments/lexers/javascript.py +56 -37
  118. data/vendor/pygments-main/pygments/lexers/julia.py +3 -3
  119. data/vendor/pygments-main/pygments/lexers/jvm.py +1 -1
  120. data/vendor/pygments-main/pygments/lexers/lisp.py +1 -1
  121. data/vendor/pygments-main/pygments/lexers/make.py +1 -1
  122. data/vendor/pygments-main/pygments/lexers/markup.py +1 -1
  123. data/vendor/pygments-main/pygments/lexers/math.py +1 -1
  124. data/vendor/pygments-main/pygments/lexers/matlab.py +1 -1
  125. data/vendor/pygments-main/pygments/lexers/ml.py +1 -1
  126. data/vendor/pygments-main/pygments/lexers/modeling.py +1 -1
  127. data/vendor/pygments-main/pygments/lexers/modula2.py +1 -1
  128. data/vendor/pygments-main/pygments/lexers/monte.py +4 -3
  129. data/vendor/pygments-main/pygments/lexers/ncl.py +85 -244
  130. data/vendor/pygments-main/pygments/lexers/nimrod.py +1 -1
  131. data/vendor/pygments-main/pygments/lexers/nit.py +1 -1
  132. data/vendor/pygments-main/pygments/lexers/nix.py +1 -1
  133. data/vendor/pygments-main/pygments/lexers/oberon.py +1 -1
  134. data/vendor/pygments-main/pygments/lexers/objective.py +1 -1
  135. data/vendor/pygments-main/pygments/lexers/ooc.py +1 -1
  136. data/vendor/pygments-main/pygments/lexers/other.py +1 -1
  137. data/vendor/pygments-main/pygments/lexers/parasail.py +1 -1
  138. data/vendor/pygments-main/pygments/lexers/parsers.py +1 -1
  139. data/vendor/pygments-main/pygments/lexers/pascal.py +2 -2
  140. data/vendor/pygments-main/pygments/lexers/pawn.py +1 -1
  141. data/vendor/pygments-main/pygments/lexers/perl.py +17 -13
  142. data/vendor/pygments-main/pygments/lexers/php.py +1 -1
  143. data/vendor/pygments-main/pygments/lexers/praat.py +1 -1
  144. data/vendor/pygments-main/pygments/lexers/prolog.py +1 -1
  145. data/vendor/pygments-main/pygments/lexers/python.py +2 -1
  146. data/vendor/pygments-main/pygments/lexers/qvt.py +1 -1
  147. data/vendor/pygments-main/pygments/lexers/r.py +1 -1
  148. data/vendor/pygments-main/pygments/lexers/rdf.py +1 -1
  149. data/vendor/pygments-main/pygments/lexers/rebol.py +1 -1
  150. data/vendor/pygments-main/pygments/lexers/resource.py +1 -1
  151. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -1
  152. data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -1
  153. data/vendor/pygments-main/pygments/lexers/robotframework.py +1 -1
  154. data/vendor/pygments-main/pygments/lexers/ruby.py +1 -1
  155. data/vendor/pygments-main/pygments/lexers/rust.py +41 -30
  156. data/vendor/pygments-main/pygments/lexers/sas.py +7 -7
  157. data/vendor/pygments-main/pygments/lexers/scripting.py +1 -1
  158. data/vendor/pygments-main/pygments/lexers/shell.py +14 -10
  159. data/vendor/pygments-main/pygments/lexers/smalltalk.py +1 -1
  160. data/vendor/pygments-main/pygments/lexers/smv.py +28 -24
  161. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -1
  162. data/vendor/pygments-main/pygments/lexers/special.py +1 -1
  163. data/vendor/pygments-main/pygments/lexers/sql.py +1 -1
  164. data/vendor/pygments-main/pygments/lexers/stata.py +9 -7
  165. data/vendor/pygments-main/pygments/lexers/supercollider.py +1 -1
  166. data/vendor/pygments-main/pygments/lexers/tcl.py +1 -1
  167. data/vendor/pygments-main/pygments/lexers/templates.py +48 -17
  168. data/vendor/pygments-main/pygments/lexers/testing.py +1 -1
  169. data/vendor/pygments-main/pygments/lexers/text.py +1 -1
  170. data/vendor/pygments-main/pygments/lexers/textedit.py +1 -1
  171. data/vendor/pygments-main/pygments/lexers/textfmts.py +1 -1
  172. data/vendor/pygments-main/pygments/lexers/theorem.py +1 -1
  173. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -1
  174. data/vendor/pygments-main/pygments/lexers/typoscript.py +8 -7
  175. data/vendor/pygments-main/pygments/lexers/urbi.py +1 -1
  176. data/vendor/pygments-main/pygments/lexers/varnish.py +3 -3
  177. data/vendor/pygments-main/pygments/lexers/verification.py +3 -3
  178. data/vendor/pygments-main/pygments/lexers/web.py +1 -1
  179. data/vendor/pygments-main/pygments/lexers/webmisc.py +20 -11
  180. data/vendor/pygments-main/pygments/lexers/whiley.py +7 -8
  181. data/vendor/pygments-main/pygments/lexers/x10.py +1 -1
  182. data/vendor/pygments-main/pygments/lexers/xorg.py +36 -0
  183. data/vendor/pygments-main/pygments/modeline.py +6 -5
  184. data/vendor/pygments-main/pygments/plugin.py +12 -18
  185. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  186. data/vendor/pygments-main/pygments/scanner.py +1 -1
  187. data/vendor/pygments-main/pygments/sphinxext.py +1 -1
  188. data/vendor/pygments-main/pygments/style.py +1 -1
  189. data/vendor/pygments-main/pygments/styles/__init__.py +4 -2
  190. data/vendor/pygments-main/pygments/styles/abap.py +29 -0
  191. data/vendor/pygments-main/pygments/styles/algol.py +1 -1
  192. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -1
  193. data/vendor/pygments-main/pygments/styles/arduino.py +1 -1
  194. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  195. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  196. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  197. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  198. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  199. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  200. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  201. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  202. data/vendor/pygments-main/pygments/styles/igor.py +1 -1
  203. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -1
  204. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  205. data/vendor/pygments-main/pygments/styles/monokai.py +1 -1
  206. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  207. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  208. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -1
  209. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -1
  210. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  211. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  212. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +89 -0
  213. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  214. data/vendor/pygments-main/pygments/styles/sas.py +3 -0
  215. data/vendor/pygments-main/pygments/styles/stata.py +3 -0
  216. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  217. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  218. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  219. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  220. data/vendor/pygments-main/pygments/styles/xcode.py +1 -1
  221. data/vendor/pygments-main/pygments/token.py +1 -1
  222. data/vendor/pygments-main/pygments/unistring.py +1 -1
  223. data/vendor/pygments-main/pygments/util.py +5 -4
  224. data/vendor/pygments-main/scripts/check_sources.py +2 -2
  225. data/vendor/pygments-main/scripts/debug_lexer.py +1 -1
  226. data/vendor/pygments-main/scripts/get_vimkw.py +1 -1
  227. data/vendor/pygments-main/setup.cfg +2 -2
  228. data/vendor/pygments-main/setup.py +3 -3
  229. metadata +6 -4
  230. data/vendor/pygments-main/scripts/find_error.py +0 -1
@@ -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-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -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-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -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-2017 by the Pygments team, see AUTHORS.
10
10
  :license: BSD, see LICENSE for details.
11
11
  """
12
12
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Base formatter class.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Pygments formatters.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -20,7 +20,7 @@ from pygments.plugin import find_plugin_formatters
20
20
  from pygments.util import ClassNotFound, itervalues
21
21
 
22
22
  __all__ = ['get_formatter_by_name', 'get_formatter_for_filename',
23
- 'get_all_formatters'] + list(FORMATTERS)
23
+ 'get_all_formatters', 'load_formatter_from_file'] + list(FORMATTERS)
24
24
 
25
25
  _formatter_cache = {} # classes by name
26
26
  _pattern_cache = {}
@@ -79,6 +79,41 @@ def get_formatter_by_name(_alias, **options):
79
79
  return cls(**options)
80
80
 
81
81
 
82
+ def load_formatter_from_file(filename, formattername="CustomFormatter",
83
+ **options):
84
+ """Load a formatter from a file.
85
+
86
+ This method expects a file located relative to the current working
87
+ directory, which contains a class named CustomFormatter. By default,
88
+ it expects the Formatter to be named CustomFormatter; you can specify
89
+ your own class name as the second argument to this function.
90
+
91
+ Users should be very careful with the input, because this method
92
+ is equivalent to running eval on the input file.
93
+
94
+ Raises ClassNotFound if there are any problems importing the Formatter.
95
+
96
+ .. versionadded:: 2.2
97
+ """
98
+ try:
99
+ # This empty dict will contain the namespace for the exec'd file
100
+ custom_namespace = {}
101
+ exec(open(filename, 'rb').read(), custom_namespace)
102
+ # Retrieve the class `formattername` from that namespace
103
+ if formattername not in custom_namespace:
104
+ raise ClassNotFound('no valid %s class found in %s' %
105
+ (formattername, filename))
106
+ formatter_class = custom_namespace[formattername]
107
+ # And finally instantiate it with the options
108
+ return formatter_class(**options)
109
+ except IOError as err:
110
+ raise ClassNotFound('cannot read %s' % filename)
111
+ except ClassNotFound as err:
112
+ raise
113
+ except Exception as err:
114
+ raise ClassNotFound('error when loading custom formatter: %s' % err)
115
+
116
+
82
117
  def get_formatter_for_filename(fn, **options):
83
118
  """Lookup and instantiate a formatter by filename pattern.
84
119
 
@@ -9,7 +9,7 @@
9
9
 
10
10
  Do not alter the FORMATTERS dictionary by hand.
11
11
 
12
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
12
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
13
13
  :license: BSD, see LICENSE for details.
14
14
  """
15
15
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  BBcode formatter.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Formatter for HTML output.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -5,10 +5,11 @@
5
5
 
6
6
  Formatter for Pixmap output.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
12
+ import os
12
13
  import sys
13
14
 
14
15
  from pygments.formatter import Formatter
@@ -47,6 +48,7 @@ STYLES = {
47
48
  # A sane default for modern systems
48
49
  DEFAULT_FONT_NAME_NIX = 'Bitstream Vera Sans Mono'
49
50
  DEFAULT_FONT_NAME_WIN = 'Courier New'
51
+ DEFAULT_FONT_NAME_MAC = 'Courier New'
50
52
 
51
53
 
52
54
  class PilNotAvailable(ImportError):
@@ -71,6 +73,10 @@ class FontManager(object):
71
73
  if not font_name:
72
74
  self.font_name = DEFAULT_FONT_NAME_WIN
73
75
  self._create_win()
76
+ elif sys.platform.startswith('darwin'):
77
+ if not font_name:
78
+ self.font_name = DEFAULT_FONT_NAME_MAC
79
+ self._create_mac()
74
80
  else:
75
81
  if not font_name:
76
82
  self.font_name = DEFAULT_FONT_NAME_NIX
@@ -111,6 +117,37 @@ class FontManager(object):
111
117
  else:
112
118
  self.fonts[style] = self.fonts['NORMAL']
113
119
 
120
+ def _get_mac_font_path(self, font_map, name, style):
121
+ return font_map.get((name + ' ' + style).strip().lower())
122
+
123
+ def _create_mac(self):
124
+ font_map = {}
125
+ for font_dir in (os.path.join(os.getenv("HOME"), 'Library/Fonts/'),
126
+ '/Library/Fonts/', '/System/Library/Fonts/'):
127
+ font_map.update(
128
+ ((os.path.splitext(f)[0].lower(), os.path.join(font_dir, f))
129
+ for f in os.listdir(font_dir) if f.lower().endswith('ttf')))
130
+
131
+ for name in STYLES['NORMAL']:
132
+ path = self._get_mac_font_path(font_map, self.font_name, name)
133
+ if path is not None:
134
+ self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size)
135
+ break
136
+ else:
137
+ raise FontNotFound('No usable fonts named: "%s"' %
138
+ self.font_name)
139
+ for style in ('ITALIC', 'BOLD', 'BOLDITALIC'):
140
+ for stylename in STYLES[style]:
141
+ path = self._get_mac_font_path(font_map, self.font_name, stylename)
142
+ if path is not None:
143
+ self.fonts[style] = ImageFont.truetype(path, self.font_size)
144
+ break
145
+ else:
146
+ if style == 'BOLDITALIC':
147
+ self.fonts[style] = self.fonts['BOLD']
148
+ else:
149
+ self.fonts[style] = self.fonts['NORMAL']
150
+
114
151
  def _lookup_win(self, key, basename, styles, fail=False):
115
152
  for suffix in ('', ' (TrueType)'):
116
153
  for style in styles:
@@ -5,7 +5,7 @@
5
5
 
6
6
  Formatter for IRC output
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Formatter for LaTeX fancyvrb output.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Other formatters: NullFormatter, RawTokenFormatter.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  A formatter that generates RTF files.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Formatter for SVG output.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Formatter for terminal output with ANSI sequences.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -11,7 +11,7 @@
11
11
 
12
12
  Formatter version 1.
13
13
 
14
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
14
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
15
15
  :license: BSD, see LICENSE for details.
16
16
  """
17
17
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Base lexer classes.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Pygments lexers.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -22,7 +22,7 @@ from pygments.util import ClassNotFound, itervalues, guess_decode
22
22
 
23
23
 
24
24
  __all__ = ['get_lexer_by_name', 'get_lexer_for_filename', 'find_lexer_class',
25
- 'guess_lexer'] + list(LEXERS)
25
+ 'guess_lexer', 'load_lexer_from_file'] + list(LEXERS)
26
26
 
27
27
  _lexer_cache = {}
28
28
  _pattern_cache = {}
@@ -72,7 +72,7 @@ def find_lexer_class(name):
72
72
  return cls
73
73
 
74
74
 
75
- def find_lexer_class_by_name(alias):
75
+ def find_lexer_class_by_name(_alias):
76
76
  """Lookup a lexer class by alias.
77
77
 
78
78
  Like `get_lexer_by_name`, but does not instantiate the class.
@@ -115,6 +115,40 @@ def get_lexer_by_name(_alias, **options):
115
115
  raise ClassNotFound('no lexer for alias %r found' % _alias)
116
116
 
117
117
 
118
+ def load_lexer_from_file(filename, lexername="CustomLexer", **options):
119
+ """Load a lexer from a file.
120
+
121
+ This method expects a file located relative to the current working
122
+ directory, which contains a Lexer class. By default, it expects the
123
+ Lexer to be name CustomLexer; you can specify your own class name
124
+ as the second argument to this function.
125
+
126
+ Users should be very careful with the input, because this method
127
+ is equivalent to running eval on the input file.
128
+
129
+ Raises ClassNotFound if there are any problems importing the Lexer.
130
+
131
+ .. versionadded:: 2.2
132
+ """
133
+ try:
134
+ # This empty dict will contain the namespace for the exec'd file
135
+ custom_namespace = {}
136
+ exec(open(filename, 'rb').read(), custom_namespace)
137
+ # Retrieve the class `lexername` from that namespace
138
+ if lexername not in custom_namespace:
139
+ raise ClassNotFound('no valid %s class found in %s' %
140
+ (lexername, filename))
141
+ lexer_class = custom_namespace[lexername]
142
+ # And finally instantiate it with the options
143
+ return lexer_class(**options)
144
+ except IOError as err:
145
+ raise ClassNotFound('cannot read %s' % filename)
146
+ except ClassNotFound as err:
147
+ raise
148
+ except Exception as err:
149
+ raise ClassNotFound('error when loading custom lexer: %s' % err)
150
+
151
+
118
152
  def find_lexer_class_for_filename(_fn, code=None):
119
153
  """Get a lexer for a filename.
120
154
 
@@ -149,8 +183,8 @@ def find_lexer_class_for_filename(_fn, code=None):
149
183
  # gets turned into 0.0. Run scripts/detect_missing_analyse_text.py
150
184
  # to find lexers which need it overridden.
151
185
  if code:
152
- return cls.analyse_text(code) + bonus
153
- return cls.priority + bonus
186
+ return cls.analyse_text(code) + bonus, cls.__name__
187
+ return cls.priority + bonus, cls.__name__
154
188
 
155
189
  if matches:
156
190
  matches.sort(key=get_rating)
@@ -10,7 +10,7 @@
10
10
  TODO: perl/python script in Asymptote SVN similar to asy-list.pl but only
11
11
  for function and variable names.
12
12
 
13
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
13
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
14
14
  :license: BSD, see LICENSE for details.
15
15
  """
16
16
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  ANSI Common Lisp builtins.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  File may be also used as standalone generator for aboves.
10
10
 
11
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
11
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
12
12
  :license: BSD, see LICENSE for details.
13
13
  """
14
14
 
@@ -3,7 +3,7 @@
3
3
  pygments.lexers._csound_builtins
4
4
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
5
 
6
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
6
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
7
7
  :license: BSD, see LICENSE for details.
8
8
  """
9
9
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Built-in Lasso types, traits, methods, and members.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -471,6 +471,10 @@ BUILTINS = {
471
471
  'curl_netrc_ignored',
472
472
  'curl_netrc_optional',
473
473
  'curl_netrc_required',
474
+ 'curl_sslversion_default',
475
+ 'curl_sslversion_sslv2',
476
+ 'curl_sslversion_sslv3',
477
+ 'curl_sslversion_tlsv1',
474
478
  'curl_version_asynchdns',
475
479
  'curl_version_debug',
476
480
  'curl_version_gssnegotiate',
@@ -1102,6 +1106,7 @@ BUILTINS = {
1102
1106
  'json_open_array',
1103
1107
  'json_open_object',
1104
1108
  'json_period',
1109
+ 'json_positive',
1105
1110
  'json_quote_double',
1106
1111
  'json_rpccall',
1107
1112
  'json_serialize',
@@ -1229,6 +1234,7 @@ BUILTINS = {
1229
1234
  'lcapi_loadmodules',
1230
1235
  'lcapi_updatedatasourceslist',
1231
1236
  'ldap_scope_base',
1237
+ 'ldap_scope_children',
1232
1238
  'ldap_scope_onelevel',
1233
1239
  'ldap_scope_subtree',
1234
1240
  'library_once',
@@ -4044,6 +4050,7 @@ MEMBERS = {
4044
4050
  'iscntrl',
4045
4051
  'isdigit',
4046
4052
  'isdir',
4053
+ 'isdirectory',
4047
4054
  'isempty',
4048
4055
  'isemptyelement',
4049
4056
  'isfirststep',
@@ -9,7 +9,7 @@
9
9
 
10
10
  Do not edit the MODULES dict by hand.
11
11
 
12
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
12
+ :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
13
13
  :license: BSD, see LICENSE for details.
14
14
  """
15
15
 
@@ -52,7 +52,7 @@ LEXERS = {
52
52
  'BCLexer': ('pygments.lexers.algebra', 'BC', ('bc',), ('*.bc',), ()),
53
53
  'BSTLexer': ('pygments.lexers.bibtex', 'BST', ('bst', 'bst-pybtex'), ('*.bst',), ()),
54
54
  'BaseMakefileLexer': ('pygments.lexers.make', 'Base Makefile', ('basemake',), (), ()),
55
- 'BashLexer': ('pygments.lexers.shell', 'Bash', ('bash', 'sh', 'ksh', 'shell'), ('*.sh', '*.ksh', '*.bash', '*.ebuild', '*.eclass', '*.exheres-0', '*.exlib', '.bashrc', 'bashrc', '.bash_*', 'bash_*', 'PKGBUILD'), ('application/x-sh', 'application/x-shellscript')),
55
+ 'BashLexer': ('pygments.lexers.shell', 'Bash', ('bash', 'sh', 'ksh', 'zsh', 'shell'), ('*.sh', '*.ksh', '*.bash', '*.ebuild', '*.eclass', '*.exheres-0', '*.exlib', '*.zsh', '.bashrc', 'bashrc', '.bash_*', 'bash_*', 'zshrc', '.zshrc', 'PKGBUILD'), ('application/x-sh', 'application/x-shellscript')),
56
56
  'BashSessionLexer': ('pygments.lexers.shell', 'Bash Session', ('console', 'shell-session'), ('*.sh-session', '*.shell-session'), ('application/x-shell-session', 'application/x-sh-session')),
57
57
  'BatchLexer': ('pygments.lexers.shell', 'Batchfile', ('bat', 'batch', 'dosbatch', 'winbatch'), ('*.bat', '*.cmd'), ('application/x-dos-batch',)),
58
58
  'BefungeLexer': ('pygments.lexers.esoteric', 'Befunge', ('befunge',), ('*.befunge',), ('application/x-befunge',)),
@@ -123,7 +123,7 @@ LEXERS = {
123
123
  'DartLexer': ('pygments.lexers.javascript', 'Dart', ('dart',), ('*.dart',), ('text/x-dart',)),
124
124
  'Dasm16Lexer': ('pygments.lexers.github', 'dasm16', ('DASM16',), ('*.dasm16', '*.dasm'), ('text/x-dasm16',)),
125
125
  'DebianControlLexer': ('pygments.lexers.installers', 'Debian Control file', ('control', 'debcontrol'), ('control',), ()),
126
- 'DelphiLexer': ('pygments.lexers.pascal', 'Delphi', ('delphi', 'pas', 'pascal', 'objectpascal'), ('*.pas',), ('text/x-pascal',)),
126
+ 'DelphiLexer': ('pygments.lexers.pascal', 'Delphi', ('delphi', 'pas', 'pascal', 'objectpascal'), ('*.pas', '*.dpr'), ('text/x-pascal',)),
127
127
  'DgLexer': ('pygments.lexers.python', 'dg', ('dg',), ('*.dg',), ('text/x-dg',)),
128
128
  'DiffLexer': ('pygments.lexers.diff', 'Diff', ('diff', 'udiff'), ('*.diff', '*.patch'), ('text/x-diff', 'text/x-patch')),
129
129
  'DjangoLexer': ('pygments.lexers.templates', 'Django/Jinja', ('django', 'jinja'), (), ('application/x-django-templating', 'application/x-jinja')),
@@ -291,7 +291,7 @@ LEXERS = {
291
291
  'NesCLexer': ('pygments.lexers.c_like', 'nesC', ('nesc',), ('*.nc',), ('text/x-nescsrc',)),
292
292
  'NewLispLexer': ('pygments.lexers.lisp', 'NewLisp', ('newlisp',), ('*.lsp', '*.nl', '*.kif'), ('text/x-newlisp', 'application/x-newlisp')),
293
293
  'NewspeakLexer': ('pygments.lexers.smalltalk', 'Newspeak', ('newspeak',), ('*.ns2',), ('text/x-newspeak',)),
294
- 'NginxConfLexer': ('pygments.lexers.configs', 'Nginx configuration file', ('nginx',), (), ('text/x-nginx-conf',)),
294
+ 'NginxConfLexer': ('pygments.lexers.configs', 'Nginx configuration file', ('nginx',), ('nginx.conf',), ('text/x-nginx-conf',)),
295
295
  'NimrodLexer': ('pygments.lexers.nimrod', 'Nimrod', ('nim', 'nimrod'), ('*.nim', '*.nimrod'), ('text/x-nim',)),
296
296
  'NitLexer': ('pygments.lexers.nit', 'Nit', ('nit',), ('*.nit',), ()),
297
297
  'NixLexer': ('pygments.lexers.nix', 'Nix', ('nixos', 'nix'), ('*.nix',), ('text/x-nix',)),
@@ -381,7 +381,7 @@ LEXERS = {
381
381
  'ScilabLexer': ('pygments.lexers.matlab', 'Scilab', ('scilab',), ('*.sci', '*.sce', '*.tst'), ('text/scilab',)),
382
382
  'ScssLexer': ('pygments.lexers.css', 'SCSS', ('scss',), ('*.scss',), ('text/x-scss',)),
383
383
  'ShenLexer': ('pygments.lexers.lisp', 'Shen', ('shen',), ('*.shen',), ('text/x-shen', 'application/x-shen')),
384
- 'SilverLexer': ('pygments.lexers.verification', 'Silver', ('silver',), ('*.sil',), ()),
384
+ 'SilverLexer': ('pygments.lexers.verification', 'Silver', ('silver',), ('*.sil', '*.vpr'), ()),
385
385
  'SlashLexer': ('pygments.lexers.github', 'Slash', ('slash',), ('*.sl',), ()),
386
386
  'SlimLexer': ('pygments.lexers.webmisc', 'Slim', ('slim',), ('*.slim',), ('text/x-slim',)),
387
387
  'SmaliLexer': ('pygments.lexers.dalvik', 'Smali', ('smali',), ('*.smali',), ('text/smali',)),
@@ -422,7 +422,7 @@ LEXERS = {
422
422
  'TurtleLexer': ('pygments.lexers.rdf', 'Turtle', ('turtle',), ('*.ttl',), ('text/turtle', 'application/x-turtle')),
423
423
  'TwigHtmlLexer': ('pygments.lexers.templates', 'HTML+Twig', ('html+twig',), ('*.twig',), ('text/html+twig',)),
424
424
  'TwigLexer': ('pygments.lexers.templates', 'Twig', ('twig',), (), ('application/x-twig',)),
425
- 'TypeScriptLexer': ('pygments.lexers.javascript', 'TypeScript', ('ts', 'typescript'), ('*.ts',), ('text/x-typescript',)),
425
+ 'TypeScriptLexer': ('pygments.lexers.javascript', 'TypeScript', ('ts', 'typescript'), ('*.ts', '*.tsx'), ('text/x-typescript',)),
426
426
  'TypoScriptCssDataLexer': ('pygments.lexers.typoscript', 'TypoScriptCssData', ('typoscriptcssdata',), (), ()),
427
427
  'TypoScriptHtmlDataLexer': ('pygments.lexers.typoscript', 'TypoScriptHtmlData', ('typoscripthtmldata',), (), ()),
428
428
  'TypoScriptLexer': ('pygments.lexers.typoscript', 'TypoScript', ('typoscript',), ('*.ts', '*.txt'), ('text/x-typoscript',)),
@@ -449,6 +449,7 @@ LEXERS = {
449
449
  'XmlLexer': ('pygments.lexers.html', 'XML', ('xml',), ('*.xml', '*.xsl', '*.rss', '*.xslt', '*.xsd', '*.wsdl', '*.wsf'), ('text/xml', 'application/xml', 'image/svg+xml', 'application/rss+xml', 'application/atom+xml')),
450
450
  'XmlPhpLexer': ('pygments.lexers.templates', 'XML+PHP', ('xml+php',), (), ('application/xml+php',)),
451
451
  'XmlSmartyLexer': ('pygments.lexers.templates', 'XML+Smarty', ('xml+smarty',), (), ('application/xml+smarty',)),
452
+ 'XorgLexer': ('pygments.lexers.xorg', 'Xorg', ('xorg.conf',), ('xorg.conf',), ()),
452
453
  'XsltLexer': ('pygments.lexers.html', 'XSLT', ('xslt',), ('*.xsl', '*.xslt', '*.xpl'), ('application/xsl+xml', 'application/xslt+xml')),
453
454
  'XtendLexer': ('pygments.lexers.jvm', 'Xtend', ('xtend',), ('*.xtend',), ('text/x-xtend',)),
454
455
  'XtlangLexer': ('pygments.lexers.lisp', 'xtlang', ('extempore',), ('*.xtm',), ()),