codex 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. data/History.txt +8 -0
  2. data/LICENSE.txt +29 -0
  3. data/Manifest.txt +95 -0
  4. data/PostInstall.txt +5 -0
  5. data/README.txt +31 -0
  6. data/Rakefile +4 -0
  7. data/app_generators/codex/USAGE +5 -0
  8. data/app_generators/codex/codex_generator.rb +106 -0
  9. data/app_generators/codex/templates/Rakefile +54 -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 +7 -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/dp.SyntaxHighlighter/CSS.html +115 -0
  18. data/app_generators/codex/templates/dp.SyntaxHighlighter/CSharp.html +134 -0
  19. data/app_generators/codex/templates/dp.SyntaxHighlighter/CollapseCode.html +90 -0
  20. data/app_generators/codex/templates/dp.SyntaxHighlighter/Cpp.html +190 -0
  21. data/app_generators/codex/templates/dp.SyntaxHighlighter/CrashTest.html +108 -0
  22. data/app_generators/codex/templates/dp.SyntaxHighlighter/Delphi.html +112 -0
  23. data/app_generators/codex/templates/dp.SyntaxHighlighter/FirstLine.html +90 -0
  24. data/app_generators/codex/templates/dp.SyntaxHighlighter/Index.html +80 -0
  25. data/app_generators/codex/templates/dp.SyntaxHighlighter/Java.html +122 -0
  26. data/app_generators/codex/templates/dp.SyntaxHighlighter/JavaScript.html +112 -0
  27. data/app_generators/codex/templates/dp.SyntaxHighlighter/NoControls.html +89 -0
  28. data/app_generators/codex/templates/dp.SyntaxHighlighter/NoGutter.html +89 -0
  29. data/app_generators/codex/templates/dp.SyntaxHighlighter/PHP.html +102 -0
  30. data/app_generators/codex/templates/dp.SyntaxHighlighter/Python.html +121 -0
  31. data/app_generators/codex/templates/dp.SyntaxHighlighter/Ruby.html +131 -0
  32. data/app_generators/codex/templates/dp.SyntaxHighlighter/SQL.html +98 -0
  33. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/clipboard.swf +0 -0
  34. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCSharp.js +32 -0
  35. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCpp.js +73 -0
  36. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCss.js +52 -0
  37. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushDelphi.js +34 -0
  38. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushJScript.js +22 -0
  39. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushJava.js +28 -0
  40. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushPhp.js +60 -0
  41. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushPython.js +30 -0
  42. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushRuby.js +28 -0
  43. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushSql.js +42 -0
  44. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushVb.js +29 -0
  45. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushXml.js +70 -0
  46. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shCore.js +414 -0
  47. data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shCore.uncompressed.js +674 -0
  48. data/app_generators/codex/templates/dp.SyntaxHighlighter/ShowColumns.html +89 -0
  49. data/app_generators/codex/templates/dp.SyntaxHighlighter/SmartTabs.html +88 -0
  50. data/app_generators/codex/templates/dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css +158 -0
  51. data/app_generators/codex/templates/dp.SyntaxHighlighter/Styles/TestPages.css +63 -0
  52. data/app_generators/codex/templates/dp.SyntaxHighlighter/Templates/Test.dwt +80 -0
  53. data/app_generators/codex/templates/dp.SyntaxHighlighter/VB.html +115 -0
  54. data/app_generators/codex/templates/dp.SyntaxHighlighter/XML.html +136 -0
  55. data/app_generators/codex/templates/html/all.html +0 -0
  56. data/app_generators/codex/templates/readme.txt +4 -0
  57. data/app_generators/codex/templates/slides/basics.slides +37 -0
  58. data/app_generators/codex/templates/slides/building.slides +27 -0
  59. data/app_generators/codex/templates/slides/example.slides +80 -0
  60. data/app_generators/codex/templates/slides/including_code.slides +80 -0
  61. data/app_generators/codex/templates/slides/metadata.yml +4 -0
  62. data/app_generators/codex/templates/slides/table_of_contents.slides +14 -0
  63. data/app_generators/codex/templates/ui/default/blank.gif +0 -0
  64. data/app_generators/codex/templates/ui/default/bodybg.gif +0 -0
  65. data/app_generators/codex/templates/ui/default/framing.css +23 -0
  66. data/app_generators/codex/templates/ui/default/iepngfix.htc +42 -0
  67. data/app_generators/codex/templates/ui/default/opera.css +7 -0
  68. data/app_generators/codex/templates/ui/default/outline.css +15 -0
  69. data/app_generators/codex/templates/ui/default/pretty.css +86 -0
  70. data/app_generators/codex/templates/ui/default/print.css +1 -0
  71. data/app_generators/codex/templates/ui/default/s5-core.css +9 -0
  72. data/app_generators/codex/templates/ui/default/slides.css +3 -0
  73. data/app_generators/codex/templates/ui/default/slides.js +553 -0
  74. data/bin/codex +17 -0
  75. data/codex.gemspec +30 -0
  76. data/config/hoe.rb +75 -0
  77. data/config/requirements.rb +15 -0
  78. data/lib/codex.rb +7 -0
  79. data/lib/codex/content.rb +160 -0
  80. data/lib/codex/pressie.rb +108 -0
  81. data/lib/codex/version.rb +9 -0
  82. data/lib/stylesheets/pressie.css +196 -0
  83. data/lib/stylesheets/print.css +149 -0
  84. data/lib/stylesheets/ruby.png +0 -0
  85. data/script/console +10 -0
  86. data/script/destroy +14 -0
  87. data/script/generate +14 -0
  88. data/setup.rb +1585 -0
  89. data/tasks/deployment.rake +34 -0
  90. data/tasks/environment.rake +7 -0
  91. data/tasks/website.rake +9 -0
  92. data/test/test_codex.rb +11 -0
  93. data/test/test_codex_generator.rb +78 -0
  94. data/test/test_generator_helper.rb +29 -0
  95. data/test/test_helper.rb +2 -0
  96. metadata +163 -0
@@ -0,0 +1,28 @@
1
+ dp.sh.Brushes.Java = function()
2
+ {
3
+ var keywords = 'abstract assert boolean break byte case catch char class const ' +
4
+ 'continue default do double else enum extends ' +
5
+ 'false final finally float for goto if implements import ' +
6
+ 'instanceof int interface long native new null ' +
7
+ 'package private protected public return ' +
8
+ 'short static strictfp super switch synchronized this throw throws true ' +
9
+ 'transient try void volatile while';
10
+
11
+ this.regexList = [
12
+ { regex: dp.sh.RegexLib.SingleLineCComments, css: 'comment' }, // one line comments
13
+ { regex: dp.sh.RegexLib.MultiLineCComments, css: 'comment' }, // multiline comments
14
+ { regex: dp.sh.RegexLib.DoubleQuotedString, css: 'string' }, // strings
15
+ { regex: dp.sh.RegexLib.SingleQuotedString, css: 'string' }, // strings
16
+ { regex: new RegExp('\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b', 'gi'), css: 'number' }, // numbers
17
+ { regex: new RegExp('(?!\\@interface\\b)\\@[\\$\\w]+\\b', 'g'), css: 'annotation' }, // annotation @anno
18
+ { regex: new RegExp('\\@interface\\b', 'g'), css: 'keyword' }, // @interface keyword
19
+ { regex: new RegExp(this.GetKeywords(keywords), 'gm'), css: 'keyword' } // java keyword
20
+ ];
21
+
22
+ this.CssClass = 'dp-j';
23
+ this.Style = '.dp-j .annotation { color: #646464; }' +
24
+ '.dp-j .number { color: #C00000; }';
25
+ }
26
+
27
+ dp.sh.Brushes.Java.prototype = new dp.sh.Highlighter();
28
+ dp.sh.Brushes.Java.Aliases = ['java'];
@@ -0,0 +1,60 @@
1
+ dp.sh.Brushes.Php = function()
2
+ {
3
+ var funcs = 'abs acos acosh addcslashes addslashes ' +
4
+ 'array_change_key_case array_chunk array_combine array_count_values array_diff '+
5
+ 'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill '+
6
+ 'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key '+
7
+ 'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map '+
8
+ 'array_merge array_merge_recursive array_multisort array_pad array_pop array_product '+
9
+ 'array_push array_rand array_reduce array_reverse array_search array_shift '+
10
+ 'array_slice array_splice array_sum array_udiff array_udiff_assoc '+
11
+ 'array_udiff_uassoc array_uintersect array_uintersect_assoc '+
12
+ 'array_uintersect_uassoc array_unique array_unshift array_values array_walk '+
13
+ 'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert '+
14
+ 'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress '+
15
+ 'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir '+
16
+ 'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists '+
17
+ 'closedir closelog copy cos cosh count count_chars date decbin dechex decoct '+
18
+ 'deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log '+
19
+ 'error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded '+
20
+ 'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents '+
21
+ 'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype '+
22
+ 'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf '+
23
+ 'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname '+
24
+ 'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt '+
25
+ 'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext '+
26
+ 'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set '+
27
+ 'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double '+
28
+ 'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long '+
29
+ 'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault '+
30
+ 'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br '+
31
+ 'parse_ini_file parse_str parse_url passthru pathinfo readlink realpath rewind rewinddir rmdir '+
32
+ 'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split '+
33
+ 'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes '+
34
+ 'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk '+
35
+ 'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime '+
36
+ 'strtoupper strtr strval substr substr_compare';
37
+
38
+ var keywords = 'and or xor __FILE__ __LINE__ array as break case ' +
39
+ 'cfunction class const continue declare default die do else ' +
40
+ 'elseif empty enddeclare endfor endforeach endif endswitch endwhile ' +
41
+ 'extends for foreach function include include_once global if ' +
42
+ 'new old_function return static switch use require require_once ' +
43
+ 'var while __FUNCTION__ __CLASS__ ' +
44
+ '__METHOD__ abstract interface public implements extends private protected throw';
45
+
46
+ this.regexList = [
47
+ { regex: dp.sh.RegexLib.SingleLineCComments, css: 'comment' }, // one line comments
48
+ { regex: dp.sh.RegexLib.MultiLineCComments, css: 'comment' }, // multiline comments
49
+ { regex: dp.sh.RegexLib.DoubleQuotedString, css: 'string' }, // double quoted strings
50
+ { regex: dp.sh.RegexLib.SingleQuotedString, css: 'string' }, // single quoted strings
51
+ { regex: new RegExp('\\$\\w+', 'g'), css: 'vars' }, // variables
52
+ { regex: new RegExp(this.GetKeywords(funcs), 'gmi'), css: 'func' }, // functions
53
+ { regex: new RegExp(this.GetKeywords(keywords), 'gm'), css: 'keyword' } // keyword
54
+ ];
55
+
56
+ this.CssClass = 'dp-c';
57
+ }
58
+
59
+ dp.sh.Brushes.Php.prototype = new dp.sh.Highlighter();
60
+ dp.sh.Brushes.Php.Aliases = ['php'];
@@ -0,0 +1,30 @@
1
+ /* Python 2.3 syntax contributed by Gheorghe Milas */
2
+ dp.sh.Brushes.Python = function()
3
+ {
4
+ var keywords = 'and assert break class continue def del elif else ' +
5
+ 'except exec finally for from global if import in is ' +
6
+ 'lambda not or pass print raise return try yield while';
7
+
8
+ var special = 'None True False self cls class_'
9
+
10
+ this.regexList = [
11
+ { regex: dp.sh.RegexLib.SingleLinePerlComments, css: 'comment' },
12
+ { regex: new RegExp("^\\s*@\\w+", 'gm'), css: 'decorator' },
13
+ { regex: new RegExp("(['\"]{3})([^\\1])*?\\1", 'gm'), css: 'comment' },
14
+ { regex: new RegExp('"(?!")(?:\\.|\\\\\\"|[^\\""\\n\\r])*"', 'gm'), css: 'string' },
15
+ { regex: new RegExp("'(?!')*(?:\\.|(\\\\\\')|[^\\''\\n\\r])*'", 'gm'), css: 'string' },
16
+ { regex: new RegExp("\\b\\d+\\.?\\w*", 'g'), css: 'number' },
17
+ { regex: new RegExp(this.GetKeywords(keywords), 'gm'), css: 'keyword' },
18
+ { regex: new RegExp(this.GetKeywords(special), 'gm'), css: 'special' },
19
+ ];
20
+
21
+ this.CssClass = 'dp-py';
22
+ this.Style = '.dp-py .builtins { color: #ff1493; }' +
23
+ '.dp-py .magicmethods { color: #808080; }' +
24
+ '.dp-py .exceptions { color: brown; }' +
25
+ '.dp-py .types { color: brown; font-style: italic; }' +
26
+ '.dp-py .commonlibs { color: #8A2BE2; font-style: italic; }';
27
+ }
28
+
29
+ dp.sh.Brushes.Python.prototype = new dp.sh.Highlighter();
30
+ dp.sh.Brushes.Python.Aliases = ['py', 'python'];
@@ -0,0 +1,28 @@
1
+ /* Ruby 1.8.4 syntax contributed by Erik Peterson */
2
+ dp.sh.Brushes.Ruby = function()
3
+ {
4
+ var keywords = 'alias and BEGIN begin break case class def define_method defined do each else elsif ' +
5
+ 'END end ensure false for if in module new next nil not or raise redo rescue retry return ' +
6
+ 'self super then throw true undef unless until when while yield';
7
+
8
+ var builtins = 'Array Bignum Binding Class Continuation Dir Exception FalseClass File::Stat File Fixnum Fload ' +
9
+ 'Hash Integer IO MatchData Method Module NilClass Numeric Object Proc Range Regexp String Struct::TMS Symbol ' +
10
+ 'ThreadGroup Thread Time TrueClass'
11
+
12
+ this.regexList = [
13
+ { regex: dp.sh.RegexLib.SingleLinePerlComments, css: 'comment' }, // one line comments
14
+ { regex: dp.sh.RegexLib.DoubleQuotedString, css: 'string' }, // double quoted strings
15
+ { regex: dp.sh.RegexLib.SingleQuotedString, css: 'string' }, // single quoted strings
16
+ { regex: new RegExp(':[a-z][A-Za-z0-9_]*', 'g'), css: 'symbol' }, // symbols
17
+ { regex: new RegExp('(\\$|@@|@)\\w+', 'g'), css: 'variable' }, // $global, @instance, and @@class variables
18
+ { regex: new RegExp(this.GetKeywords(keywords), 'gm'), css: 'keyword' }, // keywords
19
+ { regex: new RegExp(this.GetKeywords(builtins), 'gm'), css: 'builtin' } // builtins
20
+ ];
21
+
22
+ this.CssClass = 'dp-rb';
23
+ this.Style = '.dp-rb .symbol { color: #a70; }' +
24
+ '.dp-rb .variable { color: #a70; font-weight: bold; }';
25
+ }
26
+
27
+ dp.sh.Brushes.Ruby.prototype = new dp.sh.Highlighter();
28
+ dp.sh.Brushes.Ruby.Aliases = ['ruby', 'rails', 'ror'];
@@ -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
+