summaryrefslogtreecommitdiffstats
path: root/usr/local/www/code-syntax-highlighter/shCore.uncompressed.js
diff options
context:
space:
mode:
Diffstat (limited to 'usr/local/www/code-syntax-highlighter/shCore.uncompressed.js')
-rw-r--r--usr/local/www/code-syntax-highlighter/shCore.uncompressed.js636
1 files changed, 0 insertions, 636 deletions
diff --git a/usr/local/www/code-syntax-highlighter/shCore.uncompressed.js b/usr/local/www/code-syntax-highlighter/shCore.uncompressed.js
deleted file mode 100644
index 8d92721..0000000
--- a/usr/local/www/code-syntax-highlighter/shCore.uncompressed.js
+++ /dev/null
@@ -1,636 +0,0 @@
-/**
- * Code Syntax Highlighter.
- * Version 1.3.0
- * Copyright (C) 2004 Alex Gorbatchev.
- * http://www.dreamprojections.com/syntaxhighlighter/
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-//
-// create namespaces
-//
-var dp = {
- sh :
- {
- Toolbar : {},
- Utils : {},
- RegexLib: {},
- Brushes : {},
- Strings : {},
- Version : '1.4.1'
- }
-};
-
-dp.sh.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>&copy;2004-2005 Alex Gorbatchev. All right reserved.</td></tr><tr><td class="footer"><input type="button" class="close" value="OK" onClick="window.close()"/></td></tr></table></body></html>'
-};
-
-dp.SyntaxHighlighter = dp.sh;
-
-//
-// Toolbar functions
-//
-
-dp.sh.Toolbar.Commands = {
- ExpandSource: {
- label: '+ expand source',
- check: function(highlighter) { return highlighter.collapse; },
- func: function(sender, highlighter)
- {
- sender.parentNode.removeChild(sender);
- highlighter.div.className = highlighter.div.className.replace('collapsed', '');
- }
- },
-
- // opens a new windows and puts the original unformatted source code inside.
- ViewSource: {
- label: 'view plain',
- func: function(sender, highlighter)
- {
- var code = highlighter.originalCode.replace(/</g, '&lt;');
- var wnd = window.open('', '_blank', 'width=750, height=400, location=0, resizable=1, menubar=0, scrollbars=1');
- wnd.document.write('<textarea style="width:99%;height:99%">' + code + '</textarea>');
- wnd.document.close();
- }
- },
-
- // copies the original source code in to the clipboard (IE only)
- CopyToClipboard: {
- label: 'copy to clipboard',
- check: function() { return window.clipboardData != null; },
- func: function(sender, highlighter)
- {
- window.clipboardData.setData('text', highlighter.originalCode);
- alert('The code is in your clipboard now');
- }
- },
-
- // creates an invisible iframe, puts the original source code inside and prints it
- PrintSource: {
- label: 'print',
- func: function(sender, highlighter)
- {
- var iframe = document.createElement('IFRAME');
- var doc = null;
-
- // this hides the iframe
- iframe.style.cssText = 'position:absolute;width:0px;height:0px;left:-500px;top:-500px;';
-
- document.body.appendChild(iframe);
- doc = iframe.contentWindow.document;
-
- dp.sh.Utils.CopyStyles(doc, window.document);
- doc.write('<div class="' + highlighter.div.className.replace('collapsed', '') + ' printing">' + highlighter.div.innerHTML + '</div>');
- doc.close();
-
- iframe.contentWindow.focus();
- iframe.contentWindow.print();
-
- alert('Printing...');
-
- document.body.removeChild(iframe);
- }
- },
-
- About: {
- label: '?',
- func: function(highlighter)
- {
- var wnd = window.open('', '_blank', 'dialog,width=300,height=150,scrollbars=0');
- var doc = wnd.document;
-
- dp.sh.Utils.CopyStyles(doc, window.document);
-
- doc.write(dp.sh.Strings.AboutDialog.replace('{V}', dp.sh.Version));
- doc.close();
- wnd.focus();
- }
- }
-};
-
-// creates a <div /> with all toolbar links
-dp.sh.Toolbar.Create = function(highlighter)
-{
- var div = document.createElement('div');
-
- div.className = 'tools';
-
- for(var name in dp.sh.Toolbar.Commands)
- {
- var cmd = dp.sh.Toolbar.Commands[name];
-
- if(cmd.check != null && !cmd.check(highlighter))
- continue;
-
- div.innerHTML += '<a href="#" onclick="dp.sh.Toolbar.Command(\'' + name + '\',this);return false;">' + cmd.label + '</a>';
- }
-
- return div;
-}
-
-// executes toolbar command by name
-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);
-}
-
-// copies all <link rel="stylesheet" /> from 'target' window to 'dest'
-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>');
-}
-
-//
-// Common reusable regular expressions
-//
-dp.sh.RegexLib = {
- MultiLineCComments : new RegExp('/\\*[\\s\\S]*?\\*/', 'gm'),
- SingleLineCComments : new RegExp('//.*$', 'gm'),
- SingleLinePerlComments : new RegExp('#.*$', 'gm'),
- DoubleQuotedString : new RegExp('"(?:\\.|(\\\\\\")|[^\\""])*"','g'),
- SingleQuotedString : new RegExp("'(?:\\.|(\\\\\\')|[^\\''])*'", 'g')
-};
-
-//
-// Match object
-//
-dp.sh.Match = function(value, index, css)
-{
- this.value = value;
- this.index = index;
- this.length = value.length;
- this.css = css;
-}
-
-//
-// Highlighter object
-//
-dp.sh.Highlighter = function()
-{
- this.noGutter = false;
- this.addControls = true;
- this.collapse = false;
- this.tabsToSpaces = true;
- this.wrapColumn = 80;
- this.showColumns = true;
-}
-
-// static callback for the match sorting
-dp.sh.Highlighter.SortCallback = function(m1, m2)
-{
- // sort matches by index first
- if(m1.index < m2.index)
- return -1;
- else if(m1.index > m2.index)
- return 1;
- else
- {
- // if index is the same, sort by length
- 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;
-}
-
-// gets a list of all matches for a given regular expression
-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, '&amp;');
- str = str.replace(/ /g, '&nbsp;');
- str = str.replace(/</g, '&lt;');
- str = str.replace(/\n/gm, '&nbsp;<br />');
-
- // when adding a piece of code, check to see if it has line breaks in it
- // and if it does, wrap individual line breaks with span tags
- if(css != null)
- {
- var regex = new RegExp('<br />', 'gi');
-
- if(regex.test(str))
- {
- var lines = str.split('&nbsp;<br />');
-
- str = '';
-
- for(var i = 0; i < lines.length; i++)
- {
- span = this.createElement('span');
- span.className = css;
- span.innerHTML = lines[i];
-
- this.div.appendChild(span);
-
- // don't add a <br /> for the last line
- 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);
- }
-}
-
-// checks if one match is inside any other match
-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';
-
- // This function inserts specified amount of spaces in the string
- // where a tab is while removing that given tab.
- function InsertSpaces(line, pos, count)
- {
- var left = line.substr(0, pos);
- var right = line.substr(pos + 1, line.length); // pos + 1 will get rid of the tab
- var spaces = '';
-
- for(var i = 0; i < count; i++)
- spaces += ' ';
-
- return left + spaces + right;
- }
-
- // This function process one line for 'smart tabs'
- function ProcessLine(line, tabSize)
- {
- if(line.indexOf(tab) == -1)
- return line;
-
- var pos = 0;
-
- while((pos = line.indexOf(tab)) != -1)
- {
- // This is pretty much all there is to the 'smart tabs' logic.
- // Based on the position within the line and size of a tab,
- // calculate the amount of spaces we need to insert.
- var spaces = tabSize - pos % tabSize;
-
- line = InsertSpaces(line, pos, spaces);
- }
-
- return line;
- }
-
- // Go through all the lines and do the 'smart tabs' magic.
- for(var i = 0; i < lines.length; i++)
- result += ProcessLine(lines[i], tabSize) + '\n';
-
- return result;
-}
-
-dp.sh.Highlighter.prototype.SwitchToList = function()
-{
- // thanks to Lachlan Donald from SitePoint.com for this <br /> tag fix.
- 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));
-
- // add columns ruler
- 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 += '&middot;';
- 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');
-
- // uses .line1 and .line2 css styles for alternating lines
- li.className = (i % 2 == 0) ? 'alt' : '';
- span.innerHTML = lines[i] + '&nbsp;';
-
- 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 = str.split('\n');
- var indents = new Array();
- var regex = new RegExp('^\\s*', 'g');
- var min = 1000;
-
- // go through every line and check for common number of indents
- 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);
- }
-
- // trim minimum common number of white space from the begining of every line
- if(min > 0)
- for(var i = 0; i < lines.length; i++)
- lines[i] = lines[i].substr(min);
-
- return lines.join('\n');
- }
-
- // This function returns a portions of the string from pos1 to pos2 inclusive
- function Copy(string, pos1, pos2)
- {
- return string.substr(pos1, pos2 - pos1);
- }
-
- var pos = 0;
-
- 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';
-
- // set the first line
- 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';
-
- // replace tabs with spaces
- if(this.tabsToSpaces == true)
- this.code = this.ProcessSmartTabs(this.code);
-
- this.ProcessRegexList();
-
- // if no matches found, add entire code as plain text
- if(this.matches.length == 0)
- {
- this.AddBit(this.code, null);
- this.SwitchToList();
- this.div.appendChild(this.ol);
- return;
- }
-
- // sort the matches
- this.matches = this.matches.sort(dp.sh.Highlighter.SortCallback);
-
- // The following loop checks to see if any of the matches are inside
- // of other matches. This process would get rid of highligted strings
- // inside comments, keywords inside strings and so on.
- for(var i = 0; i < this.matches.length; i++)
- if(this.IsInside(this.matches[i]))
- this.matches[i] = null;
-
- // Finally, go through the final list of matches and pull the all
- // together adding everything in between that isn't a match.
- 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';
-}
-
-// highlightes all elements identified by name and gets source code from specified property
-dp.sh.HighlightAll = function(name, showGutter /* optional */, showControls /* optional */, collapseAll /* optional */, firstLine /* optional */, showColumns /* optional */)
-{
- 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;
- }
-
- function IsOptionSet(value, list)
- {
- for(var i = 0; i < list.length; i++)
- if(list[i] == value)
- return true;
-
- return false;
- }
-
- function GetOptionValue(name, list, defaultValue)
- {
- var regex = new RegExp('^' + name + '\\[(\\w+)\\]$', 'gi');
- var matches = null;
-
- for(var i = 0; i < list.length; i++)
- if((matches = regex.exec(list[i])) != null)
- return matches[1];
-
- return defaultValue;
- }
-
- var elements = document.getElementsByName(name);
- var highlighter = null;
- var registered = new Object();
- var propertyName = 'value';
-
- // if no code blocks found, leave
- if(elements == null)
- return;
-
- // register all brushes
- for(var brush in dp.sh.Brushes)
- {
- var aliases = dp.sh.Brushes[brush].Aliases;
-
- if(aliases == null)
- continue;
-
- for(var i = 0; i < aliases.length; i++)
- registered[aliases[i]] = brush;
- }
-
- for(var i = 0; i < elements.length; i++)
- {
- var element = elements[i];
- var options = FindValue(
- element.attributes['class'], element.className,
- element.attributes['language'], element.language
- );
- var language = '';
-
- if(options == null)
- continue;
-
- options = options.split(':');
-
- language = options[0].toLowerCase();
-
- if(registered[language] == null)
- continue;
-
- // instantiate a brush
- highlighter = new dp.sh.Brushes[registered[language]]();
-
- // hide the original element
- element.style.display = 'none';
-
- highlighter.noGutter = (showGutter == null) ? IsOptionSet('nogutter', options) : !showGutter;
- highlighter.addControls = (showControls == null) ? !IsOptionSet('nocontrols', options) : showControls;
- highlighter.collapse = (collapseAll == null) ? IsOptionSet('collapse', options) : collapseAll;
- highlighter.showColumns = (showColumns == null) ? IsOptionSet('showcolumns', options) : showColumns;
-
- // first line idea comes from Andrew Collington, thanks!
- highlighter.firstLine = (firstLine == null) ? parseInt(GetOptionValue('firstline', options, 1)) : firstLine;
-
- highlighter.Highlight(element[propertyName]);
-
- element.parentNode.insertBefore(highlighter.div, element);
- }
-}
OpenPOWER on IntegriCloud