📄 fcode.js
字号:
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){
//alert(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 {
//alert(lang);
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, ' ');
str = str.replace(/\n/g, '<br/>');
if(css != null)
this.buffer.push('<span style="' + css + '">' + str + '</span>');
else
this.buffer.push(str);
},
ProcessRegexList: function(){
for(var i = 0; i < this.regexList.length; i++)
this.GetMatches(this.regexList[i].regex, this.regexList[i].css);
},
Highlight: function(code){
function Trim(str){
return str.replace(/^\s*(.*?)[\s\n]*$/g, '$1');
}
function Unindent(str){
var lines = str.split('\n');
var indents = new Array();
var regex = new RegExp('^\\s*', 'g');
var min = 1000;
for(var i = 0; i < lines.length && min > 0; i++){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -