V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
q84629462
V2EX  ›  程序员

[CodeMirror] 原始文本数据中有占位符(例如:{1}),想在 CodeMirror 显示代码的时候对占位符进行映射,显示为别的字符串(例如:$globalVariable1),基于不替换文本的条件下该如何实现?

  •  
  •   q84629462 · 2015-04-25 00:58:03 +08:00 · 3035 次点击
    这是一个创建于 3501 天前的主题,其中的信息可能已经有所发展或是发生改变。

    声明:
    占位符:假设为{1},{2},{3}这种格式,当然也可以为{a},{b},{c},{d};
    CodeMirror:网页富文本编辑器,http://codemirror.org;
    CM:CodeMirror的缩写;

    特别声明:包含占位符的代码文件并非作为代码运行的用途。

    要求:
    1、多个代码文本中共用一些全局变量名,在某个全局变量名的名字改变后,其它代码文本在CM中打开后优雅地更新为新的全局变量名;
    2、全局变量名要高亮;
    附加要求:
    1、在CM中,可以按一次退格键或del键删除整个全局变量名;
    2、在CM中,不能更改全局变量名,即在CM中全局变量名不接受焦点;

    附加要求结合起来通俗的去理解呢,就是把全局变量名理解为编辑器中的一幅图片对象,无法在编辑器中修改,按一次退格键或del键就把一幅图片删除了。

    所以我想到了本文题目中的方法,就是用占位符代替全局变量名存放在文件中。
    也就是说全局变量名在真实的文件数据中就是占位符,当用CodeMirror编辑器打开这个文本时,最终在CodeMirror中看到的是占位符变为一个个全局变量名。

    最后来了:CM中怎么把占位符映射为全局变量名?附加要求怎么去实现?

    如果没有答案的话,只能使用双替换大法了:读取文本后把占位符替换为对应的全局变量名再显示在CM中,保存前把全局变量名替换为占位符再保存。
    但替换大法会有误伤,例如再PHP中,单引号'$a'和双引号"$a"中的$a就有不同的意义,这个误伤也不太容易解决。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2646 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:32 · PVG 12:32 · LAX 20:32 · JFK 23:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.