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