aboutsummaryrefslogtreecommitdiffstats
path: root/markdown_extensions
diff options
context:
space:
mode:
authorWaylan Limberg <waylan@gmail.com>2008-10-29 22:03:03 -0400
committerWaylan Limberg <waylan@gmail.com>2008-10-29 22:03:03 -0400
commita5917de7e6dd1b4c063bf328c3a2f2f689df687d (patch)
tree6e2ed12b5972182b7d30b476ab394da04458c820 /markdown_extensions
parent72bcb21a5cfd50cc21b3e569ca4ca0c74970c17d (diff)
downloadmarkdown-a5917de7e6dd1b4c063bf328c3a2f2f689df687d.tar.gz
markdown-a5917de7e6dd1b4c063bf328c3a2f2f689df687d.tar.bz2
markdown-a5917de7e6dd1b4c063bf328c3a2f2f689df687d.zip
Set footnote extension's parser to Markdown's instance of the parser rather than giving it its own. Now footnote defs will parse the same (if another extension modifies the parser). Also updated and added doc strings.
Diffstat (limited to 'markdown_extensions')
-rw-r--r--markdown_extensions/footnotes.py42
1 files changed, 26 insertions, 16 deletions
diff --git a/markdown_extensions/footnotes.py b/markdown_extensions/footnotes.py
index 95bd32c..d653c6e 100644
--- a/markdown_extensions/footnotes.py
+++ b/markdown_extensions/footnotes.py
@@ -35,13 +35,11 @@ class FootnoteExtension(markdown.Extension):
""" Footnote Extension. """
def __init__ (self, configs):
-
+ """ Setup configs. """
self.config = {'PLACE_MARKER':
["///Footnotes Go Here///",
"The text string that marks where the footnotes go"]}
- self.parser = markdown.MarkdownParser()
-
for key, value in configs:
self.config[key][0] = value
@@ -50,6 +48,7 @@ class FootnoteExtension(markdown.Extension):
def extendMarkdown(self, md, md_globals):
""" Add pieces to Markdown. """
md.registerExtension(self)
+ self.parser = md.parser
# Insert a preprocessor before ReferencePreprocessor
md.preprocessors.add("footnote", FootnotePreprocessor(self),
"<reference")
@@ -71,7 +70,7 @@ class FootnoteExtension(markdown.Extension):
self.footnotes = markdown.OrderedDict()
def findFootnotesPlaceholder(self, root):
-
+ """ Return ElementTree Element that contains Footnote placeholder. """
def finder(element):
for child in element:
if child.text:
@@ -87,19 +86,19 @@ class FootnoteExtension(markdown.Extension):
return res
def setFootnote(self, id, text):
+ """ Store a footnote for later retrieval. """
self.footnotes[id] = text
def makeFootnoteId(self, id):
+ """ Return footnote link id. """
return 'fn:%s' % id
def makeFootnoteRefId(self, id):
+ """ Return footnote back-link id. """
return 'fnref:%s' % id
def makeFootnotesDiv(self, root):
- """Creates the div with class='footnote' and populates it with
- the text of the footnotes.
-
- @returns: the footnote div as a dom element """
+ """ Return div of footnotes as et Element. """
if not self.footnotes.keys():
return None
@@ -145,12 +144,16 @@ class FootnotePreprocessor(markdown.Preprocessor):
return text.split("\n")
def _handleFootnoteDefinitions(self, lines):
- """Recursively finds all footnote definitions in the lines.
+ """
+ Recursively find all footnote definitions in lines.
- @param lines: a list of lines of text
- @returns: a string representing the text with footnote
- definitions removed """
+ Keywords:
+ * lines: A list of lines of text
+
+ Return: A list of lines with footnote definitions removed.
+
+ """
i, id, footnote = self._findFootnoteDefinition(lines)
if id :
@@ -165,11 +168,18 @@ class FootnotePreprocessor(markdown.Preprocessor):
return lines
def _findFootnoteDefinition(self, lines):
- """Finds the first line of a footnote definition.
+ """
+ Find the parts of a footnote definition.
- @param lines: a list of lines of text
- @returns: the index of the line containing a footnote definition """
+ Keywords:
+ * lines: A list of lines of text.
+
+ Return: A three item tuple containing the index of the first line of a
+ footnote definition, the id of the definition and the body of the
+ definition.
+
+ """
counter = 0
for line in lines:
m = DEF_RE.match(line)
@@ -222,7 +232,7 @@ class FootnoteTreeprocessor(markdown.Treeprocessor):
root.append(footnotesDiv)
class FootnotePostprocessor(markdown.Postprocessor):
- """ Replace FN_BACKLINK_TEXT with html entity ``&#8617;``. """
+ """ Replace placeholders with html entities. """
def run(self, text):
text = text.replace(FN_BACKLINK_TEXT, "&#8617;")