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