ThirdParty/Pygments/pygments/formatters/__init__.py

Mon, 12 Mar 2012 19:03:42 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 12 Mar 2012 19:03:42 +0100
changeset 1705
b0fbc9300f2b
parent 684
2f29a0b6e1c7
child 2426
da76c71624de
permissions
-rw-r--r--

Update to Pygments 1.5.

# -*- coding: utf-8 -*-
"""
    pygments.formatters
    ~~~~~~~~~~~~~~~~~~~

    Pygments formatters.

    :copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
"""
import os.path
import fnmatch

from pygments.formatters._mapping import FORMATTERS
from pygments.plugin import find_plugin_formatters
from pygments.util import ClassNotFound

ns = globals()
for fcls in FORMATTERS:
    ns[fcls.__name__] = fcls
del fcls

__all__ = ['get_formatter_by_name', 'get_formatter_for_filename',
           'get_all_formatters'] + [cls.__name__ for cls in FORMATTERS]


_formatter_alias_cache = {}
_formatter_filename_cache = []

def _init_formatter_cache():
    if _formatter_alias_cache:
        return
    for cls in get_all_formatters():
        for alias in cls.aliases:
            _formatter_alias_cache[alias] = cls
        for fn in cls.filenames:
            _formatter_filename_cache.append((fn, cls))


def find_formatter_class(name):
    _init_formatter_cache()
    cls = _formatter_alias_cache.get(name, None)
    return cls


def get_formatter_by_name(name, **options):
    _init_formatter_cache()
    cls = _formatter_alias_cache.get(name, None)
    if not cls:
        raise ClassNotFound("No formatter found for name %r" % name)
    return cls(**options)


def get_formatter_for_filename(fn, **options):
    _init_formatter_cache()
    fn = os.path.basename(fn)
    for pattern, cls in _formatter_filename_cache:
        if fnmatch.fnmatch(fn, pattern):
            return cls(**options)
    raise ClassNotFound("No formatter found for file name %r" % fn)


def get_all_formatters():
    """Return a generator for all formatters."""
    for formatter in FORMATTERS:
        yield formatter
    for _, formatter in find_plugin_formatters():
        yield formatter

eric ide

mercurial