含有章节索引的中文 文章模板
-- limodou [DateTime(2004-08-27T01:30:31Z)] TableOfContents
Otter模板测试记录
这是我记录使用meteor生成Otter模板的记录
测试准备
- 分析Otter模板的整体框架
- 分析结果如下:
- 整个模板数据只有一个,而meteor对于每一个模板均需要一个数据字典。当然是可以考虑共用一个。
- OtTDict.py 确如Zoom.quiet所讲是一个体力活,它完成XML数据字典转换为模板变量值的过程,替换过程是一个通用的方法。不过一些模板的循环处理都是要通过程序才可以实现。编程量相对大。
- 测试准备:
- 只对pcon-pmsg.py进行测试,因此先要将其改成meteor要求的格式。因为在原模板中不能定义子模板,因此还要分离相应的子模板。文件查看:attachment:pcon-pmsg_tmpl.py
- 下面只显示主要部分,注释什么地去掉了。同时模板变量的定义保持原样。
- 只对pcon-pmsg.py进行测试,因此先要将其改成meteor要求的格式。因为在原模板中不能定义子模板,因此还要分离相应的子模板。文件查看:attachment:pcon-pmsg_tmpl.py
from ###Lprotoname###.message import ###MsgBase### import struct class ###Uprotoname###PMessage(###MsgBase###.ByteMessage): \"\"\"二进制流连接消息基类\"\"\" def __init__(self): # 消息头 self.head = ###MsgBase###.ByteMessageHead(self) # 消息体 self.body = ###MsgBase###.ByteMessageBody(self) # 消息工具 self.msgutilcls = ###Uprotoname###PMessageUtil # 协议名称 self.protocolname = '###Lprotoname###p' # 当前的消息名称 self.msgname = '' ###Commands### class ###Uprotoname###PMessageUtil(###MsgBase###.ByteMessageUtil): \"\"\"二进制长连接消息处理工具类\"\"\" def __init__(self): pass # 消息定义 ###Uprotoname###PMessageUtil.commandinfo = { ###Commandsinfo### } # 通过名称查出消息ID的结构定义 ###Uprotoname###PMessageUtil.nametoid = {} for k in ###Uprotoname###PMessageUtil.commandinfo.keys(): ###Uprotoname###PMessageUtil.nametoid[###Uprotoname###PMessageUtil.commandinfo[k]] = k """) Commands = T(""" def pack_###Lprotoname###p_###commandname###(self, fields): ###packcontent### def unpack_###Lprotoname###p_###commandname###(self, fields): ###unpackcontent### """) Lprotoname = T("###lpname###") Uprotoname = T("###upname###") packcontent = T('') unpackcontent = T('') Commandsinfo=T(" ###flag### : '###name###',\n")