python的markdown扩展开发

近期使用python的markdown写了一个文档小程序,由于需要用到一些额外的功能,所以就对markdown进行了一些简单的扩展,进而记录下编写的模板。直接贴代码:

#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('
' % line[3:].strip())
            elif flag_in:
                if line.strip() and line[0]=='!':
                    block.append(line[1:])
                else:
                    flag_in = False
                    block.append('
') 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]=='

!<': line = line.lstrip('

').replace('

', '')[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, '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'
转换成:


def foo():
  return 'foo'
一个是把形如:

!
#h1 !
转换成:

h1

为什么要有第二个扩展呢?因为

python的markdown扩展开发_第1张图片

参考文档:

http://pythonhosted.org/Markdown/extensions/index.html

你可能感兴趣的:(python)