|
from importlib import import_module |
|
|
|
_plugins = { |
|
'speedup': 'mistune.plugins.speedup.speedup', |
|
'strikethrough': 'mistune.plugins.formatting.strikethrough', |
|
'mark': 'mistune.plugins.formatting.mark', |
|
'insert': 'mistune.plugins.formatting.insert', |
|
'superscript': 'mistune.plugins.formatting.superscript', |
|
'subscript': 'mistune.plugins.formatting.subscript', |
|
'footnotes': 'mistune.plugins.footnotes.footnotes', |
|
'table': 'mistune.plugins.table.table', |
|
'url': 'mistune.plugins.url.url', |
|
'abbr': 'mistune.plugins.abbr.abbr', |
|
'def_list': 'mistune.plugins.def_list.def_list', |
|
'math': 'mistune.plugins.math.math', |
|
'ruby': 'mistune.plugins.ruby.ruby', |
|
'task_lists': 'mistune.plugins.task_lists.task_lists', |
|
'spoiler': 'mistune.plugins.spoiler.spoiler', |
|
} |
|
_cached_modules = {} |
|
|
|
|
|
def import_plugin(name): |
|
if name in _cached_modules: |
|
return _cached_modules[name] |
|
|
|
if callable(name): |
|
return name |
|
|
|
if name in _plugins: |
|
module_path, func_name = _plugins[name].rsplit(".", 1) |
|
else: |
|
module_path, func_name = name.rsplit(".", 1) |
|
|
|
module = import_module(module_path) |
|
plugin = getattr(module, func_name) |
|
_cached_modules[name] = plugin |
|
return plugin |
|
|