diff options
author | blackbird <devnull@localhost> | 2006-10-22 12:54:00 +0200 |
---|---|---|
committer | blackbird <devnull@localhost> | 2006-10-22 12:54:00 +0200 |
commit | f2db9aedba7959d57d43903e4eff78db101e6234 (patch) | |
tree | f84bda4581de9a456c47b2ee8aeb61482ff385d7 /pygments/plugin.py | |
parent | 7fd6f0d8a3903a6538ffeec2d64102cfe8ce23b1 (diff) | |
download | pygments-f2db9aedba7959d57d43903e4eff78db101e6234.tar.gz |
[svn] added experimental (untested) plugin support. i'll try writing some plugins tomorrow when i've more time ;)
Diffstat (limited to 'pygments/plugin.py')
-rw-r--r-- | pygments/plugin.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/pygments/plugin.py b/pygments/plugin.py new file mode 100644 index 00000000..7cbb9f1c --- /dev/null +++ b/pygments/plugin.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +""" + pygments.plugin + ~~~~~~~~~~~~~~~ + + Pygments setuptools plugin interface. The methods defined + here also work if setuptools isn't installed but they just + return nothing. + + lexer plugins:: + + [pygments.lexers] + yourlexer = yourmodule:YourLexer + + formatter plugins:: + + [pygments.formatters] + yourformatter = yourformatter:YourFormatter + /.ext = yourformatter:YourFormatter + + As you can see, you can define extensions for the formatter + with a leading slash. + + syntax plugins:: + + [pygments.styles] + yourstyle = yourstyle:YourStyle + + + :coypright: 2006 by Armin Ronacher. + :license: GNU LGPG; see LICENSE for more details. +""" +try: + import pkg_resources +except ImportError: + pkg_resources = None + +LEXER_ENTRY_POINT = 'pygments.lexers' +FORMATTER_ENTRY_POINT = 'pygments.formatters' +STYLE_ENTRY_POINT = 'pygments.styles' + + +def find_plugin_lexers(): + if pkg_resources is None: + return + for entrypoint in pkg_resources.iter_entry_points(LEXER_ENTRY_POINT): + yield entrypoint.load() + + +def find_plugin_formatters(): + if pkg_resources is None: + return + for entrypoint in pkg_resources.iter_entry_points(FORMATTER_ENTRY_POINT): + yield entrypoint.name, entrypoint.load() + + +def find_plugin_styles(): + if pkg_resources is None: + return + for entrypoint in pkg_resources.iter_entry_points(STYLE_ENTRY_POINT): + yield entrypoint.name, entrypoint.load() |