带有扩展和呈现器的github cmark的python绑定

pedantmark的Python项目详细描述


Only two maybes I’ve thought of: Strict Markdown or Pedantic Markdown. “Strict” still doesn’t seem right.

John Gruber

好吧,我们称之为pedantmark

pedantmark不仅是github的commonmark分支(cmark)的python绑定。 它已经被我(杨晓明)增强,以支持自定义渲染器。

注意

如果你是一个C专业人士,请帮助我改进本回购协议中的C代码。

安装

pedantmark在python 2.7和3.5+中提供,用于linux和mac, 用于Windows的Python3.5+。轮子是由multibuild制造的。

通过PIP安装车轮:

$ pip install pedantmark

标准用法

C源代码有很多内置的呈现器。最简单的接口是 pedantmark.html(text, options),它将把文本呈现为html。

importpedantmarktext='...'html=pedantmark.html(text,options=[pedantmark.OPT_VALIDATE_UTF8])

函数pedantmark.html()不接受扩展,但可以添加 通过pedantmark.markdown()

扩展
importpedantmarktext='...'html=pedantmark.markdown(text,options=[pedantmark.OPT_VALIDATE_UTF8],extensions=['strikethrough','autolink','table'],renderer='html',)

可用扩展名:tableautolinktagfilterstrikethrough。 您可以使用快捷方式启用它们:

pedantmark.markdown(..., extensions=pedantmark.EXTENSIONS)

可用的呈现程序:htmlxmlmancommonmarkplaintext, 以及latex

自定义渲染器

除了本地渲染器,pedantmark还为您提供了自定义渲染器, 你可以自己定制输出。下面是pygments代码的一个示例 突出显示集成:

frompedantmarkimportHTMLRenderer,markdownfrompygmentsimporthighlightfrompygments.lexersimportget_lexer_by_namefrompygments.formattersimporthtmlclassMyRenderer(HTMLRenderer):defcode_block(self,code,lang):iflang:# everything is in byteslang=lang.decode('utf-8')code=code.decode('utf-8')lexer=get_lexer_by_name(lang,stripall=True)formatter=html.HtmlFormatter()output=highlight(code,lexer,formatter)# return bytesreturnoutput.encode('utf-8')returnsuper(MyRenderer,self).code_block(code,lang)text='...'markdown(text,renderer=MyRenderer())

默认的HTMLRenderer有一个内置的代码突出显示挂钩,您不需要 完全子类化:

defadd_code_highlight(code,lang):lang=lang.decode('utf-8')code=code.decode('utf-8')lexer=get_lexer_by_name(lang,stripall=True)formatter=html.HtmlFormatter()output=highlight(code,lexer,formatter)returnoutput.encode('utf-8')text='...'markdown(text,renderer=HTMLRenderer(highlight=add_code_highlight))

作者和许可证

此库由杨希明创建,根据BSD授权。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java网络视图。loadData不适用于Android 9.0(API29)   安卓“ArrayAdapter要求资源ID为TextView”XML问题   Java压缩文件:有限制吗?   java如何在recyclerview中单击项时显示对话框   TextField中的if语句值抛出java。lang.NumberFormatException错误   java文件通过服务器ip上传,但不从域名上传   java HttpRequestBase如何打印请求及其所有数据   java如何实现JPanel的等宽等高   java为Struts 2动态填充jqGrid select   用于替换xml字符串中的字符串的正则表达式   如何防止Java代码中的整数溢出?   java如何在SpringBoot 2中禁用安全性?   java出现读入文件问题,并将其设置为变量