mirror of
https://github.com/ethauvin/kobalt-doc.git
synced 2025-04-26 04:17:11 -07:00
Syntax highlighting.
This commit is contained in:
parent
c11be25ff8
commit
6b7427454a
105 changed files with 17571 additions and 91 deletions
130
sh/src/shAutoloader.js
Normal file
130
sh/src/shAutoloader.js
Normal file
|
@ -0,0 +1,130 @@
|
|||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/SyntaxHighlighter
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/SyntaxHighlighter/donate.html
|
||||
*
|
||||
* @version
|
||||
* 3.0.83 (July 02 2010)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2010 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
*/
|
||||
(function() {
|
||||
|
||||
var sh = SyntaxHighlighter;
|
||||
|
||||
/**
|
||||
* Provides functionality to dynamically load only the brushes that a needed to render the current page.
|
||||
*
|
||||
* There are two syntaxes that autoload understands. For example:
|
||||
*
|
||||
* SyntaxHighlighter.autoloader(
|
||||
* [ 'applescript', 'Scripts/shBrushAppleScript.js' ],
|
||||
* [ 'actionscript3', 'as3', 'Scripts/shBrushAS3.js' ]
|
||||
* );
|
||||
*
|
||||
* or a more easily comprehendable one:
|
||||
*
|
||||
* SyntaxHighlighter.autoloader(
|
||||
* 'applescript Scripts/shBrushAppleScript.js',
|
||||
* 'actionscript3 as3 Scripts/shBrushAS3.js'
|
||||
* );
|
||||
*/
|
||||
sh.autoloader = function()
|
||||
{
|
||||
var list = arguments,
|
||||
elements = sh.findElements(),
|
||||
brushes = {},
|
||||
scripts = {},
|
||||
all = SyntaxHighlighter.all,
|
||||
allCalled = false,
|
||||
allParams = null,
|
||||
i
|
||||
;
|
||||
|
||||
SyntaxHighlighter.all = function(params)
|
||||
{
|
||||
allParams = params;
|
||||
allCalled = true;
|
||||
};
|
||||
|
||||
function addBrush(aliases, url)
|
||||
{
|
||||
for (var i = 0; i < aliases.length; i++)
|
||||
brushes[aliases[i]] = url;
|
||||
};
|
||||
|
||||
function getAliases(item)
|
||||
{
|
||||
return item.pop
|
||||
? item
|
||||
: item.split(/\s+/)
|
||||
;
|
||||
}
|
||||
|
||||
// create table of aliases and script urls
|
||||
for (i = 0; i < list.length; i++)
|
||||
{
|
||||
var aliases = getAliases(list[i]),
|
||||
url = aliases.pop()
|
||||
;
|
||||
|
||||
addBrush(aliases, url);
|
||||
}
|
||||
|
||||
// dynamically add <script /> tags to the document body
|
||||
for (i = 0; i < elements.length; i++)
|
||||
{
|
||||
var url = brushes[elements[i].params.brush];
|
||||
|
||||
if (!url)
|
||||
continue;
|
||||
|
||||
scripts[url] = false;
|
||||
loadScript(url);
|
||||
}
|
||||
|
||||
function loadScript(url)
|
||||
{
|
||||
var script = document.createElement('script'),
|
||||
done = false
|
||||
;
|
||||
|
||||
script.src = url;
|
||||
script.type = 'text/javascript';
|
||||
script.language = 'javascript';
|
||||
script.onload = script.onreadystatechange = function()
|
||||
{
|
||||
if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete'))
|
||||
{
|
||||
done = true;
|
||||
scripts[url] = true;
|
||||
checkAll();
|
||||
|
||||
// Handle memory leak in IE
|
||||
script.onload = script.onreadystatechange = null;
|
||||
script.parentNode.removeChild(script);
|
||||
}
|
||||
};
|
||||
|
||||
// sync way of adding script tags to the page
|
||||
document.body.appendChild(script);
|
||||
};
|
||||
|
||||
function checkAll()
|
||||
{
|
||||
for(var url in scripts)
|
||||
if (scripts[url] == false)
|
||||
return;
|
||||
|
||||
if (allCalled)
|
||||
SyntaxHighlighter.highlight(allParams);
|
||||
};
|
||||
};
|
||||
|
||||
})();
|
1721
sh/src/shCore.js
vendored
Normal file
1721
sh/src/shCore.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
157
sh/src/shLegacy.js
vendored
Normal file
157
sh/src/shLegacy.js
vendored
Normal file
|
@ -0,0 +1,157 @@
|
|||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/SyntaxHighlighter
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/SyntaxHighlighter/donate.html
|
||||
*
|
||||
* @version
|
||||
* 3.0.83 (July 02 2010)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2010 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
*/
|
||||
var dp = {
|
||||
SyntaxHighlighter : {}
|
||||
};
|
||||
|
||||
dp.SyntaxHighlighter = {
|
||||
parseParams: function(
|
||||
input,
|
||||
showGutter,
|
||||
showControls,
|
||||
collapseAll,
|
||||
firstLine,
|
||||
showColumns
|
||||
)
|
||||
{
|
||||
function getValue(list, name)
|
||||
{
|
||||
var regex = new XRegExp('^' + name + '\\[(?<value>\\w+)\\]$', 'gi'),
|
||||
match = null
|
||||
;
|
||||
|
||||
for (var i = 0; i < list.length; i++)
|
||||
if ((match = regex.exec(list[i])) != null)
|
||||
return match.value;
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
function defaultValue(value, def)
|
||||
{
|
||||
return value != null ? value : def;
|
||||
};
|
||||
|
||||
function asString(value)
|
||||
{
|
||||
return value != null ? value.toString() : null;
|
||||
};
|
||||
|
||||
var parts = input.split(':'),
|
||||
brushName = parts[0],
|
||||
options = {},
|
||||
straight = { 'true' : true }
|
||||
reverse = { 'true' : false },
|
||||
result = null,
|
||||
defaults = SyntaxHighlighter.defaults
|
||||
;
|
||||
|
||||
for (var i in parts)
|
||||
options[parts[i]] = 'true';
|
||||
|
||||
showGutter = asString(defaultValue(showGutter, defaults.gutter));
|
||||
showControls = asString(defaultValue(showControls, defaults.toolbar));
|
||||
collapseAll = asString(defaultValue(collapseAll, defaults.collapse));
|
||||
showColumns = asString(defaultValue(showColumns, defaults.ruler));
|
||||
firstLine = asString(defaultValue(firstLine, defaults['first-line']));
|
||||
|
||||
return {
|
||||
brush : brushName,
|
||||
gutter : defaultValue(reverse[options.nogutter], showGutter),
|
||||
toolbar : defaultValue(reverse[options.nocontrols], showControls),
|
||||
collapse : defaultValue(straight[options.collapse], collapseAll),
|
||||
// ruler : defaultValue(straight[options.showcolumns], showColumns),
|
||||
'first-line' : defaultValue(getValue(parts, 'firstline'), firstLine)
|
||||
};
|
||||
},
|
||||
|
||||
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 findTagsByName(list, name, tagName)
|
||||
{
|
||||
var tags = document.getElementsByTagName(tagName);
|
||||
|
||||
for (var i = 0; i < tags.length; i++)
|
||||
if (tags[i].getAttribute('name') == name)
|
||||
list.push(tags[i]);
|
||||
}
|
||||
|
||||
var elements = [],
|
||||
highlighter = null,
|
||||
registered = {},
|
||||
propertyName = 'innerHTML'
|
||||
;
|
||||
|
||||
// for some reason IE doesn't find <pre/> by name, however it does see them just fine by tag name...
|
||||
findTagsByName(elements, name, 'pre');
|
||||
findTagsByName(elements, name, 'textarea');
|
||||
|
||||
if (elements.length === 0)
|
||||
return;
|
||||
|
||||
for (var i = 0; i < elements.length; i++)
|
||||
{
|
||||
var element = elements[i],
|
||||
params = findValue(
|
||||
element.attributes['class'], element.className,
|
||||
element.attributes['language'], element.language
|
||||
),
|
||||
language = ''
|
||||
;
|
||||
|
||||
if (params === null)
|
||||
continue;
|
||||
|
||||
params = dp.SyntaxHighlighter.parseParams(
|
||||
params,
|
||||
showGutter,
|
||||
showControls,
|
||||
collapseAll,
|
||||
firstLine,
|
||||
showColumns
|
||||
);
|
||||
|
||||
SyntaxHighlighter.highlight(params, element);
|
||||
}
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue