initial commit
[namibia] / public / js / lib / syntaxhighlighter / src / shLegacy.js
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.83 (July 02 2010)
10  * 
11  * @copyright
12  * Copyright (C) 2004-2010 Alex Gorbatchev.
13  *
14  * @license
15  * Dual licensed under the MIT and GPL licenses.
16  */
17 var dp = {
18         SyntaxHighlighter : {}
19 };
20
21 dp.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 = new XRegExp('^' + name + '\\[(?<value>\\w+)\\]$', 'gi'),
34                                 match = null
35                                 ;
36                         
37                         for (var i = 0; i < list.length; i++) 
38                                 if ((match = regex.exec(list[i])) != 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 };