📄 gg_read2.js
字号:
document.writeln('</pre>');
// ------------------------- highlighter
var dp={
sh:
{
Toolbar:{},
Utils:{},
RegexLib:{},
Brushes:{},
Strings:{
AboutDialog:'<html><head><title>About...</title></head><body class="dp-about"><table cellspacing="0"><tr><td class="copy"><p class="title">dp.SyntaxHighlighter</div><div class="para">Version: {V}</p><p><a href="http://www.dreamprojections.com/syntaxhighlighter/?ref=about" target="_blank">http://www.dreamprojections.com/syntaxhighlighter</a></p>©2004-2007 Alex Gorbatchev.</td></tr><tr><td class="footer"><input type="button" class="close" value="OK" onClick="window.close()"/></td></tr></table></body></html>'
},
ClipboardSwf:null,
Version:'1.5.1'
}
};
dp.SyntaxHighlighter=dp.sh;
dp.sh.Toolbar.Commands={
CopyToClipboard:{
func:function(sender,highlighter)
{
var code=dp.sh.Utils.FixForBlogger(highlighter.originalCode)
.replace(/</g,'<')
.replace(/>/g,'>')
.replace(/&/g,'&')
;
if(window.clipboardData)
{
window.clipboardData.setData('text',code);
}
else if(dp.sh.ClipboardSwf!=null)
{
var flashcopier=highlighter.flashCopier;
if(flashcopier==null)
{
flashcopier=document.createElement('div');
highlighter.flashCopier=flashcopier;
highlighter.div.appendChild(flashcopier);
}
flashcopier.innerHTML='<embed src="'+dp.sh.ClipboardSwf+'" FlashVars="clipboard='+encodeURIComponent(code)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
}
alert('代码已被复制到剪贴板');
}
}
};
dp.sh.Toolbar.Create=function(highlighter)
{
var div=document.createElement('DIV');
div.className='tools';
//div.innerHTML=highlighter.language.capitalize(); //+'代码';
//div.innerHTML+=' <a href="#" onclick="dp.sh.Toolbar.Command(\'CopyToClipboard\',this);return false;" title="复制代码"><img src="/images/icon_copy.gif" alt="复制代码"/></a>';
return div;
}
dp.sh.Toolbar.Command=function(name,sender)
{
var n=sender;
while(n!=null&&n.className.indexOf('dp-highlighter')==-1)
n=n.parentNode;
if(n!=null)
dp.sh.Toolbar.Commands[name].func(sender,n.highlighter);
}
dp.sh.Utils.CopyStyles=function(destDoc,sourceDoc)
{
var links=sourceDoc.getElementsByTagName('link');
for(var i=0;i<links.length;i++)
if(links[i].rel.toLowerCase()=='stylesheet')
destDoc.write('<link type="text/css" rel="stylesheet" href="'+links[i].href+'"></link>');
}
dp.sh.Utils.FixForBlogger=function(str)
{
return(dp.sh.isBloggerMode==true)?str.replace(/<br\s*\/?>|<br\s*\/?>/gi,'\n'):str;
}
dp.sh.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')
};
dp.sh.Match=function(value,index,css)
{
this.value=value;
this.index=index;
this.length=value.length;
this.css=css;
}
dp.sh.Highlighter=function()
{
this.noGutter=false;
this.addControls=true;
this.collapse=false;
this.tabsToSpaces=true;
this.wrapColumn=80;
this.showColumns=true;
}
dp.sh.Highlighter.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;
}
dp.sh.Highlighter.prototype.CreateElement=function(name)
{
var result=document.createElement(name);
result.highlighter=this;
return result;
}
dp.sh.Highlighter.prototype.GetMatches=function(regex,css)
{
var index=0;
var match=null;
while((match=regex.exec(this.code))!=null)
this.matches[this.matches.length]=new dp.sh.Match(match[0],match.index,css);
}
dp.sh.Highlighter.prototype.AddBit=function(str,css)
{
if(str==null||str.length==0)
return;
var span=this.CreateElement('SPAN');
str=str.replace(/ /g,' ');
str=str.replace(/<BR>/g,'\r');
str=str.replace(/</g,'<');
str=str.replace(/\r\n/gm,' <br>');
str=str.replace(/\n/gm,' <br>');
if(css!=null)
{
if((/br/gi).test(str))
{
var lines=str.split(' <br>');
for(var i=0;i<lines.length;i++)
{
span=this.CreateElement('SPAN');
span.className=css;
span.innerHTML=lines[i];
this.div.appendChild(span);
if(i+1<lines.length)
this.div.appendChild(this.CreateElement('BR'));
}
}
else
{
span.className=css;
span.innerHTML=str;
this.div.appendChild(span);
}
}
else
{
span.innerHTML=str;
this.div.appendChild(span);
}
}
dp.sh.Highlighter.prototype.IsInside=function(match)
{
if(match==null||match.length==0)
return false;
for(var i=0;i<this.matches.length;i++)
{
var c=this.matches[i];
if(c==null)
continue;
if((match.index>c.index)&&(match.index<c.index+c.length))
return true;
}
return false;
}
dp.sh.Highlighter.prototype.ProcessRegexList=function()
{
for(var i=0;i<this.regexList.length;i++)
this.GetMatches(this.regexList[i].regex,this.regexList[i].css);
}
dp.sh.Highlighter.prototype.ProcessSmartTabs=function(code)
{
var lines=code.split('\n');
var result='';
var tabSize=4;
var tab='\t';
function InsertSpaces(line,pos,count)
{
var left=line.substr(0,pos);
var right=line.substr(pos+1,line.length);
var spaces='';
for(var i=0;i<count;i++)
spaces+=' ';
return left+spaces+right;
}
function ProcessLine(line,tabSize)
{
if(line.indexOf(tab)==-1)
return line;
var pos=0;
while((pos=line.indexOf(tab))!=-1)
{
var spaces=tabSize-pos%tabSize;
line=InsertSpaces(line,pos,spaces);
}
return line;
}
for(var i=0;i<lines.length;i++)
result+=ProcessLine(lines[i],tabSize)+'\n';
return result;
}
dp.sh.Highlighter.prototype.SwitchToList=function()
{
var html=this.div.innerHTML.replace(/<(br)\/?>/gi,'\n');
var lines=html.split('\n');
if(this.addControls==true)
this.bar.appendChild(dp.sh.Toolbar.Create(this));
if(this.showColumns)
{
var div=this.CreateElement('div');
var columns=this.CreateElement('div');
var showEvery=10;
var i=1;
while(i<=150)
{
if(i%showEvery==0)
{
div.innerHTML+=i;
i+=(i+'').length;
}
else
{
div.innerHTML+='·';
i++;
}
}
columns.className='columns';
columns.appendChild(div);
this.bar.appendChild(columns);
}
for(var i=0,lineIndex=this.firstLine;i<lines.length-1;i++,lineIndex++)
{
var li=this.CreateElement('LI');
var span=this.CreateElement('SPAN');
span.innerHTML=lines[i]+' ';
li.appendChild(span);
this.ol.appendChild(li);
}
this.div.innerHTML='';
}
dp.sh.Highlighter.prototype.Highlight=function(code)
{
function Trim(str)
{
return str.replace(/^\s*(.*?)[\s\n]*$/g,'$1');
}
function Chop(str)
{
return str.replace(/\n*$/,'').replace(/^\n*/,'');
}
function Unindent(str)
{
var lines=dp.sh.Utils.FixForBlogger(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++)
{
if(Trim(lines[i]).length==0)
continue;
var matches=regex.exec(lines[i]);
if(matches!=null&&matches.length>0)
min=Math.min(matches[0].length,min);
}
if(min>0)
for(var i=0;i<lines.length;i++)
lines[i]=lines[i].substr(min);
return lines.join('\n');
}
function Copy(string,pos1,pos2)
{
return string.substr(pos1,pos2-pos1);
}
var pos=0;
if(code==null)
code='';
this.originalCode=code;
this.code=Chop(Unindent(code));
this.div=this.CreateElement('DIV');
this.bar=this.CreateElement('DIV');
this.ol=this.CreateElement('OL');
this.matches=new Array();
this.div.className='dp-highlighter';
this.div.highlighter=this;
this.bar.className='bar';
this.ol.start=this.firstLine;
if(this.CssClass!=null)
this.ol.className=this.CssClass;
if(this.collapse)
this.div.className+=' collapsed';
if(this.noGutter)
this.div.className+=' nogutter';
if(this.tabsToSpaces==true)
this.code=this.ProcessSmartTabs(this.code);
this.ProcessRegexList();
if(this.matches.length==0)
{
this.AddBit(this.code,null);
this.SwitchToList();
this.div.appendChild(this.bar);
this.div.appendChild(this.ol);
return;
}
this.matches=this.matches.sort(dp.sh.Highlighter.SortCallback);
for(var i=0;i<this.matches.length;i++)
if(this.IsInside(this.matches[i]))
this.matches[i]=null;
for(var i=0;i<this.matches.length;i++)
{
var match=this.matches[i];
if(match==null||match.length==0)
continue;
this.AddBit(Copy(this.code,pos,match.index),null);
this.AddBit(match.value,match.css);
pos=match.index+match.length;
}
this.AddBit(this.code.substr(pos),null);
this.SwitchToList();
this.div.appendChild(this.bar);
this.div.appendChild(this.ol);
}
dp.sh.Highlighter.prototype.GetKeywords=function(str)
{
return'\\b'+str.replace(/ /g,'\\b|\\b')+'\\b';
}
dp.sh.BloggerMode=function()
{
dp.sh.isBloggerMode=true;
}
dp.sh.HighlightAll=function(name,showGutter,showControls,collapseAll,firstLine,showColumns)
{
function FindValue()
{
var a=arguments;
for(var i=0;i<a.length;i++)
{
if(a[i]==null)
continue;
if(typeof(a[i])=='string'&&a[i]!='')
return a[i]+'';
if(typeof(a[i])=='object'&&a[i].value!='')
return a[i].value+'';
}
return null;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -