Commit e5caad0535d100d8b511702d93241285334f1033
1 parent
63861f76
Exists in
master
and in
29 other branches
ActionItem122: adding codepress javascript text editor
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@2388 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
41 changed files
with
2934 additions
and
0 deletions
Show diff stats
@@ -0,0 +1,21 @@ | @@ -0,0 +1,21 @@ | ||
1 | +body { | ||
2 | + margin-top:13px; | ||
3 | + _margin-top:14px; | ||
4 | + background:white; | ||
5 | + margin-left:32px; | ||
6 | + font-family:monospace; | ||
7 | + font-size:13px; | ||
8 | + white-space:pre; | ||
9 | + background-image:url("images/line-numbers.png"); | ||
10 | + background-repeat:repeat-y; | ||
11 | + background-position:0 3px; | ||
12 | + line-height:16px; | ||
13 | + height:100%; | ||
14 | +} | ||
15 | +pre {margin:0;} | ||
16 | +html>body{background-position:0 2px;} | ||
17 | +P {margin:0;padding:0;border:0;outline:0;display:block;white-space:pre;} | ||
18 | +b, i, s, u, a, em, tt, ins, big, cite, strong, var, dfn {text-decoration:none;font-weight:normal;font-style:normal;font-size:13px;} | ||
19 | + | ||
20 | +body.hide-line-numbers {background:white;margin-left:16px;} | ||
21 | +body.show-line-numbers {background-image:url("images/line-numbers.png");margin-left:32px;} | ||
0 | \ No newline at end of file | 22 | \ No newline at end of file |
@@ -0,0 +1,35 @@ | @@ -0,0 +1,35 @@ | ||
1 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||
2 | +<html> | ||
3 | +<head> | ||
4 | + <title>CodePress - Real Time Syntax Highlighting Editor written in JavaScript</title> | ||
5 | + <meta name="description" content="CodePress - source code editor window" /> | ||
6 | + | ||
7 | + <script type="text/javascript"> | ||
8 | + var language = 'generic'; | ||
9 | + var engine = 'older'; | ||
10 | + var ua = navigator.userAgent; | ||
11 | + var ts = (new Date).getTime(); // timestamp to avoid cache | ||
12 | + var lh = location.href; | ||
13 | + | ||
14 | + if(ua.match('MSIE')) engine = 'msie'; | ||
15 | + else if(ua.match('KHTML')) engine = 'khtml'; | ||
16 | + else if(ua.match('Opera')) engine = 'opera'; | ||
17 | + else if(ua.match('Gecko')) engine = 'gecko'; | ||
18 | + | ||
19 | + if(lh.match('language=')) language = lh.replace(/.*language=(.*?)(&.*)?$/,'$1'); | ||
20 | + | ||
21 | + document.write('<link type="text/css" href="codepress.css?ts='+ts+'" rel="stylesheet" />'); | ||
22 | + document.write('<link type="text/css" href="languages/'+language+'.css?ts='+ts+'" rel="stylesheet" id="cp-lang-style" />'); | ||
23 | + document.write('<scr'+'ipt type="text/javascript" src="engines/'+engine+'.js?ts='+ts+'"></scr'+'ipt>'); | ||
24 | + document.write('<scr'+'ipt type="text/javascript" src="languages/'+language+'.js?ts='+ts+'"></scr'+'ipt>'); | ||
25 | + </script> | ||
26 | + | ||
27 | +</head> | ||
28 | + | ||
29 | +<script type="text/javascript"> | ||
30 | +if(engine == "msie" || engine == "gecko") document.write('<body><pre> </pre></body>'); | ||
31 | +else if(engine == "opera") document.write('<body></body>'); | ||
32 | +// else if(engine == "khtml") document.write('<body> </body>'); | ||
33 | +</script> | ||
34 | + | ||
35 | +</html> |
@@ -0,0 +1,138 @@ | @@ -0,0 +1,138 @@ | ||
1 | +/* | ||
2 | + * CodePress - Real Time Syntax Highlighting Editor written in JavaScript - http://codepress.org/ | ||
3 | + * | ||
4 | + * Copyright (C) 2006 Fernando M.A.d.S. <fermads@gmail.com> | ||
5 | + * | ||
6 | + * This program is free software; you can redistribute it and/or modify it under the terms of the | ||
7 | + * GNU Lesser General Public License as published by the Free Software Foundation. | ||
8 | + * | ||
9 | + * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php | ||
10 | + */ | ||
11 | + | ||
12 | +CodePress = function(obj) { | ||
13 | + var self = document.createElement('iframe'); | ||
14 | + self.textarea = obj; | ||
15 | + self.textarea.disabled = true; | ||
16 | + self.textarea.style.overflow = 'hidden'; | ||
17 | + self.style.height = self.textarea.clientHeight +'px'; | ||
18 | + self.style.width = self.textarea.clientWidth +'px'; | ||
19 | + self.textarea.style.overflow = 'auto'; | ||
20 | + self.style.border = '1px solid gray'; | ||
21 | + self.frameBorder = 0; // remove IE internal iframe border | ||
22 | + self.style.visibility = 'hidden'; | ||
23 | + self.style.position = 'absolute'; | ||
24 | + self.options = self.textarea.className; | ||
25 | + | ||
26 | + self.initialize = function() { | ||
27 | + self.editor = self.contentWindow.CodePress; | ||
28 | + self.editor.body = self.contentWindow.document.getElementsByTagName('body')[0]; | ||
29 | + self.editor.setCode(self.textarea.value); | ||
30 | + self.setOptions(); | ||
31 | + self.editor.syntaxHighlight('init'); | ||
32 | + self.textarea.style.display = 'none'; | ||
33 | + self.style.position = 'static'; | ||
34 | + self.style.visibility = 'visible'; | ||
35 | + self.style.display = 'inline'; | ||
36 | + } | ||
37 | + | ||
38 | + // obj can by a textarea id or a string (code) | ||
39 | + self.edit = function(obj,language) { | ||
40 | + if(obj) self.textarea.value = document.getElementById(obj) ? document.getElementById(obj).value : obj; | ||
41 | + if(!self.textarea.disabled) return; | ||
42 | + self.language = language ? language : self.getLanguage(); | ||
43 | + self.src = CodePress.path+'codepress.html?language='+self.language+'&ts='+(new Date).getTime(); | ||
44 | + if(self.attachEvent) self.attachEvent('onload',self.initialize); | ||
45 | + else self.addEventListener('load',self.initialize,false); | ||
46 | + } | ||
47 | + | ||
48 | + self.getLanguage = function() { | ||
49 | + for (language in CodePress.languages) | ||
50 | + if(self.options.match('\\b'+language+'\\b')) | ||
51 | + return CodePress.languages[language] ? language : 'generic'; | ||
52 | + } | ||
53 | + | ||
54 | + self.setOptions = function() { | ||
55 | + if(self.options.match('autocomplete-off')) self.toggleAutoComplete(); | ||
56 | + if(self.options.match('readonly-on')) self.toggleReadOnly(); | ||
57 | + if(self.options.match('linenumbers-off')) self.toggleLineNumbers(); | ||
58 | + } | ||
59 | + | ||
60 | + self.getCode = function() { | ||
61 | + return self.textarea.disabled ? self.editor.getCode() : self.textarea.value; | ||
62 | + } | ||
63 | + | ||
64 | + self.setCode = function(code) { | ||
65 | + self.textarea.disabled ? self.editor.setCode(code) : self.textarea.value = code; | ||
66 | + } | ||
67 | + | ||
68 | + self.toggleAutoComplete = function() { | ||
69 | + self.editor.autocomplete = (self.editor.autocomplete) ? false : true; | ||
70 | + } | ||
71 | + | ||
72 | + self.toggleReadOnly = function() { | ||
73 | + self.textarea.readOnly = (self.textarea.readOnly) ? false : true; | ||
74 | + if(self.style.display != 'none') // prevent exception on FF + iframe with display:none | ||
75 | + self.editor.readOnly(self.textarea.readOnly ? true : false); | ||
76 | + } | ||
77 | + | ||
78 | + self.toggleLineNumbers = function() { | ||
79 | + var cn = self.editor.body.className; | ||
80 | + self.editor.body.className = (cn==''||cn=='show-line-numbers') ? 'hide-line-numbers' : 'show-line-numbers'; | ||
81 | + } | ||
82 | + | ||
83 | + self.toggleEditor = function() { | ||
84 | + if(self.textarea.disabled) { | ||
85 | + self.textarea.value = self.getCode(); | ||
86 | + self.textarea.disabled = false; | ||
87 | + self.style.display = 'none'; | ||
88 | + self.textarea.style.display = 'inline'; | ||
89 | + } | ||
90 | + else { | ||
91 | + self.textarea.disabled = true; | ||
92 | + self.setCode(self.textarea.value); | ||
93 | + self.editor.syntaxHighlight('init'); | ||
94 | + self.style.display = 'inline'; | ||
95 | + self.textarea.style.display = 'none'; | ||
96 | + } | ||
97 | + } | ||
98 | + | ||
99 | + self.edit(); | ||
100 | + return self; | ||
101 | +} | ||
102 | + | ||
103 | +CodePress.languages = { | ||
104 | + csharp : 'C#', | ||
105 | + css : 'CSS', | ||
106 | + generic : 'Generic', | ||
107 | + html : 'HTML', | ||
108 | + java : 'Java', | ||
109 | + javascript : 'JavaScript', | ||
110 | + perl : 'Perl', | ||
111 | + ruby : 'Ruby', | ||
112 | + php : 'PHP', | ||
113 | + text : 'Text', | ||
114 | + sql : 'SQL', | ||
115 | + vbscript : 'VBScript' | ||
116 | +} | ||
117 | + | ||
118 | + | ||
119 | +CodePress.run = function() { | ||
120 | + s = document.getElementsByTagName('script'); | ||
121 | + for(var i=0,n=s.length;i<n;i++) { | ||
122 | + if(s[i].src.match('codepress.js')) { | ||
123 | + CodePress.path = s[i].src.replace('codepress.js',''); | ||
124 | + } | ||
125 | + } | ||
126 | + t = document.getElementsByTagName('textarea'); | ||
127 | + for(var i=0,n=t.length;i<n;i++) { | ||
128 | + if(t[i].className.match('codepress')) { | ||
129 | + id = t[i].id; | ||
130 | + t[i].id = id+'_cp'; | ||
131 | + eval(id+' = new CodePress(t[i])'); | ||
132 | + t[i].parentNode.insertBefore(eval(id), t[i]); | ||
133 | + } | ||
134 | + } | ||
135 | +} | ||
136 | + | ||
137 | +if(window.attachEvent) window.attachEvent('onload',CodePress.run); | ||
138 | +else window.addEventListener('DOMContentLoaded',CodePress.run,false); |
@@ -0,0 +1,293 @@ | @@ -0,0 +1,293 @@ | ||
1 | +/* | ||
2 | + * CodePress - Real Time Syntax Highlighting Editor written in JavaScript - http://codepress.org/ | ||
3 | + * | ||
4 | + * Copyright (C) 2007 Fernando M.A.d.S. <fermads@gmail.com> | ||
5 | + * | ||
6 | + * Developers: | ||
7 | + * Fernando M.A.d.S. <fermads@gmail.com> | ||
8 | + * Michael Hurni <michael.hurni@gmail.com> | ||
9 | + * Contributors: | ||
10 | + * Martin D. Kirk | ||
11 | + * | ||
12 | + * This program is free software; you can redistribute it and/or modify it under the terms of the | ||
13 | + * GNU Lesser General Public License as published by the Free Software Foundation. | ||
14 | + * | ||
15 | + * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php | ||
16 | + */ | ||
17 | + | ||
18 | +CodePress = { | ||
19 | + scrolling : false, | ||
20 | + autocomplete : true, | ||
21 | + | ||
22 | + // set initial vars and start sh | ||
23 | + initialize : function() { | ||
24 | + if(typeof(editor)=='undefined' && !arguments[0]) return; | ||
25 | + body = document.getElementsByTagName('body')[0]; | ||
26 | + body.innerHTML = body.innerHTML.replace(/\n/g,""); | ||
27 | + chars = '|32|46|62|8|'; // charcodes that trigger syntax highlighting | ||
28 | + cc = '\u2009'; // carret char | ||
29 | + editor = document.getElementsByTagName('pre')[0]; | ||
30 | + document.designMode = 'on'; | ||
31 | + document.addEventListener('keypress', this.keyHandler, true); | ||
32 | + window.addEventListener('scroll', function() { if(!CodePress.scrolling) CodePress.syntaxHighlight('scroll') }, false); | ||
33 | + completeChars = this.getCompleteChars(); | ||
34 | + completeEndingChars = this.getCompleteEndingChars(); | ||
35 | + }, | ||
36 | + | ||
37 | + // treat key bindings | ||
38 | + keyHandler : function(evt) { | ||
39 | + keyCode = evt.keyCode; | ||
40 | + charCode = evt.charCode; | ||
41 | + fromChar = String.fromCharCode(charCode); | ||
42 | + | ||
43 | + if((evt.ctrlKey || evt.metaKey) && evt.shiftKey && charCode!=90) { // shortcuts = ctrl||appleKey+shift+key!=z(undo) | ||
44 | + CodePress.shortcuts(charCode?charCode:keyCode); | ||
45 | + } | ||
46 | + else if( (completeEndingChars.indexOf('|'+fromChar+'|')!= -1 || completeChars.indexOf('|'+fromChar+'|')!=-1) && CodePress.autocomplete) { // auto complete | ||
47 | + if(!CodePress.completeEnding(fromChar)) | ||
48 | + CodePress.complete(fromChar); | ||
49 | + } | ||
50 | + else if(chars.indexOf('|'+charCode+'|')!=-1||keyCode==13) { // syntax highlighting | ||
51 | + top.setTimeout(function(){CodePress.syntaxHighlight('generic');},100); | ||
52 | + } | ||
53 | + else if(keyCode==9 || evt.tabKey) { // snippets activation (tab) | ||
54 | + CodePress.snippets(evt); | ||
55 | + } | ||
56 | + else if(keyCode==46||keyCode==8) { // save to history when delete or backspace pressed | ||
57 | + CodePress.actions.history[CodePress.actions.next()] = editor.innerHTML; | ||
58 | + } | ||
59 | + else if((charCode==122||charCode==121||charCode==90) && evt.ctrlKey) { // undo and redo | ||
60 | + (charCode==121||evt.shiftKey) ? CodePress.actions.redo() : CodePress.actions.undo(); | ||
61 | + evt.preventDefault(); | ||
62 | + } | ||
63 | + else if(charCode==118 && evt.ctrlKey) { // handle paste | ||
64 | + top.setTimeout(function(){CodePress.syntaxHighlight('generic');},100); | ||
65 | + } | ||
66 | + else if(charCode==99 && evt.ctrlKey) { // handle cut | ||
67 | + //alert(window.getSelection().getRangeAt(0).toString().replace(/\t/g,'FFF')); | ||
68 | + } | ||
69 | + | ||
70 | + }, | ||
71 | + | ||
72 | + // put cursor back to its original position after every parsing | ||
73 | + findString : function() { | ||
74 | + if(self.find(cc)) | ||
75 | + window.getSelection().getRangeAt(0).deleteContents(); | ||
76 | + }, | ||
77 | + | ||
78 | + // split big files, highlighting parts of it | ||
79 | + split : function(code,flag) { | ||
80 | + if(flag=='scroll') { | ||
81 | + this.scrolling = true; | ||
82 | + return code; | ||
83 | + } | ||
84 | + else { | ||
85 | + this.scrolling = false; | ||
86 | + mid = code.indexOf(cc); | ||
87 | + if(mid-2000<0) {ini=0;end=4000;} | ||
88 | + else if(mid+2000>code.length) {ini=code.length-4000;end=code.length;} | ||
89 | + else {ini=mid-2000;end=mid+2000;} | ||
90 | + code = code.substring(ini,end); | ||
91 | + return code; | ||
92 | + } | ||
93 | + }, | ||
94 | + | ||
95 | + getEditor : function() { | ||
96 | + if(!document.getElementsByTagName('pre')[0]) { | ||
97 | + body = document.getElementsByTagName('body')[0]; | ||
98 | + if(!body.innerHTML) return body; | ||
99 | + if(body.innerHTML=="<br>") body.innerHTML = "<pre> </pre>"; | ||
100 | + else body.innerHTML = "<pre>"+body.innerHTML+"</pre>"; | ||
101 | + } | ||
102 | + return document.getElementsByTagName('pre')[0]; | ||
103 | + }, | ||
104 | + | ||
105 | + // syntax highlighting parser | ||
106 | + syntaxHighlight : function(flag) { | ||
107 | + //if(document.designMode=='off') document.designMode='on' | ||
108 | + if(flag != 'init') { window.getSelection().getRangeAt(0).insertNode(document.createTextNode(cc));} | ||
109 | + editor = CodePress.getEditor(); | ||
110 | + o = editor.innerHTML; | ||
111 | + o = o.replace(/<br>/g,'\n'); | ||
112 | + o = o.replace(/<.*?>/g,''); | ||
113 | + x = z = this.split(o,flag); | ||
114 | + x = x.replace(/\n/g,'<br>'); | ||
115 | + | ||
116 | + if(arguments[1]&&arguments[2]) x = x.replace(arguments[1],arguments[2]); | ||
117 | + | ||
118 | + for(i=0;i<Language.syntax.length;i++) | ||
119 | + x = x.replace(Language.syntax[i].input,Language.syntax[i].output); | ||
120 | + | ||
121 | + editor.innerHTML = this.actions.history[this.actions.next()] = (flag=='scroll') ? x : o.split(z).join(x); | ||
122 | + if(flag!='init') this.findString(); | ||
123 | + }, | ||
124 | + | ||
125 | + getLastWord : function() { | ||
126 | + var rangeAndCaret = CodePress.getRangeAndCaret(); | ||
127 | + words = rangeAndCaret[0].substring(rangeAndCaret[1]-40,rangeAndCaret[1]); | ||
128 | + words = words.replace(/[\s\n\r\);\W]/g,'\n').split('\n'); | ||
129 | + return words[words.length-1].replace(/[\W]/gi,'').toLowerCase(); | ||
130 | + }, | ||
131 | + | ||
132 | + snippets : function(evt) { | ||
133 | + var snippets = Language.snippets; | ||
134 | + var trigger = this.getLastWord(); | ||
135 | + for (var i=0; i<snippets.length; i++) { | ||
136 | + if(snippets[i].input == trigger) { | ||
137 | + var content = snippets[i].output.replace(/</g,'<'); | ||
138 | + content = content.replace(/>/g,'>'); | ||
139 | + if(content.indexOf('$0')<0) content += cc; | ||
140 | + else content = content.replace(/\$0/,cc); | ||
141 | + content = content.replace(/\n/g,'<br>'); | ||
142 | + var pattern = new RegExp(trigger+cc,'gi'); | ||
143 | + evt.preventDefault(); // prevent the tab key from being added | ||
144 | + this.syntaxHighlight('snippets',pattern,content); | ||
145 | + } | ||
146 | + } | ||
147 | + }, | ||
148 | + | ||
149 | + readOnly : function() { | ||
150 | + document.designMode = (arguments[0]) ? 'off' : 'on'; | ||
151 | + }, | ||
152 | + | ||
153 | + complete : function(trigger) { | ||
154 | + window.getSelection().getRangeAt(0).deleteContents(); | ||
155 | + var complete = Language.complete; | ||
156 | + for (var i=0; i<complete.length; i++) { | ||
157 | + if(complete[i].input == trigger) { | ||
158 | + var pattern = new RegExp('\\'+trigger+cc); | ||
159 | + var content = complete[i].output.replace(/\$0/g,cc); | ||
160 | + parent.setTimeout(function () { CodePress.syntaxHighlight('complete',pattern,content)},0); // wait for char to appear on screen | ||
161 | + } | ||
162 | + } | ||
163 | + }, | ||
164 | + | ||
165 | + getCompleteChars : function() { | ||
166 | + var cChars = ''; | ||
167 | + for(var i=0;i<Language.complete.length;i++) | ||
168 | + cChars += '|'+Language.complete[i].input; | ||
169 | + return cChars+'|'; | ||
170 | + }, | ||
171 | + | ||
172 | + getCompleteEndingChars : function() { | ||
173 | + var cChars = ''; | ||
174 | + for(var i=0;i<Language.complete.length;i++) | ||
175 | + cChars += '|'+Language.complete[i].output.charAt(Language.complete[i].output.length-1); | ||
176 | + return cChars+'|'; | ||
177 | + }, | ||
178 | + | ||
179 | + completeEnding : function(trigger) { | ||
180 | + var range = window.getSelection().getRangeAt(0); | ||
181 | + try { | ||
182 | + range.setEnd(range.endContainer, range.endOffset+1) | ||
183 | + } | ||
184 | + catch(e) { | ||
185 | + return false; | ||
186 | + } | ||
187 | + var next_character = range.toString() | ||
188 | + range.setEnd(range.endContainer, range.endOffset-1) | ||
189 | + if(next_character != trigger) return false; | ||
190 | + else { | ||
191 | + range.setEnd(range.endContainer, range.endOffset+1) | ||
192 | + range.deleteContents(); | ||
193 | + return true; | ||
194 | + } | ||
195 | + }, | ||
196 | + | ||
197 | + shortcuts : function() { | ||
198 | + var cCode = arguments[0]; | ||
199 | + if(cCode==13) cCode = '[enter]'; | ||
200 | + else if(cCode==32) cCode = '[space]'; | ||
201 | + else cCode = '['+String.fromCharCode(charCode).toLowerCase()+']'; | ||
202 | + for(var i=0;i<Language.shortcuts.length;i++) | ||
203 | + if(Language.shortcuts[i].input == cCode) | ||
204 | + this.insertCode(Language.shortcuts[i].output,false); | ||
205 | + }, | ||
206 | + | ||
207 | + getRangeAndCaret : function() { | ||
208 | + var range = window.getSelection().getRangeAt(0); | ||
209 | + var range2 = range.cloneRange(); | ||
210 | + var node = range.endContainer; | ||
211 | + var caret = range.endOffset; | ||
212 | + range2.selectNode(node); | ||
213 | + return [range2.toString(),caret]; | ||
214 | + }, | ||
215 | + | ||
216 | + insertCode : function(code,replaceCursorBefore) { | ||
217 | + var range = window.getSelection().getRangeAt(0); | ||
218 | + var node = window.document.createTextNode(code); | ||
219 | + var selct = window.getSelection(); | ||
220 | + var range2 = range.cloneRange(); | ||
221 | + // Insert text at cursor position | ||
222 | + selct.removeAllRanges(); | ||
223 | + range.deleteContents(); | ||
224 | + range.insertNode(node); | ||
225 | + // Move the cursor to the end of text | ||
226 | + range2.selectNode(node); | ||
227 | + range2.collapse(replaceCursorBefore); | ||
228 | + selct.removeAllRanges(); | ||
229 | + selct.addRange(range2); | ||
230 | + }, | ||
231 | + | ||
232 | + // get code from editor | ||
233 | + getCode : function() { | ||
234 | + if(!document.getElementsByTagName('pre')[0] || editor.innerHTML == '') | ||
235 | + editor = CodePress.getEditor(); | ||
236 | + var code = editor.innerHTML; | ||
237 | + code = code.replace(/<br>/g,'\n'); | ||
238 | + code = code.replace(/\u2009/g,''); | ||
239 | + code = code.replace(/<.*?>/g,''); | ||
240 | + code = code.replace(/</g,'<'); | ||
241 | + code = code.replace(/>/g,'>'); | ||
242 | + code = code.replace(/&/gi,'&'); | ||
243 | + return code; | ||
244 | + }, | ||
245 | + | ||
246 | + // put code inside editor | ||
247 | + setCode : function() { | ||
248 | + var code = arguments[0]; | ||
249 | + code = code.replace(/\u2009/gi,''); | ||
250 | + code = code.replace(/&/gi,'&'); | ||
251 | + code = code.replace(/</g,'<'); | ||
252 | + code = code.replace(/>/g,'>'); | ||
253 | + editor.innerHTML = code; | ||
254 | + if (code == '') | ||
255 | + document.getElementsByTagName('body')[0].innerHTML = ''; | ||
256 | + }, | ||
257 | + | ||
258 | + // undo and redo methods | ||
259 | + actions : { | ||
260 | + pos : -1, // actual history position | ||
261 | + history : [], // history vector | ||
262 | + | ||
263 | + undo : function() { | ||
264 | + editor = CodePress.getEditor(); | ||
265 | + if(editor.innerHTML.indexOf(cc)==-1){ | ||
266 | + if(editor.innerHTML != " ") | ||
267 | + window.getSelection().getRangeAt(0).insertNode(document.createTextNode(cc)); | ||
268 | + this.history[this.pos] = editor.innerHTML; | ||
269 | + } | ||
270 | + this.pos --; | ||
271 | + if(typeof(this.history[this.pos])=='undefined') this.pos ++; | ||
272 | + editor.innerHTML = this.history[this.pos]; | ||
273 | + if(editor.innerHTML.indexOf(cc)>-1) editor.innerHTML+=cc; | ||
274 | + CodePress.findString(); | ||
275 | + }, | ||
276 | + | ||
277 | + redo : function() { | ||
278 | + // editor = CodePress.getEditor(); | ||
279 | + this.pos++; | ||
280 | + if(typeof(this.history[this.pos])=='undefined') this.pos--; | ||
281 | + editor.innerHTML = this.history[this.pos]; | ||
282 | + CodePress.findString(); | ||
283 | + }, | ||
284 | + | ||
285 | + next : function() { // get next vector position and clean old ones | ||
286 | + if(this.pos>20) this.history[this.pos-21] = undefined; | ||
287 | + return ++this.pos; | ||
288 | + } | ||
289 | + } | ||
290 | +} | ||
291 | + | ||
292 | +Language={}; | ||
293 | +window.addEventListener('load', function() { CodePress.initialize('new'); }, true); | ||
0 | \ No newline at end of file | 294 | \ No newline at end of file |
@@ -0,0 +1,304 @@ | @@ -0,0 +1,304 @@ | ||
1 | +/* | ||
2 | + * CodePress - Real Time Syntax Highlighting Editor written in JavaScript - http://codepress.org/ | ||
3 | + * | ||
4 | + * Copyright (C) 2007 Fernando M.A.d.S. <fermads@gmail.com> | ||
5 | + * | ||
6 | + * Developers: | ||
7 | + * Fernando M.A.d.S. <fermads@gmail.com> | ||
8 | + * Michael Hurni <michael.hurni@gmail.com> | ||
9 | + * Contributors: | ||
10 | + * Martin D. Kirk | ||
11 | + * | ||
12 | + * This program is free software; you can redistribute it and/or modify it under the terms of the | ||
13 | + * GNU Lesser General Public License as published by the Free Software Foundation. | ||
14 | + * | ||
15 | + * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php | ||
16 | + */ | ||
17 | + | ||
18 | +CodePress = { | ||
19 | + scrolling : false, | ||
20 | + autocomplete : true, | ||
21 | + | ||
22 | + // set initial vars and start sh | ||
23 | + initialize : function() { | ||
24 | + if(typeof(editor)=='undefined' && !arguments[0]) return; | ||
25 | + chars = '|32|46|62|'; // charcodes that trigger syntax highlighting | ||
26 | + cc = '\u2009'; // carret char | ||
27 | + editor = document.getElementsByTagName('pre')[0]; | ||
28 | + editor.contentEditable = 'true'; | ||
29 | + document.getElementsByTagName('body')[0].onfocus = function() {editor.focus();} | ||
30 | + document.attachEvent('onkeydown', this.metaHandler); | ||
31 | + document.attachEvent('onkeypress', this.keyHandler); | ||
32 | + window.attachEvent('onscroll', function() { if(!CodePress.scrolling) setTimeout(function(){CodePress.syntaxHighlight('scroll')},1)}); | ||
33 | + completeChars = this.getCompleteChars(); | ||
34 | + completeEndingChars = this.getCompleteEndingChars(); | ||
35 | + setTimeout(function() { window.scroll(0,0) },50); // scroll IE to top | ||
36 | + }, | ||
37 | + | ||
38 | + // treat key bindings | ||
39 | + keyHandler : function(evt) { | ||
40 | + charCode = evt.keyCode; | ||
41 | + fromChar = String.fromCharCode(charCode); | ||
42 | + | ||
43 | + if( (completeEndingChars.indexOf('|'+fromChar+'|')!= -1 || completeChars.indexOf('|'+fromChar+'|')!=-1 )&& CodePress.autocomplete) { // auto complete | ||
44 | + if(!CodePress.completeEnding(fromChar)) | ||
45 | + CodePress.complete(fromChar); | ||
46 | + } | ||
47 | + else if(chars.indexOf('|'+charCode+'|')!=-1||charCode==13) { // syntax highlighting | ||
48 | + CodePress.syntaxHighlight('generic'); | ||
49 | + } | ||
50 | + }, | ||
51 | + | ||
52 | + metaHandler : function(evt) { | ||
53 | + keyCode = evt.keyCode; | ||
54 | + | ||
55 | + if(keyCode==9 || evt.tabKey) { | ||
56 | + CodePress.snippets(); | ||
57 | + } | ||
58 | + else if((keyCode==122||keyCode==121||keyCode==90) && evt.ctrlKey) { // undo and redo | ||
59 | + (keyCode==121||evt.shiftKey) ? CodePress.actions.redo() : CodePress.actions.undo(); | ||
60 | + evt.returnValue = false; | ||
61 | + } | ||
62 | + else if(keyCode==34||keyCode==33) { // handle page up/down for IE | ||
63 | + self.scrollBy(0, (keyCode==34) ? 200 : -200); | ||
64 | + evt.returnValue = false; | ||
65 | + } | ||
66 | + else if(keyCode==46||keyCode==8) { // save to history when delete or backspace pressed | ||
67 | + CodePress.actions.history[CodePress.actions.next()] = editor.innerHTML; | ||
68 | + } | ||
69 | + else if((evt.ctrlKey || evt.metaKey) && evt.shiftKey && keyCode!=90) { // shortcuts = ctrl||appleKey+shift+key!=z(undo) | ||
70 | + CodePress.shortcuts(keyCode); | ||
71 | + evt.returnValue = false; | ||
72 | + } | ||
73 | + else if(keyCode==86 && evt.ctrlKey) { // handle paste | ||
74 | + window.clipboardData.setData('Text',window.clipboardData.getData('Text').replace(/\t/g,'\u2008')); | ||
75 | + top.setTimeout(function(){CodePress.syntaxHighlight('paste');},10); | ||
76 | + } | ||
77 | + else if(keyCode==67 && evt.ctrlKey) { // handle cut | ||
78 | + // window.clipboardData.setData('Text',x[0]); | ||
79 | + // code = window.clipboardData.getData('Text'); | ||
80 | + } | ||
81 | + }, | ||
82 | + | ||
83 | + // put cursor back to its original position after every parsing | ||
84 | + | ||
85 | + | ||
86 | + findString : function() { | ||
87 | + range = self.document.body.createTextRange(); | ||
88 | + if(range.findText(cc)){ | ||
89 | + range.select(); | ||
90 | + range.text = ''; | ||
91 | + } | ||
92 | + }, | ||
93 | + | ||
94 | + // split big files, highlighting parts of it | ||
95 | + split : function(code,flag) { | ||
96 | + if(flag=='scroll') { | ||
97 | + this.scrolling = true; | ||
98 | + return code; | ||
99 | + } | ||
100 | + else { | ||
101 | + this.scrolling = false; | ||
102 | + mid = code.indexOf(cc); | ||
103 | + if(mid-2000<0) {ini=0;end=4000;} | ||
104 | + else if(mid+2000>code.length) {ini=code.length-4000;end=code.length;} | ||
105 | + else {ini=mid-2000;end=mid+2000;} | ||
106 | + code = code.substring(ini,end); | ||
107 | + return code.substring(code.indexOf('<P>'),code.lastIndexOf('</P>')+4); | ||
108 | + } | ||
109 | + }, | ||
110 | + | ||
111 | + // syntax highlighting parser | ||
112 | + syntaxHighlight : function(flag) { | ||
113 | + if(flag!='init') document.selection.createRange().text = cc; | ||
114 | + o = editor.innerHTML; | ||
115 | + if(flag=='paste') { // fix pasted text | ||
116 | + o = o.replace(/<BR>/g,'\r\n'); | ||
117 | + o = o.replace(/\u2008/g,'\t'); | ||
118 | + } | ||
119 | + o = o.replace(/<P>/g,'\n'); | ||
120 | + o = o.replace(/<\/P>/g,'\r'); | ||
121 | + o = o.replace(/<.*?>/g,''); | ||
122 | + o = o.replace(/ /g,''); | ||
123 | + o = '<PRE><P>'+o+'</P></PRE>'; | ||
124 | + o = o.replace(/\n\r/g,'<P></P>'); | ||
125 | + o = o.replace(/\n/g,'<P>'); | ||
126 | + o = o.replace(/\r/g,'<\/P>'); | ||
127 | + o = o.replace(/<P>(<P>)+/,'<P>'); | ||
128 | + o = o.replace(/<\/P>(<\/P>)+/,'</P>'); | ||
129 | + o = o.replace(/<P><\/P>/g,'<P><BR/></P>'); | ||
130 | + x = z = this.split(o,flag); | ||
131 | + | ||
132 | + if(arguments[1]&&arguments[2]) x = x.replace(arguments[1],arguments[2]); | ||
133 | + | ||
134 | + for(i=0;i<Language.syntax.length;i++) | ||
135 | + x = x.replace(Language.syntax[i].input,Language.syntax[i].output); | ||
136 | + | ||
137 | + editor.innerHTML = this.actions.history[this.actions.next()] = (flag=='scroll') ? x : o.replace(z,x); | ||
138 | + if(flag!='init') this.findString(); | ||
139 | + }, | ||
140 | + | ||
141 | + snippets : function(evt) { | ||
142 | + var snippets = Language.snippets; | ||
143 | + var trigger = this.getLastWord(); | ||
144 | + for (var i=0; i<snippets.length; i++) { | ||
145 | + if(snippets[i].input == trigger) { | ||
146 | + var content = snippets[i].output.replace(/</g,'<'); | ||
147 | + content = content.replace(/>/g,'>'); | ||
148 | + if(content.indexOf('$0')<0) content += cc; | ||
149 | + else content = content.replace(/\$0/,cc); | ||
150 | + content = content.replace(/\n/g,'</P><P>'); | ||
151 | + var pattern = new RegExp(trigger+cc,"gi"); | ||
152 | + this.syntaxHighlight('snippets',pattern,content); | ||
153 | + } | ||
154 | + } | ||
155 | + }, | ||
156 | + | ||
157 | + readOnly : function() { | ||
158 | + editor.contentEditable = (arguments[0]) ? 'false' : 'true'; | ||
159 | + }, | ||
160 | + | ||
161 | + complete : function(trigger) { | ||
162 | + var complete = Language.complete; | ||
163 | + for (var i=0; i<complete.length; i++) { | ||
164 | + if(complete[i].input == trigger) { | ||
165 | + var pattern = new RegExp('\\'+trigger+cc); | ||
166 | + var content = complete[i].output.replace(/\$0/g,cc); | ||
167 | + setTimeout(function () { CodePress.syntaxHighlight('complete',pattern,content)},0); // wait for char to appear on screen | ||
168 | + } | ||
169 | + } | ||
170 | + }, | ||
171 | + | ||
172 | + getCompleteChars : function() { | ||
173 | + var cChars = ''; | ||
174 | + for(var i=0;i<Language.complete.length;i++) | ||
175 | + cChars += '|'+Language.complete[i].input; | ||
176 | + return cChars+'|'; | ||
177 | + }, | ||
178 | + | ||
179 | + getCompleteEndingChars : function() { | ||
180 | + var cChars = ''; | ||
181 | + for(var i=0;i<Language.complete.length;i++) | ||
182 | + cChars += '|'+Language.complete[i].output.charAt(Language.complete[i].output.length-1); | ||
183 | + return cChars+'|'; | ||
184 | + }, | ||
185 | + | ||
186 | + completeEnding : function(trigger) { | ||
187 | + var range = document.selection.createRange(); | ||
188 | + try { | ||
189 | + range.moveEnd('character', 1) | ||
190 | + } | ||
191 | + catch(e) { | ||
192 | + return false; | ||
193 | + } | ||
194 | + var next_character = range.text | ||
195 | + range.moveEnd('character', -1) | ||
196 | + if(next_character != trigger ) return false; | ||
197 | + else { | ||
198 | + range.moveEnd('character', 1) | ||
199 | + range.text='' | ||
200 | + return true; | ||
201 | + } | ||
202 | + }, | ||
203 | + | ||
204 | + shortcuts : function() { | ||
205 | + var cCode = arguments[0]; | ||
206 | + if(cCode==13) cCode = '[enter]'; | ||
207 | + else if(cCode==32) cCode = '[space]'; | ||
208 | + else cCode = '['+String.fromCharCode(keyCode).toLowerCase()+']'; | ||
209 | + for(var i=0;i<Language.shortcuts.length;i++) | ||
210 | + if(Language.shortcuts[i].input == cCode) | ||
211 | + this.insertCode(Language.shortcuts[i].output,false); | ||
212 | + }, | ||
213 | + | ||
214 | + getLastWord : function() { | ||
215 | + var rangeAndCaret = CodePress.getRangeAndCaret(); | ||
216 | + words = rangeAndCaret[0].substring(rangeAndCaret[1]-40,rangeAndCaret[1]); | ||
217 | + words = words.replace(/[\s\n\r\);\W]/g,'\n').split('\n'); | ||
218 | + return words[words.length-1].replace(/[\W]/gi,'').toLowerCase(); | ||
219 | + }, | ||
220 | + | ||
221 | + getRangeAndCaret : function() { | ||
222 | + var range = document.selection.createRange(); | ||
223 | + var caret = Math.abs(range.moveStart('character', -1000000)+1); | ||
224 | + range = this.getCode(); | ||
225 | + range = range.replace(/\n\r/gi,' '); | ||
226 | + range = range.replace(/\n/gi,''); | ||
227 | + return [range.toString(),caret]; | ||
228 | + }, | ||
229 | + | ||
230 | + insertCode : function(code,replaceCursorBefore) { | ||
231 | + var repdeb = ''; | ||
232 | + var repfin = ''; | ||
233 | + | ||
234 | + if(replaceCursorBefore) { repfin = code; } | ||
235 | + else { repdeb = code; } | ||
236 | + | ||
237 | + if(typeof document.selection != 'undefined') { | ||
238 | + var range = document.selection.createRange(); | ||
239 | + range.text = repdeb + repfin; | ||
240 | + range = document.selection.createRange(); | ||
241 | + range.move('character', -repfin.length); | ||
242 | + range.select(); | ||
243 | + } | ||
244 | + }, | ||
245 | + | ||
246 | + // get code from editor | ||
247 | + getCode : function() { | ||
248 | + var code = editor.innerHTML; | ||
249 | + code = code.replace(/<br>/g,'\n'); | ||
250 | + code = code.replace(/<\/p>/gi,'\r'); | ||
251 | + code = code.replace(/<p>/i,''); // IE first line fix | ||
252 | + code = code.replace(/<p>/gi,'\n'); | ||
253 | + code = code.replace(/ /gi,''); | ||
254 | + code = code.replace(/\u2009/g,''); | ||
255 | + code = code.replace(/<.*?>/g,''); | ||
256 | + code = code.replace(/</g,'<'); | ||
257 | + code = code.replace(/>/g,'>'); | ||
258 | + code = code.replace(/&/gi,'&'); | ||
259 | + return code; | ||
260 | + }, | ||
261 | + | ||
262 | + // put code inside editor | ||
263 | + setCode : function() { | ||
264 | + var code = arguments[0]; | ||
265 | + code = code.replace(/\u2009/gi,''); | ||
266 | + code = code.replace(/&/gi,'&'); | ||
267 | + code = code.replace(/</g,'<'); | ||
268 | + code = code.replace(/>/g,'>'); | ||
269 | + editor.innerHTML = '<pre>'+code+'</pre>'; | ||
270 | + }, | ||
271 | + | ||
272 | + | ||
273 | + // undo and redo methods | ||
274 | + actions : { | ||
275 | + pos : -1, // actual history position | ||
276 | + history : [], // history vector | ||
277 | + | ||
278 | + undo : function() { | ||
279 | + if(editor.innerHTML.indexOf(cc)==-1){ | ||
280 | + document.selection.createRange().text = cc; | ||
281 | + this.history[this.pos] = editor.innerHTML; | ||
282 | + } | ||
283 | + this.pos--; | ||
284 | + if(typeof(this.history[this.pos])=='undefined') this.pos++; | ||
285 | + editor.innerHTML = this.history[this.pos]; | ||
286 | + CodePress.findString(); | ||
287 | + }, | ||
288 | + | ||
289 | + redo : function() { | ||
290 | + this.pos++; | ||
291 | + if(typeof(this.history[this.pos])=='undefined') this.pos--; | ||
292 | + editor.innerHTML = this.history[this.pos]; | ||
293 | + CodePress.findString(); | ||
294 | + }, | ||
295 | + | ||
296 | + next : function() { // get next vector position and clean old ones | ||
297 | + if(this.pos>20) this.history[this.pos-21] = undefined; | ||
298 | + return ++this.pos; | ||
299 | + } | ||
300 | + } | ||
301 | +} | ||
302 | + | ||
303 | +Language={}; | ||
304 | +window.attachEvent('onload', function() { CodePress.initialize('new');}); | ||
0 | \ No newline at end of file | 305 | \ No newline at end of file |
@@ -0,0 +1,260 @@ | @@ -0,0 +1,260 @@ | ||
1 | +/* | ||
2 | + * CodePress - Real Time Syntax Highlighting Editor written in JavaScript - http://codepress.org/ | ||
3 | + * | ||
4 | + * Copyright (C) 2007 Fernando M.A.d.S. <fermads@gmail.com> | ||
5 | + * | ||
6 | + * Contributors : | ||
7 | + * | ||
8 | + * Michael Hurni <michael.hurni@gmail.com> | ||
9 | + * | ||
10 | + * This program is free software; you can redistribute it and/or modify it under the terms of the | ||
11 | + * GNU Lesser General Public License as published by the Free Software Foundation. | ||
12 | + * | ||
13 | + * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php | ||
14 | + */ | ||
15 | + | ||
16 | + | ||
17 | +CodePress = { | ||
18 | + scrolling : false, | ||
19 | + autocomplete : true, | ||
20 | + | ||
21 | + // set initial vars and start sh | ||
22 | + initialize : function() { | ||
23 | + if(typeof(editor)=='undefined' && !arguments[0]) return; | ||
24 | + chars = '|32|46|62|'; // charcodes that trigger syntax highlighting | ||
25 | + cc = '\u2009'; // control char | ||
26 | + editor = document.getElementsByTagName('body')[0]; | ||
27 | + document.designMode = 'on'; | ||
28 | + document.addEventListener('keyup', this.keyHandler, true); | ||
29 | + window.addEventListener('scroll', function() { if(!CodePress.scrolling) CodePress.syntaxHighlight('scroll') }, false); | ||
30 | + completeChars = this.getCompleteChars(); | ||
31 | +// CodePress.syntaxHighlight('init'); | ||
32 | + }, | ||
33 | + | ||
34 | + // treat key bindings | ||
35 | + keyHandler : function(evt) { | ||
36 | + keyCode = evt.keyCode; | ||
37 | + charCode = evt.charCode; | ||
38 | + | ||
39 | + if((evt.ctrlKey || evt.metaKey) && evt.shiftKey && charCode!=90) { // shortcuts = ctrl||appleKey+shift+key!=z(undo) | ||
40 | + CodePress.shortcuts(charCode?charCode:keyCode); | ||
41 | + } | ||
42 | + else if(completeChars.indexOf('|'+String.fromCharCode(charCode)+'|')!=-1 && CodePress.autocomplete) { // auto complete | ||
43 | + CodePress.complete(String.fromCharCode(charCode)); | ||
44 | + } | ||
45 | + else if(chars.indexOf('|'+charCode+'|')!=-1||keyCode==13) { // syntax highlighting | ||
46 | + CodePress.syntaxHighlight('generic'); | ||
47 | + } | ||
48 | + else if(keyCode==9 || evt.tabKey) { // snippets activation (tab) | ||
49 | + CodePress.snippets(evt); | ||
50 | + } | ||
51 | + else if(keyCode==46||keyCode==8) { // save to history when delete or backspace pressed | ||
52 | + CodePress.actions.history[CodePress.actions.next()] = editor.innerHTML; | ||
53 | + } | ||
54 | + else if((charCode==122||charCode==121||charCode==90) && evt.ctrlKey) { // undo and redo | ||
55 | + (charCode==121||evt.shiftKey) ? CodePress.actions.redo() : CodePress.actions.undo(); | ||
56 | + evt.preventDefault(); | ||
57 | + } | ||
58 | + else if(keyCode==86 && evt.ctrlKey) { // paste | ||
59 | + // TODO: pasted text should be parsed and highlighted | ||
60 | + } | ||
61 | + }, | ||
62 | + | ||
63 | + // put cursor back to its original position after every parsing | ||
64 | + findString : function() { | ||
65 | + var sel = window.getSelection(); | ||
66 | + var range = window.document.createRange(); | ||
67 | + var span = window.document.getElementsByTagName('span')[0]; | ||
68 | + | ||
69 | + range.selectNode(span); | ||
70 | + sel.removeAllRanges(); | ||
71 | + sel.addRange(range); | ||
72 | + span.parentNode.removeChild(span); | ||
73 | + //if(self.find(cc)) | ||
74 | + //window.getSelection().getRangeAt(0).deleteContents(); | ||
75 | + }, | ||
76 | + | ||
77 | + // split big files, highlighting parts of it | ||
78 | + split : function(code,flag) { | ||
79 | + if(flag=='scroll') { | ||
80 | + this.scrolling = true; | ||
81 | + return code; | ||
82 | + } | ||
83 | + else { | ||
84 | + this.scrolling = false; | ||
85 | + mid = code.indexOf('<SPAN>'); | ||
86 | + if(mid-2000<0) {ini=0;end=4000;} | ||
87 | + else if(mid+2000>code.length) {ini=code.length-4000;end=code.length;} | ||
88 | + else {ini=mid-2000;end=mid+2000;} | ||
89 | + code = code.substring(ini,end); | ||
90 | + return code; | ||
91 | + } | ||
92 | + }, | ||
93 | + | ||
94 | + // syntax highlighting parser | ||
95 | + syntaxHighlight : function(flag) { | ||
96 | + //if(document.designMode=='off') document.designMode='on' | ||
97 | + if(flag!='init') { | ||
98 | + var span = document.createElement('span'); | ||
99 | + window.getSelection().getRangeAt(0).insertNode(span); | ||
100 | + } | ||
101 | + | ||
102 | + o = editor.innerHTML; | ||
103 | +// o = o.replace(/<br>/g,'\r\n'); | ||
104 | +// o = o.replace(/<(b|i|s|u|a|em|tt|ins|big|cite|strong)?>/g,''); | ||
105 | + //alert(o) | ||
106 | + o = o.replace(/<(?!span|\/span|br).*?>/gi,''); | ||
107 | +// alert(o) | ||
108 | +// x = o; | ||
109 | + x = z = this.split(o,flag); | ||
110 | + //alert(z) | ||
111 | +// x = x.replace(/\r\n/g,'<br>'); | ||
112 | + x = x.replace(/\t/g, ' '); | ||
113 | + | ||
114 | + | ||
115 | + if(arguments[1]&&arguments[2]) x = x.replace(arguments[1],arguments[2]); | ||
116 | + | ||
117 | + for(i=0;i<Language.syntax.length;i++) | ||
118 | + x = x.replace(Language.syntax[i].input,Language.syntax[i].output); | ||
119 | + | ||
120 | + editor.innerHTML = this.actions.history[this.actions.next()] = (flag=='scroll') ? x : o.split(z).join(x); | ||
121 | + | ||
122 | + if(flag!='init') this.findString(); | ||
123 | + }, | ||
124 | + | ||
125 | + getLastWord : function() { | ||
126 | + var rangeAndCaret = CodePress.getRangeAndCaret(); | ||
127 | + words = rangeAndCaret[0].substring(rangeAndCaret[1]-40,rangeAndCaret[1]); | ||
128 | + words = words.replace(/[\s\n\r\);\W]/g,'\n').split('\n'); | ||
129 | + return words[words.length-1].replace(/[\W]/gi,'').toLowerCase(); | ||
130 | + }, | ||
131 | + | ||
132 | + snippets : function(evt) { | ||
133 | + var snippets = Language.snippets; | ||
134 | + var trigger = this.getLastWord(); | ||
135 | + for (var i=0; i<snippets.length; i++) { | ||
136 | + if(snippets[i].input == trigger) { | ||
137 | + var content = snippets[i].output.replace(/</g,'<'); | ||
138 | + content = content.replace(/>/g,'>'); | ||
139 | + if(content.indexOf('$0')<0) content += cc; | ||
140 | + else content = content.replace(/\$0/,cc); | ||
141 | + content = content.replace(/\n/g,'<br>'); | ||
142 | + var pattern = new RegExp(trigger+cc,'gi'); | ||
143 | + evt.preventDefault(); // prevent the tab key from being added | ||
144 | + this.syntaxHighlight('snippets',pattern,content); | ||
145 | + } | ||
146 | + } | ||
147 | + }, | ||
148 | + | ||
149 | + readOnly : function() { | ||
150 | + document.designMode = (arguments[0]) ? 'off' : 'on'; | ||
151 | + }, | ||
152 | + | ||
153 | + complete : function(trigger) { | ||
154 | + window.getSelection().getRangeAt(0).deleteContents(); | ||
155 | + var complete = Language.complete; | ||
156 | + for (var i=0; i<complete.length; i++) { | ||
157 | + if(complete[i].input == trigger) { | ||
158 | + var pattern = new RegExp('\\'+trigger+cc); | ||
159 | + var content = complete[i].output.replace(/\$0/g,cc); | ||
160 | + parent.setTimeout(function () { CodePress.syntaxHighlight('complete',pattern,content)},0); // wait for char to appear on screen | ||
161 | + } | ||
162 | + } | ||
163 | + }, | ||
164 | + | ||
165 | + getCompleteChars : function() { | ||
166 | + var cChars = ''; | ||
167 | + for(var i=0;i<Language.complete.length;i++) | ||
168 | + cChars += '|'+Language.complete[i].input; | ||
169 | + return cChars+'|'; | ||
170 | + }, | ||
171 | + | ||
172 | + shortcuts : function() { | ||
173 | + var cCode = arguments[0]; | ||
174 | + if(cCode==13) cCode = '[enter]'; | ||
175 | + else if(cCode==32) cCode = '[space]'; | ||
176 | + else cCode = '['+String.fromCharCode(charCode).toLowerCase()+']'; | ||
177 | + for(var i=0;i<Language.shortcuts.length;i++) | ||
178 | + if(Language.shortcuts[i].input == cCode) | ||
179 | + this.insertCode(Language.shortcuts[i].output,false); | ||
180 | + }, | ||
181 | + | ||
182 | + getRangeAndCaret : function() { | ||
183 | + var range = window.getSelection().getRangeAt(0); | ||
184 | + var range2 = range.cloneRange(); | ||
185 | + var node = range.endContainer; | ||
186 | + var caret = range.endOffset; | ||
187 | + range2.selectNode(node); | ||
188 | + return [range2.toString(),caret]; | ||
189 | + }, | ||
190 | + | ||
191 | + insertCode : function(code,replaceCursorBefore) { | ||
192 | + var range = window.getSelection().getRangeAt(0); | ||
193 | + var node = window.document.createTextNode(code); | ||
194 | + var selct = window.getSelection(); | ||
195 | + var range2 = range.cloneRange(); | ||
196 | + // Insert text at cursor position | ||
197 | + selct.removeAllRanges(); | ||
198 | + range.deleteContents(); | ||
199 | + range.insertNode(node); | ||
200 | + // Move the cursor to the end of text | ||
201 | + range2.selectNode(node); | ||
202 | + range2.collapse(replaceCursorBefore); | ||
203 | + selct.removeAllRanges(); | ||
204 | + selct.addRange(range2); | ||
205 | + }, | ||
206 | + | ||
207 | + // get code from editor | ||
208 | + getCode : function() { | ||
209 | + var code = editor.innerHTML; | ||
210 | + code = code.replace(/<br>/g,'\n'); | ||
211 | + code = code.replace(/\u2009/g,''); | ||
212 | + code = code.replace(/<.*?>/g,''); | ||
213 | + code = code.replace(/</g,'<'); | ||
214 | + code = code.replace(/>/g,'>'); | ||
215 | + code = code.replace(/&/gi,'&'); | ||
216 | + return code; | ||
217 | + }, | ||
218 | + | ||
219 | + // put code inside editor | ||
220 | + setCode : function() { | ||
221 | + var code = arguments[0]; | ||
222 | + code = code.replace(/\u2009/gi,''); | ||
223 | + code = code.replace(/&/gi,'&'); | ||
224 | + code = code.replace(/</g,'<'); | ||
225 | + code = code.replace(/>/g,'>'); | ||
226 | + editor.innerHTML = code; | ||
227 | + }, | ||
228 | + | ||
229 | + // undo and redo methods | ||
230 | + actions : { | ||
231 | + pos : -1, // actual history position | ||
232 | + history : [], // history vector | ||
233 | + | ||
234 | + undo : function() { | ||
235 | + if(editor.innerHTML.indexOf(cc)==-1){ | ||
236 | + window.getSelection().getRangeAt(0).insertNode(document.createTextNode(cc)); | ||
237 | + this.history[this.pos] = editor.innerHTML; | ||
238 | + } | ||
239 | + this.pos--; | ||
240 | + if(typeof(this.history[this.pos])=='undefined') this.pos++; | ||
241 | + editor.innerHTML = this.history[this.pos]; | ||
242 | + CodePress.findString(); | ||
243 | + }, | ||
244 | + | ||
245 | + redo : function() { | ||
246 | + this.pos++; | ||
247 | + if(typeof(this.history[this.pos])=='undefined') this.pos--; | ||
248 | + editor.innerHTML = this.history[this.pos]; | ||
249 | + CodePress.findString(); | ||
250 | + }, | ||
251 | + | ||
252 | + next : function() { // get next vector position and clean old ones | ||
253 | + if(this.pos>20) this.history[this.pos-21] = undefined; | ||
254 | + return ++this.pos; | ||
255 | + } | ||
256 | + } | ||
257 | +} | ||
258 | + | ||
259 | +Language={}; | ||
260 | +window.addEventListener('load', function() { CodePress.initialize('new'); }, true); |
16.2 KB
@@ -0,0 +1,443 @@ | @@ -0,0 +1,443 @@ | ||
1 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||
2 | + | ||
3 | +<html> | ||
4 | +<head> | ||
5 | + <title>CodePress - Real Time Syntax Highlighting Editor written in JavaScript</title> | ||
6 | + | ||
7 | + <style> | ||
8 | + body {color:#000;background-color:white;font:15px georgia, "Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif; letter-spacing:0.01em;margin:15px;} | ||
9 | + p {margin:0 0 15px 0;} | ||
10 | + a,a:visited {color:#7f0055;} | ||
11 | + select {background:#ffffe1;} | ||
12 | + button {margin-top:5px;} | ||
13 | + button.actions {width:171px;font-family:arial;} | ||
14 | + h1 {color:#7f0055;margin:0;padding:0;font-size:42px;font-weight:normal;} | ||
15 | + h1 a {text-decoration:none;} | ||
16 | + h2 {margin:0;} | ||
17 | + h2 a {text-decoration:none;font-weight:normal;font-size:22px;color:black !important;} | ||
18 | + h3 {font-size:20px;font-weight:normal;padding:0;margin:25px 0 5px 0;color:#7f0055;font-weight:bold;border-bottom:2px dotted #d8d8d8;} | ||
19 | + h4 {font-size:18px;font-weight:normal;z-index:0;} | ||
20 | + code {color:#0080c0;font-size:13px;font-weight:bold;} | ||
21 | + ol, ul {padding:5px 0 5px 25px;margin:0;} | ||
22 | + ol li, ul li {margin:8px 0 8px 0;} | ||
23 | + | ||
24 | + #logo {text-align:center;background-color:#d6d6d6;padding:10px;-moz-border-radius:5px;border:1px solid silver;} | ||
25 | + #container {width:700px;margin:20px auto;padding:25px;border:3px solid #d9d9d9;-moz-border-radius:10px;background:#f8f8f8;} | ||
26 | + #languages {margin:5px 0;} | ||
27 | + | ||
28 | + #menu {width:100%;background:#7f0055;-moz-border-radius:4px;} | ||
29 | + #menu a {font:bold 17px georgia;color:white;padding:4px;display:block;border-left:1px solid white;text-align:center;text-decoration:none;} | ||
30 | + #menu a:hover {background:#b9669e;} | ||
31 | + | ||
32 | + .hidden-code {display:none;} | ||
33 | + .copycode {border:1px dotted gray;padding:10px;background:white;font-family:monospace;color:gray} | ||
34 | + </style> | ||
35 | + | ||
36 | +</head> | ||
37 | + | ||
38 | +<body> | ||
39 | +<div id="container"> | ||
40 | + | ||
41 | +<div id="logo"> | ||
42 | + <h1><a href="http://codepress.org/">CodePress</a></h1> | ||
43 | + <h2><a href="http://codepress.org/">Online Real Time Syntax Highlighting Editor</a></h2> | ||
44 | +</div> | ||
45 | + | ||
46 | +<br /> | ||
47 | + | ||
48 | +<table cellpadding="0" cellspacing="0" id="menu"> | ||
49 | +<tr> | ||
50 | + <td> | ||
51 | + <a href="http://www.codepress.org/index.php">Home/Download</a> | ||
52 | + </td> | ||
53 | + <td> | ||
54 | + <a href="http://www.codepress.org/install.php"> Install </a> | ||
55 | + </td> | ||
56 | + <td> | ||
57 | + <a href="http://www.codepress.org/to-do.php"> To-do </a> | ||
58 | + </td> | ||
59 | + <td> | ||
60 | + <a href="http://www.codepress.org/about.php" id="about"> About </a> | ||
61 | + </td> | ||
62 | +</tr> | ||
63 | +</table> | ||
64 | + | ||
65 | +<h4> | ||
66 | + CodePress is web-based source code editor with syntax highlighting written in JavaScript that colors text in real time while it's being typed in the browser. | ||
67 | +</h4> | ||
68 | + | ||
69 | +<p> | ||
70 | + Go to <strong><a href="http://codepress.org/">http://codepress.org/</a></strong> for updates. | ||
71 | +</p> | ||
72 | + | ||
73 | +<h3>Demo</h3> | ||
74 | +<div id="languages"> | ||
75 | + <em>choose example in:</em> | ||
76 | + <button onclick="cp1.edit('cp-php','php')">PHP</button> | ||
77 | + <button onclick="cp1.edit('cp-javascript','javascript')">JavaScript</button> | ||
78 | + <button onclick="cp1.edit('cp-java','java')">Java</button> | ||
79 | + <button onclick="cp1.edit('cp-perl','perl')">Perl</button> | ||
80 | + <button onclick="cp1.edit('cp-sql','sql')">SQL</button> | ||
81 | + <button onclick="cp1.edit('cp-html','html')">HTML</button> | ||
82 | + <button onclick="cp1.edit('cp-css','css')">CSS</button> | ||
83 | +</div> | ||
84 | + | ||
85 | +<textarea id="cp1" class="codepress php" style="width:700px;height:300px;" wrap="off"> | ||
86 | +<?php | ||
87 | +// Very simple implementation of server side script | ||
88 | + | ||
89 | +if(isset($_GET['file'])) { | ||
90 | + $file = basename($_GET['file']); | ||
91 | + $full_file = $path['server'].'/'.$path['webdocs'].'/'.$path['files']."/".$file; | ||
92 | + if(file_exists($full_file)) { | ||
93 | + $code = file_get_contents($full_file); | ||
94 | + $code = preg_replace("/>/","&gt;",$code); | ||
95 | + $code = preg_replace("/</","&lt;",$code); | ||
96 | + $language = getLanguage($file); | ||
97 | + } | ||
98 | +} | ||
99 | +?> | ||
100 | + | ||
101 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||
102 | +<html> | ||
103 | +<head> | ||
104 | + <title>CodePress - Real Time Syntax Highlighting Editor written in JavaScript</title> | ||
105 | + <link type="text/css" href="languages/codepress-<?=$language?>.css" rel="stylesheet" id="cp-lang-style" /> | ||
106 | + <script type="text/javascript" src="codepress.js"></script> | ||
107 | + <script type="text/javascript"> | ||
108 | + CodePress.language = '<?=$language?>'; | ||
109 | + </script> | ||
110 | +</head> | ||
111 | +<body id="ffedt"><pre id="ieedt"><?=$code?></pre></body> | ||
112 | +</html> | ||
113 | +</textarea> | ||
114 | + | ||
115 | +<br /><br /> | ||
116 | + | ||
117 | +<textarea id="codepress2" class="codepress javascript linenumbers-off" style="width:700px;height:200px;" wrap="off"> | ||
118 | +//set language | ||
119 | +this.setLanguage = function() { | ||
120 | + if(arguments[0]) { | ||
121 | + language = (typeof(Content.languages[arguments[0]])!='undefined') ? arguments[0] : this.setLanguage(); | ||
122 | + cpLanguage.innerHTML = Content.languages[language].name; | ||
123 | + if(cpBody.document.designMode=='on') cpBody.document.designMode = 'off'; | ||
124 | + CodePress.loadScript(cpBody.document, '../languages/'+language+'.js', function () { cpBody.CodePress.syntaxHighlight('init'); }) | ||
125 | + cpBody.document.getElementById('cp-lang-style').href = '../languages/'+language+'.css'; | ||
126 | + this.hideMenu(); | ||
127 | + } | ||
128 | + else { | ||
129 | + var extension = filename.replace(/.*\.([^\.]+)$/,'$1'); | ||
130 | + var aux = false; | ||
131 | + for(lang in Content.languages) { | ||
132 | + extensions = ','+Content.languages[lang].extensions+','; | ||
133 | + if(extensions.match(','+extension+',')) aux = lang; | ||
134 | + } | ||
135 | + language = (aux) ? aux : 'generic'; | ||
136 | + } | ||
137 | +} | ||
138 | +</textarea> | ||
139 | + | ||
140 | +<p> | ||
141 | + <button class="actions" onclick="alert(codepress2.getCode())">get code from editor</button> | ||
142 | + <button class="actions" onclick="codepress2.toggleEditor()">turn on/off CodePress</button> | ||
143 | + <button class="actions" onclick="codepress2.toggleLineNumbers()">show/hide line numbers</button> | ||
144 | + <button class="actions" onclick="codepress2.toggleAutoComplete()">turn on/off auto-complete</button> | ||
145 | + <button class="actions" onclick="codepress2.toggleReadOnly()">turn on/off read only</button> | ||
146 | +</p> | ||
147 | + | ||
148 | + | ||
149 | + | ||
150 | +<h3>Installation</h3> | ||
151 | +<ol> | ||
152 | + <li> | ||
153 | + <p> | ||
154 | + <a href="http://codepress.org/">Download</a> and uncompress CodePress under a directory inside your webserver.<br> | ||
155 | + Example:<strong> http://yourserver/codepress/</strong><br /> | ||
156 | + Since CodePress is pure JavaScript and HTML, you can also test it without a webserver. | ||
157 | + </p> | ||
158 | + </li> | ||
159 | + <li> | ||
160 | + <p> | ||
161 | + Insert CodePress script somewhere in your page inside the <code><head></code> or above the <code></body></code> tag. | ||
162 | + </p> | ||
163 | + | ||
164 | + <p class="copycode"> | ||
165 | + <script src="/codepress/codepress.js" type="text/javascript"></script> | ||
166 | + </p> | ||
167 | + </li> | ||
168 | + | ||
169 | + <li> | ||
170 | + <p> | ||
171 | + Add the <code><textarea></code> tag to the place on your page you want CodePress to appear. CodePress will inherit the width and height of your textarea. | ||
172 | + When the page loads, it will automatically replace your textarea with a CodePress window. | ||
173 | + </p> | ||
174 | + <p class="copycode"> | ||
175 | + <textarea id="myCpWindow" class="codepress javascript linenumbers-off"><br /> | ||
176 | + // your code here<br /> | ||
177 | + </textarea> | ||
178 | + </p> | ||
179 | + <ul> | ||
180 | + <li> | ||
181 | + The <code>javascript</code> portion of the class="" means that the language being edited is JavaScript. | ||
182 | + </li> | ||
183 | + <li> | ||
184 | + The <code>codepress</code> portion of the class="" is mandatory and indicates a textarea to be replaced for a CodePress window. | ||
185 | + </li> | ||
186 | + <li> | ||
187 | + Other class options are <code>linenumbers-off</code>, <code>autocomplete-off</code> and <code>readonly-on</code>. | ||
188 | + </li> | ||
189 | + <li> | ||
190 | + Careful not to use the same id for two different CodePress windows (<code><textarea id="<strong>xx</strong>"...></code>) | ||
191 | + </li> | ||
192 | + </ul> | ||
193 | + | ||
194 | + </li> | ||
195 | +</ol> | ||
196 | + | ||
197 | +<h3>You also can...</h3> | ||
198 | +<ol> | ||
199 | + <li> | ||
200 | + Open/edit code from a different textarea.<br /> | ||
201 | + Example: <code>textarea_id.edit('other_textarea_id','language')</code><br> | ||
202 | + </li> | ||
203 | + <li> | ||
204 | + Get code from CodePress window.<br /> | ||
205 | + Example: <code>textarea_id.getCode()</code><br> | ||
206 | + </li> | ||
207 | + <li> | ||
208 | + Turn on/off CodePress editor and return to the regular textarea.<br /> | ||
209 | + Example: <code>textarea_id.toggleEditor()</code><br> | ||
210 | + </li> | ||
211 | + <li> | ||
212 | + Turn on/off line numbers.<br /> | ||
213 | + Example: <code>textarea_id.toggleLineNumbers()</code><br> | ||
214 | + </li> | ||
215 | + <li> | ||
216 | + Turn on/off read only.<br /> | ||
217 | + Example: <code>textarea_id.toggleReadOnly()</code><br> | ||
218 | + </li> | ||
219 | + <li> | ||
220 | + Turn on/off auto-complete.<br /> | ||
221 | + Example: <code>textarea_id.toggleAutoComplete()</code><br> | ||
222 | + </li> | ||
223 | + | ||
224 | +</ol> | ||
225 | + | ||
226 | +<!-- p> | ||
227 | + You may want to use [id].getCode() to get the content code from CodePress window and save it to your server since CodePress only edit files and do not save them. | ||
228 | +</p> | ||
229 | +<p> | ||
230 | + You may also want to open files from server. You'll have to write a server side script and replace the JavaScript call on codepress.js from codepress.html to codepress.php (if your server side language is PHP, of course). | ||
231 | +</p --> | ||
232 | + | ||
233 | +<h3>License</h3> | ||
234 | +<p> | ||
235 | + CodePress is distributed under the <a href="http://www.opensource.org/licenses/lgpl-license.php">LGPL</a>. If your software is <a href="http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses">compatible</a> with this licence or it is under <a href="http://creativecommons.org/">Creative Commons</a>, you can use it as you want. Just keep the credits somewhere around. | ||
236 | +</p> | ||
237 | + | ||
238 | + | ||
239 | +</div><!--/container--> | ||
240 | + | ||
241 | + | ||
242 | + | ||
243 | +<!-- hidden codes for loading --> | ||
244 | +<textarea id="cp-php" class="hidden-code"> | ||
245 | +<?php | ||
246 | +// Very simple implementation of server side script | ||
247 | + | ||
248 | +if(isset($_GET['file'])) { | ||
249 | + $file = basename($_GET['file']); | ||
250 | + $full_file = $path['server'].'/'.$path['webdocs'].'/'.$path['files']."/".$file; | ||
251 | + if(file_exists($full_file)) { | ||
252 | + $code = file_get_contents($full_file); | ||
253 | + $code = preg_replace("/>/","&gt;",$code); | ||
254 | + $code = preg_replace("/</","&lt;",$code); | ||
255 | + $language = getLanguage($file); | ||
256 | + } | ||
257 | +} | ||
258 | +?> | ||
259 | + | ||
260 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||
261 | +<html> | ||
262 | +<head> | ||
263 | + <title>CodePress - Real Time Syntax Highlighting Editor written in JavaScript</title> | ||
264 | + <link type="text/css" href="languages/codepress-<?=$language?>.css" rel="stylesheet" id="cp-lang-style" /> | ||
265 | + <script type="text/javascript" src="codepress.js"></script> | ||
266 | + <script type="text/javascript"> | ||
267 | + CodePress.language = '<?=$language?>'; | ||
268 | + </script> | ||
269 | +</head> | ||
270 | +<body id="ffedt"><pre id="ieedt"><?=$code?></pre></body> | ||
271 | +</html> | ||
272 | +</textarea> | ||
273 | + | ||
274 | +<textarea id="cp-javascript" class="hidden-code"> | ||
275 | +CodePress = function(obj) { | ||
276 | + var self = document.createElement('iframe'); | ||
277 | + self.textarea = obj; | ||
278 | + self.textarea.disabled = true; | ||
279 | + self.style.height = self.textarea.clientHeight +'px'; | ||
280 | + self.style.width = self.textarea.clientWidth +'px'; | ||
281 | + | ||
282 | + self.initialize = function() { | ||
283 | + self.editor = self.contentWindow.CodePress; | ||
284 | + self.editor.body = self.contentWindow.document.getElementsByTagName('body')[0]; | ||
285 | + self.editor.setCode(self.textarea.value); | ||
286 | + self.editor.syntaxHighlight('init'); | ||
287 | + } | ||
288 | + | ||
289 | + self.edit = function(id,language) { | ||
290 | + self.language = (language) ? language : self.textarea.className.replace(/ ?codepress ?/,''); | ||
291 | + self.src = cpPath+'modules/codepress.html?engine='+self.getEngine()+'&language='+self.language; | ||
292 | + if(self.attachEvent) self.attachEvent('onload',self.initialize); | ||
293 | + else self.addEventListener('load',self.initialize,false); | ||
294 | + } | ||
295 | +} | ||
296 | +</textarea> | ||
297 | + | ||
298 | +<textarea id="cp-autoit" class="hidden-code"> | ||
299 | +#include | ||
300 | +IsNumber(15) | ||
301 | +@Macro | ||
302 | +;comment | ||
303 | +$var = "string" | ||
304 | +</textarea> | ||
305 | + | ||
306 | +<textarea id="cp-java" class="hidden-code"> | ||
307 | +import java.io.FileFilter; | ||
308 | +import java.io.IOException; | ||
309 | +import java.io.PrintWriter; | ||
310 | + | ||
311 | +/** | ||
312 | + * Project ECCO - File manager class | ||
313 | + * @author Fernando M.A.d.S. | ||
314 | + */ | ||
315 | +public class FileManager extends HttpServlet { | ||
316 | + | ||
317 | + private static final long serialVersionUID = 1L; | ||
318 | + private static String login = "feanndor"; // session var should come here | ||
319 | + private static String usersPath = System.getProperty("user.dir")+File.separator+"htdocs"+File.separator+"ecco"+File.separator+"users"+File.separator; | ||
320 | + private static File dir = new File(usersPath+login+File.separator); | ||
321 | + static boolean existDirectories = false; | ||
322 | + static int isDirectory = 0; | ||
323 | + | ||
324 | + public FileFilter filterFiles(File dir) { | ||
325 | + return (new FileFilter() { | ||
326 | + public boolean accept(File pathname) { | ||
327 | + return !(pathname.isDirectory()); | ||
328 | + } | ||
329 | + }); | ||
330 | + } | ||
331 | +} | ||
332 | +</textarea> | ||
333 | + | ||
334 | +<textarea id="cp-perl" class="hidden-code"> | ||
335 | +#!/usr/bin/perl | ||
336 | +# The first line of the script envokes Perl | ||
337 | + | ||
338 | +# Scalar variables | ||
339 | +$var1 = "Hello World"; | ||
340 | +$var2 = 14.6; | ||
341 | + | ||
342 | +# Array variables | ||
343 | +@arr1 = ("zero","one","two","three","four"); | ||
344 | + | ||
345 | +# Hash variable, or associative array | ||
346 | +%hash1 = ("one","Monday","two", "Tuesday","three", "Wednesday","four","Thursday"); | ||
347 | + | ||
348 | +# Some simple printing | ||
349 | +print $var1; | ||
350 | + | ||
351 | +# Subroutine | ||
352 | +sub test() { | ||
353 | + print "ok"; | ||
354 | +} | ||
355 | +</textarea> | ||
356 | + | ||
357 | +<textarea id="cp-sql" class="hidden-code"> | ||
358 | +-- | ||
359 | +-- simple select example | ||
360 | +-- | ||
361 | +SELECT * FROM books | ||
362 | + WHERE price > 100.00 and price < 150.00 | ||
363 | + ORDER BY title | ||
364 | + | ||
365 | +SELECT books.title, count(*) AS Authors | ||
366 | + FROM books | ||
367 | + JOIN book_authors | ||
368 | + ON books.book_number = book_authors.book_number | ||
369 | + GROUP BY books.title | ||
370 | + | ||
371 | +-- insert, update and delete examples | ||
372 | + | ||
373 | +INSERT INTO my_table (field1, field2, field3) VALUES ('test', 'N', NULL); | ||
374 | + | ||
375 | +BEGIN WORK; | ||
376 | + UPDATE inventory SET quantity = quantity - 3 WHERE item = 'pants'; | ||
377 | +COMMIT; | ||
378 | +</textarea> | ||
379 | + | ||
380 | +<textarea id="cp-html" class="hidden-code"> | ||
381 | +<html> | ||
382 | +<head> | ||
383 | + <title>CodePress - Online Real Time Syntax Highlighting Editor</title> | ||
384 | + | ||
385 | + <style type="text/css"> | ||
386 | + @import url(styles.css); | ||
387 | + </style> | ||
388 | + <script type="text/javascript"> | ||
389 | + function getCode() { | ||
390 | + alert(textWithoutHighlighting); | ||
391 | + } | ||
392 | + </script> | ||
393 | +</head> | ||
394 | +<body> | ||
395 | +<div id="logo"> | ||
396 | + <h1><a href="http://codepress.org/">CodePress</a></h1> | ||
397 | + <h2>Online Real Time Syntax Highlighting Editor</h2> | ||
398 | + <img src="testimage.gif" /> | ||
399 | +</div> | ||
400 | +<div id="languages"> | ||
401 | + <em>choose language:</em> | ||
402 | + <button onclick="edit('codepress.php',this)" id="default">PHP</button> | ||
403 | + <button onclick="edit('FileManager.java',this)">Java</button> | ||
404 | +</div> | ||
405 | +</body> | ||
406 | +</html> | ||
407 | +</textarea> | ||
408 | + | ||
409 | +<textarea id="cp-css" class="hidden-code"> | ||
410 | +/* CSS comment */ | ||
411 | + | ||
412 | +body { | ||
413 | + color:#000; | ||
414 | + background-color:white; | ||
415 | + font:15px Georgia, "Lucida Grande", Arial, sans-serif; | ||
416 | + letter-spacing:0.01em; | ||
417 | + margin:15px; | ||
418 | +} | ||
419 | + | ||
420 | +p { | ||
421 | + margin:0 0 15px 0; | ||
422 | +} | ||
423 | + | ||
424 | +a,a:visited { | ||
425 | + color:#7f0055; | ||
426 | +} | ||
427 | + | ||
428 | +select { | ||
429 | + background:#ffffe1; | ||
430 | +} | ||
431 | + | ||
432 | +h1 { | ||
433 | + color:#7f0055; | ||
434 | + margin:0; | ||
435 | + padding:0; | ||
436 | + font-size:42px; | ||
437 | +} | ||
438 | +</textarea> | ||
439 | + | ||
440 | + | ||
441 | +<script src="codepress.js" type="text/javascript"></script> | ||
442 | +</body> | ||
443 | +</html> |
@@ -0,0 +1,71 @@ | @@ -0,0 +1,71 @@ | ||
1 | +/* | ||
2 | + * CodePress color styles for ASP-VB syntax highlighting | ||
3 | + * By Martin D. Kirk | ||
4 | + */ | ||
5 | +/* tags */ | ||
6 | + | ||
7 | +b { | ||
8 | + color:#000080; | ||
9 | +} | ||
10 | +/* comments */ | ||
11 | +big, big b, big em, big ins, big s, strong i, strong i b, strong i s, strong i u, strong i a, strong i a u, strong i s u { | ||
12 | + color:gray; | ||
13 | + font-weight:normal; | ||
14 | +} | ||
15 | +/* ASP comments */ | ||
16 | +strong dfn, strong dfn a,strong dfn var, strong dfn a u, strong dfn u{ | ||
17 | + color:gray; | ||
18 | + font-weight:normal; | ||
19 | +} | ||
20 | + /* attributes */ | ||
21 | +s, s b, span s u, span s cite, strong span s { | ||
22 | + color:#5656fa ; | ||
23 | + font-weight:normal; | ||
24 | +} | ||
25 | + /* strings */ | ||
26 | +strong s,strong s b, strong s u, strong s cite { | ||
27 | + color:#009900; | ||
28 | + font-weight:normal; | ||
29 | +} | ||
30 | +strong ins{ | ||
31 | + color:#000000; | ||
32 | + font-weight:bold; | ||
33 | +} | ||
34 | + /* Syntax */ | ||
35 | +strong a, strong a u { | ||
36 | + color:#0000FF; | ||
37 | + font-weight:; | ||
38 | +} | ||
39 | + /* Native Keywords */ | ||
40 | +strong u { | ||
41 | + color:#990099; | ||
42 | + font-weight:bold; | ||
43 | +} | ||
44 | +/* Numbers */ | ||
45 | +strong var{ | ||
46 | + color:#FF0000; | ||
47 | +} | ||
48 | +/* ASP Language */ | ||
49 | +span{ | ||
50 | + color:#990000; | ||
51 | + font-weight:bold; | ||
52 | +} | ||
53 | +strong i,strong a i, strong u i { | ||
54 | + color:#009999; | ||
55 | +} | ||
56 | +/* style */ | ||
57 | +em { | ||
58 | + color:#800080; | ||
59 | + font-style:normal; | ||
60 | +} | ||
61 | + /* script */ | ||
62 | +ins { | ||
63 | + color:#800000; | ||
64 | + font-weight:bold; | ||
65 | +} | ||
66 | + | ||
67 | +/* <?php and ?> */ | ||
68 | +cite, s cite { | ||
69 | + color:red; | ||
70 | + font-weight:bold; | ||
71 | +} | ||
0 | \ No newline at end of file | 72 | \ No newline at end of file |
@@ -0,0 +1,117 @@ | @@ -0,0 +1,117 @@ | ||
1 | +/* | ||
2 | + * CodePress regular expressions for ASP-vbscript syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +// ASP VBScript | ||
6 | +Language.syntax = [ | ||
7 | +// all tags | ||
8 | + { input : /(<[^!%|!%@]*?>)/g, output : '<b>$1</b>' }, | ||
9 | +// style tags | ||
10 | + { input : /(<style.*?>)(.*?)(<\/style>)/g, output : '<em>$1</em><em>$2</em><em>$3</em>' }, | ||
11 | +// script tags | ||
12 | + { input : /(<script.*?>)(.*?)(<\/script>)/g, output : '<ins>$1</ins><ins>$2</ins><ins>$3</ins>' }, | ||
13 | +// strings "" and attributes | ||
14 | + { input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, | ||
15 | +// ASP Comment | ||
16 | + { input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<dfn>\'$1$2</dfn>'}, | ||
17 | +// <%.* | ||
18 | + { input : /(<%)/g, output : '<strong>$1' }, | ||
19 | +// .*%> | ||
20 | + { input : /(%>)/g, output : '$1</strong>' }, | ||
21 | +// <%@...%> | ||
22 | + { input : /(<%@)(.+?)(%>)/gi, output : '$1<span>$2</span>$3' }, | ||
23 | +//Numbers | ||
24 | + { input : /\b([\d]+)\b/g, output : '<var>$1</var>' }, | ||
25 | +// Reserved Words 1 (Blue) | ||
26 | + { input : /\b(And|As|ByRef|ByVal|Call|Case|Class|Const|Dim|Do|Each|Else|ElseIf|Empty|End|Eqv|Exit|False|For|Function)\b/gi, output : '<a>$1</a>' }, | ||
27 | + { input : /\b(Get|GoTo|If|Imp|In|Is|Let|Loop|Me|Mod|Enum|New|Next|Not|Nothing|Null|On|Option|Or|Private|Public|ReDim|Rem)\b/gi, output : '<a>$1</a>' }, | ||
28 | + { input : /\b(Resume|Select|Set|Stop|Sub|Then|To|True|Until|Wend|While|With|Xor|Execute|Randomize|Erase|ExecuteGlobal|Explicit|step)\b/gi, output : '<a>$1</a>' }, | ||
29 | +// Reserved Words 2 (Purple) | ||
30 | + { input : /\b(Abandon|Abs|AbsolutePage|AbsolutePosition|ActiveCommand|ActiveConnection|ActualSize|AddHeader|AddNew|AppendChunk)\b/gi, output : '<u>$1</u>' }, | ||
31 | + { input : /\b(AppendToLog|Application|Array|Asc|Atn|Attributes|BeginTrans|BinaryRead|BinaryWrite|BOF|Bookmark|Boolean|Buffer|Byte)\b/gi, output : '<u>$1</u>' }, | ||
32 | + { input : /\b(CacheControl|CacheSize|Cancel|CancelBatch|CancelUpdate|CBool|CByte|CCur|CDate|CDbl|Charset|Chr|CInt|Clear)\b/gi, output : '<u>$1</u>' }, | ||
33 | + { input : /\b(ClientCertificate|CLng|Clone|Close|CodePage|CommandText|CommandType|CommandTimeout|CommitTrans|CompareBookmarks|ConnectionString|ConnectionTimeout)\b/gi, output : '<u>$1</u>' }, | ||
34 | + { input : /\b(Contents|ContentType|Cookies|Cos|CreateObject|CreateParameter|CSng|CStr|CursorLocation|CursorType|DataMember|DataSource|Date|DateAdd|DateDiff)\b/gi, output : '<u>$1</u>' }, | ||
35 | + { input : /\b(DatePart|DateSerial|DateValue|Day|DefaultDatabase|DefinedSize|Delete|Description|Double|EditMode|Eof|EOF|err|Error)\b/gi, output : '<u>$1</u>' }, | ||
36 | + { input : /\b(Exp|Expires|ExpiresAbsolute|Filter|Find|Fix|Flush|Form|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent)\b/gi, output : '<u>$1</u>' }, | ||
37 | + { input : /\b(GetChunk|GetLastError|GetRows|GetString|Global|HelpContext|HelpFile|Hex|Hour|HTMLEncode|IgnoreCase|Index|InStr|InStrRev)\b/gi, output : '<u>$1</u>' }, | ||
38 | + { input : /\b(Int|Integer|IsArray|IsClientConnected|IsDate|IsolationLevel|Join|LBound|LCase|LCID|Left|Len|Lock|LockType|Log|Long|LTrim)\b/gi, output : '<u>$1</u>' }, | ||
39 | + { input : /\b(MapPath|MarshalOptions|MaxRecords|Mid|Minute|Mode|Month|MonthName|Move|MoveFirst|MoveLast|MoveNext|MovePrevious|Name|NextRecordset)\b/gi, output : '<u>$1</u>' }, | ||
40 | + { input : /\b(Now|Number|NumericScale|ObjectContext|Oct|Open|OpenSchema|OriginalValue|PageCount|PageSize|Pattern|PICS|Precision|Prepared|Property)\b/gi, output : '<u>$1</u>' }, | ||
41 | + { input : /\b(Provider|QueryString|RecordCount|Redirect|RegExp|Remove|RemoveAll|Replace|Requery|Request|Response|Resync|Right|Rnd)\b/gi, output : '<u>$1</u>' }, | ||
42 | + { input : /\b(RollbackTrans|RTrim|Save|ScriptTimeout|Second|Seek|Server|ServerVariables|Session|SessionID|SetAbort|SetComplete|Sgn)\b/gi, output : '<u>$1</u>' }, | ||
43 | + { input : /\b(Sin|Size|Sort|Source|Space|Split|Sqr|State|StaticObjects|Status|StayInSync|StrComp|String|StrReverse|Supports|Tan|Time)\b/gi, output : '<u>$1</u>' }, | ||
44 | + { input : /\b(Timeout|Timer|TimeSerial|TimeValue|TotalBytes|Transfer|Trim|Type|Type|UBound|UCase|UnderlyingValue|UnLock|Update|UpdateBatch)\b/gi, output : '<u>$1</u>' }, | ||
45 | + { input : /\b(URLEncode|Value|Value|Version|Weekday|WeekdayName|Write|Year)\b/gi, output : '<u>$1</u>' }, | ||
46 | +// Reserved Words 3 (Turquis) | ||
47 | + { input : /\b(vbBlack|vbRed|vbGreen|vbYellow|vbBlue|vbMagenta|vbCyan|vbWhite|vbBinaryCompare|vbTextCompare)\b/gi, output : '<i>$1</i>' }, | ||
48 | + { input : /\b(vbSunday|vbMonday|vbTuesday|vbWednesday|vbThursday|vbFriday|vbSaturday|vbUseSystemDayOfWeek)\b/gi, output : '<i>$1</i>' }, | ||
49 | + { input : /\b(vbFirstJan1|vbFirstFourDays|vbFirstFullWeek|vbGeneralDate|vbLongDate|vbShortDate|vbLongTime|vbShortTime)\b/gi, output : '<i>$1</i>' }, | ||
50 | + { input : /\b(vbObjectError|vbCr|VbCrLf|vbFormFeed|vbLf|vbNewLine|vbNullChar|vbNullString|vbTab|vbVerticalTab|vbUseDefault|vbTrue)\b/gi, output : '<i>$1</i>' }, | ||
51 | + { input : /\b(vbFalse|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant)\b/gi, output : '<i>$1</i>' }, | ||
52 | + { input : /\b(vbDataObject|vbDecimal|vbByte|vbArray)\b/gi, output : '<i>$1</i>' }, | ||
53 | +// html comments | ||
54 | + { input : /(<!--.*?-->.)/g, output : '<big>$1</big>' } | ||
55 | +] | ||
56 | + | ||
57 | +Language.Functions = [ | ||
58 | + // Output at index 0, must be the desired tagname surrounding a $1 | ||
59 | + // Name is the index from the regex that marks the functionname | ||
60 | + {input : /(function|sub)([ ]*?)(\w+)([ ]*?\()/gi , output : '<ins>$1</ins>', name : '$3'} | ||
61 | +] | ||
62 | + | ||
63 | +Language.snippets = [ | ||
64 | +//Conditional | ||
65 | + { input : 'if', output : 'If $0 Then\n\t\nEnd If' }, | ||
66 | + { input : 'ifelse', output : 'If $0 Then\n\t\n\nElse\n\t\nEnd If' }, | ||
67 | + { input : 'case', output : 'Select Case $0\n\tCase ?\n\tCase Else\nEnd Select'}, | ||
68 | +//Response | ||
69 | + { input : 'rw', output : 'Response.Write( $0 )' }, | ||
70 | + { input : 'resc', output : 'Response.Cookies( $0 )' }, | ||
71 | + { input : 'resb', output : 'Response.Buffer'}, | ||
72 | + { input : 'resflu', output : 'Response.Flush()'}, | ||
73 | + { input : 'resend', output : 'Response.End'}, | ||
74 | +//Request | ||
75 | + { input : 'reqc', output : 'Request.Cookies( $0 )' }, | ||
76 | + { input : 'rq', output : 'Request.Querystring("$0")' }, | ||
77 | + { input : 'rf', output : 'Request.Form("$0")' }, | ||
78 | +//FSO | ||
79 | + { input : 'fso', output : 'Set fso = Server.CreateObject("Scripting.FileSystemObject")\n$0' }, | ||
80 | + { input : 'setfo', output : 'Set fo = fso.getFolder($0)' }, | ||
81 | + { input : 'setfi', output : 'Set fi = fso.getFile($0)' }, | ||
82 | + { input : 'twr', output : 'Set f = fso.CreateTextFile($0,true)\'overwrite\nf.WriteLine()\nf.Close'}, | ||
83 | + { input : 'tre', output : 'Set f = fso.OpenTextFile($0, 1)\nf.ReadAll\nf.Close'}, | ||
84 | +//Server | ||
85 | + { input : 'mapp', output : 'Server.Mappath($0)' }, | ||
86 | +//Loops | ||
87 | + { input : 'foreach', output : 'For Each $0 in ?\n\t\nNext' }, | ||
88 | + { input : 'for', output : 'For $0 to ? step ?\n\t\nNext' }, | ||
89 | + { input : 'do', output : 'Do While($0)\n\t\nLoop' }, | ||
90 | + { input : 'untilrs', output : 'do until rs.eof\n\t\nrs.movenext\nloop' }, | ||
91 | +//ADO | ||
92 | + { input : 'adorec', output : 'Set rs = Server.CreateObject("ADODB.Recordset")' }, | ||
93 | + { input : 'adocon', output : 'Set Conn = Server.CreateObject("ADODB.Connection")' }, | ||
94 | + { input : 'adostr', output : 'Set oStr = Server.CreateObject("ADODB.Stream")' }, | ||
95 | +//Http Request | ||
96 | + { input : 'xmlhttp', output : 'Set xmlHttp = Server.CreateObject("Microsoft.XMLHTTP")\nxmlHttp.open("GET", $0, false)\nxmlHttp.send()\n?=xmlHttp.responseText' }, | ||
97 | + { input : 'xmldoc', output : 'Set xmldoc = Server.CreateObject("Microsoft.XMLDOM")\nxmldoc.async=false\nxmldoc.load(request)'}, | ||
98 | +//Functions | ||
99 | + { input : 'func', output : 'Function $0()\n\t\n\nEnd Function'}, | ||
100 | + { input : 'sub', output : 'Sub $0()\n\t\nEnd Sub'} | ||
101 | + | ||
102 | +] | ||
103 | + | ||
104 | +Language.complete = [ | ||
105 | + //{ input : '\'', output : '\'$0\'' }, | ||
106 | + { input : '"', output : '"$0"' }, | ||
107 | + { input : '(', output : '\($0\)' }, | ||
108 | + { input : '[', output : '\[$0\]' }, | ||
109 | + { input : '{', output : '{\n\t$0\n}' } | ||
110 | +] | ||
111 | + | ||
112 | +Language.shortcuts = [ | ||
113 | + { input : '[space]', output : ' ' }, | ||
114 | + { input : '[enter]', output : '<br />' } , | ||
115 | + { input : '[j]', output : 'testing' }, | ||
116 | + { input : '[7]', output : '&' } | ||
117 | +] | ||
0 | \ No newline at end of file | 118 | \ No newline at end of file |
@@ -0,0 +1,13 @@ | @@ -0,0 +1,13 @@ | ||
1 | +/** | ||
2 | + * CodePress color styles for AutoIt syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +u {font-style:normal;color:#000090;font-weight:bold;font-family:Monospace;} | ||
6 | +var {color:#AA0000;font-weight:bold;font-style:normal;} | ||
7 | +em {color:#FF33FF;} | ||
8 | +ins {color:#AC00A9;} | ||
9 | +i {color:#F000FF;} | ||
10 | +b {color:#FF0000;} | ||
11 | +a {color:#0080FF;font-weight:bold;} | ||
12 | +s, s u, s b {color:#9999CC;font-weight:normal;} | ||
13 | +cite, cite *{color:#009933;font-weight:normal;} | ||
0 | \ No newline at end of file | 14 | \ No newline at end of file |
@@ -0,0 +1,32 @@ | @@ -0,0 +1,32 @@ | ||
1 | +/** | ||
2 | + * CodePress regular expressions for AutoIt syntax highlighting | ||
3 | + * @author: James Brooks, Michael HURNI | ||
4 | + */ | ||
5 | + | ||
6 | +// AutoIt | ||
7 | +Language.syntax = [ | ||
8 | + { input : /({|}|\(|\))/g, output : '<b>$1</b>' }, // Brackets | ||
9 | + { input : /(\*|\+|-)/g, output : '<b>$1</b>' }, // Operator | ||
10 | + { input : /\"(.*?)(\"|<br>|<\/P>)/g, output : "<s>\"$1$2</s>" }, // strings double | ||
11 | + { input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>' }, // strings single | ||
12 | + { input : /\b([\d]+)\b/g, output : '<ins>$1</ins>' }, // Numbers | ||
13 | + { input : /#(.*?)(<br>|<\/P>)/g, output : '<i>#$1</i>$2' }, // Directives and Includes | ||
14 | + { input : /(\$[\w\.]*)/g, output : '<var>$1</var>' }, // vars | ||
15 | + { input : /(_[\w\.]*)/g, output : '<a>$1</a>' }, // underscored word | ||
16 | + { input : /(\@[\w\.]*)/g, output : '<em>$1</em>' }, // Macros | ||
17 | + { input : /\b(Abs|ACos|AdlibDisable|AdlibEnable|Asc|AscW|ASin|Assign|ATan|AutoItSetOption|AutoItWinGetTitle|AutoItWinSetTitle|Beep|Binary|BinaryLen|BinaryMid|BinaryToString|BitAND|BitNOT|BitOR|BitSHIFT|BitXOR|BlockInput|Break|Call|CDTray|Ceiling|Chr|ChrW|ClipGet|ClipPut|ConsoleRead|ConsoleWrite|ConsoleWriteError|ControlClick|ControlCommand|ControlDisable|ControlEnable|ControlFocus|ControlGetFocus|ControlGetHandle|ControlGetPos|ControlGetText|ControlHide|ControlListView|ControlMove|ControlSend|ControlSetText|ControlShow|Cos|Dec|DirCopy|DirCreate|DirGetSize|DirMove|DirRemove|DllCall|DllCall|DllClose|DllOpen|DllStructCreate|DllStructGetData|DllStructGetPtr|DllStructGetSize|DllStructSetData|DriveGetDrive|DriveGetFileSystem|DriveGetLabel|DriveGetSerial|DriveGetType|DriveMapAdd|DriveMapDel|DriveMapGet|DriveSetLabel|DriveSpaceFree|DriveSpaceTotal|DriveStatus|EnvGet|EnvSet|EnvUpdate|Eval|Execute|Exp|FileChangeDir|FileClose|FileCopy|FileCreateNTFS|FileCreateShortcut|FileDelete|FileExists|FileFindFirstFile|FileFindNextFile|FileGetAttrib|FileGetLongName|FileGetShortcut|FileGetShortName|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileOpen|FileOpenDialog|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileSaveDialog|FileSelectFolder|FileSetAttrib|FileSetTime|FileWrite|FileWriteLine|Floor|FtpSetProxy|GuiCreate|GuiCtrlCreateAvi|GuiCtrlCreateButton|GuiCtrlCreateCheckbox|GuiCtrlCreateCombo|GuiCtrlCreateContextMenu|GuiCtrlCreateDate|GuiCtrlCreateDummy|GuiCtrlCreateEdit|GuiCtrlCreateGraphic|GuiCtrlCreateGroup|GuiCtrlCreateIcon|GuiCtrlCreateInput|GuiCtrlCreateLabel|GuiCtrlCreateList|GuiCtrlCreateListView|GuiCtrlCreateListViewItem|GuiCtrlCreateMenu|GuiCtrlCreateMenuItem|GuiCtrlCreateMonthCal|GuiCtrlCreateObj|GuiCtrlCreatePic|GuiCtrlCreateProgress|GuiCtrlCreateRadio|GuiCtrlCreateSlider|GuiCtrlCreateTab|GuiCtrlCreateTabItem|GuiCtrlCreateUpdown|GuiCtrlDelete|GuiCtrlGetHandle|GuiCtrlGetState|GuiCtrlRead|GuiCtrlRecvMsg|GuiCtrlSentMsg|GuiCtrlSendToDummy|GuiCtrlSetBkColor|GuiCtrlSetColor|GuiCtrlSetCursor|GuiCtrlSetData|GuiCtrlSetFont|GuiCtrlSetGraphic|GuiCtrlSetImage|GuiCtrlSetLimit|GuiCtrlSetOnEvent|GuiCtrlSetPos|GuiCtrlResizing|GuiCtrlSetState|GuiCtrlSetTip|GuiDelete|GuiGetCursorInfo|GuiGetMsg|GuiGetStyle|GuiRegisterMsg|GuiSetBkColor|GuiSetCoord|GuiSetCursor|GuiSetFont|GuiSetHelp|GuiSetIcon|GuiSetOnEvent|GuiSetStat|GuiSetStyle|GuiStartGroup|GuiSwitch|Hex|HotKeySet|HttpSetProxy|HWnd|InetGet|InetGetSize|IniDelete|IniRead|IniReadSection|IniReadSectionNames|IniRenameSection|IniWrite|IniWriteSection|InputBox|Int|IsAdmin|IsArray|IsBinary|IsBool|IsDeclared|IsDllStruct|IsFloat|IsHWnd|IsInt|IsKeyword|IsNumber|IsObj|IsString|Log|MemGetStats|Mod|MouseClick|MouseClickDrag|MouseDown|MouseGetCursor|MouseGetPos|MouseMove|MouseUp|MouseWheel|MsgBox|Number|ObjCreate|ObjEvent|ObjGet|ObjName|Ping|PixelCheckSum|PixelGetColor|PixelSearch|ProcessClose|ProcessExists|ProcessList|ProcessSetPriority|ProcessWait|ProcessWaitClose|ProgressOff|ProcessOn|ProgressSet|Random|RegDelete|RegEnumKey|RegEnumVal|RegRead|RegWrite|Round|Run|RunAsSet|RunWait|Send|SetError|SetExtended|ShellExecute|ShellExecuteWait|Shutdown|Sin|Sleep|SoundPlay|SoundSetWaveVolume|SplashImageOn|SplashOff|SplashTextOn|Sqrt|SRandom|StatusbarGetText|StderrRead|StdinWrite|StdoutRead|String|StringAddCR|StringCompare|StringFormat|StringInStr|StringIsAlNum|StringIsAlpha|StringIsASCII|StringIsDigit|StringIsFloat|StringIsInt|StringIsLower|StringIsSpace|StringIsUpper|StringIsXDigit|StringLeft|StringLen|StringLower|StringMid|StringRegExp|StringRegExpReplace|StringReplace|StringRight|StringSplit|StringStripCR|StringStripWS|StringToBinary|StringTrimLeft|StringTrimRight|StringUpper|Tan|TCPAccept|TCPCloseSocket|TCPConnect|TCPListen|TCPNameToIP|TCPrecv|TCPSend|TCPShutdown|TCPStartup|TimerDiff|TimerInit|ToolTip|TrayCreateItem|TrayCreateMenu|TrayGetMenu|TrayGetMsg|TrayItemDelete|TrayItemGetHandle|TrayItemGetState|TrayItemGetText|TrayItemSetOnEvent|TrayItemSetState|TrayItemSetText|TraySetClick|TraySetIcon|TraySetOnEvent|TraySetPauseIcon|TraySetState|TraySetToolTip|TrayTip|UBound|UDPBind|UDPCloseSocket|UDPOpen|UDPRecv|UDPSend|WinActivate|WinActive|WinClose|WinExists|WinFlash|WinGetCaretPos|WinGetClassList|WinGetClientSize|WinGetHandle|WinGetPos|WinGetProcess|WinGetState|WinGetText|WinGetTitle|WinKill|WinList|WinMenuSelectItem|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinSetOnTop|WinSetState|WinSetTitle|WinSetTrans|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\b/g, output : '<u>$1</u>' } ,// reserved words | ||
18 | + { input : /\B;(.*?)(<br>|<\/P>)/g, output : '<cite>;$1</cite>$2' }, // comments | ||
19 | + { input : /#CS(.*?)#CE/g, output : '<cite>#CS$1#CE</cite>' } // Block Comments | ||
20 | +] | ||
21 | + | ||
22 | +Language.snippets = [] | ||
23 | + | ||
24 | +Language.complete = [ | ||
25 | +{ input : '\'',output : '\'$0\'' }, | ||
26 | +{ input : '"', output : '"$0"' }, | ||
27 | +{ input : '(', output : '\($0\)' }, | ||
28 | +{ input : '[', output : '\[$0\]' }, | ||
29 | +{ input : '{', output : '{\n\t$0\n}' } | ||
30 | +] | ||
31 | + | ||
32 | +Language.shortcuts = [] |
@@ -0,0 +1,9 @@ | @@ -0,0 +1,9 @@ | ||
1 | +/* | ||
2 | + * CodePress color styles for Java syntax highlighting | ||
3 | + * By Edwin de Jonge | ||
4 | + */ | ||
5 | + | ||
6 | +b {color:#7F0055;font-weight:bold;font-style:normal;} /* reserved words */ | ||
7 | +a {color:#2A0088;font-weight:bold;font-style:normal;} /* types */ | ||
8 | +i, i b, i s {color:#3F7F5F;font-weight:bold;} /* comments */ | ||
9 | +s, s b {color:#2A00FF;font-weight:normal;} /* strings */ | ||
0 | \ No newline at end of file | 10 | \ No newline at end of file |
@@ -0,0 +1,25 @@ | @@ -0,0 +1,25 @@ | ||
1 | +/* | ||
2 | + * CodePress regular expressions for C# syntax highlighting | ||
3 | + * By Edwin de Jonge | ||
4 | + */ | ||
5 | + | ||
6 | +Language.syntax = [ // C# | ||
7 | + { input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, // strings double quote | ||
8 | + { input : /\'(.?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>' }, // strings single quote | ||
9 | + { input : /\b(abstract|as|base|break|case|catch|checked|continue|default|delegate|do|else|event|explicit|extern|false|finally|fixed|for|foreach|get|goto|if|implicit|in|interface|internal|is|lock|namespace|new|null|object|operator|out|override|params|partial|private|protected|public|readonly|ref|return|set|sealed|sizeof|static|stackalloc|switch|this|throw|true|try|typeof|unchecked|unsafe|using|value|virtual|while)\b/g, output : '<b>$1</b>' }, // reserved words | ||
10 | + { input : /\b(bool|byte|char|class|double|float|int|interface|long|string|struct|void)\b/g, output : '<a>$1</a>' }, // types | ||
11 | + { input : /([^:]|^)\/\/(.*?)(<br|<\/P)/g, output : '$1<i>//$2</i>$3' }, // comments // | ||
12 | + { input : /\/\*(.*?)\*\//g, output : '<i>/*$1*/</i>' } // comments /* */ | ||
13 | +]; | ||
14 | + | ||
15 | +Language.snippets = []; | ||
16 | + | ||
17 | +Language.complete = [ // Auto complete only for 1 character | ||
18 | + {input : '\'',output : '\'$0\'' }, | ||
19 | + {input : '"', output : '"$0"' }, | ||
20 | + {input : '(', output : '\($0\)' }, | ||
21 | + {input : '[', output : '\[$0\]' }, | ||
22 | + {input : '{', output : '{\n\t$0\n}' } | ||
23 | +]; | ||
24 | + | ||
25 | +Language.shortcuts = []; | ||
0 | \ No newline at end of file | 26 | \ No newline at end of file |
@@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
1 | +/* | ||
2 | + * CodePress color styles for CSS syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +b, b a, b u {color:#000080;} /* tags, ids, classes */ | ||
6 | +i, i b, i s, i a, i u {color:gray;} /* comments */ | ||
7 | +s, s b {color:#a0a0dd;} /* parameters */ | ||
8 | +a {color:#0000ff;} /* keys */ | ||
9 | +u {color:red;} /* values */ | ||
10 | + |
@@ -0,0 +1,23 @@ | @@ -0,0 +1,23 @@ | ||
1 | +/* | ||
2 | + * CodePress regular expressions for CSS syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +// CSS | ||
6 | +Language.syntax = [ | ||
7 | + { input : /(.*?){(.*?)}/g,output : '<b>$1</b>{<u>$2</u>}' }, // tags, ids, classes, values | ||
8 | + { input : /([\w-]*?):([^\/])/g,output : '<a>$1</a>:$2' }, // keys | ||
9 | + { input : /\((.*?)\)/g,output : '(<s>$1</s>)' }, // parameters | ||
10 | + { input : /\/\*(.*?)\*\//g,output : '<i>/*$1*/</i>'} // comments | ||
11 | +] | ||
12 | + | ||
13 | +Language.snippets = [] | ||
14 | + | ||
15 | +Language.complete = [ | ||
16 | + { input : '\'',output : '\'$0\'' }, | ||
17 | + { input : '"', output : '"$0"' }, | ||
18 | + { input : '(', output : '\($0\)' }, | ||
19 | + { input : '[', output : '\[$0\]' }, | ||
20 | + { input : '{', output : '{\n\t$0\n}' } | ||
21 | +] | ||
22 | + | ||
23 | +Language.shortcuts = [] |
@@ -0,0 +1,9 @@ | @@ -0,0 +1,9 @@ | ||
1 | +/* | ||
2 | + * CodePress color styles for generic syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +b {color:#7F0055;font-weight:bold;} /* reserved words */ | ||
6 | +u {color:darkblue;font-weight:bold;} /* special words */ | ||
7 | +i, i b, i s, i u, i em {color:green;font-weight:normal;} /* comments */ | ||
8 | +s, s b, s em {color:#2A00FF;font-weight:normal;} /* strings */ | ||
9 | +em {font-weight:bold;} /* special chars */ | ||
0 | \ No newline at end of file | 10 | \ No newline at end of file |
@@ -0,0 +1,25 @@ | @@ -0,0 +1,25 @@ | ||
1 | +/* | ||
2 | + * CodePress regular expressions for generic syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +// generic languages | ||
6 | +Language.syntax = [ | ||
7 | + { input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, // strings double quote | ||
8 | + { input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>' }, // strings single quote | ||
9 | + { input : /\b(abstract|continue|for|new|switch|default|goto|boolean|do|if|private|this|break|double|protected|throw|byte|else|import|public|throws|case|return|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|const|float|while|function|label)\b/g, output : '<b>$1</b>' }, // reserved words | ||
10 | + { input : /([\(\){}])/g, output : '<em>$1</em>' }, // special chars; | ||
11 | + { input : /([^:]|^)\/\/(.*?)(<br|<\/P)/g, output : '$1<i>//$2</i>$3' }, // comments // | ||
12 | + { input : /\/\*(.*?)\*\//g, output : '<i>/*$1*/</i>' } // comments /* */ | ||
13 | +] | ||
14 | + | ||
15 | +Language.snippets = [] | ||
16 | + | ||
17 | +Language.complete = [ | ||
18 | + { input : '\'', output : '\'$0\'' }, | ||
19 | + { input : '"', output : '"$0"' }, | ||
20 | + { input : '(', output : '\($0\)' }, | ||
21 | + { input : '[', output : '\[$0\]' }, | ||
22 | + { input : '{', output : '{\n\t$0\n}' } | ||
23 | +] | ||
24 | + | ||
25 | +Language.shortcuts = [] |
@@ -0,0 +1,13 @@ | @@ -0,0 +1,13 @@ | ||
1 | +/* | ||
2 | + * CodePress color styles for HTML syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +b {color:#000080;} /* tags */ | ||
6 | +ins, ins b, ins s, ins em {color:gray;} /* comments */ | ||
7 | +s, s b {color:#7777e4;} /* attribute values */ | ||
8 | +a {color:green;} /* links */ | ||
9 | +u {color:#E67300;} /* forms */ | ||
10 | +big {color:#db0000;} /* images */ | ||
11 | +em, em b {color:#800080;} /* style */ | ||
12 | +strong {color:#800000;} /* script */ | ||
13 | +tt i {color:darkblue;font-weight:bold;} /* script reserved words */ |
@@ -0,0 +1,59 @@ | @@ -0,0 +1,59 @@ | ||
1 | +/* | ||
2 | + * CodePress regular expressions for HTML syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +// HTML | ||
6 | +Language.syntax = [ | ||
7 | + { input : /(<[^!]*?>)/g, output : '<b>$1</b>' }, // all tags | ||
8 | + { input : /(<a .*?>|<\/a>)/g, output : '<a>$1</a>' }, // links | ||
9 | + { input : /(<img .*?>)/g, output : '<big>$1</big>' }, // images | ||
10 | + { input : /(<\/?(button|textarea|form|input|select|option|label).*?>)/g, output : '<u>$1</u>' }, // forms | ||
11 | + { input : /(<style.*?>)(.*?)(<\/style>)/g, output : '<em>$1</em><em>$2</em><em>$3</em>' }, // style tags | ||
12 | + { input : /(<script.*?>)(.*?)(<\/script>)/g, output : '<strong>$1</strong><tt>$2</tt><strong>$3</strong>' }, // script tags | ||
13 | + { input : /=(".*?")/g, output : '=<s>$1</s>' }, // atributes double quote | ||
14 | + { input : /=('.*?')/g, output : '=<s>$1</s>' }, // atributes single quote | ||
15 | + { input : /(<!--.*?-->.)/g, output : '<ins>$1</ins>' }, // comments | ||
16 | + { input : /\b(alert|window|document|break|continue|do|for|new|this|void|case|default|else|function|return|typeof|while|if|label|switch|var|with|catch|boolean|int|try|false|throws|null|true|goto)\b/g, output : '<i>$1</i>' } // script reserved words | ||
17 | +] | ||
18 | + | ||
19 | +Language.snippets = [ | ||
20 | + { input : 'aref', output : '<a href="$0"></a>' }, | ||
21 | + { input : 'h1', output : '<h1>$0</h1>' }, | ||
22 | + { input : 'h2', output : '<h2>$0</h2>' }, | ||
23 | + { input : 'h3', output : '<h3>$0</h3>' }, | ||
24 | + { input : 'h4', output : '<h4>$0</h4>' }, | ||
25 | + { input : 'h5', output : '<h5>$0</h5>' }, | ||
26 | + { input : 'h6', output : '<h6>$0</h6>' }, | ||
27 | + { input : 'html', output : '<html>\n\t$0\n</html>' }, | ||
28 | + { input : 'head', output : '<head>\n\t<meta http-equiv="content-type" content="text/html; charset=utf-8" />\n\t<title>$0</title>\n\t\n</head>' }, | ||
29 | + { input : 'img', output : '<img src="$0" alt="" />' }, | ||
30 | + { input : 'input', output : '<input name="$0" id="" type="" value="" />' }, | ||
31 | + { input : 'label', output : '<label for="$0"></label>' }, | ||
32 | + { input : 'legend', output : '<legend>\n\t$0\n</legend>' }, | ||
33 | + { input : 'link', output : '<link rel="stylesheet" href="$0" type="text/css" media="screen" charset="utf-8" />' }, | ||
34 | + { input : 'base', output : '<base href="$0" />' }, | ||
35 | + { input : 'body', output : '<body>\n\t$0\n</body>' }, | ||
36 | + { input : 'css', output : '<link rel="stylesheet" href="$0" type="text/css" media="screen" charset="utf-8" />' }, | ||
37 | + { input : 'div', output : '<div>\n\t$0\n</div>' }, | ||
38 | + { input : 'divid', output : '<div id="$0">\n\t\n</div>' }, | ||
39 | + { input : 'dl', output : '<dl>\n\t<dt>\n\t\t$0\n\t</dt>\n\t<dd></dd>\n</dl>' }, | ||
40 | + { input : 'fieldset', output : '<fieldset>\n\t$0\n</fieldset>' }, | ||
41 | + { input : 'form', output : '<form action="$0" method="" name="">\n\t\n</form>' }, | ||
42 | + { input : 'meta', output : '<meta name="$0" content="" />' }, | ||
43 | + { input : 'p', output : '<p>$0</p>' }, | ||
44 | + { input : 'script', output : '<script type="text/javascript" language="javascript" charset="utf-8">\n\t$0\t\n</script>' }, | ||
45 | + { input : 'scriptsrc', output : '<script src="$0" type="text/javascript" language="javascript" charset="utf-8"></script>' }, | ||
46 | + { input : 'span', output : '<span>$0</span>' }, | ||
47 | + { input : 'table', output : '<table border="$0" cellspacing="" cellpadding="">\n\t<tr><th></th></tr>\n\t<tr><td></td></tr>\n</table>' }, | ||
48 | + { input : 'style', output : '<style type="text/css" media="screen">\n\t$0\n</style>' } | ||
49 | +] | ||
50 | + | ||
51 | +Language.complete = [ | ||
52 | + { input : '\'',output : '\'$0\'' }, | ||
53 | + { input : '"', output : '"$0"' }, | ||
54 | + { input : '(', output : '\($0\)' }, | ||
55 | + { input : '[', output : '\[$0\]' }, | ||
56 | + { input : '{', output : '{\n\t$0\n}' } | ||
57 | +] | ||
58 | + | ||
59 | +Language.shortcuts = [] |
@@ -0,0 +1,7 @@ | @@ -0,0 +1,7 @@ | ||
1 | +/* | ||
2 | + * CodePress color styles for Java syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +b {color:#7F0055;font-weight:bold;font-style:normal;} /* reserved words */ | ||
6 | +i, i b, i s {color:#3F7F5F;font-weight:bold;} /* comments */ | ||
7 | +s, s b {color:#2A00FF;font-weight:normal;} /* strings */ |
@@ -0,0 +1,24 @@ | @@ -0,0 +1,24 @@ | ||
1 | +/* | ||
2 | + * CodePress regular expressions for Java syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +// Java | ||
6 | +Language.syntax = [ | ||
7 | + { input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>'}, // strings double quote | ||
8 | + { input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>'}, // strings single quote | ||
9 | + { input : /\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/g, output : '<b>$1</b>'}, // reserved words | ||
10 | + { input : /([^:]|^)\/\/(.*?)(<br|<\/P)/g, output : '$1<i>//$2</i>$3'}, // comments // | ||
11 | + { input : /\/\*(.*?)\*\//g, output : '<i>/*$1*/</i>' }// comments /* */ | ||
12 | +] | ||
13 | + | ||
14 | +Language.snippets = [] | ||
15 | + | ||
16 | +Language.complete = [ | ||
17 | + { input : '\'',output : '\'$0\'' }, | ||
18 | + { input : '"', output : '"$0"' }, | ||
19 | + { input : '(', output : '\($0\)' }, | ||
20 | + { input : '[', output : '\[$0\]' }, | ||
21 | + { input : '{', output : '{\n\t$0\n}' } | ||
22 | +] | ||
23 | + | ||
24 | +Language.shortcuts = [] |
@@ -0,0 +1,8 @@ | @@ -0,0 +1,8 @@ | ||
1 | +/* | ||
2 | + * CodePress color styles for JavaScript syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +b {color:#7F0055;font-weight:bold;} /* reserved words */ | ||
6 | +u {color:darkblue;font-weight:bold;} /* special words */ | ||
7 | +i, i b, i s, i u {color:green;font-weight:normal;} /* comments */ | ||
8 | +s, s b, s u {color:#2A00FF;font-weight:normal;} /* strings */ |
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
1 | +/* | ||
2 | + * CodePress regular expressions for JavaScript syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +// JavaScript | ||
6 | +Language.syntax = [ | ||
7 | + { input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, // strings double quote | ||
8 | + { input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>' }, // strings single quote | ||
9 | + { input : /\b(break|continue|do|for|new|this|void|case|default|else|function|return|typeof|while|if|label|switch|var|with|catch|boolean|int|try|false|throws|null|true|goto)\b/g, output : '<b>$1</b>' }, // reserved words | ||
10 | + { input : /\b(alert|isNaN|parent|Array|parseFloat|parseInt|blur|clearTimeout|prompt|prototype|close|confirm|length|Date|location|Math|document|element|name|self|elements|setTimeout|navigator|status|String|escape|Number|submit|eval|Object|event|onblur|focus|onerror|onfocus|onclick|top|onload|toString|onunload|unescape|open|valueOf|window|onmouseover)\b/g, output : '<u>$1</u>' }, // special words | ||
11 | + { input : /([^:]|^)\/\/(.*?)(<br|<\/P)/g, output : '$1<i>//$2</i>$3' }, // comments // | ||
12 | + { input : /\/\*(.*?)\*\//g, output : '<i>/*$1*/</i>' } // comments /* */ | ||
13 | +] | ||
14 | + | ||
15 | +Language.snippets = [ | ||
16 | + { input : 'dw', output : 'document.write(\'$0\');' }, | ||
17 | + { input : 'getid', output : 'document.getElementById(\'$0\')' }, | ||
18 | + { input : 'fun', output : 'function $0(){\n\t\n}' }, | ||
19 | + { input : 'func', output : 'function $0(){\n\t\n}' } | ||
20 | +] | ||
21 | + | ||
22 | +Language.complete = [ | ||
23 | + { input : '\'',output : '\'$0\'' }, | ||
24 | + { input : '"', output : '"$0"' }, | ||
25 | + { input : '(', output : '\($0\)' }, | ||
26 | + { input : '[', output : '\[$0\]' }, | ||
27 | + { input : '{', output : '{\n\t$0\n}' } | ||
28 | +] | ||
29 | + | ||
30 | +Language.shortcuts = [] |
@@ -0,0 +1,11 @@ | @@ -0,0 +1,11 @@ | ||
1 | +/* | ||
2 | + * CodePress color styles for Perl syntax highlighting | ||
3 | + * By J. Nick Koston | ||
4 | + */ | ||
5 | + | ||
6 | +b {color:#7F0055;font-weight:bold;} /* reserved words */ | ||
7 | +i, i b, i s, i em, i a, i u {color:gray;font-weight:normal;} /* comments */ | ||
8 | +s, s b, s a, s em, s u {color:#2A00FF;font-weight:normal;} /* strings */ | ||
9 | +a {color:#006700;font-weight:bold;} /* variables */ | ||
10 | +em {color:darkblue;font-weight:bold;} /* functions */ | ||
11 | +u {font-weight:bold;} /* special chars */ | ||
0 | \ No newline at end of file | 12 | \ No newline at end of file |
@@ -0,0 +1,27 @@ | @@ -0,0 +1,27 @@ | ||
1 | +/* | ||
2 | + * CodePress regular expressions for Perl syntax highlighting | ||
3 | + * By J. Nick Koston | ||
4 | + */ | ||
5 | + | ||
6 | +// Perl | ||
7 | +Language.syntax = [ | ||
8 | + { input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, // strings double quote | ||
9 | + { input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>' }, // strings single quote | ||
10 | + { input : /([\$\@\%][\w\.]*)/g, output : '<a>$1</a>' }, // vars | ||
11 | + { input : /(sub\s+)([\w\.]*)/g, output : '$1<em>$2</em>' }, // functions | ||
12 | + { input : /\b(abs|accept|alarm|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|connect|continue|cos|crypt|dbmclose|dbmopen|defined|delete|die|do|dump|each|else|elsif|endgrent|endhostent|endnetent|endprotoent|endpwent|eof|eval|exec|exists|exit|fcntl|fileno|find|flock|for|foreach|fork|format|formlinegetc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyaddr|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|goto|grep|hex|hostname|if|import|index|int|ioctl|join|keys|kill|last|lc|lcfirst|length|link|listen|LoadExternals|local|localtime|log|lstat|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|next|no|oct|open|opendir|ordpack|package|pipe|pop|pos|print|printf|push|pwd|qq|quotemeta|qw|rand|read|readdir|readlink|recv|redo|ref|rename|require|reset|return|reverse|rewinddir|rindex|rmdir|scalar|seek|seekdir|select|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|stty|study|sub|substr|symlink|syscall|sysopen|sysread|system|syswritetell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unless|unlink|until|unpack|unshift|untie|use|utime|values|vec|waitpid|wantarray|warn|while|write)\b/g, output : '<b>$1</b>' }, // reserved words | ||
13 | + { input : /([\(\){}])/g, output : '<u>$1</u>' }, // special chars | ||
14 | + { input : /#(.*?)(<br>|<\/P>)/g, output : '<i>#$1</i>$2' } // comments | ||
15 | +] | ||
16 | + | ||
17 | +Language.snippets = [] | ||
18 | + | ||
19 | +Language.complete = [ | ||
20 | + { input : '\'',output : '\'$0\'' }, | ||
21 | + { input : '"', output : '"$0"' }, | ||
22 | + { input : '(', output : '\($0\)' }, | ||
23 | + { input : '[', output : '\[$0\]' }, | ||
24 | + { input : '{', output : '{\n\t$0\n}' } | ||
25 | +] | ||
26 | + | ||
27 | +Language.shortcuts = [] |
@@ -0,0 +1,12 @@ | @@ -0,0 +1,12 @@ | ||
1 | +/* | ||
2 | + * CodePress color styles for PHP syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +b {color:#000080;} /* tags */ | ||
6 | +big, big b, big em, big ins, big s, strong i, strong i b, strong i s, strong i u, strong i a, strong i a u, strong i s u {color:gray;font-weight:normal;} /* comments */ | ||
7 | +s, s b, strong s u, strong s cite {color:#5656fa;font-weight:normal;} /* attributes and strings */ | ||
8 | +strong a, strong a u {color:#006700;font-weight:bold;} /* variables */ | ||
9 | +em {color:#800080;font-style:normal;} /* style */ | ||
10 | +ins {color:#800000;} /* script */ | ||
11 | +strong u {color:#7F0055;font-weight:bold;} /* reserved words */ | ||
12 | +cite, s cite {color:red;font-weight:bold;} /* <?php and ?> */ |
@@ -0,0 +1,61 @@ | @@ -0,0 +1,61 @@ | ||
1 | +/* | ||
2 | + * CodePress regular expressions for PHP syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +// PHP | ||
6 | +Language.syntax = [ | ||
7 | + { input : /(<[^!\?]*?>)/g, output : '<b>$1</b>' }, // all tags | ||
8 | + { input : /(<style.*?>)(.*?)(<\/style>)/g, output : '<em>$1</em><em>$2</em><em>$3</em>' }, // style tags | ||
9 | + { input : /(<script.*?>)(.*?)(<\/script>)/g, output : '<ins>$1</ins><ins>$2</ins><ins>$3</ins>' }, // script tags | ||
10 | + { input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, // strings double quote | ||
11 | + { input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>'}, // strings single quote | ||
12 | + { input : /(<\?)/g, output : '<strong>$1' }, // <?.* | ||
13 | + { input : /(\?>)/g, output : '$1</strong>' }, // .*?> | ||
14 | + { input : /(<\?php|<\?=|<\?|\?>)/g, output : '<cite>$1</cite>' }, // php tags | ||
15 | + { input : /(\$[\w\.]*)/g, output : '<a>$1</a>' }, // vars | ||
16 | + { input : /\b(false|true|and|or|xor|__FILE__|exception|__LINE__|array|as|break|case|class|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|for|foreach|function|global|if|include|include_once|isset|list|new|print|require|require_once|return|static|switch|unset|use|while|__FUNCTION__|__CLASS__|__METHOD__|final|php_user_filter|interface|implements|extends|public|private|protected|abstract|clone|try|catch|throw|this)\b/g, output : '<u>$1</u>' }, // reserved words | ||
17 | + { input : /([^:])\/\/(.*?)(<br|<\/P)/g, output : '$1<i>//$2</i>$3' }, // php comments // | ||
18 | + { input : /([^:])#(.*?)(<br|<\/P)/g, output : '$1<i>#$2</i>$3' }, // php comments # | ||
19 | + { input : /\/\*(.*?)\*\//g, output : '<i>/*$1*/</i>' }, // php comments /* */ | ||
20 | + { input : /(<!--.*?-->.)/g, output : '<big>$1</big>' } // html comments | ||
21 | +] | ||
22 | + | ||
23 | +Language.snippets = [ | ||
24 | + { input : 'if', output : 'if($0){\n\t\n}' }, | ||
25 | + { input : 'ifelse', output : 'if($0){\n\t\n}\nelse{\n\t\n}' }, | ||
26 | + { input : 'else', output : '}\nelse {\n\t' }, | ||
27 | + { input : 'elseif', output : '}\nelseif($0) {\n\t' }, | ||
28 | + { input : 'do', output : 'do{\n\t$0\n}\nwhile();' }, | ||
29 | + { input : 'inc', output : 'include_once("$0");' }, | ||
30 | + { input : 'fun', output : 'function $0(){\n\t\n}' }, | ||
31 | + { input : 'func', output : 'function $0(){\n\t\n}' }, | ||
32 | + { input : 'while', output : 'while($0){\n\t\n}' }, | ||
33 | + { input : 'for', output : 'for($0,,){\n\t\n}' }, | ||
34 | + { input : 'fore', output : 'foreach($0 as ){\n\t\n}' }, | ||
35 | + { input : 'foreach', output : 'foreach($0 as ){\n\t\n}' }, | ||
36 | + { input : 'echo', output : 'echo \'$0\';' }, | ||
37 | + { input : 'switch', output : 'switch($0) {\n\tcase "": break;\n\tdefault: ;\n}' }, | ||
38 | + { input : 'case', output : 'case "$0" : break;' }, | ||
39 | + { input : 'ret0', output : 'return false;' }, | ||
40 | + { input : 'retf', output : 'return false;' }, | ||
41 | + { input : 'ret1', output : 'return true;' }, | ||
42 | + { input : 'rett', output : 'return true;' }, | ||
43 | + { input : 'ret', output : 'return $0;' }, | ||
44 | + { input : 'def', output : 'define(\'$0\',\'\');' }, | ||
45 | + { input : '<?', output : 'php\n$0\n?>' } | ||
46 | +] | ||
47 | + | ||
48 | +Language.complete = [ | ||
49 | + { input : '\'', output : '\'$0\'' }, | ||
50 | + { input : '"', output : '"$0"' }, | ||
51 | + { input : '(', output : '\($0\)' }, | ||
52 | + { input : '[', output : '\[$0\]' }, | ||
53 | + { input : '{', output : '{\n\t$0\n}' } | ||
54 | +] | ||
55 | + | ||
56 | +Language.shortcuts = [ | ||
57 | + { input : '[space]', output : ' ' }, | ||
58 | + { input : '[enter]', output : '<br />' } , | ||
59 | + { input : '[j]', output : 'testing' }, | ||
60 | + { input : '[7]', output : '&' } | ||
61 | +] | ||
0 | \ No newline at end of file | 62 | \ No newline at end of file |
@@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
1 | +/* | ||
2 | + * CodePress color styles for Ruby syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +b {color:#7F0055;font-weight:bold;} /* reserved words */ | ||
6 | +i, i b, i s, i em, i a, i u {color:gray;font-weight:normal;} /* comments */ | ||
7 | +s, s b, s a, s em, s u {color:#2A00FF;font-weight:normal;} /* strings */ | ||
8 | +a {color:#006700;font-weight:bold;} /* variables */ | ||
9 | +em {color:darkblue;font-weight:bold;} /* functions */ | ||
10 | +u {font-weight:bold;} /* special chars */ | ||
0 | \ No newline at end of file | 11 | \ No newline at end of file |
@@ -0,0 +1,26 @@ | @@ -0,0 +1,26 @@ | ||
1 | +/* | ||
2 | + * CodePress regular expressions for Perl syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +// Ruby | ||
6 | +Language.syntax = [ | ||
7 | + { input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, // strings double quote | ||
8 | + { input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>' }, // strings single quote | ||
9 | + { input : /([\$\@\%]+)([\w\.]*)/g, output : '<a>$1$2</a>' }, // vars | ||
10 | + { input : /(def\s+)([\w\.]*)/g, output : '$1<em>$2</em>' }, // functions | ||
11 | + { input : /\b(alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|false|for|if|in|module|next|nil|not|or|redo|rescue|retry|return|self|super|then|true|undef|unless|until|when|while|yield)\b/g, output : '<b>$1</b>' }, // reserved words | ||
12 | + { input : /([\(\){}])/g, output : '<u>$1</u>' }, // special chars | ||
13 | + { input : /#(.*?)(<br>|<\/P>)/g, output : '<i>#$1</i>$2' } // comments | ||
14 | +]; | ||
15 | + | ||
16 | +Language.snippets = [] | ||
17 | + | ||
18 | +Language.complete = [ | ||
19 | + { input : '\'',output : '\'$0\'' }, | ||
20 | + { input : '"', output : '"$0"' }, | ||
21 | + { input : '(', output : '\($0\)' }, | ||
22 | + { input : '[', output : '\[$0\]' }, | ||
23 | + { input : '{', output : '{\n\t$0\n}' } | ||
24 | +] | ||
25 | + | ||
26 | +Language.shortcuts = [] |
@@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
1 | +/* | ||
2 | + * CodePress color styles for SQL syntax highlighting | ||
3 | + * By Merlin Moncure | ||
4 | + */ | ||
5 | + | ||
6 | +b {color:#0000FF;font-style:normal;font-weight:bold;} /* reserved words */ | ||
7 | +u {color:#FF0000;font-style:normal;} /* types */ | ||
8 | +a {color:#CD6600;font-style:normal;font-weight:bold;} /* commands */ | ||
9 | +i, i b, i u, i a, i s {color:#A9A9A9;font-weight:normal;font-style:italic;} /* comments */ | ||
10 | +s, s b, s u, s a, s i {color:#2A00FF;font-weight:normal;} /* strings */ |
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
1 | +/* | ||
2 | + * CodePress regular expressions for SQL syntax highlighting | ||
3 | + * By Merlin Moncure | ||
4 | + */ | ||
5 | + | ||
6 | +// SQL | ||
7 | +Language.syntax = [ | ||
8 | + { input : /\'(.*?)(\')/g, output : '<s>\'$1$2</s>' }, // strings single quote | ||
9 | + { input : /\b(add|after|aggregate|alias|all|and|as|authorization|between|by|cascade|cache|cache|called|case|check|column|comment|constraint|createdb|createuser|cycle|database|default|deferrable|deferred|diagnostics|distinct|domain|each|else|elseif|elsif|encrypted|except|exception|for|foreign|from|from|full|function|get|group|having|if|immediate|immutable|in|increment|initially|increment|index|inherits|inner|input|intersect|into|invoker|is|join|key|language|left|like|limit|local|loop|match|maxvalue|minvalue|natural|nextval|no|nocreatedb|nocreateuser|not|null|of|offset|oids|on|only|operator|or|order|outer|owner|partial|password|perform|plpgsql|primary|record|references|replace|restrict|return|returns|right|row|rule|schema|security|sequence|session|sql|stable|statistics|table|temp|temporary|then|time|to|transaction|trigger|type|unencrypted|union|unique|user|using|valid|value|values|view|volatile|when|where|with|without|zone)\b/gi, output : '<b>$1</b>' }, // reserved words | ||
10 | + { input : /\b(bigint|bigserial|bit|boolean|box|bytea|char|character|cidr|circle|date|decimal|double|float4|float8|inet|int2|int4|int8|integer|interval|line|lseg|macaddr|money|numeric|oid|path|point|polygon|precision|real|refcursor|serial|serial4|serial8|smallint|text|timestamp|varbit|varchar)\b/gi, output : '<u>$1</u>' }, // types | ||
11 | + { input : /\b(abort|alter|analyze|begin|checkpoint|close|cluster|comment|commit|copy|create|deallocate|declare|delete|drop|end|execute|explain|fetch|grant|insert|listen|load|lock|move|notify|prepare|reindex|reset|restart|revoke|rollback|select|set|show|start|truncate|unlisten|update)\b/gi, output : '<a>$1</a>' }, // commands | ||
12 | + { input : /([^:]|^)\-\-(.*?)(<br|<\/P)/g, output: '$1<i>--$2</i>$3' } // comments // | ||
13 | +] | ||
14 | + | ||
15 | +Language.snippets = [ | ||
16 | + { input : 'select', output : 'select $0 from where ' } | ||
17 | +] | ||
18 | + | ||
19 | +Language.complete = [ | ||
20 | + { input : '\'', output : '\'$0\'' }, | ||
21 | + { input : '"', output : '"$0"' }, | ||
22 | + { input : '(', output : '\($0\)' }, | ||
23 | + { input : '[', output : '\[$0\]' }, | ||
24 | + { input : '{', output : '{\n\t$0\n}' } | ||
25 | +] | ||
26 | + | ||
27 | +Language.shortcuts = [] | ||
28 | + | ||
29 | + | ||
30 | + |
@@ -0,0 +1,71 @@ | @@ -0,0 +1,71 @@ | ||
1 | +/* | ||
2 | + * CodePress color styles for ASP-VB syntax highlighting | ||
3 | + * By Martin D. Kirk | ||
4 | + */ | ||
5 | + | ||
6 | +/* tags */ | ||
7 | +b { | ||
8 | + color:#000080; | ||
9 | +} | ||
10 | +/* comments */ | ||
11 | +big, big b, big em, big ins, big s, strong i, strong i b, strong i s, strong i u, strong i a, strong i a u, strong i s u { | ||
12 | + color:gray; | ||
13 | + font-weight:normal; | ||
14 | +} | ||
15 | +/* ASP comments */ | ||
16 | +strong dfn, strong dfn a,strong dfn var, strong dfn a u, strong dfn u{ | ||
17 | + color:gray; | ||
18 | + font-weight:normal; | ||
19 | +} | ||
20 | + /* attributes */ | ||
21 | +s, s b, span s u, span s cite, strong span s { | ||
22 | + color:#5656fa ; | ||
23 | + font-weight:normal; | ||
24 | +} | ||
25 | + /* strings */ | ||
26 | +strong s,strong s b, strong s u, strong s cite { | ||
27 | + color:#009900; | ||
28 | + font-weight:normal; | ||
29 | +} | ||
30 | +strong ins{ | ||
31 | + color:#000000; | ||
32 | + font-weight:bold; | ||
33 | +} | ||
34 | + /* Syntax */ | ||
35 | +strong a, strong a u { | ||
36 | + color:#0000FF; | ||
37 | + font-weight:; | ||
38 | +} | ||
39 | + /* Native Keywords */ | ||
40 | +strong u { | ||
41 | + color:#990099; | ||
42 | + font-weight:bold; | ||
43 | +} | ||
44 | +/* Numbers */ | ||
45 | +strong var{ | ||
46 | + color:#FF0000; | ||
47 | +} | ||
48 | +/* ASP Language */ | ||
49 | +span{ | ||
50 | + color:#990000; | ||
51 | + font-weight:bold; | ||
52 | +} | ||
53 | +strong i,strong a i, strong u i { | ||
54 | + color:#009999; | ||
55 | +} | ||
56 | +/* style */ | ||
57 | +em { | ||
58 | + color:#800080; | ||
59 | + font-style:normal; | ||
60 | +} | ||
61 | + /* script */ | ||
62 | +ins { | ||
63 | + color:#800000; | ||
64 | + font-weight:bold; | ||
65 | +} | ||
66 | + | ||
67 | +/* <?php and ?> */ | ||
68 | +cite, s cite { | ||
69 | + color:red; | ||
70 | + font-weight:bold; | ||
71 | +} | ||
0 | \ No newline at end of file | 72 | \ No newline at end of file |
@@ -0,0 +1,117 @@ | @@ -0,0 +1,117 @@ | ||
1 | +/* | ||
2 | + * CodePress regular expressions for ASP-vbscript syntax highlighting | ||
3 | + */ | ||
4 | + | ||
5 | +// ASP VBScript | ||
6 | +Language.syntax = [ | ||
7 | +// all tags | ||
8 | + { input : /(<[^!%|!%@]*?>)/g, output : '<b>$1</b>' }, | ||
9 | +// style tags | ||
10 | + { input : /(<style.*?>)(.*?)(<\/style>)/g, output : '<em>$1</em><em>$2</em><em>$3</em>' }, | ||
11 | +// script tags | ||
12 | + { input : /(<script.*?>)(.*?)(<\/script>)/g, output : '<ins>$1</ins><ins>$2</ins><ins>$3</ins>' }, | ||
13 | +// strings "" and attributes | ||
14 | + { input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, | ||
15 | +// ASP Comment | ||
16 | + { input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<dfn>\'$1$2</dfn>'}, | ||
17 | +// <%.* | ||
18 | + { input : /(<%)/g, output : '<strong>$1' }, | ||
19 | +// .*%> | ||
20 | + { input : /(%>)/g, output : '$1</strong>' }, | ||
21 | +// <%@...%> | ||
22 | + { input : /(<%@)(.+?)(%>)/gi, output : '$1<span>$2</span>$3' }, | ||
23 | +//Numbers | ||
24 | + { input : /\b([\d]+)\b/g, output : '<var>$1</var>' }, | ||
25 | +// Reserved Words 1 (Blue) | ||
26 | + { input : /\b(And|As|ByRef|ByVal|Call|Case|Class|Const|Dim|Do|Each|Else|ElseIf|Empty|End|Eqv|Exit|False|For|Function)\b/gi, output : '<a>$1</a>' }, | ||
27 | + { input : /\b(Get|GoTo|If|Imp|In|Is|Let|Loop|Me|Mod|Enum|New|Next|Not|Nothing|Null|On|Option|Or|Private|Public|ReDim|Rem)\b/gi, output : '<a>$1</a>' }, | ||
28 | + { input : /\b(Resume|Select|Set|Stop|Sub|Then|To|True|Until|Wend|While|With|Xor|Execute|Randomize|Erase|ExecuteGlobal|Explicit|step)\b/gi, output : '<a>$1</a>' }, | ||
29 | +// Reserved Words 2 (Purple) | ||
30 | + { input : /\b(Abandon|Abs|AbsolutePage|AbsolutePosition|ActiveCommand|ActiveConnection|ActualSize|AddHeader|AddNew|AppendChunk)\b/gi, output : '<u>$1</u>' }, | ||
31 | + { input : /\b(AppendToLog|Application|Array|Asc|Atn|Attributes|BeginTrans|BinaryRead|BinaryWrite|BOF|Bookmark|Boolean|Buffer|Byte)\b/gi, output : '<u>$1</u>' }, | ||
32 | + { input : /\b(CacheControl|CacheSize|Cancel|CancelBatch|CancelUpdate|CBool|CByte|CCur|CDate|CDbl|Charset|Chr|CInt|Clear)\b/gi, output : '<u>$1</u>' }, | ||
33 | + { input : /\b(ClientCertificate|CLng|Clone|Close|CodePage|CommandText|CommandType|CommandTimeout|CommitTrans|CompareBookmarks|ConnectionString|ConnectionTimeout)\b/gi, output : '<u>$1</u>' }, | ||
34 | + { input : /\b(Contents|ContentType|Cookies|Cos|CreateObject|CreateParameter|CSng|CStr|CursorLocation|CursorType|DataMember|DataSource|Date|DateAdd|DateDiff)\b/gi, output : '<u>$1</u>' }, | ||
35 | + { input : /\b(DatePart|DateSerial|DateValue|Day|DefaultDatabase|DefinedSize|Delete|Description|Double|EditMode|Eof|EOF|err|Error)\b/gi, output : '<u>$1</u>' }, | ||
36 | + { input : /\b(Exp|Expires|ExpiresAbsolute|Filter|Find|Fix|Flush|Form|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent)\b/gi, output : '<u>$1</u>' }, | ||
37 | + { input : /\b(GetChunk|GetLastError|GetRows|GetString|Global|HelpContext|HelpFile|Hex|Hour|HTMLEncode|IgnoreCase|Index|InStr|InStrRev)\b/gi, output : '<u>$1</u>' }, | ||
38 | + { input : /\b(Int|Integer|IsArray|IsClientConnected|IsDate|IsolationLevel|Join|LBound|LCase|LCID|Left|Len|Lock|LockType|Log|Long|LTrim)\b/gi, output : '<u>$1</u>' }, | ||
39 | + { input : /\b(MapPath|MarshalOptions|MaxRecords|Mid|Minute|Mode|Month|MonthName|Move|MoveFirst|MoveLast|MoveNext|MovePrevious|Name|NextRecordset)\b/gi, output : '<u>$1</u>' }, | ||
40 | + { input : /\b(Now|Number|NumericScale|ObjectContext|Oct|Open|OpenSchema|OriginalValue|PageCount|PageSize|Pattern|PICS|Precision|Prepared|Property)\b/gi, output : '<u>$1</u>' }, | ||
41 | + { input : /\b(Provider|QueryString|RecordCount|Redirect|RegExp|Remove|RemoveAll|Replace|Requery|Request|Response|Resync|Right|Rnd)\b/gi, output : '<u>$1</u>' }, | ||
42 | + { input : /\b(RollbackTrans|RTrim|Save|ScriptTimeout|Second|Seek|Server|ServerVariables|Session|SessionID|SetAbort|SetComplete|Sgn)\b/gi, output : '<u>$1</u>' }, | ||
43 | + { input : /\b(Sin|Size|Sort|Source|Space|Split|Sqr|State|StaticObjects|Status|StayInSync|StrComp|String|StrReverse|Supports|Tan|Time)\b/gi, output : '<u>$1</u>' }, | ||
44 | + { input : /\b(Timeout|Timer|TimeSerial|TimeValue|TotalBytes|Transfer|Trim|Type|Type|UBound|UCase|UnderlyingValue|UnLock|Update|UpdateBatch)\b/gi, output : '<u>$1</u>' }, | ||
45 | + { input : /\b(URLEncode|Value|Value|Version|Weekday|WeekdayName|Write|Year)\b/gi, output : '<u>$1</u>' }, | ||
46 | +// Reserved Words 3 (Turquis) | ||
47 | + { input : /\b(vbBlack|vbRed|vbGreen|vbYellow|vbBlue|vbMagenta|vbCyan|vbWhite|vbBinaryCompare|vbTextCompare)\b/gi, output : '<i>$1</i>' }, | ||
48 | + { input : /\b(vbSunday|vbMonday|vbTuesday|vbWednesday|vbThursday|vbFriday|vbSaturday|vbUseSystemDayOfWeek)\b/gi, output : '<i>$1</i>' }, | ||
49 | + { input : /\b(vbFirstJan1|vbFirstFourDays|vbFirstFullWeek|vbGeneralDate|vbLongDate|vbShortDate|vbLongTime|vbShortTime)\b/gi, output : '<i>$1</i>' }, | ||
50 | + { input : /\b(vbObjectError|vbCr|VbCrLf|vbFormFeed|vbLf|vbNewLine|vbNullChar|vbNullString|vbTab|vbVerticalTab|vbUseDefault|vbTrue)\b/gi, output : '<i>$1</i>' }, | ||
51 | + { input : /\b(vbFalse|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant)\b/gi, output : '<i>$1</i>' }, | ||
52 | + { input : /\b(vbDataObject|vbDecimal|vbByte|vbArray)\b/gi, output : '<i>$1</i>' }, | ||
53 | +// html comments | ||
54 | + { input : /(<!--.*?-->.)/g, output : '<big>$1</big>' } | ||
55 | +] | ||
56 | + | ||
57 | +Language.Functions = [ | ||
58 | + // Output at index 0, must be the desired tagname surrounding a $1 | ||
59 | + // Name is the index from the regex that marks the functionname | ||
60 | + {input : /(function|sub)([ ]*?)(\w+)([ ]*?\()/gi , output : '<ins>$1</ins>', name : '$3'} | ||
61 | +] | ||
62 | + | ||
63 | +Language.snippets = [ | ||
64 | +//Conditional | ||
65 | + { input : 'if', output : 'If $0 Then\n\t\nEnd If' }, | ||
66 | + { input : 'ifelse', output : 'If $0 Then\n\t\n\nElse\n\t\nEnd If' }, | ||
67 | + { input : 'case', output : 'Select Case $0\n\tCase ?\n\tCase Else\nEnd Select'}, | ||
68 | +//Response | ||
69 | + { input : 'rw', output : 'Response.Write( $0 )' }, | ||
70 | + { input : 'resc', output : 'Response.Cookies( $0 )' }, | ||
71 | + { input : 'resb', output : 'Response.Buffer'}, | ||
72 | + { input : 'resflu', output : 'Response.Flush()'}, | ||
73 | + { input : 'resend', output : 'Response.End'}, | ||
74 | +//Request | ||
75 | + { input : 'reqc', output : 'Request.Cookies( $0 )' }, | ||
76 | + { input : 'rq', output : 'Request.Querystring("$0")' }, | ||
77 | + { input : 'rf', output : 'Request.Form("$0")' }, | ||
78 | +//FSO | ||
79 | + { input : 'fso', output : 'Set fso = Server.CreateObject("Scripting.FileSystemObject")\n$0' }, | ||
80 | + { input : 'setfo', output : 'Set fo = fso.getFolder($0)' }, | ||
81 | + { input : 'setfi', output : 'Set fi = fso.getFile($0)' }, | ||
82 | + { input : 'twr', output : 'Set f = fso.CreateTextFile($0,true)\'overwrite\nf.WriteLine()\nf.Close'}, | ||
83 | + { input : 'tre', output : 'Set f = fso.OpenTextFile($0, 1)\nf.ReadAll\nf.Close'}, | ||
84 | +//Server | ||
85 | + { input : 'mapp', output : 'Server.Mappath($0)' }, | ||
86 | +//Loops | ||
87 | + { input : 'foreach', output : 'For Each $0 in ?\n\t\nNext' }, | ||
88 | + { input : 'for', output : 'For $0 to ? step ?\n\t\nNext' }, | ||
89 | + { input : 'do', output : 'Do While($0)\n\t\nLoop' }, | ||
90 | + { input : 'untilrs', output : 'do until rs.eof\n\t\nrs.movenext\nloop' }, | ||
91 | +//ADO | ||
92 | + { input : 'adorec', output : 'Set rs = Server.CreateObject("ADODB.Recordset")' }, | ||
93 | + { input : 'adocon', output : 'Set Conn = Server.CreateObject("ADODB.Connection")' }, | ||
94 | + { input : 'adostr', output : 'Set oStr = Server.CreateObject("ADODB.Stream")' }, | ||
95 | +//Http Request | ||
96 | + { input : 'xmlhttp', output : 'Set xmlHttp = Server.CreateObject("Microsoft.XMLHTTP")\nxmlHttp.open("GET", $0, false)\nxmlHttp.send()\n?=xmlHttp.responseText' }, | ||
97 | + { input : 'xmldoc', output : 'Set xmldoc = Server.CreateObject("Microsoft.XMLDOM")\nxmldoc.async=false\nxmldoc.load(request)'}, | ||
98 | +//Functions | ||
99 | + { input : 'func', output : 'Function $0()\n\t\n\nEnd Function'}, | ||
100 | + { input : 'sub', output : 'Sub $0()\n\t\nEnd Sub'} | ||
101 | + | ||
102 | +] | ||
103 | + | ||
104 | +Language.complete = [ | ||
105 | + //{ input : '\'', output : '\'$0\'' }, | ||
106 | + { input : '"', output : '"$0"' }, | ||
107 | + { input : '(', output : '\($0\)' }, | ||
108 | + { input : '[', output : '\[$0\]' }, | ||
109 | + { input : '{', output : '{\n\t$0\n}' } | ||
110 | +] | ||
111 | + | ||
112 | +Language.shortcuts = [ | ||
113 | + { input : '[space]', output : ' ' }, | ||
114 | + { input : '[enter]', output : '<br />' } , | ||
115 | + { input : '[j]', output : 'testing' }, | ||
116 | + { input : '[7]', output : '&' } | ||
117 | +] | ||
0 | \ No newline at end of file | 118 | \ No newline at end of file |
@@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
1 | +/* | ||
2 | + * CodePress color styles for HTML syntax highlighting | ||
3 | + * By RJ Bruneel | ||
4 | + */ | ||
5 | + | ||
6 | +b {color:#000080;} /* tags */ | ||
7 | +ins, ins b, ins s, ins em {color:gray;} /* comments */ | ||
8 | +s, s b {color:#7777e4;} /* attribute values */ | ||
9 | +a {color:#E67300;} /* links */ | ||
10 | +u {color:#CC66CC;} /* forms */ | ||
11 | +big {color:#db0000;} /* images */ | ||
12 | +em, em b {color:#800080;} /* style */ | ||
13 | +strong {color:#800000;} /* script */ | ||
14 | +tt i {color:darkblue;font-weight:bold;} /* script reserved words */ | ||
15 | +xsl {color:green;} /* xsl */ |
@@ -0,0 +1,103 @@ | @@ -0,0 +1,103 @@ | ||
1 | +/* | ||
2 | + * CodePress regular expressions for XSL syntax highlighting | ||
3 | + * By RJ Bruneel | ||
4 | + */ | ||
5 | + | ||
6 | +Language.syntax = [ // XSL | ||
7 | + { | ||
8 | + input : /(<[^!]*?>)/g, | ||
9 | + output : '<b>$1</b>' // all tags | ||
10 | + },{ | ||
11 | + input : /(<a.*?>|<\/a>)/g, | ||
12 | + output : '<a>$1</a>' // links | ||
13 | + },{ | ||
14 | + input : /(<img .*?>)/g, | ||
15 | + output : '<big>$1</big>' // images | ||
16 | + },{ | ||
17 | + input : /(<\/?(button|textarea|form|input|select|option|label).*?>)/g, | ||
18 | + output : '<u>$1</u>' // forms | ||
19 | + },{ | ||
20 | + input : /(<style.*?>)(.*?)(<\/style>)/g, | ||
21 | + output : '<em>$1</em><em>$2</em><em>$3</em>' // style tags | ||
22 | + },{ | ||
23 | + input : /(<script.*?>)(.*?)(<\/script>)/g, | ||
24 | + output : '<strong>$1</strong><tt>$2</tt><strong>$3</strong>' // script tags | ||
25 | + },{ | ||
26 | + input : /(<xsl.*?>|<\/xsl.*?>)/g, | ||
27 | + output : '<xsl>$1</xsl>' // xsl | ||
28 | + },{ | ||
29 | + input : /=(".*?")/g, | ||
30 | + output : '=<s>$1</s>' // atributes double quote | ||
31 | + },{ | ||
32 | + input : /=('.*?')/g, | ||
33 | + output : '=<s>$1</s>' // atributes single quote | ||
34 | + },{ | ||
35 | + input : /(<!--.*?-->.)/g, | ||
36 | + output : '<ins>$1</ins>' // comments | ||
37 | + },{ | ||
38 | + input : /\b(alert|window|document|break|continue|do|for|new|this|void|case|default|else|function|return|typeof|while|if|label|switch|var|with|catch|boolean|int|try|false|throws|null|true|goto)\b/g, | ||
39 | + output : '<i>$1</i>' // script reserved words | ||
40 | + } | ||
41 | +]; | ||
42 | + | ||
43 | +Language.snippets = [ | ||
44 | + {input : 'aref', output : '<a href="$0"></a>' }, | ||
45 | + {input : 'h1', output : '<h1>$0</h1>' }, | ||
46 | + {input : 'h2', output : '<h2>$0</h2>' }, | ||
47 | + {input : 'h3', output : '<h3>$0</h3>' }, | ||
48 | + {input : 'h4', output : '<h4>$0</h4>' }, | ||
49 | + {input : 'h5', output : '<h5>$0</h5>' }, | ||
50 | + {input : 'h6', output : '<h6>$0</h6>' }, | ||
51 | + {input : 'html', output : '<html>\n\t$0\n</html>' }, | ||
52 | + {input : 'head', output : '<head>\n\t<meta http-equiv="content-type" content="text/html; charset=utf-8" />\n\t<title>$0</title>\n\t\n</head>' }, | ||
53 | + {input : 'img', output : '<img src="$0" width="" height="" alt="" border="0" />' }, | ||
54 | + {input : 'input', output : '<input name="$0" id="" type="" value="" />' }, | ||
55 | + {input : 'label', output : '<label for="$0"></label>' }, | ||
56 | + {input : 'legend', output : '<legend>\n\t$0\n</legend>' }, | ||
57 | + {input : 'link', output : '<link rel="stylesheet" href="$0" type="text/css" media="screen" charset="utf-8" />' }, | ||
58 | + {input : 'base', output : '<base href="$0" />' }, | ||
59 | + {input : 'body', output : '<body>\n\t$0\n</body>' }, | ||
60 | + {input : 'css', output : '<link rel="stylesheet" href="$0" type="text/css" media="screen" charset="utf-8" />' }, | ||
61 | + {input : 'div', output : '<div>\n\t$0\n</div>' }, | ||
62 | + {input : 'divid', output : '<div id="$0">\n\t\n</div>' }, | ||
63 | + {input : 'dl', output : '<dl>\n\t<dt>\n\t\t$0\n\t</dt>\n\t<dd></dd>\n</dl>' }, | ||
64 | + {input : 'fieldset', output : '<fieldset>\n\t$0\n</fieldset>' }, | ||
65 | + {input : 'form', output : '<form action="$0" method="" name="">\n\t\n</form>' }, | ||
66 | + {input : 'meta', output : '<meta name="$0" content="" />' }, | ||
67 | + {input : 'p', output : '<p>$0</p>' }, | ||
68 | + {input : 'b', output : '<b>$0</b>' }, | ||
69 | + {input : 'li', output : '<li>$0</li>' }, | ||
70 | + {input : 'ul', output : '<ul>$0</ul>' }, | ||
71 | + {input : 'ol', output : '<ol>$0</ol>' }, | ||
72 | + {input : 'strong', output : '<strong>$0</strong>' }, | ||
73 | + {input : 'br', output : '<br />' }, | ||
74 | + {input : 'script', output : '<script type="text/javascript" language="javascript" charset="utf-8">\n\t$0\t\n</script>' }, | ||
75 | + {input : 'scriptsrc', output : '<script src="$0" type="text/javascript" language="javascript" charset="utf-8"></script>' }, | ||
76 | + {input : 'span', output : '<span>$0</span>' }, | ||
77 | + {input : 'table', output : '<table border="$0" cellspacing="" cellpadding="">\n\t<tr><th></th></tr>\n\t<tr><td></td></tr>\n</table>' }, | ||
78 | + {input : 'style', output : '<style type="text/css" media="screen">\n\t$0\n</style>' }, | ||
79 | + {input : 'xsl:stylesheet', output : '<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">' }, | ||
80 | + {input : 'xsl:template', output : '<xsl:template>$0</xsl:template>' }, | ||
81 | + {input : 'xsl:for-each', output : '<xsl:for-each select="$0"></xsl:for-each>' }, | ||
82 | + {input : 'xsl:choose', output : '<xsl:choose>$0<\xsl:choose>' }, | ||
83 | + {input : 'xsl:param', output : '<xsl:param name="$0" />' }, | ||
84 | + {input : 'xsl:variable', output : '<xsl:variable name="$0"></xsl:variable>' }, | ||
85 | + {input : 'xsl:if', output : '<xsl:if test="$0"></xsl:if>' }, | ||
86 | + {input : 'xsl:when', output : '<xsl:when test="$0"></xsl:when>' }, | ||
87 | + {input : 'xsl:otherwise', output : '<xsl:otherwise>$0</xsl:otherwise>' }, | ||
88 | + {input : 'xsl:attribute', output : '<xsl:attribute name="$0"></xsl:attribute>' }, | ||
89 | + {input : 'xsl:value-of', output : '<xsl:value-of select="$0"/>' }, | ||
90 | + {input : 'xsl:with-param', output : '<xsl:with-param name="$0" select="" />' }, | ||
91 | + {input : 'xsl:call-template', output : '<xsl:call-template name="$0">' } | ||
92 | + | ||
93 | +]; | ||
94 | + | ||
95 | +Language.complete = [ // Auto complete only for 1 character | ||
96 | + {input : '\'',output : '\'$0\'' }, | ||
97 | + {input : '"', output : '"$0"' }, | ||
98 | + {input : '(', output : '\($0\)' }, | ||
99 | + {input : '[', output : '\[$0\]' }, | ||
100 | + {input : '{', output : '{\n\t$0\n}' } | ||
101 | +]; | ||
102 | + | ||
103 | +Language.shortcuts = []; | ||
0 | \ No newline at end of file | 104 | \ No newline at end of file |
@@ -0,0 +1,458 @@ | @@ -0,0 +1,458 @@ | ||
1 | + GNU LESSER GENERAL PUBLIC LICENSE | ||
2 | + Version 2.1, February 1999 | ||
3 | + | ||
4 | + Copyright (C) 1991, 1999 Free Software Foundation, Inc. | ||
5 | + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
6 | + Everyone is permitted to copy and distribute verbatim copies | ||
7 | + of this license document, but changing it is not allowed. | ||
8 | + | ||
9 | +[This is the first released version of the Lesser GPL. It also counts | ||
10 | + as the successor of the GNU Library Public License, version 2, hence | ||
11 | + the version number 2.1.] | ||
12 | + | ||
13 | + Preamble | ||
14 | + | ||
15 | + The licenses for most software are designed to take away your | ||
16 | +freedom to share and change it. By contrast, the GNU General Public | ||
17 | +Licenses are intended to guarantee your freedom to share and change | ||
18 | +free software--to make sure the software is free for all its users. | ||
19 | + | ||
20 | + This license, the Lesser General Public License, applies to some | ||
21 | +specially designated software packages--typically libraries--of the | ||
22 | +Free Software Foundation and other authors who decide to use it. You | ||
23 | +can use it too, but we suggest you first think carefully about whether | ||
24 | +this license or the ordinary General Public License is the better | ||
25 | +strategy to use in any particular case, based on the explanations below. | ||
26 | + | ||
27 | + When we speak of free software, we are referring to freedom of use, | ||
28 | +not price. Our General Public Licenses are designed to make sure that | ||
29 | +you have the freedom to distribute copies of free software (and charge | ||
30 | +for this service if you wish); that you receive source code or can get | ||
31 | +it if you want it; that you can change the software and use pieces of | ||
32 | +it in new free programs; and that you are informed that you can do | ||
33 | +these things. | ||
34 | + | ||
35 | + To protect your rights, we need to make restrictions that forbid | ||
36 | +distributors to deny you these rights or to ask you to surrender these | ||
37 | +rights. These restrictions translate to certain responsibilities for | ||
38 | +you if you distribute copies of the library or if you modify it. | ||
39 | + | ||
40 | + For example, if you distribute copies of the library, whether gratis | ||
41 | +or for a fee, you must give the recipients all the rights that we gave | ||
42 | +you. You must make sure that they, too, receive or can get the source | ||
43 | +code. If you link other code with the library, you must provide | ||
44 | +complete object files to the recipients, so that they can relink them | ||
45 | +with the library after making changes to the library and recompiling | ||
46 | +it. And you must show them these terms so they know their rights. | ||
47 | + | ||
48 | + We protect your rights with a two-step method: (1) we copyright the | ||
49 | +library, and (2) we offer you this license, which gives you legal | ||
50 | +permission to copy, distribute and/or modify the library. | ||
51 | + | ||
52 | + To protect each distributor, we want to make it very clear that | ||
53 | +there is no warranty for the free library. Also, if the library is | ||
54 | +modified by someone else and passed on, the recipients should know | ||
55 | +that what they have is not the original version, so that the original | ||
56 | +author's reputation will not be affected by problems that might be | ||
57 | +introduced by others. | ||
58 | + | ||
59 | + Finally, software patents pose a constant threat to the existence of | ||
60 | +any free program. We wish to make sure that a company cannot | ||
61 | +effectively restrict the users of a free program by obtaining a | ||
62 | +restrictive license from a patent holder. Therefore, we insist that | ||
63 | +any patent license obtained for a version of the library must be | ||
64 | +consistent with the full freedom of use specified in this license. | ||
65 | + | ||
66 | + Most GNU software, including some libraries, is covered by the | ||
67 | +ordinary GNU General Public License. This license, the GNU Lesser | ||
68 | +General Public License, applies to certain designated libraries, and | ||
69 | +is quite different from the ordinary General Public License. We use | ||
70 | +this license for certain libraries in order to permit linking those | ||
71 | +libraries into non-free programs. | ||
72 | + | ||
73 | + When a program is linked with a library, whether statically or using | ||
74 | +a shared library, the combination of the two is legally speaking a | ||
75 | +combined work, a derivative of the original library. The ordinary | ||
76 | +General Public License therefore permits such linking only if the | ||
77 | +entire combination fits its criteria of freedom. The Lesser General | ||
78 | +Public License permits more lax criteria for linking other code with | ||
79 | +the library. | ||
80 | + | ||
81 | + We call this license the "Lesser" General Public License because it | ||
82 | +does Less to protect the user's freedom than the ordinary General | ||
83 | +Public License. It also provides other free software developers Less | ||
84 | +of an advantage over competing non-free programs. These disadvantages | ||
85 | +are the reason we use the ordinary General Public License for many | ||
86 | +libraries. However, the Lesser license provides advantages in certain | ||
87 | +special circumstances. | ||
88 | + | ||
89 | + For example, on rare occasions, there may be a special need to | ||
90 | +encourage the widest possible use of a certain library, so that it becomes | ||
91 | +a de-facto standard. To achieve this, non-free programs must be | ||
92 | +allowed to use the library. A more frequent case is that a free | ||
93 | +library does the same job as widely used non-free libraries. In this | ||
94 | +case, there is little to gain by limiting the free library to free | ||
95 | +software only, so we use the Lesser General Public License. | ||
96 | + | ||
97 | + In other cases, permission to use a particular library in non-free | ||
98 | +programs enables a greater number of people to use a large body of | ||
99 | +free software. For example, permission to use the GNU C Library in | ||
100 | +non-free programs enables many more people to use the whole GNU | ||
101 | +operating system, as well as its variant, the GNU/Linux operating | ||
102 | +system. | ||
103 | + | ||
104 | + Although the Lesser General Public License is Less protective of the | ||
105 | +users' freedom, it does ensure that the user of a program that is | ||
106 | +linked with the Library has the freedom and the wherewithal to run | ||
107 | +that program using a modified version of the Library. | ||
108 | + | ||
109 | + The precise terms and conditions for copying, distribution and | ||
110 | +modification follow. Pay close attention to the difference between a | ||
111 | +"work based on the library" and a "work that uses the library". The | ||
112 | +former contains code derived from the library, whereas the latter must | ||
113 | +be combined with the library in order to run. | ||
114 | + | ||
115 | + GNU LESSER GENERAL PUBLIC LICENSE | ||
116 | + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||
117 | + | ||
118 | + 0. This License Agreement applies to any software library or other | ||
119 | +program which contains a notice placed by the copyright holder or | ||
120 | +other authorized party saying it may be distributed under the terms of | ||
121 | +this Lesser General Public License (also called "this License"). | ||
122 | +Each licensee is addressed as "you". | ||
123 | + | ||
124 | + A "library" means a collection of software functions and/or data | ||
125 | +prepared so as to be conveniently linked with application programs | ||
126 | +(which use some of those functions and data) to form executables. | ||
127 | + | ||
128 | + The "Library", below, refers to any such software library or work | ||
129 | +which has been distributed under these terms. A "work based on the | ||
130 | +Library" means either the Library or any derivative work under | ||
131 | +copyright law: that is to say, a work containing the Library or a | ||
132 | +portion of it, either verbatim or with modifications and/or translated | ||
133 | +straightforwardly into another language. (Hereinafter, translation is | ||
134 | +included without limitation in the term "modification".) | ||
135 | + | ||
136 | + "Source code" for a work means the preferred form of the work for | ||
137 | +making modifications to it. For a library, complete source code means | ||
138 | +all the source code for all modules it contains, plus any associated | ||
139 | +interface definition files, plus the scripts used to control compilation | ||
140 | +and installation of the library. | ||
141 | + | ||
142 | + Activities other than copying, distribution and modification are not | ||
143 | +covered by this License; they are outside its scope. The act of | ||
144 | +running a program using the Library is not restricted, and output from | ||
145 | +such a program is covered only if its contents constitute a work based | ||
146 | +on the Library (independent of the use of the Library in a tool for | ||
147 | +writing it). Whether that is true depends on what the Library does | ||
148 | +and what the program that uses the Library does. | ||
149 | + | ||
150 | + 1. You may copy and distribute verbatim copies of the Library's | ||
151 | +complete source code as you receive it, in any medium, provided that | ||
152 | +you conspicuously and appropriately publish on each copy an | ||
153 | +appropriate copyright notice and disclaimer of warranty; keep intact | ||
154 | +all the notices that refer to this License and to the absence of any | ||
155 | +warranty; and distribute a copy of this License along with the | ||
156 | +Library. | ||
157 | + | ||
158 | + You may charge a fee for the physical act of transferring a copy, | ||
159 | +and you may at your option offer warranty protection in exchange for a | ||
160 | +fee. | ||
161 | + | ||
162 | + 2. You may modify your copy or copies of the Library or any portion | ||
163 | +of it, thus forming a work based on the Library, and copy and | ||
164 | +distribute such modifications or work under the terms of Section 1 | ||
165 | +above, provided that you also meet all of these conditions: | ||
166 | + | ||
167 | + a) The modified work must itself be a software library. | ||
168 | + | ||
169 | + b) You must cause the files modified to carry prominent notices | ||
170 | + stating that you changed the files and the date of any change. | ||
171 | + | ||
172 | + c) You must cause the whole of the work to be licensed at no | ||
173 | + charge to all third parties under the terms of this License. | ||
174 | + | ||
175 | + d) If a facility in the modified Library refers to a function or a | ||
176 | + table of data to be supplied by an application program that uses | ||
177 | + the facility, other than as an argument passed when the facility | ||
178 | + is invoked, then you must make a good faith effort to ensure that, | ||
179 | + in the event an application does not supply such function or | ||
180 | + table, the facility still operates, and performs whatever part of | ||
181 | + its purpose remains meaningful. | ||
182 | + | ||
183 | + (For example, a function in a library to compute square roots has | ||
184 | + a purpose that is entirely well-defined independent of the | ||
185 | + application. Therefore, Subsection 2d requires that any | ||
186 | + application-supplied function or table used by this function must | ||
187 | + be optional: if the application does not supply it, the square | ||
188 | + root function must still compute square roots.) | ||
189 | + | ||
190 | +These requirements apply to the modified work as a whole. If | ||
191 | +identifiable sections of that work are not derived from the Library, | ||
192 | +and can be reasonably considered independent and separate works in | ||
193 | +themselves, then this License, and its terms, do not apply to those | ||
194 | +sections when you distribute them as separate works. But when you | ||
195 | +distribute the same sections as part of a whole which is a work based | ||
196 | +on the Library, the distribution of the whole must be on the terms of | ||
197 | +this License, whose permissions for other licensees extend to the | ||
198 | +entire whole, and thus to each and every part regardless of who wrote | ||
199 | +it. | ||
200 | + | ||
201 | +Thus, it is not the intent of this section to claim rights or contest | ||
202 | +your rights to work written entirely by you; rather, the intent is to | ||
203 | +exercise the right to control the distribution of derivative or | ||
204 | +collective works based on the Library. | ||
205 | + | ||
206 | +In addition, mere aggregation of another work not based on the Library | ||
207 | +with the Library (or with a work based on the Library) on a volume of | ||
208 | +a storage or distribution medium does not bring the other work under | ||
209 | +the scope of this License. | ||
210 | + | ||
211 | + 3. You may opt to apply the terms of the ordinary GNU General Public | ||
212 | +License instead of this License to a given copy of the Library. To do | ||
213 | +this, you must alter all the notices that refer to this License, so | ||
214 | +that they refer to the ordinary GNU General Public License, version 2, | ||
215 | +instead of to this License. (If a newer version than version 2 of the | ||
216 | +ordinary GNU General Public License has appeared, then you can specify | ||
217 | +that version instead if you wish.) Do not make any other change in | ||
218 | +these notices. | ||
219 | + | ||
220 | + Once this change is made in a given copy, it is irreversible for | ||
221 | +that copy, so the ordinary GNU General Public License applies to all | ||
222 | +subsequent copies and derivative works made from that copy. | ||
223 | + | ||
224 | + This option is useful when you wish to copy part of the code of | ||
225 | +the Library into a program that is not a library. | ||
226 | + | ||
227 | + 4. You may copy and distribute the Library (or a portion or | ||
228 | +derivative of it, under Section 2) in object code or executable form | ||
229 | +under the terms of Sections 1 and 2 above provided that you accompany | ||
230 | +it with the complete corresponding machine-readable source code, which | ||
231 | +must be distributed under the terms of Sections 1 and 2 above on a | ||
232 | +medium customarily used for software interchange. | ||
233 | + | ||
234 | + If distribution of object code is made by offering access to copy | ||
235 | +from a designated place, then offering equivalent access to copy the | ||
236 | +source code from the same place satisfies the requirement to | ||
237 | +distribute the source code, even though third parties are not | ||
238 | +compelled to copy the source along with the object code. | ||
239 | + | ||
240 | + 5. A program that contains no derivative of any portion of the | ||
241 | +Library, but is designed to work with the Library by being compiled or | ||
242 | +linked with it, is called a "work that uses the Library". Such a | ||
243 | +work, in isolation, is not a derivative work of the Library, and | ||
244 | +therefore falls outside the scope of this License. | ||
245 | + | ||
246 | + However, linking a "work that uses the Library" with the Library | ||
247 | +creates an executable that is a derivative of the Library (because it | ||
248 | +contains portions of the Library), rather than a "work that uses the | ||
249 | +library". The executable is therefore covered by this License. | ||
250 | +Section 6 states terms for distribution of such executables. | ||
251 | + | ||
252 | + When a "work that uses the Library" uses material from a header file | ||
253 | +that is part of the Library, the object code for the work may be a | ||
254 | +derivative work of the Library even though the source code is not. | ||
255 | +Whether this is true is especially significant if the work can be | ||
256 | +linked without the Library, or if the work is itself a library. The | ||
257 | +threshold for this to be true is not precisely defined by law. | ||
258 | + | ||
259 | + If such an object file uses only numerical parameters, data | ||
260 | +structure layouts and accessors, and small macros and small inline | ||
261 | +functions (ten lines or less in length), then the use of the object | ||
262 | +file is unrestricted, regardless of whether it is legally a derivative | ||
263 | +work. (Executables containing this object code plus portions of the | ||
264 | +Library will still fall under Section 6.) | ||
265 | + | ||
266 | + Otherwise, if the work is a derivative of the Library, you may | ||
267 | +distribute the object code for the work under the terms of Section 6. | ||
268 | +Any executables containing that work also fall under Section 6, | ||
269 | +whether or not they are linked directly with the Library itself. | ||
270 | + | ||
271 | + 6. As an exception to the Sections above, you may also combine or | ||
272 | +link a "work that uses the Library" with the Library to produce a | ||
273 | +work containing portions of the Library, and distribute that work | ||
274 | +under terms of your choice, provided that the terms permit | ||
275 | +modification of the work for the customer's own use and reverse | ||
276 | +engineering for debugging such modifications. | ||
277 | + | ||
278 | + You must give prominent notice with each copy of the work that the | ||
279 | +Library is used in it and that the Library and its use are covered by | ||
280 | +this License. You must supply a copy of this License. If the work | ||
281 | +during execution displays copyright notices, you must include the | ||
282 | +copyright notice for the Library among them, as well as a reference | ||
283 | +directing the user to the copy of this License. Also, you must do one | ||
284 | +of these things: | ||
285 | + | ||
286 | + a) Accompany the work with the complete corresponding | ||
287 | + machine-readable source code for the Library including whatever | ||
288 | + changes were used in the work (which must be distributed under | ||
289 | + Sections 1 and 2 above); and, if the work is an executable linked | ||
290 | + with the Library, with the complete machine-readable "work that | ||
291 | + uses the Library", as object code and/or source code, so that the | ||
292 | + user can modify the Library and then relink to produce a modified | ||
293 | + executable containing the modified Library. (It is understood | ||
294 | + that the user who changes the contents of definitions files in the | ||
295 | + Library will not necessarily be able to recompile the application | ||
296 | + to use the modified definitions.) | ||
297 | + | ||
298 | + b) Use a suitable shared library mechanism for linking with the | ||
299 | + Library. A suitable mechanism is one that (1) uses at run time a | ||
300 | + copy of the library already present on the user's computer system, | ||
301 | + rather than copying library functions into the executable, and (2) | ||
302 | + will operate properly with a modified version of the library, if | ||
303 | + the user installs one, as long as the modified version is | ||
304 | + interface-compatible with the version that the work was made with. | ||
305 | + | ||
306 | + c) Accompany the work with a written offer, valid for at | ||
307 | + least three years, to give the same user the materials | ||
308 | + specified in Subsection 6a, above, for a charge no more | ||
309 | + than the cost of performing this distribution. | ||
310 | + | ||
311 | + d) If distribution of the work is made by offering access to copy | ||
312 | + from a designated place, offer equivalent access to copy the above | ||
313 | + specified materials from the same place. | ||
314 | + | ||
315 | + e) Verify that the user has already received a copy of these | ||
316 | + materials or that you have already sent this user a copy. | ||
317 | + | ||
318 | + For an executable, the required form of the "work that uses the | ||
319 | +Library" must include any data and utility programs needed for | ||
320 | +reproducing the executable from it. However, as a special exception, | ||
321 | +the materials to be distributed need not include anything that is | ||
322 | +normally distributed (in either source or binary form) with the major | ||
323 | +components (compiler, kernel, and so on) of the operating system on | ||
324 | +which the executable runs, unless that component itself accompanies | ||
325 | +the executable. | ||
326 | + | ||
327 | + It may happen that this requirement contradicts the license | ||
328 | +restrictions of other proprietary libraries that do not normally | ||
329 | +accompany the operating system. Such a contradiction means you cannot | ||
330 | +use both them and the Library together in an executable that you | ||
331 | +distribute. | ||
332 | + | ||
333 | + 7. You may place library facilities that are a work based on the | ||
334 | +Library side-by-side in a single library together with other library | ||
335 | +facilities not covered by this License, and distribute such a combined | ||
336 | +library, provided that the separate distribution of the work based on | ||
337 | +the Library and of the other library facilities is otherwise | ||
338 | +permitted, and provided that you do these two things: | ||
339 | + | ||
340 | + a) Accompany the combined library with a copy of the same work | ||
341 | + based on the Library, uncombined with any other library | ||
342 | + facilities. This must be distributed under the terms of the | ||
343 | + Sections above. | ||
344 | + | ||
345 | + b) Give prominent notice with the combined library of the fact | ||
346 | + that part of it is a work based on the Library, and explaining | ||
347 | + where to find the accompanying uncombined form of the same work. | ||
348 | + | ||
349 | + 8. You may not copy, modify, sublicense, link with, or distribute | ||
350 | +the Library except as expressly provided under this License. Any | ||
351 | +attempt otherwise to copy, modify, sublicense, link with, or | ||
352 | +distribute the Library is void, and will automatically terminate your | ||
353 | +rights under this License. However, parties who have received copies, | ||
354 | +or rights, from you under this License will not have their licenses | ||
355 | +terminated so long as such parties remain in full compliance. | ||
356 | + | ||
357 | + 9. You are not required to accept this License, since you have not | ||
358 | +signed it. However, nothing else grants you permission to modify or | ||
359 | +distribute the Library or its derivative works. These actions are | ||
360 | +prohibited by law if you do not accept this License. Therefore, by | ||
361 | +modifying or distributing the Library (or any work based on the | ||
362 | +Library), you indicate your acceptance of this License to do so, and | ||
363 | +all its terms and conditions for copying, distributing or modifying | ||
364 | +the Library or works based on it. | ||
365 | + | ||
366 | + 10. Each time you redistribute the Library (or any work based on the | ||
367 | +Library), the recipient automatically receives a license from the | ||
368 | +original licensor to copy, distribute, link with or modify the Library | ||
369 | +subject to these terms and conditions. You may not impose any further | ||
370 | +restrictions on the recipients' exercise of the rights granted herein. | ||
371 | +You are not responsible for enforcing compliance by third parties with | ||
372 | +this License. | ||
373 | + | ||
374 | + 11. If, as a consequence of a court judgment or allegation of patent | ||
375 | +infringement or for any other reason (not limited to patent issues), | ||
376 | +conditions are imposed on you (whether by court order, agreement or | ||
377 | +otherwise) that contradict the conditions of this License, they do not | ||
378 | +excuse you from the conditions of this License. If you cannot | ||
379 | +distribute so as to satisfy simultaneously your obligations under this | ||
380 | +License and any other pertinent obligations, then as a consequence you | ||
381 | +may not distribute the Library at all. For example, if a patent | ||
382 | +license would not permit royalty-free redistribution of the Library by | ||
383 | +all those who receive copies directly or indirectly through you, then | ||
384 | +the only way you could satisfy both it and this License would be to | ||
385 | +refrain entirely from distribution of the Library. | ||
386 | + | ||
387 | +If any portion of this section is held invalid or unenforceable under any | ||
388 | +particular circumstance, the balance of the section is intended to apply, | ||
389 | +and the section as a whole is intended to apply in other circumstances. | ||
390 | + | ||
391 | +It is not the purpose of this section to induce you to infringe any | ||
392 | +patents or other property right claims or to contest validity of any | ||
393 | +such claims; this section has the sole purpose of protecting the | ||
394 | +integrity of the free software distribution system which is | ||
395 | +implemented by public license practices. Many people have made | ||
396 | +generous contributions to the wide range of software distributed | ||
397 | +through that system in reliance on consistent application of that | ||
398 | +system; it is up to the author/donor to decide if he or she is willing | ||
399 | +to distribute software through any other system and a licensee cannot | ||
400 | +impose that choice. | ||
401 | + | ||
402 | +This section is intended to make thoroughly clear what is believed to | ||
403 | +be a consequence of the rest of this License. | ||
404 | + | ||
405 | + 12. If the distribution and/or use of the Library is restricted in | ||
406 | +certain countries either by patents or by copyrighted interfaces, the | ||
407 | +original copyright holder who places the Library under this License may add | ||
408 | +an explicit geographical distribution limitation excluding those countries, | ||
409 | +so that distribution is permitted only in or among countries not thus | ||
410 | +excluded. In such case, this License incorporates the limitation as if | ||
411 | +written in the body of this License. | ||
412 | + | ||
413 | + 13. The Free Software Foundation may publish revised and/or new | ||
414 | +versions of the Lesser General Public License from time to time. | ||
415 | +Such new versions will be similar in spirit to the present version, | ||
416 | +but may differ in detail to address new problems or concerns. | ||
417 | + | ||
418 | +Each version is given a distinguishing version number. If the Library | ||
419 | +specifies a version number of this License which applies to it and | ||
420 | +"any later version", you have the option of following the terms and | ||
421 | +conditions either of that version or of any later version published by | ||
422 | +the Free Software Foundation. If the Library does not specify a | ||
423 | +license version number, you may choose any version ever published by | ||
424 | +the Free Software Foundation. | ||
425 | + | ||
426 | + 14. If you wish to incorporate parts of the Library into other free | ||
427 | +programs whose distribution conditions are incompatible with these, | ||
428 | +write to the author to ask for permission. For software which is | ||
429 | +copyrighted by the Free Software Foundation, write to the Free | ||
430 | +Software Foundation; we sometimes make exceptions for this. Our | ||
431 | +decision will be guided by the two goals of preserving the free status | ||
432 | +of all derivatives of our free software and of promoting the sharing | ||
433 | +and reuse of software generally. | ||
434 | + | ||
435 | + NO WARRANTY | ||
436 | + | ||
437 | + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO | ||
438 | +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. | ||
439 | +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR | ||
440 | +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY | ||
441 | +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE | ||
442 | +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
443 | +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE | ||
444 | +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME | ||
445 | +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. | ||
446 | + | ||
447 | + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN | ||
448 | +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY | ||
449 | +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU | ||
450 | +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR | ||
451 | +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE | ||
452 | +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING | ||
453 | +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A | ||
454 | +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF | ||
455 | +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH | ||
456 | +DAMAGES. | ||
457 | + | ||
458 | + END OF TERMS AND CONDITIONS |