aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/using_as_module.txt17
-rw-r--r--markdown/__init__.py56
2 files changed, 53 insertions, 20 deletions
diff --git a/docs/using_as_module.txt b/docs/using_as_module.txt
index c7c6da2..6ac82d8 100644
--- a/docs/using_as_module.txt
+++ b/docs/using_as_module.txt
@@ -22,7 +22,7 @@ functions will serve your needs. However, if you need to process
multiple documents, it may be advantageous to create a single instance
of the `markdown.Markdown` class and pass multiple documents through it.
-### `markdown.markdown(text [, extensions][, **kwargs])`
+### `markdown.markdown(text [, **kwargs])`
The following options are available on the `markdown.markdown` function:
@@ -154,7 +154,7 @@ The following options are available on the `markdown.markdown` function:
</ol>
-### `markdown.markdownFromFile(input [, output] [, extensions] [, encoding] [, **kwargs])`
+### `markdown.markdownFromFile(**kwargs)`
With a few exceptions, `markdown.markdownFromFile` accepts the same options as
`markdown.markdown`. It does **not** accept a `text` string. Instead, it accepts
@@ -183,7 +183,7 @@ the following required options:
meet your special needs, it is suggested that you write your own code
to handle your specific encoding/decoding needs.
-### `markdown.Markdown([extensions][, **kwargs])`
+### `markdown.Markdown([**kwargs])`
The same options are available when initializing the `markdown.Markdown` class
as on the `markdown.markdown` function, except that the class does **not**
@@ -209,10 +209,11 @@ must be passed to one of two instance methods:
md.reset()
html2 = md.convert(text2)
-* `Markdown.convertFile(input, output, encoding)`
+* `Markdown.convertFile(**kwargs)`
The arguments of this method are identical to the arguments of the same
- name on the `markdown.markdownFromFile` function. As with the `convert`
- method, this method should be used to process multiple files without
- creating a new instance of the class for each document. State may need to
- be `reset` between each call to `convertFile` as with `convert`.
+ name on the `markdown.markdownFromFile` function (`input`, `output`, and
+ `encoding`). As with the `convert` method, this method should be used to
+ process multiple files without creating a new instance of the class for
+ each document. State may need to be `reset` between each call to
+ `convertFile` as with `convert`.
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))