From f039ca04cccf0645a21cb0739c17e5f6abd593fb Mon Sep 17 00:00:00 2001 From: Waylan Limberg Date: Mon, 2 Aug 2010 23:36:39 -0400 Subject: Fixed problem hidden by Ticket 68. Defining a footnote placeholder in a markdown document results in the placeholder actually being replaced. Also added a test for this. Note that if the placeholder paragraph has other text, that text is lost. Not sure if this is a bug or bad markdown syntax. --- markdown/extensions/footnotes.py | 15 +++++++-------- tests/extensions/extra/footnote_placeholder.html | 10 ++++++++++ tests/extensions/extra/footnote_placeholder.txt | 5 +++++ 3 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 tests/extensions/extra/footnote_placeholder.html create mode 100644 tests/extensions/extra/footnote_placeholder.txt diff --git a/markdown/extensions/footnotes.py b/markdown/extensions/footnotes.py index 3c9d23a..2bdabe9 100644 --- a/markdown/extensions/footnotes.py +++ b/markdown/extensions/footnotes.py @@ -84,10 +84,10 @@ class FootnoteExtension(markdown.Extension): for child in element: if child.text: if child.text.find(self.getConfig("PLACE_MARKER")) > -1: - return child, True + return child, element, True if child.tail: if child.tail.find(self.getConfig("PLACE_MARKER")) > -1: - return (child, element), False + return child, element, False finder(child) return None @@ -282,14 +282,13 @@ class FootnoteTreeprocessor(markdown.treeprocessors.Treeprocessor): if footnotesDiv: result = self.footnotes.findFootnotesPlaceholder(root) if result: - node, isText = result + child, parent, isText = result + ind = parent.getchildren().index(child) if isText: - node.text = None - node.getchildren().insert(0, footnotesDiv) + parent.remove(child) + parent.insert(ind, footnotesDiv) else: - child, element = node - ind = element.getchildren().find(child) - element.getchildren().insert(ind + 1, footnotesDiv) + parent.insert(ind + 1, footnotesDiv) child.tail = None else: root.append(footnotesDiv) diff --git a/tests/extensions/extra/footnote_placeholder.html b/tests/extensions/extra/footnote_placeholder.html new file mode 100644 index 0000000..7aaf4b2 --- /dev/null +++ b/tests/extensions/extra/footnote_placeholder.html @@ -0,0 +1,10 @@ +
+
+
    +
  1. +

    A Footnote. + 

    +
  2. +
+
+

Some text with a footnote1.

\ No newline at end of file diff --git a/tests/extensions/extra/footnote_placeholder.txt b/tests/extensions/extra/footnote_placeholder.txt new file mode 100644 index 0000000..0b0af42 --- /dev/null +++ b/tests/extensions/extra/footnote_placeholder.txt @@ -0,0 +1,5 @@ +///Footnotes Go Here/// + +Some text with a footnote[^1]. + +[^1]: A Footnote. -- cgit v1.2.3