这两天在改 marked.js,吐槽一下各种用 js 写的 parser 都不爱在 token 里带 location data

2014-05-05 19:56:53 +08:00
 akfish
比如大家用各种双栏预览式的markdown editor都会注意到,markdown源码和生成的预览页面往往不等长。

于是很难真正的side-by-side的预览,epiceditor根本就懒得尝试做同步滚动,马克飞象好些略有同步滚(好吧,我只用过这两种)。

看了下marked.js的源码才知道,原来parse出来的token里直接把这个token在源代码里的位置信息给无视了,使得从生成的内容追述到源代码几乎不可能。

正经写过compiler的人都知道,在开发时加上这种基本信息就是举手之劳,事后改就等着蛋碎一地吧,而开发各种编辑工具都需要依赖这样的信息。

也许这就是到现在markdown的editor功能依然很有限的原因,当然另一种解释是geek情怀不屑于用editor。

还好markdown的语法不是很复杂,marked.js的源代码还算清晰没有什么nasty hack,所以还是可以做到的。之前尝试对MathJax做类似的修改,一个月后放弃了。

目前还没完全改好,略buggy,过几天就能发pull request了,撸了个visualizer试了下效果先:



想象下完事后,左边光标所在的token会和右边对应生成的element完全对其同步滚动是多么爽的感受。然后也许终于可以撸一个一直希望能有的markdown in-place preview editor出来(http://www.v2ex.com/t/110988)。
7754 次点击
所在节点    程序员
7 条回复
zzNucker
2014-05-05 20:13:17 +08:00
额其实也没啥好吐槽的啦别人没想到这个功能可能就没顺手加上去。。。。 虽然对后面的人来说可能就很烦 - -
akfish
2014-05-05 20:23:44 +08:00
@zzNucker 其实吐槽的目的还是其次,开源库拿来经常都不够用要自己加功能。
主要是觉得这现象有点过于普遍了而已,js实现的parser库好多都这样。
zzNucker
2014-05-05 20:36:21 +08:00
@akfish 大概都比较随便吧。。。
amio
2014-05-06 09:20:06 +08:00
大赞,求Github地址
sxd
2014-05-06 09:26:55 +08:00
我觉得你发的帖子很ok,吐槽的也非常right.
akfish
2014-05-06 11:14:32 +08:00
@amio Bug没修完还没push。
目前还只是在改parser,改完发PR被merge了就没自己的地址了。
Editor还得另做,Visualizer那个也就为了调试用用,不会发布。

进度可以看这个issue:
https://github.com/chjj/marked/issues/338
SoloCompany
2014-05-06 11:14:47 +08:00
good job!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/111249

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX