📄 highlighter.js
字号:
/********************************************************/
//支持高亮的语言种类
var langs = new Array();
langs['XML/HTML'] = 'xhtml';
langs['JavaScript'] = 'javascript';
langs['CSS'] = 'css';
langs['C#'] = 'csharp';
langs['C++'] = 'cpp';
langs['JAVA'] = 'java';
langs['PHP'] = 'php';
langs['Python'] = 'python';
langs['SQL'] = 'sql';
langs['Visual Basic'] = 'vb';
langs['Lua'] = 'lua';
langs['AWK'] = 'awk';
langs['UNIX Shell'] = 'sh';
langs['Bat 批处理'] = 'bat';
langs['Perl'] = 'perl';
langs['Delphi/Kylix/Pascal'] = 'delphi';
langs['ActionScript'] = 'as';
langs['Ruby/Rails'] = 'ruby';
langs['Assembly'] = 'asm';
/********************************************************/
//以下为主函数
var Highlighter = {
Brushes: {},
RegexLib: {
MultiLineCComments : new RegExp('/\\*[\\s\\S]*?\\*/', 'gm'),
SingleLineCComments : new RegExp('//.*$', 'gm'),
SingleLinePerlComments : new RegExp('#.*$', 'gm'),
DoubleQuotedString : new RegExp('"(?:\\.|(\\\\\\")|[^\\""\\n])*"','g'),
SingleQuotedString : new RegExp("'(?:\\.|(\\\\\\')|[^\\''\\n])*'", 'g')
},
Match: function(value, index, css){
this.value = value;
this.index = index;
this.length = value.length;
this.css = css;
},
Execute: function(str,lang){
var registered = new Object();
for(var brush in Highlighter.Brushes){
var aliases = Highlighter.Brushes[brush].Aliases;
if(aliases == null) continue;
for(var i=0;i<aliases.length;i++) registered[aliases[i].toLowerCase()] = brush;
};
if(!!registered[lang.toLowerCase()]){
var ht = new Highlighter.Brushes[registered[lang.toLowerCase()]]();
return ht.Highlight(str);
} else {
str = str.replace(/&/g, '&');
str = str.replace(/</g, '<');
str = str.replace(/>/g, '>');
str = str.replace(/\t/g, ' ');
str = str.replace(/[ ]{2}/g, ' ');
return str.replace(/\n/g, '<br/>');
}
}
};
Highlighter.Brushe = new Function();
Highlighter.Brushe.SortCallback = function(m1, m2){
if(m1.index < m2.index)
return -1;
else if(m1.index > m2.index)
return 1;
else {
if(m1.length < m2.length)
return -1;
else if(m1.length > m2.length)
return 1;
}
return 0;
}
Highlighter.Brushe.prototype = {
GetMatches: function(regex, css){
var index = 0;
var match = null;
while((match = regex.exec(this.code)) != null)
this.matches.push(new Highlighter.Match(match[0], match.index, css));
},
AddBit: function(str, css){
if(str == null || str.length == 0)
return;
str = str.replace(/&/g, '&');
str = str.replace(/</g, '<');
str = str.replace(/>/g, '>');
str = str.replace(/\t/g, ' ');
str = str.replace(/[ ]{2}/g, ' ');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -