summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaylan Limberg <waylan.limberg@icloud.com>2014-08-29 14:11:57 -0400
committerWaylan Limberg <waylan.limberg@icloud.com>2014-08-29 14:11:57 -0400
commit9d388a8ee26934c7b4685374ed7afbf5219d1995 (patch)
tree0868a64d464fdb16d708fe862c0608ad8e946200
parentc27cbd154050c1181eac195a4b0bb19a6bbaf048 (diff)
downloadpython-markdown-9d388a8ee26934c7b4685374ed7afbf5219d1995.tar.gz
More updates to test configs.
The last few extensions were updated to accept dicts/**kwargs as configs and more tests were updated. Also updated extra to actually accept configs. Note that extra requires an extra level of dicts. First you need to indicate tha the settings are for extra, then, which extension extra wraps. I'm not crazy abount this, bit not sur ehow else to do it without making all the configs a global attribute on the Markdown class to that any extention can access any other extensions config settings. I don't think we wnat to do that. Also updated extra to use dot notation for the sub-extensions.
-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