1/** 2 * SyntaxHighlighter 3 * http://alexgorbatchev.com/SyntaxHighlighter 4 * 5 * SyntaxHighlighter is donationware. If you are using it, please donate. 6 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html 7 * 8 * @version 9 * 3.0.90 (Sat, 18 Jun 2016 21:01:41 GMT) 10 * 11 * @copyright 12 * Copyright (C) 2004-2013 Alex Gorbatchev. 13 * 14 * @license 15 * Dual licensed under the MIT and GPL licenses. 16 */ 17var dp = { 18 SyntaxHighlighter : {} 19}; 20 21dp.SyntaxHighlighter = { 22 parseParams: function( 23 input, 24 showGutter, 25 showControls, 26 collapseAll, 27 firstLine, 28 showColumns 29 ) 30 { 31 function getValue(list, name) 32 { 33 var regex = XRegExp('^' + name + '\\[(?<value>\\w+)\\]$', 'gi'), 34 match = null 35 ; 36 37 for (var i = 0; i < list.length; i++) 38 if ((match = XRegExp.exec(list[i], regex)) != null) 39 return match.value; 40 41 return null; 42 }; 43 44 function defaultValue(value, def) 45 { 46 return value != null ? value : def; 47 }; 48 49 function asString(value) 50 { 51 return value != null ? value.toString() : null; 52 }; 53 54 var parts = input.split(':'), 55 brushName = parts[0], 56 options = {}, 57 straight = { 'true' : true } 58 reverse = { 'true' : false }, 59 result = null, 60 defaults = SyntaxHighlighter.defaults 61 ; 62 63 for (var i in parts) 64 options[parts[i]] = 'true'; 65 66 showGutter = asString(defaultValue(showGutter, defaults.gutter)); 67 showControls = asString(defaultValue(showControls, defaults.toolbar)); 68 collapseAll = asString(defaultValue(collapseAll, defaults.collapse)); 69 showColumns = asString(defaultValue(showColumns, defaults.ruler)); 70 firstLine = asString(defaultValue(firstLine, defaults['first-line'])); 71 72 return { 73 brush : brushName, 74 gutter : defaultValue(reverse[options.nogutter], showGutter), 75 toolbar : defaultValue(reverse[options.nocontrols], showControls), 76 collapse : defaultValue(straight[options.collapse], collapseAll), 77 // ruler : defaultValue(straight[options.showcolumns], showColumns), 78 'first-line' : defaultValue(getValue(parts, 'firstline'), firstLine) 79 }; 80 }, 81 82 HighlightAll: function( 83 name, 84 showGutter /* optional */, 85 showControls /* optional */, 86 collapseAll /* optional */, 87 firstLine /* optional */, 88 showColumns /* optional */ 89 ) 90 { 91 function findValue() 92 { 93 var a = arguments; 94 95 for (var i = 0; i < a.length; i++) 96 { 97 if (a[i] === null) 98 continue; 99 100 if (typeof(a[i]) == 'string' && a[i] != '') 101 return a[i] + ''; 102 103 if (typeof(a[i]) == 'object' && a[i].value != '') 104 return a[i].value + ''; 105 } 106 107 return null; 108 }; 109 110 function findTagsByName(list, name, tagName) 111 { 112 var tags = document.getElementsByTagName(tagName); 113 114 for (var i = 0; i < tags.length; i++) 115 if (tags[i].getAttribute('name') == name) 116 list.push(tags[i]); 117 } 118 119 var elements = [], 120 highlighter = null, 121 registered = {}, 122 propertyName = 'innerHTML' 123 ; 124 125 // for some reason IE doesn't find <pre/> by name, however it does see them just fine by tag name... 126 findTagsByName(elements, name, 'pre'); 127 findTagsByName(elements, name, 'textarea'); 128 129 if (elements.length === 0) 130 return; 131 132 for (var i = 0; i < elements.length; i++) 133 { 134 var element = elements[i], 135 params = findValue( 136 element.attributes['class'], element.className, 137 element.attributes['language'], element.language 138 ), 139 language = '' 140 ; 141 142 if (params === null) 143 continue; 144 145 params = dp.SyntaxHighlighter.parseParams( 146 params, 147 showGutter, 148 showControls, 149 collapseAll, 150 firstLine, 151 showColumns 152 ); 153 154 SyntaxHighlighter.highlight(params, element); 155 } 156 } 157}; 158