|
1 # -*- coding: utf-8 -*- |
|
2 """ |
|
3 pygments.plugin |
|
4 ~~~~~~~~~~~~~~~ |
|
5 |
|
6 Pygments setuptools plugin interface. The methods defined |
|
7 here also work if setuptools isn't installed but they just |
|
8 return nothing. |
|
9 |
|
10 lexer plugins:: |
|
11 |
|
12 [pygments.lexers] |
|
13 yourlexer = yourmodule:YourLexer |
|
14 |
|
15 formatter plugins:: |
|
16 |
|
17 [pygments.formatters] |
|
18 yourformatter = yourformatter:YourFormatter |
|
19 /.ext = yourformatter:YourFormatter |
|
20 |
|
21 As you can see, you can define extensions for the formatter |
|
22 with a leading slash. |
|
23 |
|
24 syntax plugins:: |
|
25 |
|
26 [pygments.styles] |
|
27 yourstyle = yourstyle:YourStyle |
|
28 |
|
29 filter plugin:: |
|
30 |
|
31 [pygments.filter] |
|
32 yourfilter = yourfilter:YourFilter |
|
33 |
|
34 |
|
35 :copyright: Copyright 2006-2009 by the Pygments team, see AUTHORS. |
|
36 :license: BSD, see LICENSE for details. |
|
37 """ |
|
38 try: |
|
39 import pkg_resources |
|
40 except ImportError: |
|
41 pkg_resources = None |
|
42 |
|
43 LEXER_ENTRY_POINT = 'pygments.lexers' |
|
44 FORMATTER_ENTRY_POINT = 'pygments.formatters' |
|
45 STYLE_ENTRY_POINT = 'pygments.styles' |
|
46 FILTER_ENTRY_POINT = 'pygments.filters' |
|
47 |
|
48 |
|
49 def find_plugin_lexers(): |
|
50 if pkg_resources is None: |
|
51 return |
|
52 for entrypoint in pkg_resources.iter_entry_points(LEXER_ENTRY_POINT): |
|
53 yield entrypoint.load() |
|
54 |
|
55 |
|
56 def find_plugin_formatters(): |
|
57 if pkg_resources is None: |
|
58 return |
|
59 for entrypoint in pkg_resources.iter_entry_points(FORMATTER_ENTRY_POINT): |
|
60 yield entrypoint.name, entrypoint.load() |
|
61 |
|
62 |
|
63 def find_plugin_styles(): |
|
64 if pkg_resources is None: |
|
65 return |
|
66 for entrypoint in pkg_resources.iter_entry_points(STYLE_ENTRY_POINT): |
|
67 yield entrypoint.name, entrypoint.load() |
|
68 |
|
69 |
|
70 def find_plugin_filters(): |
|
71 if pkg_resources is None: |
|
72 return |
|
73 for entrypoint in pkg_resources.iter_entry_points(FILTER_ENTRY_POINT): |
|
74 yield entrypoint.name, entrypoint.load() |