|
|

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