Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
141 righe
3.2 KiB
141 righe
3.2 KiB
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); |
|
} |
|
} |
|
};
|
|
|