diff options
| author | Anteru <bitbucket@ca.sh13.net> | 2018-11-24 16:37:35 +0000 |
|---|---|---|
| committer | Anteru <bitbucket@ca.sh13.net> | 2018-11-24 16:37:35 +0000 |
| commit | c85d52dfad2b5b1f9783e88ac52d893e30f034d2 (patch) | |
| tree | eb3ef2aa70d2fbb7a1a307042038405929aa9650 /pygments/formatters | |
| parent | ee4cc2ef1bc96d44e93c1ad881e7b533bc83b8ae (diff) | |
| parent | d13cb73dc075a689f17e453a392429eb880b2eca (diff) | |
| download | pygments-git-c85d52dfad2b5b1f9783e88ac52d893e30f034d2.tar.gz | |
Merged in Reedbeta/pygments-main/hlsl-lexer (pull request #675)
Add HLSL lexer
Approved-by: Anteru <bitbucket@ca.sh13.net>
Diffstat (limited to 'pygments/formatters')
| -rw-r--r-- | pygments/formatters/__init__.py | 39 | ||||
| -rwxr-xr-x | pygments/formatters/_mapping.py | 2 | ||||
| -rw-r--r-- | pygments/formatters/bbcode.py | 2 | ||||
| -rw-r--r-- | pygments/formatters/html.py | 2 | ||||
| -rw-r--r-- | pygments/formatters/img.py | 39 | ||||
| -rw-r--r-- | pygments/formatters/irc.py | 2 | ||||
| -rw-r--r-- | pygments/formatters/latex.py | 2 | ||||
| -rw-r--r-- | pygments/formatters/other.py | 2 | ||||
| -rw-r--r-- | pygments/formatters/rtf.py | 2 | ||||
| -rw-r--r-- | pygments/formatters/svg.py | 2 | ||||
| -rw-r--r-- | pygments/formatters/terminal.py | 2 | ||||
| -rw-r--r-- | pygments/formatters/terminal256.py | 2 |
12 files changed, 85 insertions, 13 deletions
diff --git a/pygments/formatters/__init__.py b/pygments/formatters/__init__.py index 8ddf0ee3..965c5f1a 100644 --- a/pygments/formatters/__init__.py +++ b/pygments/formatters/__init__.py @@ -5,7 +5,7 @@ Pygments formatters. - :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -20,7 +20,7 @@ from pygments.plugin import find_plugin_formatters from pygments.util import ClassNotFound, itervalues __all__ = ['get_formatter_by_name', 'get_formatter_for_filename', - 'get_all_formatters'] + list(FORMATTERS) + 'get_all_formatters', 'load_formatter_from_file'] + list(FORMATTERS) _formatter_cache = {} # classes by name _pattern_cache = {} @@ -79,6 +79,41 @@ def get_formatter_by_name(_alias, **options): return cls(**options) +def load_formatter_from_file(filename, formattername="CustomFormatter", + **options): + """Load a formatter from a file. + + This method expects a file located relative to the current working + directory, which contains a class named CustomFormatter. By default, + it expects the Formatter to be named CustomFormatter; you can specify + your own class name as the second argument to this function. + + Users should be very careful with the input, because this method + is equivalent to running eval on the input file. + + Raises ClassNotFound if there are any problems importing the Formatter. + + .. versionadded:: 2.2 + """ + try: + # This empty dict will contain the namespace for the exec'd file + custom_namespace = {} + exec(open(filename, 'rb').read(), custom_namespace) + # Retrieve the class `formattername` from that namespace + if formattername not in custom_namespace: + raise ClassNotFound('no valid %s class found in %s' % + (formattername, filename)) + formatter_class = custom_namespace[formattername] + # And finally instantiate it with the options + return formatter_class(**options) + except IOError as err: + raise ClassNotFound('cannot read %s' % filename) + except ClassNotFound as err: + raise + except Exception as err: + raise ClassNotFound('error when loading custom formatter: %s' % err) + + def get_formatter_for_filename(fn, **options): """Lookup and instantiate a formatter by filename pattern. diff --git a/pygments/formatters/_mapping.py b/pygments/formatters/_mapping.py index 01d053dd..7bb3e71c 100755 --- a/pygments/formatters/_mapping.py +++ b/pygments/formatters/_mapping.py @@ -9,7 +9,7 @@ Do not alter the FORMATTERS dictionary by hand. - :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ diff --git a/pygments/formatters/bbcode.py b/pygments/formatters/bbcode.py index 580989f0..9fc9476d 100644 --- a/pygments/formatters/bbcode.py +++ b/pygments/formatters/bbcode.py @@ -5,7 +5,7 @@ BBcode formatter. - :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ diff --git a/pygments/formatters/html.py b/pygments/formatters/html.py index 2c6bb19e..2969d502 100644 --- a/pygments/formatters/html.py +++ b/pygments/formatters/html.py @@ -5,7 +5,7 @@ Formatter for HTML output. - :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ diff --git a/pygments/formatters/img.py b/pygments/formatters/img.py index cc95ce24..2fb0dea5 100644 --- a/pygments/formatters/img.py +++ b/pygments/formatters/img.py @@ -5,10 +5,11 @@ Formatter for Pixmap output. - :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ +import os import sys from pygments.formatter import Formatter @@ -47,6 +48,7 @@ STYLES = { # A sane default for modern systems DEFAULT_FONT_NAME_NIX = 'Bitstream Vera Sans Mono' DEFAULT_FONT_NAME_WIN = 'Courier New' +DEFAULT_FONT_NAME_MAC = 'Courier New' class PilNotAvailable(ImportError): @@ -71,6 +73,10 @@ class FontManager(object): if not font_name: self.font_name = DEFAULT_FONT_NAME_WIN self._create_win() + elif sys.platform.startswith('darwin'): + if not font_name: + self.font_name = DEFAULT_FONT_NAME_MAC + self._create_mac() else: if not font_name: self.font_name = DEFAULT_FONT_NAME_NIX @@ -111,6 +117,37 @@ class FontManager(object): else: self.fonts[style] = self.fonts['NORMAL'] + def _get_mac_font_path(self, font_map, name, style): + return font_map.get((name + ' ' + style).strip().lower()) + + def _create_mac(self): + font_map = {} + for font_dir in (os.path.join(os.getenv("HOME"), 'Library/Fonts/'), + '/Library/Fonts/', '/System/Library/Fonts/'): + font_map.update( + ((os.path.splitext(f)[0].lower(), os.path.join(font_dir, f)) + for f in os.listdir(font_dir) if f.lower().endswith('ttf'))) + + for name in STYLES['NORMAL']: + path = self._get_mac_font_path(font_map, self.font_name, name) + if path is not None: + self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size) + break + else: + raise FontNotFound('No usable fonts named: "%s"' % + self.font_name) + for style in ('ITALIC', 'BOLD', 'BOLDITALIC'): + for stylename in STYLES[style]: + path = self._get_mac_font_path(font_map, self.font_name, stylename) + if path is not None: + self.fonts[style] = ImageFont.truetype(path, self.font_size) + break + else: + if style == 'BOLDITALIC': + self.fonts[style] = self.fonts['BOLD'] + else: + self.fonts[style] = self.fonts['NORMAL'] + def _lookup_win(self, key, basename, styles, fail=False): for suffix in ('', ' (TrueType)'): for style in styles: diff --git a/pygments/formatters/irc.py b/pygments/formatters/irc.py index d1eed0ac..eb744d74 100644 --- a/pygments/formatters/irc.py +++ b/pygments/formatters/irc.py @@ -5,7 +5,7 @@ Formatter for IRC output - :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ diff --git a/pygments/formatters/latex.py b/pygments/formatters/latex.py index 66d521f5..336b59de 100644 --- a/pygments/formatters/latex.py +++ b/pygments/formatters/latex.py @@ -5,7 +5,7 @@ Formatter for LaTeX fancyvrb output. - :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ diff --git a/pygments/formatters/other.py b/pygments/formatters/other.py index 4945d763..d6bfcacf 100644 --- a/pygments/formatters/other.py +++ b/pygments/formatters/other.py @@ -5,7 +5,7 @@ Other formatters: NullFormatter, RawTokenFormatter. - :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ diff --git a/pygments/formatters/rtf.py b/pygments/formatters/rtf.py index 27be225a..c6353c12 100644 --- a/pygments/formatters/rtf.py +++ b/pygments/formatters/rtf.py @@ -5,7 +5,7 @@ A formatter that generates RTF files. - :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ diff --git a/pygments/formatters/svg.py b/pygments/formatters/svg.py index 0efe9eea..944b25e0 100644 --- a/pygments/formatters/svg.py +++ b/pygments/formatters/svg.py @@ -5,7 +5,7 @@ Formatter for SVG output. - :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ diff --git a/pygments/formatters/terminal.py b/pygments/formatters/terminal.py index 2dbfde7f..b8fec52e 100644 --- a/pygments/formatters/terminal.py +++ b/pygments/formatters/terminal.py @@ -5,7 +5,7 @@ Formatter for terminal output with ANSI sequences. - :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ diff --git a/pygments/formatters/terminal256.py b/pygments/formatters/terminal256.py index 5110bc9e..b80dc7dd 100644 --- a/pygments/formatters/terminal256.py +++ b/pygments/formatters/terminal256.py @@ -11,7 +11,7 @@ Formatter version 1. - :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ |
