V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
akfish
V2EX  ›  程序员

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

  •  
  •   akfish ·
    akfish · 2014-05-05 19:56:53 +08:00 · 7773 次点击
    这是一个创建于 3873 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如大家用各种双栏预览式的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)。
    7 条回复    2014-05-06 11:14:47 +08:00
    zzNucker
        1
    zzNucker  
       2014-05-05 20:13:17 +08:00
    额其实也没啥好吐槽的啦别人没想到这个功能可能就没顺手加上去。。。。 虽然对后面的人来说可能就很烦 - -
    akfish
        2
    akfish  
    OP
       2014-05-05 20:23:44 +08:00
    @zzNucker 其实吐槽的目的还是其次,开源库拿来经常都不够用要自己加功能。
    主要是觉得这现象有点过于普遍了而已,js实现的parser库好多都这样。
    zzNucker
        3
    zzNucker  
       2014-05-05 20:36:21 +08:00
    @akfish 大概都比较随便吧。。。
    amio
        4
    amio  
       2014-05-06 09:20:06 +08:00
    大赞,求Github地址
    sxd
        5
    sxd  
       2014-05-06 09:26:55 +08:00
    我觉得你发的帖子很ok,吐槽的也非常right.
    akfish
        6
    akfish  
    OP
       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
        7
    SoloCompany  
       2014-05-06 11:14:47 +08:00
    good job!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3116 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:51 · PVG 12:51 · LAX 20:51 · JFK 23:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.