马黑黑 发表于 2022-3-26 19:20

Emeditor JS代码着色初稿

本帖最后由 马黑黑 于 2022-3-26 19:22 编辑

Emeditor宏代码(其实是非常接近JavaScript代码):
document.selection.SelectAll();
var str = document.selection.Text;
var regBlue = /(\bvar|let|const|function|if|else|while|in|case|switch|this\b)/gm;
var regRed = /(\bArray|Date|document|window\b)/gm;

var regAr = [
        [/(["'])((?:\\\1|(?:(?!\1)).)*)(\1)/gm, "LxLspan style='color: magenta;'GxG$1$2$3LxL/spanGxG"], //引号
        [/(\/\*)(.*)(\*\/)/gm, "LxLspan style='color: green;'GxG$1$2$3LxL/spanGxG"], //注释1
        [/(\/\/*$)/gm,"LxLspan style='color: green'GxG$1LxL/spanGxG"], //注释2
        [/\t/gm, "    "], //制表符
        , //蓝色关键词
        , //红色关键词
        , //<号换回来
        , //>号换回来
        [/<([/]{0,1}script.*)>/gm, "<$1>"] //转义
];

for(i=0; i<regAr.length; i++) {
        str = str.replace(regAr, regAr);
}

str = "<pre style='margin: auto; padding: 10px; width: 98%; background: #f5f5f5; box-shadow: 2px 2px 2px #ccc; border-radius: 6px;'>\r\n" + str +"\r\n</pre>";
document.selection.Text = str;

红、蓝关键词随意选了几个,还有很多的,后续可以陆续添加。


(鼓捣这个dz code模块有些力不从心,代码老发不全。现在应该好了吧?)

马黑黑 发表于 2022-3-26 19:28

<p>测试发现还是有些问题,需要修改:<br><br></p>
<pre style="margin: auto; padding: 10px; width: 98%; background: #f5f5f5; box-shadow: 2px 2px 2px #ccc; border-radius: 6px;">&lt;script&gt;
<span style="color: blue">function</span> fly(id) {
/* 动态创建文本走马灯:自右向左
    id参数:元素的 id 名称
*<span style="color: green">/</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">var</span> ziFly = <span style="color: red">document</span>.getElementById(id, far); //元素操作权柄
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">var</span> width = ziFly.clientWidth; //获得元素宽度
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">var</span> style = <span style="color: red">document</span>.createElement(<span style="color: magenta;">'style'</span>); //创建 style 元素
&nbsp;&nbsp;&nbsp;&nbsp;style.type = <span style="color: magenta;">'text/css'</span>; //元素类型
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue">var</span> flyStr = <span style="color: magenta;">'@keyframes fly { from {}to { left: -'</span> + width + <span style="color: magenta;">'px; } }'</span>;
&nbsp;&nbsp;&nbsp;&nbsp;style.<span style="color: blue">in</span>nerHTML = flyStr;
&nbsp;&nbsp;&nbsp;&nbsp;ziFly.appendChild(style);
&nbsp;&nbsp;&nbsp;&nbsp;ziFly.style.animation = <span style="color: magenta;">'fly 40s l<span style="color: blue">in</span>ear <span style="color: blue">in</span>f<span style="color: blue">in</span>ite'</span>;
}

&lt;/script&gt;
</pre>

马黑黑 发表于 2022-3-26 19:31

二楼测试目前发现两个问题:

① 注释没能上色;
② 蓝色关键字出现在了包含有它的其他单词里面

马黑黑 发表于 2022-3-26 20:25

问题 ② 解决方案:单词边界 \b ... \b 必须渗透到正则规则中的每一个关键词。原来的语句:

var regRed = /(\bArray|Date|document|window\b)/gm;

得改为:

var regRed = /(\bArray\b|\bDate\b|\bdocument\b|\bwindow\b)/gm;

马黑黑 发表于 2022-3-26 20:26

问题 ① 单行注释已弄好,多行适配老出错

马黑黑 发表于 2022-3-26 22:09

<p>再看:<br><br></p>
<pre style='margin: auto; padding: 10px; width: 98%; background: #f5f5f5; box-shadow: 2px 2px 2px #ccc; border-radius: 6px;'>
&lt;script language=<span style='color: magenta'>"javascript"</span>&gt;
<span style='color: blue'>function</span> myFunction(){ <span style='color: green'>//单行注释测试
</span><span style='color: green'>
/* 多行注释测试
   getUTCFullyear()
   Does <span style='color: blue'>this</span> work?
*/
</span>&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: blue'>var</span> d = new <span style='color: red'>Date</span>(<span style='color: magenta'>"July 21, 1983 01:15:00"</span>); <span style='color: green'>/* 单行注释测试 */</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: blue'>var</span> x = <span style='color: red'>document</span>.getElementById(<span style='color: magenta'>"demo"</span>);
&nbsp;&nbsp;&nbsp;&nbsp;x.innerHTML=d.getUTCFullYear(); <span style='color: green'>// 单行注释
</span>
}
&lt;/script&gt;
</pre>

红影 发表于 2022-3-27 10:52

这个帖子竟然看漏了。嗯嗯,有这个着色功能,可以让想找的自动亮起来了{:4_187:}

马黑黑 发表于 2022-3-27 11:00

红影 发表于 2022-3-27 10:52
这个帖子竟然看漏了。嗯嗯,有这个着色功能,可以让想找的自动亮起来了
这个类似于笔记,记录一下处理和解决问题的原始代码。昨天的问题全解决了,多行注释的匹配试出来了

红影 发表于 2022-3-27 20:37

马黑黑 发表于 2022-3-27 11:00
这个类似于笔记,记录一下处理和解决问题的原始代码。昨天的问题全解决了,多行注释的匹配试出来了

黑黑喜欢琢磨,这点很棒,没什么能难得住你{:4_187:}

马黑黑 发表于 2022-4-2 18:35

红影 发表于 2022-3-27 20:37
黑黑喜欢琢磨,这点很棒,没什么能难得住你

过奖了。过去使用的站点可以给代码着色,我一直用呢,没想到一切都在改变,只好自己动手吧,靠谱一点,用的过程慢慢完善。

红影 发表于 2022-4-2 21:04

马黑黑 发表于 2022-4-2 18:35
过奖了。过去使用的站点可以给代码着色,我一直用呢,没想到一切都在改变,只好自己动手吧,靠谱一点,用 ...

琢磨这个也挺不容易的{:4_187:}

马黑黑 发表于 2022-4-2 21:22

红影 发表于 2022-4-2 21:04
琢磨这个也挺不容易的

有基础就不会太难

加林森 发表于 2022-4-2 21:28

来学习

红影 发表于 2022-4-3 09:50

马黑黑 发表于 2022-4-2 21:22
有基础就不会太难

那是对你来说的,对一般人来说还是难呢。

马黑黑 发表于 2022-4-3 10:10

红影 发表于 2022-4-3 09:50
那是对你来说的,对一般人来说还是难呢。

谁有了基础都可以做的

红影 发表于 2022-4-3 19:33

马黑黑 发表于 2022-4-3 10:10
谁有了基础都可以做的

问题是有基础的人不多啊。{:4_173:}

马黑黑 发表于 2022-4-3 20:09

红影 发表于 2022-4-3 19:33
问题是有基础的人不多啊。

所以要努力呀
页: [1]
查看完整版本: Emeditor JS代码着色初稿