含有章节索引的中文 文章模板
-- 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")