gluon-web-remote

Web remote Administration for big size of gluon routers
git clone git://archive.git.mtrnord.blog/MTRNord/gluon-web-remote.git
Log | Files | Refs | README

shLegacy.js (3297B)


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