Python的实践,一方面是来熟悉python的代码方式,另一方面是练习使用python中的基本的以及非基本的语法,做到熟能生巧。
这个项目一开始比较简单,不过重构之后就有些复杂了,但是更灵活了。
按照书上所说,重构之后的程序,分为四个模块:处理程序模块,过滤器模块,规则(其实应该是处理规则),语法分析器。
先来说处理程序模块,这个模块的作用有两个,一个是提供那些固定的html标记的输出(每一个标记都有start和end),另一个是对这个标记输出的开始和结束提供了一个友好的访问接口。来看下程序handlers.py:
class Handler: ''' '' def callback(self,prefix,name,*args):method * getattr(self,prefix+name,None) if callable(method):return method(*agrs) def start(self,name):self.callback('start_',name) def end(self,name): self.callback('end_',name) def sub(self,name): def substitution(match):result=self.callback('sub_’,name,math) f result is None:match.grouo(Θ)
returnresultreturnsubstitutionclass HTMLRenderer(Handler) '''''' def start_document(self):
print '
...’ def end_document(self): print '' def start_paragraph(self): print '' def end_paragraph(self): print '
'def start_heading(self): print '
' def end_heading(self): print '
' def start_list(self): print '- '
def end_list(self): print '
' def start_listitem(self): print '' def end_listitem(self): print '' def start_title(self): print '' def end_title(self): print '
' def sub_emphasis(self,match): return' %s' & match.group(1)def sub_url(self,match): return'%s' % (match.group(1),match,group(1)) def feed(self.data):
printdata
这个程序堪称是整个“项目”的基石所在:提供了标签的输出,以及字符串的替换。理解起来也比较简单。