3

我尝试使用我的自定义 slugify 函数解析我的带有 python-markdown 的 headerid 扩展名的 markdown 文件:

import markdown

def my_slugify(value, sep):
    return "100"

md = markdown.Markdown(extensions=['headerid(slugify=my_slugify)'])
print md.convert("#Head 1")

但我得到了这个错误:

Traceback (most recent call last):
File "a.py", line 7, in <module>
    print md.convert("#Head 1")
File "/usr/local/lib/python2.7/dist-packages/markdown/__init__.py", line 296, in convert
    newRoot = treeprocessor.run(root)
File "/usr/local/lib/python2.7/dist-packages/markdown/extensions/headerid.py", line 139, in run
  id = slugify(''.join(itertext(elem)), sep)
TypeError: 'unicode' object is not callable

我查看了 headerid 的源代码。似乎 headerid 扩展只是使用 unicode 对象作为可调用对象:

id = slugify(''.join(itertext(elem)), sep)

所以我的问题是如何将我的自定义 slugify 函数传递给 headerid?另外,我的python版本是2.7.3,python-markdown是2.3.1。提前致谢。

4

2 回答 2

1

我安装了降价并且可以这样做:

import markdown

def my_slugify(value, sep):
    return "100"

extension_config = {'headerid':('slugify','my_slugify')}

md = markdown.Markdown(extensions=extension_config)
print md.convert("#Head 1")

哪个打印

<h1 id="head-1">Head 1</h1>

这是在官方文档中

我希望这会有所帮助

于 2013-08-27T13:37:52.610 回答
0

我在这里查看了文档并再次阅读了 headerid 代码,并找到了解决方案:

import markdown
from markdown.extensions.headerid import HeaderIdExtension

def my_slugify(value, sep):
    return "100"

md = markdown.Markdown(extensions=[HeaderIdExtension(configs=[('slugify', my_slugify)])])
print md.convert("#Head 1")

这给出了正确的输出:

<h1 id="100">Head 1</h1>
于 2013-08-27T14:38:09.257 回答