brandon-codex 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. data/History.txt +18 -0
  2. data/LICENSE.txt +29 -0
  3. data/Manifest.txt +105 -0
  4. data/PostInstall.txt +5 -0
  5. data/README.txt +31 -0
  6. data/Rakefile +6 -0
  7. data/app_generators/codex/USAGE +5 -0
  8. data/app_generators/codex/codex_generator.rb +109 -0
  9. data/app_generators/codex/templates/Rakefile +59 -0
  10. data/app_generators/codex/templates/bin/build_all.rb +47 -0
  11. data/app_generators/codex/templates/bin/postprocess_all.rb +5 -0
  12. data/app_generators/codex/templates/bin/pressie.rb +10 -0
  13. data/app_generators/codex/templates/code/control/basic_continuation.rb +11 -0
  14. data/app_generators/codex/templates/code/control/cc_throw_catch.rb +59 -0
  15. data/app_generators/codex/templates/code/control/closure_continuation.rb +8 -0
  16. data/app_generators/codex/templates/code/control/closure_continuation_2.rb +12 -0
  17. data/app_generators/codex/templates/content/basics.textile +37 -0
  18. data/app_generators/codex/templates/content/building.textile +27 -0
  19. data/app_generators/codex/templates/content/example.textile +80 -0
  20. data/app_generators/codex/templates/content/including_code.textile +80 -0
  21. data/app_generators/codex/templates/content/including_tex.textile +31 -0
  22. data/app_generators/codex/templates/content/metadata.yml +4 -0
  23. data/app_generators/codex/templates/content/table_of_contents.textile +20 -0
  24. data/app_generators/codex/templates/dp.SyntaxHighlighter/CSS.html +115 -0
  25. data/app_generators/codex/templates/dp.SyntaxHighlighter/CSharp.html +134 -0
  26. data/app_generators/codex/templates/dp.SyntaxHighlighter/CollapseCode.html +90 -0
  27. data/app_generators/codex/templates/dp.SyntaxHighlighter/Cpp.html +190 -0
  28. data/app_generators/codex/templates/dp.SyntaxHighlighter/CrashTest.html +108 -0
  29. data/app_generators/codex/templates/dp.SyntaxHighlighter/Delphi.html +112 -0
  30. data/app_generators/codex/templates/dp.SyntaxHighlighter/FirstLine.html +90 -0
  31. data/app_generators/codex/templates/dp.SyntaxHighlighter/Index.html +80 -0
  32. data/app_generators/codex/templates/dp.SyntaxHighlighter/Java.html +122 -0
  33. data/app_generators/codex/templates/dp.SyntaxHighlighter/JavaScript.html +112 -0
  34. data/app_generators/codex/templates/dp.SyntaxHighlighter/NoControls.html +89 -0
  35. data/app_generators/codex/templates/dp.SyntaxHighlighter/NoGutter.html +89 -0
  36. data/app_generators/codex/templates/dp.SyntaxHighlighter/PHP.html +102 -0
  37. data/app_generators/codex/templates/dp.SyntaxHighlighter/Python.html +121 -0
  38. data/app_generators/codex/templates/dp.SyntaxHighlighter/Ruby.html +131 -0
  39. data/app_generators/codex/templates/dp.SyntaxHighlighter/SQL.html +98 -0
  40. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/clipboard.swf +0 -0
  41. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCSharp.js +32 -0
  42. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCpp.js +73 -0
  43. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCss.js +52 -0
  44. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushDelphi.js +34 -0
  45. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushJScript.js +22 -0
  46. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushJava.js +28 -0
  47. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushPhp.js +60 -0
  48. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushPython.js +30 -0
  49. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushRuby.js +28 -0
  50. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushSql.js +42 -0
  51. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushVb.js +29 -0
  52. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushXml.js +70 -0
  53. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shCore.js +414 -0
  54. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shCore.uncompressed.js +674 -0
  55. data/app_generators/codex/templates/dp.SyntaxHighlighter/ShowColumns.html +89 -0
  56. data/app_generators/codex/templates/dp.SyntaxHighlighter/SmartTabs.html +88 -0
  57. data/app_generators/codex/templates/dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css +158 -0
  58. data/app_generators/codex/templates/dp.SyntaxHighlighter/Styles/TestPages.css +63 -0
  59. data/app_generators/codex/templates/dp.SyntaxHighlighter/Templates/Test.dwt +80 -0
  60. data/app_generators/codex/templates/dp.SyntaxHighlighter/VB.html +115 -0
  61. data/app_generators/codex/templates/dp.SyntaxHighlighter/XML.html +136 -0
  62. data/app_generators/codex/templates/html/all.html +0 -0
  63. data/app_generators/codex/templates/readme.txt +4 -0
  64. data/app_generators/codex/templates/ui/default/blank.gif +0 -0
  65. data/app_generators/codex/templates/ui/default/bodybg.gif +0 -0
  66. data/app_generators/codex/templates/ui/default/framing.css +23 -0
  67. data/app_generators/codex/templates/ui/default/iepngfix.htc +42 -0
  68. data/app_generators/codex/templates/ui/default/opera.css +7 -0
  69. data/app_generators/codex/templates/ui/default/outline.css +15 -0
  70. data/app_generators/codex/templates/ui/default/pretty.css +86 -0
  71. data/app_generators/codex/templates/ui/default/print.css +1 -0
  72. data/app_generators/codex/templates/ui/default/s5-core.css +9 -0
  73. data/app_generators/codex/templates/ui/default/slides.css +3 -0
  74. data/app_generators/codex/templates/ui/default/slides.js +553 -0
  75. data/bin/codex +17 -0
  76. data/codex.gemspec +30 -0
  77. data/config/hoe.rb +76 -0
  78. data/config/requirements.rb +15 -0
  79. data/lib/codex.rb +23 -0
  80. data/lib/codex/content.rb +27 -0
  81. data/lib/codex/pressie.rb +108 -0
  82. data/lib/codex/version.rb +9 -0
  83. data/lib/stylesheets/pressie.css +196 -0
  84. data/lib/stylesheets/print.css +149 -0
  85. data/lib/stylesheets/ruby.png +0 -0
  86. data/script/console +10 -0
  87. data/script/destroy +14 -0
  88. data/script/generate +14 -0
  89. data/setup.rb +1585 -0
  90. data/tasks/deployment.rake +34 -0
  91. data/tasks/environment.rake +7 -0
  92. data/tasks/website.rake +9 -0
  93. data/test/test_codex.rb +11 -0
  94. data/test/test_codex_generator.rb +78 -0
  95. data/test/test_generator_helper.rb +29 -0
  96. data/test/test_helper.rb +3 -0
  97. metadata +164 -0
@@ -0,0 +1,42 @@
1
+ dp.sh.Brushes.Sql = function()
2
+ {
3
+ var funcs = 'abs avg case cast coalesce convert count current_timestamp ' +
4
+ 'current_user day isnull left lower month nullif replace right ' +
5
+ 'session_user space substring sum system_user upper user year';
6
+
7
+ var keywords = 'absolute action add after alter as asc at authorization begin bigint ' +
8
+ 'binary bit by cascade char character check checkpoint close collate ' +
9
+ 'column commit committed connect connection constraint contains continue ' +
10
+ 'create cube current current_date current_time cursor database date ' +
11
+ 'deallocate dec decimal declare default delete desc distinct double drop ' +
12
+ 'dynamic else end end-exec escape except exec execute false fetch first ' +
13
+ 'float for force foreign forward free from full function global goto grant ' +
14
+ 'group grouping having hour ignore index inner insensitive insert instead ' +
15
+ 'int integer intersect into is isolation key last level load local max min ' +
16
+ 'minute modify move name national nchar next no numeric of off on only ' +
17
+ 'open option order out output partial password precision prepare primary ' +
18
+ 'prior privileges procedure public read real references relative repeatable ' +
19
+ 'restrict return returns revoke rollback rollup rows rule schema scroll ' +
20
+ 'second section select sequence serializable set size smallint static ' +
21
+ 'statistics table temp temporary then time timestamp to top transaction ' +
22
+ 'translation trigger true truncate uncommitted union unique update values ' +
23
+ 'varchar varying view when where with work';
24
+
25
+ var operators = 'all and any between cross in join like not null or outer some';
26
+
27
+ this.regexList = [
28
+ { regex: new RegExp('--(.*)$', 'gm'), css: 'comment' }, // one line and multiline comments
29
+ { regex: dp.sh.RegexLib.DoubleQuotedString, css: 'string' }, // double quoted strings
30
+ { regex: dp.sh.RegexLib.SingleQuotedString, css: 'string' }, // single quoted strings
31
+ { regex: new RegExp(this.GetKeywords(funcs), 'gmi'), css: 'func' }, // functions
32
+ { regex: new RegExp(this.GetKeywords(operators), 'gmi'), css: 'op' }, // operators and such
33
+ { regex: new RegExp(this.GetKeywords(keywords), 'gmi'), css: 'keyword' } // keyword
34
+ ];
35
+
36
+ this.CssClass = 'dp-sql';
37
+ this.Style = '.dp-sql .func { color: #ff1493; }' +
38
+ '.dp-sql .op { color: #808080; }';
39
+ }
40
+
41
+ dp.sh.Brushes.Sql.prototype = new dp.sh.Highlighter();
42
+ dp.sh.Brushes.Sql.Aliases = ['sql'];
@@ -0,0 +1,29 @@
1
+ dp.sh.Brushes.Vb = function()
2
+ {
3
+ var keywords = 'AddHandler AddressOf AndAlso Alias And Ansi As Assembly Auto ' +
4
+ 'Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate ' +
5
+ 'CDec CDbl Char CInt Class CLng CObj Const CShort CSng CStr CType ' +
6
+ 'Date Decimal Declare Default Delegate Dim DirectCast Do Double Each ' +
7
+ 'Else ElseIf End Enum Erase Error Event Exit False Finally For Friend ' +
8
+ 'Function Get GetType GoSub GoTo Handles If Implements Imports In ' +
9
+ 'Inherits Integer Interface Is Let Lib Like Long Loop Me Mod Module ' +
10
+ 'MustInherit MustOverride MyBase MyClass Namespace New Next Not Nothing ' +
11
+ 'NotInheritable NotOverridable Object On Option Optional Or OrElse ' +
12
+ 'Overloads Overridable Overrides ParamArray Preserve Private Property ' +
13
+ 'Protected Public RaiseEvent ReadOnly ReDim REM RemoveHandler Resume ' +
14
+ 'Return Select Set Shadows Shared Short Single Static Step Stop String ' +
15
+ 'Structure Sub SyncLock Then Throw To True Try TypeOf Unicode Until ' +
16
+ 'Variant When While With WithEvents WriteOnly Xor';
17
+
18
+ this.regexList = [
19
+ { regex: new RegExp('\'.*$', 'gm'), css: 'comment' }, // one line comments
20
+ { regex: dp.sh.RegexLib.DoubleQuotedString, css: 'string' }, // strings
21
+ { regex: new RegExp('^\\s*#.*', 'gm'), css: 'preprocessor' }, // preprocessor tags like #region and #endregion
22
+ { regex: new RegExp(this.GetKeywords(keywords), 'gm'), css: 'keyword' } // c# keyword
23
+ ];
24
+
25
+ this.CssClass = 'dp-vb';
26
+ }
27
+
28
+ dp.sh.Brushes.Vb.prototype = new dp.sh.Highlighter();
29
+ dp.sh.Brushes.Vb.Aliases = ['vb', 'vb.net'];
@@ -0,0 +1,70 @@
1
+ dp.sh.Brushes.Xml = function()
2
+ {
3
+ this.CssClass = 'dp-xml';
4
+ this.Style = '.dp-xml .cdata { color: #ff1493; }' +
5
+ '.dp-xml .tag, .dp-xml .tag-name { color: #069; font-weight: bold; }' +
6
+ '.dp-xml .attribute { color: red; }' +
7
+ '.dp-xml .attribute-value { color: blue; }';
8
+ }
9
+
10
+ dp.sh.Brushes.Xml.prototype = new dp.sh.Highlighter();
11
+ dp.sh.Brushes.Xml.Aliases = ['xml', 'xhtml', 'xslt', 'html', 'xhtml'];
12
+
13
+ dp.sh.Brushes.Xml.prototype.ProcessRegexList = function()
14
+ {
15
+ function push(array, value)
16
+ {
17
+ array[array.length] = value;
18
+ }
19
+
20
+ /* If only there was a way to get index of a group within a match, the whole XML
21
+ could be matched with the expression looking something like that:
22
+
23
+ (<!\[CDATA\[\s*.*\s*\]\]>)
24
+ | (<!--\s*.*\s*?-->)
25
+ | (<)*(\w+)*\s*(\w+)\s*=\s*(".*?"|'.*?'|\w+)(/*>)*
26
+ | (</?)(.*?)(/?>)
27
+ */
28
+ var index = 0;
29
+ var match = null;
30
+ var regex = null;
31
+
32
+ // Match CDATA in the following format <![ ... [ ... ]]>
33
+ // (\&lt;|<)\!\[[\w\s]*?\[(.|\s)*?\]\](\&gt;|>)
34
+ this.GetMatches(new RegExp('(\&lt;|<)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\&gt;|>)', 'gm'), 'cdata');
35
+
36
+ // Match comments
37
+ // (\&lt;|<)!--\s*.*\s*?--(\&gt;|>)
38
+ this.GetMatches(new RegExp('(\&lt;|<)!--\\s*.*\\s*?--(\&gt;|>)', 'gm'), 'comments');
39
+
40
+ // Match attributes and their values
41
+ // (:|\w+)\s*=\s*(".*?"|\'.*?\'|\w+)*
42
+ regex = new RegExp('([:\\w-\.]+)\\s*=\\s*(".*?"|\'.*?\'|\\w+)*|(\\w+)', 'gm'); // Thanks to Tomi Blinnikka of Yahoo! for fixing namespaces in attributes
43
+ while((match = regex.exec(this.code)) != null)
44
+ {
45
+ if(match[1] == null)
46
+ {
47
+ continue;
48
+ }
49
+
50
+ push(this.matches, new dp.sh.Match(match[1], match.index, 'attribute'));
51
+
52
+ // if xml is invalid and attribute has no property value, ignore it
53
+ if(match[2] != undefined)
54
+ {
55
+ push(this.matches, new dp.sh.Match(match[2], match.index + match[0].indexOf(match[2]), 'attribute-value'));
56
+ }
57
+ }
58
+
59
+ // Match opening and closing tag brackets
60
+ // (\&lt;|<)/*\?*(?!\!)|/*\?*(\&gt;|>)
61
+ this.GetMatches(new RegExp('(\&lt;|<)/*\\?*(?!\\!)|/*\\?*(\&gt;|>)', 'gm'), 'tag');
62
+
63
+ // Match tag names
64
+ // (\&lt;|<)/*\?*\s*(\w+)
65
+ regex = new RegExp('(?:\&lt;|<)/*\\?*\\s*([:\\w-\.]+)', 'gm');
66
+ while((match = regex.exec(this.code)) != null)
67
+ {
68
+ push(this.matches, new dp.sh.Match(match[1], match.index + match[0].indexOf(match[1]), 'tag-name'));
69
+ }
70
+ }
@@ -0,0 +1,414 @@
1
+ var dp={sh:{Toolbar:{},Utils:{},RegexLib:{},Brushes:{},Strings:{AboutDialog:"<html><head><title>About...</title></head><body class=\"dp-about\"><table cellspacing=\"0\"><tr><td class=\"copy\"><p class=\"title\">dp.SyntaxHighlighter</div><div class=\"para\">Version: {V}</p><p><a href=\"http://www.dreamprojections.com/syntaxhighlighter/?ref=about\" target=\"_blank\">http://www.dreamprojections.com/syntaxhighlighter</a></p>&copy;2004-2007 Alex Gorbatchev.</td></tr><tr><td class=\"footer\"><input type=\"button\" class=\"close\" value=\"OK\" onClick=\"window.close()\"/></td></tr></table></body></html>"},ClipboardSwf:null,Version:"1.5"}};
2
+ dp.SyntaxHighlighter=dp.sh;
3
+ dp.sh.Toolbar.Commands={ExpandSource:{label:"+ expand source",check:function(_1){
4
+ return _1.collapse;
5
+ },func:function(_2,_3){
6
+ _2.parentNode.removeChild(_2);
7
+ _3.div.className=_3.div.className.replace("collapsed","");
8
+ }},ViewSource:{label:"view plain",func:function(_4,_5){
9
+ var _6=_5.originalCode.replace(/</g,"&lt;");
10
+ var _7=window.open("","_blank","width=750, height=400, location=0, resizable=1, menubar=0, scrollbars=0");
11
+ _7.document.write("<textarea style=\"width:99%;height:99%\">"+_6+"</textarea>");
12
+ _7.document.close();
13
+ }},CopyToClipboard:{label:"copy to clipboard",check:function(){
14
+ return window.clipboardData!=null||dp.sh.ClipboardSwf!=null;
15
+ },func:function(_8,_9){
16
+ var _a=_9.originalCode;
17
+ if(window.clipboardData){
18
+ window.clipboardData.setData("text",_a);
19
+ }else{
20
+ if(dp.sh.ClipboardSwf!=null){
21
+ var _b=_9.flashCopier;
22
+ if(_b==null){
23
+ _b=document.createElement("div");
24
+ _9.flashCopier=_b;
25
+ _9.div.appendChild(_b);
26
+ }
27
+ _b.innerHTML="<embed src=\""+dp.sh.ClipboardSwf+"\" FlashVars=\"clipboard="+encodeURIComponent(_a)+"\" width=\"0\" height=\"0\" type=\"application/x-shockwave-flash\"></embed>";
28
+ }
29
+ }
30
+ alert("The code is in your clipboard now");
31
+ }},PrintSource:{label:"print",func:function(_c,_d){
32
+ var _e=document.createElement("IFRAME");
33
+ var _f=null;
34
+ _e.style.cssText="position:absolute;width:0px;height:0px;left:-500px;top:-500px;";
35
+ document.body.appendChild(_e);
36
+ _f=_e.contentWindow.document;
37
+ dp.sh.Utils.CopyStyles(_f,window.document);
38
+ _f.write("<div class=\""+_d.div.className.replace("collapsed","")+" printing\">"+_d.div.innerHTML+"</div>");
39
+ _f.close();
40
+ _e.contentWindow.focus();
41
+ _e.contentWindow.print();
42
+ alert("Printing...");
43
+ document.body.removeChild(_e);
44
+ }},About:{label:"?",func:function(_10){
45
+ var wnd=window.open("","_blank","dialog,width=300,height=150,scrollbars=0");
46
+ var doc=wnd.document;
47
+ dp.sh.Utils.CopyStyles(doc,window.document);
48
+ doc.write(dp.sh.Strings.AboutDialog.replace("{V}",dp.sh.Version));
49
+ doc.close();
50
+ wnd.focus();
51
+ }}};
52
+ dp.sh.Toolbar.Create=function(_13){
53
+ var div=document.createElement("DIV");
54
+ div.className="tools";
55
+ for(var _15 in dp.sh.Toolbar.Commands){
56
+ var cmd=dp.sh.Toolbar.Commands[_15];
57
+ if(cmd.check!=null&&!cmd.check(_13)){
58
+ continue;
59
+ }
60
+ div.innerHTML+="<a href=\"#\" onclick=\"dp.sh.Toolbar.Command('"+_15+"',this);return false;\">"+cmd.label+"</a>";
61
+ }
62
+ return div;
63
+ };
64
+ dp.sh.Toolbar.Command=function(_17,_18){
65
+ var n=_18;
66
+ while(n!=null&&n.className.indexOf("dp-highlighter")==-1){
67
+ n=n.parentNode;
68
+ }
69
+ if(n!=null){
70
+ dp.sh.Toolbar.Commands[_17].func(_18,n.highlighter);
71
+ }
72
+ };
73
+ dp.sh.Utils.CopyStyles=function(_1a,_1b){
74
+ var _1c=_1b.getElementsByTagName("link");
75
+ for(var i=0;i<_1c.length;i++){
76
+ if(_1c[i].rel.toLowerCase()=="stylesheet"){
77
+ _1a.write("<link type=\"text/css\" rel=\"stylesheet\" href=\""+_1c[i].href+"\"></link>");
78
+ }
79
+ }
80
+ };
81
+ dp.sh.RegexLib={MultiLineCComments:new RegExp("/\\*[\\s\\S]*?\\*/","gm"),SingleLineCComments:new RegExp("//.*$","gm"),SingleLinePerlComments:new RegExp("#.*$","gm"),DoubleQuotedString:new RegExp("\"(?:\\.|(\\\\\\\")|[^\\\"\"])*\"","g"),SingleQuotedString:new RegExp("'(?:\\.|(\\\\\\')|[^\\''])*'","g")};
82
+ dp.sh.Match=function(_1e,_1f,css){
83
+ this.value=_1e;
84
+ this.index=_1f;
85
+ this.length=_1e.length;
86
+ this.css=css;
87
+ };
88
+ dp.sh.Highlighter=function(){
89
+ this.noGutter=false;
90
+ this.addControls=true;
91
+ this.collapse=false;
92
+ this.tabsToSpaces=true;
93
+ this.wrapColumn=80;
94
+ this.showColumns=true;
95
+ };
96
+ dp.sh.Highlighter.SortCallback=function(m1,m2){
97
+ if(m1.index<m2.index){
98
+ return -1;
99
+ }else{
100
+ if(m1.index>m2.index){
101
+ return 1;
102
+ }else{
103
+ if(m1.length<m2.length){
104
+ return -1;
105
+ }else{
106
+ if(m1.length>m2.length){
107
+ return 1;
108
+ }
109
+ }
110
+ }
111
+ }
112
+ return 0;
113
+ };
114
+ dp.sh.Highlighter.prototype.CreateElement=function(_23){
115
+ var _24=document.createElement(_23);
116
+ _24.highlighter=this;
117
+ return _24;
118
+ };
119
+ dp.sh.Highlighter.prototype.GetMatches=function(_25,css){
120
+ var _27=0;
121
+ var _28=null;
122
+ while((_28=_25.exec(this.code))!=null){
123
+ this.matches[this.matches.length]=new dp.sh.Match(_28[0],_28.index,css);
124
+ }
125
+ };
126
+ dp.sh.Highlighter.prototype.AddBit=function(str,css){
127
+ if(str==null||str.length==0){
128
+ return;
129
+ }
130
+ var _2b=this.CreateElement("SPAN");
131
+ str=str.replace(/ /g,"&nbsp;");
132
+ str=str.replace(/</g,"&lt;");
133
+ str=str.replace(/\n/gm,"&nbsp;<br>");
134
+ if(css!=null){
135
+ if((/br/gi).test(str)){
136
+ var _2c=str.split("&nbsp;<br>");
137
+ for(var i=0;i<_2c.length;i++){
138
+ _2b=this.CreateElement("SPAN");
139
+ _2b.className=css;
140
+ _2b.innerHTML=_2c[i];
141
+ this.div.appendChild(_2b);
142
+ if(i+1<_2c.length){
143
+ this.div.appendChild(this.CreateElement("BR"));
144
+ }
145
+ }
146
+ }else{
147
+ _2b.className=css;
148
+ _2b.innerHTML=str;
149
+ this.div.appendChild(_2b);
150
+ }
151
+ }else{
152
+ _2b.innerHTML=str;
153
+ this.div.appendChild(_2b);
154
+ }
155
+ };
156
+ dp.sh.Highlighter.prototype.IsInside=function(_2e){
157
+ if(_2e==null||_2e.length==0){
158
+ return false;
159
+ }
160
+ for(var i=0;i<this.matches.length;i++){
161
+ var c=this.matches[i];
162
+ if(c==null){
163
+ continue;
164
+ }
165
+ if((_2e.index>c.index)&&(_2e.index<c.index+c.length)){
166
+ return true;
167
+ }
168
+ }
169
+ return false;
170
+ };
171
+ dp.sh.Highlighter.prototype.ProcessRegexList=function(){
172
+ for(var i=0;i<this.regexList.length;i++){
173
+ this.GetMatches(this.regexList[i].regex,this.regexList[i].css);
174
+ }
175
+ };
176
+ dp.sh.Highlighter.prototype.ProcessSmartTabs=function(_32){
177
+ var _33=_32.split("\n");
178
+ var _34="";
179
+ var _35=4;
180
+ var tab="\t";
181
+ function InsertSpaces(_37,pos,_39){
182
+ var _3a=_37.substr(0,pos);
183
+ var _3b=_37.substr(pos+1,_37.length);
184
+ var _3c="";
185
+ for(var i=0;i<_39;i++){
186
+ _3c+=" ";
187
+ }
188
+ return _3a+_3c+_3b;
189
+ }
190
+ function ProcessLine(_3e,_3f){
191
+ if(_3e.indexOf(tab)==-1){
192
+ return _3e;
193
+ }
194
+ var pos=0;
195
+ while((pos=_3e.indexOf(tab))!=-1){
196
+ var _41=_3f-pos%_3f;
197
+ _3e=InsertSpaces(_3e,pos,_41);
198
+ }
199
+ return _3e;
200
+ }
201
+ for(var i=0;i<_33.length;i++){
202
+ _34+=ProcessLine(_33[i],_35)+"\n";
203
+ }
204
+ return _34;
205
+ };
206
+ dp.sh.Highlighter.prototype.SwitchToList=function(){
207
+ var _43=this.div.innerHTML.replace(/<(br)\/?>/gi,"\n");
208
+ var _44=_43.split("\n");
209
+ if(this.addControls==true){
210
+ this.bar.appendChild(dp.sh.Toolbar.Create(this));
211
+ }
212
+ if(this.showColumns){
213
+ var div=this.CreateElement("div");
214
+ var _46=this.CreateElement("div");
215
+ var _47=10;
216
+ var i=1;
217
+ while(i<=150){
218
+ if(i%_47==0){
219
+ div.innerHTML+=i;
220
+ i+=(i+"").length;
221
+ }else{
222
+ div.innerHTML+="&middot;";
223
+ i++;
224
+ }
225
+ }
226
+ _46.className="columns";
227
+ _46.appendChild(div);
228
+ this.bar.appendChild(_46);
229
+ }
230
+ for(var i=0,lineIndex=this.firstLine;i<_44.length-1;i++,lineIndex++){
231
+ var li=this.CreateElement("LI");
232
+ var _4b=this.CreateElement("SPAN");
233
+ li.className=(i%2==0)?"alt":"";
234
+ _4b.innerHTML=_44[i]+"&nbsp;";
235
+ li.appendChild(_4b);
236
+ this.ol.appendChild(li);
237
+ }
238
+ this.div.innerHTML="";
239
+ };
240
+ dp.sh.Highlighter.prototype.Highlight=function(_4c){
241
+ function Trim(str){
242
+ return str.replace(/^\s*(.*?)[\s\n]*$/g,"$1");
243
+ }
244
+ function Chop(str){
245
+ return str.replace(/\n*$/,"").replace(/^\n*/,"");
246
+ }
247
+ function Unindent(str){
248
+ var _50=str.split("\n");
249
+ var _51=new Array();
250
+ var _52=new RegExp("^\\s*","g");
251
+ var min=1000;
252
+ for(var i=0;i<_50.length&&min>0;i++){
253
+ if(Trim(_50[i]).length==0){
254
+ continue;
255
+ }
256
+ var _55=_52.exec(_50[i]);
257
+ if(_55!=null&&_55.length>0){
258
+ min=Math.min(_55[0].length,min);
259
+ }
260
+ }
261
+ if(min>0){
262
+ for(var i=0;i<_50.length;i++){
263
+ _50[i]=_50[i].substr(min);
264
+ }
265
+ }
266
+ return _50.join("\n");
267
+ }
268
+ function Copy(_57,_58,_59){
269
+ return _57.substr(_58,_59-_58);
270
+ }
271
+ var pos=0;
272
+ if(_4c==null){
273
+ _4c="";
274
+ }
275
+ this.originalCode=_4c;
276
+ this.code=Chop(Unindent(_4c));
277
+ this.div=this.CreateElement("DIV");
278
+ this.bar=this.CreateElement("DIV");
279
+ this.ol=this.CreateElement("OL");
280
+ this.matches=new Array();
281
+ this.div.className="dp-highlighter";
282
+ this.div.highlighter=this;
283
+ this.bar.className="bar";
284
+ this.ol.start=this.firstLine;
285
+ if(this.CssClass!=null){
286
+ this.ol.className=this.CssClass;
287
+ }
288
+ if(this.collapse){
289
+ this.div.className+=" collapsed";
290
+ }
291
+ if(this.noGutter){
292
+ this.div.className+=" nogutter";
293
+ }
294
+ if(this.tabsToSpaces==true){
295
+ this.code=this.ProcessSmartTabs(this.code);
296
+ }
297
+ this.ProcessRegexList();
298
+ if(this.matches.length==0){
299
+ this.AddBit(this.code,null);
300
+ this.SwitchToList();
301
+ this.div.appendChild(this.ol);
302
+ return;
303
+ }
304
+ this.matches=this.matches.sort(dp.sh.Highlighter.SortCallback);
305
+ for(var i=0;i<this.matches.length;i++){
306
+ if(this.IsInside(this.matches[i])){
307
+ this.matches[i]=null;
308
+ }
309
+ }
310
+ for(var i=0;i<this.matches.length;i++){
311
+ var _5d=this.matches[i];
312
+ if(_5d==null||_5d.length==0){
313
+ continue;
314
+ }
315
+ this.AddBit(Copy(this.code,pos,_5d.index),null);
316
+ this.AddBit(_5d.value,_5d.css);
317
+ pos=_5d.index+_5d.length;
318
+ }
319
+ this.AddBit(this.code.substr(pos),null);
320
+ this.SwitchToList();
321
+ this.div.appendChild(this.bar);
322
+ this.div.appendChild(this.ol);
323
+ };
324
+ dp.sh.Highlighter.prototype.GetKeywords=function(str){
325
+ return "\\b"+str.replace(/ /g,"\\b|\\b")+"\\b";
326
+ };
327
+ dp.sh.HighlightAll=function(_5f,_60,_61,_62,_63,_64){
328
+ function FindValue(){
329
+ var a=arguments;
330
+ for(var i=0;i<a.length;i++){
331
+ if(a[i]==null){
332
+ continue;
333
+ }
334
+ if(typeof (a[i])=="string"&&a[i]!=""){
335
+ return a[i]+"";
336
+ }
337
+ if(typeof (a[i])=="object"&&a[i].value!=""){
338
+ return a[i].value+"";
339
+ }
340
+ }
341
+ return null;
342
+ }
343
+ function IsOptionSet(_67,_68){
344
+ for(var i=0;i<_68.length;i++){
345
+ if(_68[i]==_67){
346
+ return true;
347
+ }
348
+ }
349
+ return false;
350
+ }
351
+ function GetOptionValue(_6a,_6b,_6c){
352
+ var _6d=new RegExp("^"+_6a+"\\[(\\w+)\\]$","gi");
353
+ var _6e=null;
354
+ for(var i=0;i<_6b.length;i++){
355
+ if((_6e=_6d.exec(_6b[i]))!=null){
356
+ return _6e[1];
357
+ }
358
+ }
359
+ return _6c;
360
+ }
361
+ function FindTagsByName(_70,_71,_72){
362
+ var _73=document.getElementsByTagName(_72);
363
+ for(var i=0;i<_73.length;i++){
364
+ if(_73[i].getAttribute("name")==_71){
365
+ _70.push(_73[i]);
366
+ }
367
+ }
368
+ }
369
+ var _75=[];
370
+ var _76=null;
371
+ var _77={};
372
+ var _78="innerHTML";
373
+ FindTagsByName(_75,_5f,"pre");
374
+ FindTagsByName(_75,_5f,"textarea");
375
+ if(_75.length==0){
376
+ return;
377
+ }
378
+ for(var _79 in dp.sh.Brushes){
379
+ var _7a=dp.sh.Brushes[_79].Aliases;
380
+ if(_7a==null){
381
+ continue;
382
+ }
383
+ for(var i=0;i<_7a.length;i++){
384
+ _77[_7a[i]]=_79;
385
+ }
386
+ }
387
+ for(var i=0;i<_75.length;i++){
388
+ var _7d=_75[i];
389
+ var _7e=FindValue(_7d.attributes["class"],_7d.className,_7d.attributes["language"],_7d.language);
390
+ var _7f="";
391
+ if(_7e==null){
392
+ continue;
393
+ }
394
+ _7e=_7e.split(":");
395
+ _7f=_7e[0].toLowerCase();
396
+ if(_77[_7f]==null){
397
+ continue;
398
+ }
399
+ _76=new dp.sh.Brushes[_77[_7f]]();
400
+ _7d.style.display="none";
401
+ _76.noGutter=(_60==null)?IsOptionSet("nogutter",_7e):!_60;
402
+ _76.addControls=(_61==null)?!IsOptionSet("nocontrols",_7e):_61;
403
+ _76.collapse=(_62==null)?IsOptionSet("collapse",_7e):_62;
404
+ _76.showColumns=(_64==null)?IsOptionSet("showcolumns",_7e):_64;
405
+ if(_76.Style){
406
+ document.write("<style>"+_76.Style+"</style>");
407
+ }
408
+ _76.firstLine=(_63==null)?parseInt(GetOptionValue("firstline",_7e,1)):_63;
409
+ _76.Highlight(_7d[_78]);
410
+ _76.source=_7d;
411
+ _7d.parentNode.insertBefore(_76.div,_7d);
412
+ }
413
+ };
414
+