python的markdown扩展开发
2014-01-08 20:45
351 查看
近期使用python的markdown写了一个文档小程序,由于需要用到一些额外的功能,所以就对markdown进行了一些简单的扩展,进而记录下编写的模板。直接贴代码:
关于markdown扩展的深入内容,可以查看官方文档,不过没有例子,只是手册而已。但大体能知道有哪些内容组成,在结合上面的文件结构都是可以写出来的。下面是调用的代码:
主要扩展了2个功能:
一个是把形如:
参考文档:
http://pythonhosted.org/Markdown/extensions/index.html
#encoding=utf-8 ##预处理器 from markdown.preprocessors import Preprocessor class CodePreprocessor(Preprocessor): def run(self, lines): new_lines = [] flag_in = False block = [] for line in lines: if line[:3]=='!!!': flag_in = True block.append('<pre class="brush: %s;">' % line[3:].strip()) elif flag_in: if line.strip() and line[0]=='!': block.append(line[1:]) else: flag_in = False block.append('</pre>') block.append(line) new_lines.extend(block) block = [] else: new_lines.append(line) if not new_lines and block: new_lines = block return new_lines ##后置处理器 from markdown.postprocessors import Postprocessor class CodePostprocessor(Postprocessor): def run(self, text): t_list = [] for line in text.split('\n'): if line[:5]=='<p>!<': line = line.lstrip('<p>').replace('</p>', '')[1:] t_list.append(line) return '\n'.join(t_list) ##扩展主体类 from markdown.extensions import Extension from markdown.util import etree class CodeExtension(Extension): def __init__(self, configs={}): self.config = configs def extendMarkdown(self, md, md_globals): ##注册扩展,用于markdown.reset时扩展同时reset md.registerExtension(self) ##设置Preprocessor codepreprocessor = CodePreprocessor() #print md.preprocessors.keys() md.preprocessors.add('codepreprocessor', codepreprocessor, '<normalize_whitespace') ##设置Postprocessor codepostprocessor = CodePostprocessor() #print md.postprocessors.keys() md.postprocessors.add('codepostprocessor', codepostprocessor, '>unescape') ##print md_globals ##markdown全局变量
关于markdown扩展的深入内容,可以查看官方文档,不过没有例子,只是手册而已。但大体能知道有哪些内容组成,在结合上面的文件结构都是可以写出来的。下面是调用的代码:
#encoding=utf-8 import markdown import markdowncode text = ''' !!!python ! !def foo(): ###title ''' configs = {} myext = markdowncode.CodeExtension(configs=configs) md = markdown.markdown(text, extensions=[myext]) print md
主要扩展了2个功能:
一个是把形如:
!!!python ! !def foo(): ! return 'foo'转换成:
<pre class="brush: python;"> def foo(): return 'foo' </pre>一个是把形如:
!<div> #h1 !</div>转换成:
<div> <h1>h1</h1> </div>为什么要有第二个扩展呢?因为
参考文档:
http://pythonhosted.org/Markdown/extensions/index.html
相关文章推荐
- 使用Python来开发Markdown脚本扩展的实例分享
- 使用Python来开发Markdown脚本扩展的实例分享
- <转>Ganglia的Python扩展模块开发
- java python php 经典开发流程 开发效率 运行效率&并发&可扩展
- Python 的 C 扩展开发惯例
- Python开发基础-Day8-装饰器扩展和迭代器
- 自己动手开发更好用的markdown编辑器-07(扩展语法)
- vs2013在图像处理中的应用(7):开发Python扩展
- Python开发之扩展库的安装指南及Suds(Webservice)的使用简介
- 监控开发之用python扩展dstat插件自定义实时监控 推荐
- 在用Kivy开发Python手机游戏时通过Plyer扩展访问Android传感器
- snmp开发记录2--使用python扩展
- windows下用mingw开发python扩展
- python-netsnmp扩展(2)管理端简单功能开发
- 使用Visual Studio 2008开发Python的C++扩展之准备步骤
- Windows上配置Emacs来开发Python及用Python扩展Emacs
- burpsuite扩展开发之Python
- 高效开发Python扩展模块方法:用SWIG封装C/C++代码
- Windows上配置Emacs来开发Python及用Python扩展Emacs
- 每天进步一点点——Ganglia的Python扩展模块开发