⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listing20-6.py

📁 《Beginning Python--From Novice to Professional》 的源码
💻 PY
字号:
import sys, refrom handlers import *from util import *from rules import *class Parser:    """    A Parser reads a text file, applying rules and controlling a    handler.    """    def __init__(self, handler):        self.handler = handler        self.rules = []        self.filters = []    def addRule(self, rule):        self.rules.append(rule)    def addFilter(self, pattern, name):        def filter(block, handler):            return re.sub(pattern, handler.sub(name), block)        self.filters.append(filter)    def parse(self, file):        self.handler.start('document')        for block in blocks(file):            for filter in self.filters:                block = filter(block, self.handler)            for rule in self.rules:                if rule.condition(block):                    last = rule.action(block, self.handler)                    if last: break        self.handler.end('document')class BasicTextParser(Parser):    """    A specific Parser that adds rules and filters in its    constructor.    """    def __init__(self, handler):        Parser.__init__(self, handler)        self.addRule(ListRule())        self.addRule(ListItemRule())        self.addRule(TitleRule())        self.addRule(HeadingRule())        self.addRule(ParagraphRule())        self.addFilter(r'\*(.+?)\*', 'emphasis')        self.addFilter(r'(http://[\.a-zA-Z/]+)', 'url')        self.addFilter(r'([\.a-zA-Z]+@[\.a-zA-Z]+[a-zA-Z]+)', 'mail')handler = HTMLRenderer()parser = BasicTextParser(handler)parser.parse(sys.stdin)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -