论坛首页 Web前端技术论坛

1kjs,再造Js语法高亮,创加亮准确率之最,首创各种便利功能!

浏览 12075 次
精华帖 (7) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-09-01   最后修改:2011-09-06

注:由于中国网络的问题,有时网站可能被墙,若一定要访问,请使用在线代理!

 

经过几天的整理,终于将1k组件之Js语法高亮整出来了!

 

目前组件具有


 

  1. 支持准确的正则加亮『可以说是目前加亮里面最准确的了』,具体可以看下面的正则部分的测试
  2. 支持实时编辑和运行『可以说是加亮组件的首创了』,右键点击代码弹出菜单
  3. 完美识别各种形式的数字,比如8进制,16进制等
  4. 完美支持html,js,css语法高亮
  5. 支持自定义皮肤
请别问源码在哪里? 或者说楼主不真诚,一切自力更生,鼠标右键查看源代码或者滚动到文件下载来获取源码!


上效果图:
bop皮肤加亮html
default皮肤加亮html


你可以你在下面输入测试代码,选择加亮类型和皮肤


你可以右键鼠标呼出功能菜单,其中的html和js是可以执行的,当然你也可以先编辑在执行,或者再加亮!
   发表时间:2011-09-01   最后修改:2011-09-02
建议添加个Table缩进功能
0 请登录后投票
   发表时间:2011-09-02  
var abc = 'ss';
var g = 1;
{}/abc/g.exec('abc')

高亮错误,/abc/g应该是个正则,但没高亮出来,似乎当成除法了
0 请登录后投票
   发表时间:2011-09-02  
int08h 写道
var abc = 'ss';
var g = 1;
{}/abc/g.exec('abc')

高亮错误,/abc/g应该是个正则,但没高亮出来,似乎当成除法了

 

不错,相当不错,发现这个问题还真不好修正!

 

比如+{}/abc/g;可以算除法,{}/abc/g;又可以是正则,这两者之前目前没有做出判断!

+function(){} /abc/g 又是除法,额,这个不好搞啊!

 

括号的多义性!Js的无分号注定他解析难度的提升!

0 请登录后投票
   发表时间:2011-09-02  
和这一款类似
http://1stjs.googlecode.com/svn/trunk/fw4/api/index.html
0 请登录后投票
   发表时间:2011-09-02  
呵呵,楼主的这款高亮速度蛮快的,准确率也高,我写的高亮也是借鉴了很多它的优点,没有楼主写的完善,只是拿来加亮下API而已,建议大家多关注高亮所用的算法^_^
0 请登录后投票
   发表时间:2011-09-02  
1kjs 写道
int08h 写道
var abc = 'ss';
var g = 1;
{}/abc/g.exec('abc')

高亮错误,/abc/g应该是个正则,但没高亮出来,似乎当成除法了

 

不错,相当不错,发现这个问题还真不好修正!

 

比如+{}/abc/g;可以算除法,{}/abc/g;又可以是正则,这两者之前目前没有做出判断!

+function(){} /abc/g 又是除法,额,这个不好搞啊!

 

括号的多义性!Js的无分号注定他解析难度的提升!

对头,我还没拿分号省略的特性来测呢,一测又会出一大堆事情的……

0 请登录后投票
   发表时间:2011-09-02  
我说哪些js代码怎么那么好看,我还以为是某种编辑器呢,原来是自己写的组件...
0 请登录后投票
   发表时间:2011-09-02  
int08h 写道
1kjs 写道
int08h 写道
var abc = 'ss';
var g = 1;
{}/abc/g.exec('abc')

高亮错误,/abc/g应该是个正则,但没高亮出来,似乎当成除法了

 

不错,相当不错,发现这个问题还真不好修正!

 

比如+{}/abc/g;可以算除法,{}/abc/g;又可以是正则,这两者之前目前没有做出判断!

+function(){} /abc/g 又是除法,额,这个不好搞啊!

 

括号的多义性!Js的无分号注定他解析难度的提升!

对头,我还没拿分号省略的特性来测呢,一测又会出一大堆事情的……

 

好吧,我现在先直接贴出正则判断的条件先!

 

contains:{

brackets:{cls:'brackets',reg:/(\[|\()/},//括号开始

keyword:{cls:'keyword',reg:/(typeof|void|return|in|throw|case)/},//关键字开头

cop:{cls:'#',reg:/(^|[-~:=?,!>]|\/\s+)/},//赋值运算符开头

cop2:{reg:/(<)/,restr:[restr['<']]}

}

 

凡上面这些字符或者关键字开头的,我皆当作正则来处理,否则就算他是除号!

其中中间当然可以跟很多注释,换行,空格等非关键字符!

说实在的,每次看到bug,真想给他来个语法分析,创建个语法树出来,看还能不能错的来,额,编译原理没到家,

 

0 请登录后投票
   发表时间:2011-09-03  
估计要完善得重看编译原理了
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics