aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWaylan Limberg <waylan@gmail.com>2013-02-22 10:15:08 -0500
committerWaylan Limberg <waylan@gmail.com>2013-02-22 10:15:08 -0500
commit9aa8224faa79ac1472a70ae6fe6594022c22a2e6 (patch)
tree54168896d05a09a98b9cccc68225ff3f447b5834
parent8aa2fc7b5138fd97ded7dd1e70103532a9fd6583 (diff)
downloadmarkdown-9aa8224faa79ac1472a70ae6fe6594022c22a2e6.tar.gz
markdown-9aa8224faa79ac1472a70ae6fe6594022c22a2e6.tar.bz2
markdown-9aa8224faa79ac1472a70ae6fe6594022c22a2e6.zip
Change `set.append` -> `set.add` in `headerid.unique`
Fixes #195. This was getting missed because the HeadrerId extension's reset method was resetting the IDs to a list. However, some third party extensions may want to call the unique function and it should work as documented. Interestingly, the TOC extension was using it and passing in a list as well. All fixed now. Also added a test of the `unique` function directly so we shouldn't repeat this in the future.
-rw-r--r--markdown/extensions/headerid.py4
-rw-r--r--markdown/extensions/toc.py2
-rw-r--r--tests/test_extensions.py7
3 files changed, 10 insertions, 3 deletions
diff --git a/markdown/extensions/headerid.py b/markdown/extensions/headerid.py
index b6a12e8..cf3df17 100644
--- a/markdown/extensions/headerid.py
+++ b/markdown/extensions/headerid.py
@@ -101,7 +101,7 @@ def unique(id, ids):
id = '%s_%d'% (m.group(1), int(m.group(2))+1)
else:
id = '%s_%d'% (id, 1)
- ids.append(id)
+ ids.add(id)
return id
@@ -191,7 +191,7 @@ class HeaderIdExtension (markdown.Extension):
md.treeprocessors.add('headerid', self.processor, '>prettify')
def reset(self):
- self.processor.IDs = []
+ self.processor.IDs = set()
def makeExtension(configs=None):
diff --git a/markdown/extensions/toc.py b/markdown/extensions/toc.py
index 7edc0cc..1d6639e 100644
--- a/markdown/extensions/toc.py
+++ b/markdown/extensions/toc.py
@@ -127,7 +127,7 @@ class TocTreeprocessor(markdown.treeprocessors.Treeprocessor):
self.use_anchors = self.config["anchorlink"] in [1, '1', True, 'True', 'true']
# Get a list of id attributes
- used_ids = []
+ used_ids = set()
for c in doc.getiterator():
if "id" in c.attrib:
used_ids.append(c.attrib["id"])
diff --git a/tests/test_extensions.py b/tests/test_extensions.py
index fa9a801..d9d77b8 100644
--- a/tests/test_extensions.py
+++ b/tests/test_extensions.py
@@ -199,6 +199,13 @@ class TestHeaderId(unittest.TestCase):
self.assertEqual(self.md.convert(text),
'<h1 id="some-header">Some Header</h1>')
+ def testUniqueFunc(self):
+ """ Test 'unique' function. """
+ from markdown.extensions.headerid import unique
+ ids = set(['foo'])
+ self.assertEqual(unique('foo', ids), 'foo_1')
+ self.assertEqual(ids, set(['foo', 'foo_1']))
+
def testUniqueIds(self):
""" Test Unique IDs. """