aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--markdown/__init__.py4
-rw-r--r--markdown/extensions/extra.py22
-rw-r--r--markdown/extensions/headerid.py5
-rw-r--r--tests/extensions/extra/extra_config.html9
-rw-r--r--tests/extensions/extra/extra_config.txt5
-rw-r--r--tests/extensions/extra/test.cfg8
-rw-r--r--tests/test_apis.py4
7 files changed, 42 insertions, 15 deletions
diff --git a/markdown/__init__.py b/markdown/__init__.py
index 28f30c8..0fdcd97 100644
--- a/markdown/__init__.py
+++ b/markdown/__init__.py
@@ -218,11 +218,11 @@ class Markdown(object):
if class_name:
# Load given class name from module.
- return getattr(module, class_name)(configs.items())
+ return getattr(module, class_name)(configs=configs)
else:
# Expect makeExtension() function to return a class.
try:
- return module.makeExtension(configs.items())
+ return module.makeExtension(configs=configs)
except AttributeError as e:
message = e.args[0]
message = "Failed to initiate extension " \
diff --git a/markdown/extensions/extra.py b/markdown/extensions/extra.py
index c5526d1..4044a87 100644
--- a/markdown/extensions/extra.py
+++ b/markdown/extensions/extra.py
@@ -36,19 +36,25 @@ from ..blockprocessors import BlockProcessor
from .. import util
import re
-extensions = ['smart_strong',
- 'fenced_code',
- 'footnotes',
- 'attr_list',
- 'def_list',
- 'tables',
- 'abbr',
- ]
+extensions = [
+ 'markdown.extensions.smart_strong',
+ 'markdown.extensions.fenced_code',
+ 'markdown.extensions.footnotes',
+ 'markdown.extensions.attr_list',
+ 'markdown.extensions.def_list',
+ 'markdown.extensions.tables',
+ 'markdown.extensions.abbr'
+]
class ExtraExtension(Extension):
""" Add various extensions to Markdown class."""
+ def __init__(self, *args, **kwargs):
+ """ config is just a dumb holder which gets passed to actual ext later. """
+ self.config = kwargs.pop('configs', {})
+ self.config.update(kwargs)
+
def extendMarkdown(self, md, md_globals):
""" Register extension instances. """
md.registerExtensions(extensions, self.config)
diff --git a/markdown/extensions/headerid.py b/markdown/extensions/headerid.py
index 9af94df..f7b7805 100644
--- a/markdown/extensions/headerid.py
+++ b/markdown/extensions/headerid.py
@@ -117,7 +117,7 @@ class HeaderIdTreeprocessor(Treeprocessor):
class HeaderIdExtension(Extension):
- def __init__(self, configs):
+ def __init__(self, *args, **kwargs):
# set defaults
self.config = {
'level' : ['1', 'Base level for headers.'],
@@ -126,8 +126,7 @@ class HeaderIdExtension(Extension):
'slugify' : [slugify, 'Callable to generate anchors'],
}
- for key, value in configs:
- self.setConfig(key, value)
+ super(HeaderIdExtension, self).__init__(*args, **kwargs)
def extendMarkdown(self, md, md_globals):
md.registerExtension(self)
diff --git a/tests/extensions/extra/extra_config.html b/tests/extensions/extra/extra_config.html
new file mode 100644
index 0000000..0143145
--- /dev/null
+++ b/tests/extensions/extra/extra_config.html
@@ -0,0 +1,9 @@
+<div class="footnote">
+<hr />
+<ol>
+<li id="fn:1">
+<p>A Footnote.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
+</li>
+</ol>
+</div>
+<p>Some text with a footnote<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup>.</p> \ No newline at end of file
diff --git a/tests/extensions/extra/extra_config.txt b/tests/extensions/extra/extra_config.txt
new file mode 100644
index 0000000..2d29819
--- /dev/null
+++ b/tests/extensions/extra/extra_config.txt
@@ -0,0 +1,5 @@
+~~~placemarker~~~
+
+Some text with a footnote[^1].
+
+[^1]: A Footnote.
diff --git a/tests/extensions/extra/test.cfg b/tests/extensions/extra/test.cfg
index ed3e8df..d956e2a 100644
--- a/tests/extensions/extra/test.cfg
+++ b/tests/extensions/extra/test.cfg
@@ -26,3 +26,11 @@ tables_and_attr_list:
extensions:
- markdown.extensions.tables
- markdown.extensions.attr_list
+
+extra_config:
+ extensions:
+ - markdown.extensions.extra
+ extension_configs:
+ markdown.extensions.extra:
+ markdown.extensions.footnotes:
+ PLACE_MARKER: ~~~placemarker~~~
diff --git a/tests/test_apis.py b/tests/test_apis.py
index b8597e8..010bf70 100644
--- a/tests/test_apis.py
+++ b/tests/test_apis.py
@@ -320,11 +320,11 @@ def _create_fake_extension(name, has_factory_func=True, is_wrong_type=False, use
# mod_name must be bytes in Python 2.x
mod_name = bytes(mod_name)
ext_mod = types.ModuleType(mod_name)
- def makeExtension(configs=None):
+ def makeExtension(*args, **kwargs):
if is_wrong_type:
return object
else:
- return markdown.extensions.Extension(configs=configs)
+ return markdown.extensions.Extension(*args, **kwargs)
if has_factory_func:
ext_mod.makeExtension = makeExtension
# Warning: this brute forces the extenson module onto the system. Either