📄 shcorecommon.js
字号:
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(/</g,'<');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(){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -