aboutsummaryrefslogtreecommitdiffstats
path: root/markdown/__init__.py
diff options
context:
space:
mode:
authorWaylan Limberg <waylan@gmail.com>2011-06-23 11:36:00 -0400
committerWaylan Limberg <waylan@gmail.com>2011-06-23 12:16:37 -0400
commit41194b5f020aef6aa3d980e415162ab2ad541299 (patch)
tree5acea6c0f15e4b4647cc71d496976e40249550f4 /markdown/__init__.py
parent8525f57ba7fc10b89c1a679aea1400d258fd0a02 (diff)
downloadmarkdown-41194b5f020aef6aa3d980e415162ab2ad541299.tar.gz
markdown-41194b5f020aef6aa3d980e415162ab2ad541299.tar.bz2
markdown-41194b5f020aef6aa3d980e415162ab2ad541299.zip
Cleaned up backward compatability of old positional arguments. Some people may be using them, so we should continue to support them. Also adjusted docs to encourage using keyword args only. However, if existing code was using positional args in previous versions, it should still work.
Diffstat (limited to 'markdown/__init__.py')
-rw-r--r--markdown/__init__.py56
1 files changed, 44 insertions, 12 deletions
diff --git a/markdown/__init__.py b/markdown/__init__.py
index 5c6fe08..89b7f9a 100644
--- a/markdown/__init__.py
+++ b/markdown/__init__.py
@@ -70,7 +70,7 @@ class Markdown:
'xhtml1': to_xhtml_string,
}
- def __init__(self, extensions=[], **kwargs):
+ def __init__(self, *args, **kwargs):
"""
Creates a new Markdown instance.
@@ -93,11 +93,23 @@ class Markdown:
* html_replacement_text: Text used when safe_mode is set to "replace".
* tab_length: Length of tabs in the source. Default: 4
* enable_attributes: Enable the conversion of attributes. Default: True
- * smart_emphsasis: Treat `_connected_words_` intelegently Default: True
+ * smart_emphasis: Treat `_connected_words_` intelegently Default: True
* lazy_ol: Ignore number of first item of ordered lists. Default: True
"""
+ # For backward compatability, loop through old positional args
+ pos = ['extensions', 'extension_configs', 'safe_mode', 'output_format']
+ c = 0
+ for arg in args:
+ if not kwargs.has_key(pos[c]):
+ kwargs[pos[c]] = arg
+ c += 1
+ if c == len(pos):
+ # ignore any additional args
+ break
+
+ # Loop throu kwargs and assign defaults
for option, default in self.option_defaults.items():
setattr(self, option, kwargs.get(option, default))
@@ -110,8 +122,8 @@ class Markdown:
self.references = {}
self.htmlStash = util.HtmlStash()
- self.registerExtensions(extensions = extensions,
- configs = kwargs.get('extension_configs', {}))
+ self.registerExtensions(extensions=kwargs.get('extensions', []),
+ configs=kwargs.get('extension_configs', {}))
self.set_output_format(kwargs.get('output_format', 'xhtml1'))
self.reset()
@@ -361,14 +373,34 @@ def markdown(text, *args, **kwargs):
return md.convert(text)
-def markdownFromFile(input = None,
- output = None,
- extensions = [],
- encoding = None,
- *args, **kwargs):
- """Read markdown code from a file and write it to a file or a stream."""
- md = Markdown(extensions=extensions, *args, **kwargs)
- md.convertFile(input, output, encoding)
+def markdownFromFile(*args, **kwargs):
+ """Read markdown code from a file and write it to a file or a stream.
+
+ This is a shortcut function which initializes an instance of Markdown,
+ cand calls the convertFile method rather than convert.
+
+ Keyword arguments:
+
+ * input: a file name or readable object.
+ * output: a file name or writable object.
+ * encoding: Encoding of input and output.
+ * Any arguments accepted by the Markdown class.
+
+ """
+ # For backward compatability loop through positional args
+ pos = ['input', 'output', 'extensions', 'encoding']
+ c = 0
+ for arg in args:
+ if not kwargs.has_key(pos[c]):
+ kwargs[pos[c]] = arg
+ c += 1
+ if c == len(pos):
+ break
+
+ md = Markdown(**kwargs)
+ md.convertFile(kwargs.get('input', None),
+ kwargs.get('output', None),
+ kwargs.get('encoding', None))