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