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