Seditio Source
Root |
./othercms/slaed_cms_6.2_pro/plugins/syntaxhighlighter/src/shLegacy.js
/**
 * SyntaxHighlighter
 * http://alexgorbatchev.com/
 *
 * SyntaxHighlighter is donationware. If you are using it, please donate.
 * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
 *
 * @version
 * 2.1.382 (June 24 2010)
 *
 * @copyright
 * Copyright (C) 2004-2009 Alex Gorbatchev.
 *
 * @license
 * This file is part of SyntaxHighlighter.
 *
 * SyntaxHighlighter 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 3 of the License, or
 * (at your option) any later version.
 *
 * SyntaxHighlighter 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with SyntaxHighlighter.  If not, see <http://www.gnu.org/copyleft/lesser.html>.
 */
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']));

result = {
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)
};

return result;
},

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);
}
}
};