|
楼主 |
发表于 2012-10-15 16:51:26
|
显示全部楼层
本帖最后由 i-wiki 于 2012-10-15 17:06 编辑 7 Q6 `4 y4 `8 M! `! I
5 h% Z& @4 o, n效果接近于原网页,说明“新引擎”基本成形了。( \% u, @/ s W. k' u" M" a
最初设计程序时,是因为对维基百科的喜欢,还有就是对维基条目编辑的不熟悉(现在也不熟,之前从未有过维基作者的经验),如果知道维基构成元素这么复杂,也许当初就不会搞了。* p# f2 a8 {7 ^4 R
所以最初实现的是“=”、“*”、“#”、“·”,然后是表格“{|”、“|-”、“|”、“|}”...,到了"{{...}}",我还是一个一个地去编程实现。
& a) [' |" a; q* ^8 v7 r9 M, A后来发现不对了,因为"{{...}}"构成的模板是可能性是无穷的。只有能够对维基模板进行解析,才能算是真正的引擎。(wiki2touch也没有做解析)
7 R' \" s" r% T% ]4 X" v所以我0.7.6版的程序,还只能说是不完整的实现。, Z! K# c. U# S3 V2 l1 y
而模板解析的编程非常痛苦,因为要实现模板函数和元维基,就类似于实现一个计算机语言的解释程序。再则维基作者们编写的模板中可能存在着错误,维基网站能够容错的,而使用其他引擎可能就出错了。实现和除错需要一步一步地跟踪,以找到错误发生的原因;另外就是要对大量的样本条目进行测试。很多次我都想要放弃,有时我想,90%的时间花在10%的阅读体验上究竟是否值得。. k/ j* W& }( k7 N: d' C$ }0 \! w
所幸自己坚持了下来,于是就有了现在的结果。8 E2 w: d$ q0 o) n
不过,错误肯定会有!就算wikitaxi也有渲染崩溃的时候。1 s9 W f# b! k, J; t$ ^, ~
另外,效率是大问题!有些复杂而精密的模板要耗费大量的时间,现在的引擎与原来相比,如使用模板(全)方式,速度是原来的1/n。这与模板解析实现的算法有关,而我能做到的只能如此。 |
|