bixbite 0.1.0

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 (194) hide show
  1. data/LICENSE +20 -0
  2. data/README.markdown +49 -0
  3. data/VERSION +1 -0
  4. data/bin/bixbite +73 -0
  5. data/lib/bixbite.rb +13 -0
  6. data/lib/bixbite/command.rb +14 -0
  7. data/lib/bixbite/create.rb +76 -0
  8. data/template/Rakefile +25 -0
  9. data/template/assets/bixbite/Rakefile.rb +297 -0
  10. data/template/assets/naturaldocs/NaturalDocs/Config/Languages.txt +286 -0
  11. data/template/assets/naturaldocs/NaturalDocs/Config/Topics.txt +382 -0
  12. data/template/assets/naturaldocs/NaturalDocs/Help/customizinglanguages.html +52 -0
  13. data/template/assets/naturaldocs/NaturalDocs/Help/customizingtopics.html +74 -0
  14. data/template/assets/naturaldocs/NaturalDocs/Help/documenting.html +58 -0
  15. data/template/assets/naturaldocs/NaturalDocs/Help/documenting/reference.html +146 -0
  16. data/template/assets/naturaldocs/NaturalDocs/Help/documenting/walkthrough.html +180 -0
  17. data/template/assets/naturaldocs/NaturalDocs/Help/example/Default.css +528 -0
  18. data/template/assets/naturaldocs/NaturalDocs/Help/example/NaturalDocs.js +204 -0
  19. data/template/assets/naturaldocs/NaturalDocs/Help/examples.css +90 -0
  20. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/background.png +0 -0
  21. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/leftside.png +0 -0
  22. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/logo.png +0 -0
  23. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overbody.png +0 -0
  24. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overbodybg.png +0 -0
  25. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overleftmargin.png +0 -0
  26. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overmenu.png +0 -0
  27. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/overmenubg.png +0 -0
  28. data/template/assets/naturaldocs/NaturalDocs/Help/images/header/rightside.png +0 -0
  29. data/template/assets/naturaldocs/NaturalDocs/Help/images/logo.gif +0 -0
  30. data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/about.png +0 -0
  31. data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/background.png +0 -0
  32. data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/bottomleft.png +0 -0
  33. data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/bottomright.png +0 -0
  34. data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/community.png +0 -0
  35. data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/customizing.png +0 -0
  36. data/template/assets/naturaldocs/NaturalDocs/Help/images/menu/using.png +0 -0
  37. data/template/assets/naturaldocs/NaturalDocs/Help/index.html +9 -0
  38. data/template/assets/naturaldocs/NaturalDocs/Help/javascript/BrowserStyles.js +77 -0
  39. data/template/assets/naturaldocs/NaturalDocs/Help/javascript/PNGHandling.js +72 -0
  40. data/template/assets/naturaldocs/NaturalDocs/Help/keywords.html +38 -0
  41. data/template/assets/naturaldocs/NaturalDocs/Help/languages.html +32 -0
  42. data/template/assets/naturaldocs/NaturalDocs/Help/menu.html +79 -0
  43. data/template/assets/naturaldocs/NaturalDocs/Help/output.html +84 -0
  44. data/template/assets/naturaldocs/NaturalDocs/Help/running.html +40 -0
  45. data/template/assets/naturaldocs/NaturalDocs/Help/styles.css +290 -0
  46. data/template/assets/naturaldocs/NaturalDocs/Help/styles.html +52 -0
  47. data/template/assets/naturaldocs/NaturalDocs/Help/troubleshooting.html +18 -0
  48. data/template/assets/naturaldocs/NaturalDocs/Info/CSSGuide.txt +947 -0
  49. data/template/assets/naturaldocs/NaturalDocs/Info/File Parsing.txt +83 -0
  50. data/template/assets/naturaldocs/NaturalDocs/Info/HTMLTestCases.pm +269 -0
  51. data/template/assets/naturaldocs/NaturalDocs/Info/Languages.txt +107 -0
  52. data/template/assets/naturaldocs/NaturalDocs/Info/NDMarkup.txt +91 -0
  53. data/template/assets/naturaldocs/NaturalDocs/Info/Symbol Management.txt +59 -0
  54. data/template/assets/naturaldocs/NaturalDocs/Info/images/Logo.png +0 -0
  55. data/template/assets/naturaldocs/NaturalDocs/JavaScript/NaturalDocs.js +836 -0
  56. data/template/assets/naturaldocs/NaturalDocs/License-GPL.txt +341 -0
  57. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/BinaryFile.pm +294 -0
  58. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder.pm +280 -0
  59. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/Base.pm +348 -0
  60. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/FramedHTML.pm +345 -0
  61. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/HTML.pm +398 -0
  62. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Builder/HTMLBase.pm +3693 -0
  63. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ClassHierarchy.pm +860 -0
  64. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ClassHierarchy/Class.pm +412 -0
  65. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ClassHierarchy/File.pm +157 -0
  66. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ConfigFile.pm +497 -0
  67. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Constants.pm +165 -0
  68. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/DefineMembers.pm +100 -0
  69. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Error.pm +305 -0
  70. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/File.pm +540 -0
  71. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ImageReferenceTable.pm +383 -0
  72. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ImageReferenceTable/Reference.pm +44 -0
  73. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ImageReferenceTable/String.pm +110 -0
  74. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages.pm +1475 -0
  75. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/ActionScript.pm +1473 -0
  76. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Ada.pm +38 -0
  77. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Advanced.pm +828 -0
  78. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Advanced/Scope.pm +95 -0
  79. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Advanced/ScopeChange.pm +70 -0
  80. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Base.pm +832 -0
  81. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/CSharp.pm +1484 -0
  82. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/PLSQL.pm +319 -0
  83. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Pascal.pm +143 -0
  84. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Perl.pm +1370 -0
  85. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Prototype.pm +92 -0
  86. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Prototype/Parameter.pm +87 -0
  87. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Simple.pm +503 -0
  88. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Languages/Tcl.pm +219 -0
  89. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Menu.pm +3406 -0
  90. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Menu/Entry.pm +201 -0
  91. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/NDMarkup.pm +76 -0
  92. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser.pm +1331 -0
  93. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser/JavaDoc.pm +464 -0
  94. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser/Native.pm +1060 -0
  95. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Parser/ParsedTopic.pm +253 -0
  96. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Project.pm +1402 -0
  97. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Project/ImageFile.pm +160 -0
  98. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Project/SourceFile.pm +113 -0
  99. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/ReferenceString.pm +334 -0
  100. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Settings.pm +1418 -0
  101. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Settings/BuildTarget.pm +66 -0
  102. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB.pm +678 -0
  103. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/Extension.pm +84 -0
  104. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/File.pm +129 -0
  105. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/Item.pm +201 -0
  106. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/ItemDefinition.pm +45 -0
  107. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SourceDB/WatchedFileDefinitions.pm +159 -0
  108. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/StatusMessage.pm +102 -0
  109. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolString.pm +212 -0
  110. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable.pm +1984 -0
  111. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/File.pm +186 -0
  112. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/IndexElement.pm +522 -0
  113. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/Reference.pm +273 -0
  114. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/ReferenceTarget.pm +97 -0
  115. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/Symbol.pm +428 -0
  116. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/SymbolTable/SymbolDefinition.pm +96 -0
  117. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Topics.pm +1319 -0
  118. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Topics/Type.pm +151 -0
  119. data/template/assets/naturaldocs/NaturalDocs/Modules/NaturalDocs/Version.pm +384 -0
  120. data/template/assets/naturaldocs/NaturalDocs/NaturalDocs +400 -0
  121. data/template/assets/naturaldocs/NaturalDocs/NaturalDocs.bat +17 -0
  122. data/template/assets/naturaldocs/NaturalDocs/Styles/Default.css +767 -0
  123. data/template/assets/naturaldocs/NaturalDocs/Styles/Roman.css +765 -0
  124. data/template/assets/naturaldocs/NaturalDocs/Styles/Small.css +763 -0
  125. data/template/assets/utilities/pngout +0 -0
  126. data/template/deploy/public_html/.htaccess +0 -0
  127. data/template/documentation/js/.htaccess +0 -0
  128. data/template/src/html/.htaccess +76 -0
  129. data/template/src/html/css/cmn/global.css +96 -0
  130. data/template/src/html/css/cmn/ie.css +15 -0
  131. data/template/src/html/css/cmn/ie6.css +15 -0
  132. data/template/src/html/images/cmn/.htaccess +0 -0
  133. data/template/src/html/images/tmp/.htaccess +0 -0
  134. data/template/src/html/includes/debug.inc +5 -0
  135. data/template/src/html/includes/footer.inc +52 -0
  136. data/template/src/html/includes/header.inc +61 -0
  137. data/template/src/html/includes/html.inc +3 -0
  138. data/template/src/html/includes/namespace.inc +19 -0
  139. data/template/src/html/includes/page.inc +151 -0
  140. data/template/src/html/index.html +35 -0
  141. data/template/src/html/js/cmn/bootstrap.js +74 -0
  142. data/template/src/html/js/cmn/global.js +142 -0
  143. data/template/src/html/js/cmn/lib/LAB.js +348 -0
  144. data/template/src/html/min/.htaccess +4 -0
  145. data/template/src/html/min/MinifyCLI.php +19 -0
  146. data/template/src/html/min/README.txt +132 -0
  147. data/template/src/html/min/builder/_index.js +242 -0
  148. data/template/src/html/min/builder/bm.js +36 -0
  149. data/template/src/html/min/builder/index.php +182 -0
  150. data/template/src/html/min/builder/ocCheck.php +36 -0
  151. data/template/src/html/min/builder/rewriteTest.js +1 -0
  152. data/template/src/html/min/config.php +187 -0
  153. data/template/src/html/min/groupsConfig.php +34 -0
  154. data/template/src/html/min/index.php +66 -0
  155. data/template/src/html/min/lib/FirePHP.php +1370 -0
  156. data/template/src/html/min/lib/HTTP/ConditionalGet.php +348 -0
  157. data/template/src/html/min/lib/HTTP/Encoder.php +326 -0
  158. data/template/src/html/min/lib/JSMin.php +314 -0
  159. data/template/src/html/min/lib/JSMinPlus.php +1872 -0
  160. data/template/src/html/min/lib/Minify.php +532 -0
  161. data/template/src/html/min/lib/Minify/Build.php +103 -0
  162. data/template/src/html/min/lib/Minify/CSS.php +83 -0
  163. data/template/src/html/min/lib/Minify/CSS/Compressor.php +250 -0
  164. data/template/src/html/min/lib/Minify/CSS/UriRewriter.php +270 -0
  165. data/template/src/html/min/lib/Minify/Cache/APC.php +130 -0
  166. data/template/src/html/min/lib/Minify/Cache/File.php +125 -0
  167. data/template/src/html/min/lib/Minify/Cache/Memcache.php +137 -0
  168. data/template/src/html/min/lib/Minify/ClosureCompiler.php +85 -0
  169. data/template/src/html/min/lib/Minify/CommentPreserver.php +90 -0
  170. data/template/src/html/min/lib/Minify/Controller/Base.php +202 -0
  171. data/template/src/html/min/lib/Minify/Controller/Files.php +78 -0
  172. data/template/src/html/min/lib/Minify/Controller/Groups.php +94 -0
  173. data/template/src/html/min/lib/Minify/Controller/MinApp.php +132 -0
  174. data/template/src/html/min/lib/Minify/Controller/Page.php +82 -0
  175. data/template/src/html/min/lib/Minify/Controller/Version1.php +118 -0
  176. data/template/src/html/min/lib/Minify/HTML.php +245 -0
  177. data/template/src/html/min/lib/Minify/ImportProcessor.php +157 -0
  178. data/template/src/html/min/lib/Minify/Lines.php +131 -0
  179. data/template/src/html/min/lib/Minify/Logger.php +45 -0
  180. data/template/src/html/min/lib/Minify/Packer.php +37 -0
  181. data/template/src/html/min/lib/Minify/Source.php +187 -0
  182. data/template/src/html/min/lib/Minify/YUICompressor.php +139 -0
  183. data/template/src/html/min/lib/Solar/Dir.php +199 -0
  184. data/template/src/html/min/lib/closure-compiler.jar +0 -0
  185. data/template/src/html/min/lib/yuicompressor-2.4.2.jar +0 -0
  186. data/template/src/html/min/utils.php +90 -0
  187. data/template/src/templates/css/template.css +7 -0
  188. data/template/src/templates/js/template.js +72 -0
  189. data/template/src/templates/template.html +18 -0
  190. data/template/src/yaml/config.yml +46 -0
  191. data/template/src/yaml/deploy.yml +35 -0
  192. data/test/bixbite_test.rb +7 -0
  193. data/test/test_helper.rb +10 -0
  194. metadata +278 -0
@@ -0,0 +1,35 @@
1
+ <?php
2
+ require('includes/namespace.inc');
3
+
4
+ $page->setPageTitle('Index');
5
+
6
+ ob_start();
7
+ ?>
8
+
9
+ <!-- Start [#content] -->
10
+ <div id="content">
11
+ <h1>Completed Pages</h1>
12
+
13
+ <div id="contentWrapper">
14
+ <ul style="font-size: 16px; line-height: 1.5;">
15
+ <?php
16
+ foreach ($page->listFilesInDirectory(SITE_ROOT, "html") as $key => $value) {
17
+
18
+ if ($value != "index.html") {
19
+
20
+ $raw = file_get_contents(SITE_ROOT . $value);
21
+ $regex = '/\$page->setPageTitle\(\'([^\']+)\'\)/';
22
+ preg_match($regex, $raw, $matches, PREG_OFFSET_CAPTURE);
23
+ $title = $matches[1][0];
24
+
25
+ echo "\t\t\t\t\t" . '<li><a href="' . $value . '">' . $title . '</a></li>' . "\n";
26
+ }
27
+ }
28
+ ?>
29
+ </ul>
30
+ </div>
31
+
32
+ </div>
33
+ <!-- End [#content] -->
34
+
35
+ <?php $page->output(ob_get_clean()); ?>
@@ -0,0 +1,74 @@
1
+ /*
2
+ File: bootstrap.js
3
+
4
+ About: Version
5
+ 1.0
6
+
7
+ Project: __PROJECT_NAME__
8
+
9
+ Description:
10
+ This should be included directly after the opening <body> tag.
11
+
12
+ If a module required a <script> tag in the middle of the page
13
+ markup, queue up the code in a function so that jQuery and other
14
+ dependencies are available for the code runs.
15
+
16
+ Example:
17
+ ><script type="text/javascript">
18
+ > __PROJECT_NAMESPACE__.queue(function() {
19
+ > // do something with jQuery, etc
20
+ > });
21
+ ></script>
22
+ >
23
+ >...
24
+ >
25
+ >$(document).ready(function() {
26
+ > __PROJECT_NAMESPACE__.unqueue();
27
+ >})
28
+
29
+ */
30
+
31
+ /*
32
+ Class: __PROJECT_NAMESPACE__
33
+ Scoped to the __PROJECT_NAMESPACE__ Global Namespace
34
+ */
35
+ var __PROJECT_NAMESPACE__ = window.__PROJECT_NAMESPACE__ || {};
36
+
37
+ (function(__PROJECT_NAMESPACE__) {
38
+
39
+ document.body.className += " js-enabled";
40
+
41
+ var queue = [];
42
+
43
+ /*
44
+ method: queue
45
+ Adds functions to a queuer to be deployed once the DOM is ready
46
+
47
+ Parameters:
48
+ arguments - the function (or functions) to add to the queue
49
+ */
50
+ __PROJECT_NAMESPACE__.queue = function() {
51
+ for (var i = -1, func; func = arguments[++i];) {
52
+ queue[queue.length] = func;
53
+ }
54
+ };
55
+
56
+ /*
57
+ method: unqueue
58
+ Fires each queued function
59
+ */
60
+ __PROJECT_NAMESPACE__.unqueue = function() {
61
+ var func;
62
+ while (queue != null && (func = queue.shift())) {
63
+ func();
64
+ }
65
+
66
+ // Nullify
67
+ for (var i = (queue != null) ? queue.length - 1 : -1; i >= 0; i--) {
68
+ queue[i] = null;
69
+ }
70
+
71
+ queue = null;
72
+ };
73
+
74
+ }(__PROJECT_NAMESPACE__));
@@ -0,0 +1,142 @@
1
+ /*
2
+ File: global.js
3
+
4
+ About: Version
5
+ 1.0
6
+
7
+ Project: __PROJECT_NAME__
8
+
9
+ Description:
10
+ A common file that includes all globally shared functionality for __PROJECT_NAMESPACE__
11
+
12
+ Requires:
13
+ - LABjs <http://labjs.com/>
14
+ - __JS_LIB__
15
+
16
+ Requires:
17
+ - <bootstrap.js>
18
+
19
+ */
20
+
21
+ /*
22
+ Class: __PROJECT_NAMESPACE__
23
+ Scoped to the __PROJECT_NAMESPACE__ Global Namespace
24
+ */
25
+ var __PROJECT_NAMESPACE__ = window.__PROJECT_NAMESPACE__ || {};
26
+
27
+ // When the DOM is ready.
28
+ (function () {
29
+
30
+ // Storing a variable to reference
31
+ var $self = __PROJECT_NAMESPACE__;
32
+
33
+ /*
34
+ Namespace: __PROJECT_NAMESPACE__.vars
35
+ Shared global variables
36
+ */
37
+ $self.vars = {
38
+
39
+ /*
40
+ variable: queue
41
+ Contains the functions ready to be fired on DOM ready
42
+ */
43
+ queue : []
44
+ };
45
+
46
+ /*
47
+ Namespace: __PROJECT_NAMESPACE__.legacy
48
+ A legacy namespace to be used if __PROJECT_NAMESPACE__ has any legacy dependencies
49
+ */
50
+ $self.legacy = {};
51
+
52
+ /*
53
+ Namespace: __PROJECT_NAMESPACE__.utils
54
+ Shared global utilities
55
+ */
56
+ $self.utils = {
57
+
58
+ /*
59
+ sub: ie6Check
60
+ Adds an IE6 flag to jQuery
61
+ */
62
+ ie6Check : function() {
63
+ // Let's set a flag for IE 6
64
+ $.extend($.browser, {
65
+ ie6 : function () {
66
+ return !!($.browser.msie && $.browser.version == 6);
67
+ }()
68
+ });
69
+ }(),
70
+
71
+ /*
72
+ sub: queue
73
+ A global initializer. Takes a function argument and queues it until <init> is fired
74
+
75
+ Parameters:
76
+ object - The function to initialize when the DOM is ready
77
+
78
+ Example:
79
+ >__PROJECT_NAMESPACE__.utils.queue(function() {
80
+ > // Add code here
81
+ >});
82
+ */
83
+ queue : function (object) {
84
+ $self.vars.queue.push(object);
85
+ },
86
+
87
+ /*
88
+ sub: init
89
+ When fired, loops through $self.vars.queue and fires each queued function
90
+ */
91
+ init : function() {
92
+ var queue = $self.vars.queue;
93
+
94
+ $.each(queue, function(i, object) {
95
+ for (var key in object) {
96
+ if (object.hasOwnProperty(key) && (typeof object[key] === "function")) {
97
+ object[key]();
98
+ }
99
+ }
100
+
101
+ });
102
+ }
103
+ };
104
+
105
+ /*
106
+ Namespace: __PROJECT_NAMESPACE__
107
+ Under the __PROJECT_NAMESPACE__ Local Namespace
108
+ */
109
+
110
+ /*
111
+ Function: global
112
+ Takes care of a few global functionalities:
113
+ - Fires __PROJECT_NAMESPACE__.unqueue
114
+ - Overrides the default jQuery easing
115
+ - Adds the IE BackgroundImageCache fix
116
+ */
117
+ $self.global = function () {
118
+
119
+ // Unqueue inline functions
120
+ __PROJECT_NAMESPACE__.unqueue();
121
+
122
+ if ($.browser.msie) {
123
+ try {
124
+ // Enable background image cache
125
+ document.execCommand("BackgroundImageCache", false, true);
126
+ } catch (ex) {}
127
+ }
128
+ };
129
+
130
+ /*
131
+ Function: header
132
+ Encapsulates functionality found in the #header space
133
+ */
134
+ $self.header = function() {};
135
+
136
+ /*
137
+ Callback: init
138
+ Sends local functions to a global queuer for initialization See: <__PROJECT_NAMESPACE__.utils.queue>
139
+ */
140
+ $self.utils.queue($self);
141
+
142
+ }).call(__PROJECT_NAMESPACE__);
@@ -0,0 +1,348 @@
1
+ // LAB.js (LABjs :: Loading And Blocking JavaScript)
2
+ // v1.0.1 (c) Kyle Simpson
3
+ // MIT License
4
+
5
+ (function(global){
6
+ var sSTRING = "string", // constants used for compression optimization
7
+ sHEAD = "head",
8
+ sBODY = "body",
9
+ sSCRIPT = "script",
10
+ sREADYSTATE = "readyState",
11
+ sPRELOADDONE = "preloaddone",
12
+ sLOADTRIGGER = "loadtrigger",
13
+ sSRCURI = "srcuri",
14
+ sPRELOAD = "preload",
15
+ sCOMPLETE = "complete",
16
+ sDONE = "done",
17
+ sWHICH = "which",
18
+ sONREADYSTATECHANGE = "onreadystatechange",
19
+ sONLOAD = "onload",
20
+ sHASOWNPROPERTY = "hasOwnProperty",
21
+ nNULL = null,
22
+ bTRUE = true,
23
+ bFALSE = false,
24
+ oDOC = global.document,
25
+ oDOCLOC = oDOC.location,
26
+ oACTIVEX = global.ActiveXObject,
27
+ fSETTIMEOUT = global.setTimeout,
28
+ fCLEARTIMEOUT = global.clearTimeout,
29
+ fGETELEMENTSBYTAGNAME = function(tn){return oDOC.getElementsByTagName(tn);},
30
+ fOBJTOSTRING = Object.prototype.toString,
31
+ fNOOP = function(){},
32
+ append_to = {},
33
+ all_scripts = {},
34
+ PAGEROOT = /^[^?#]*\//.exec(oDOCLOC.href)[0], // these ROOTs do not support file:/// usage, only http:// type usage
35
+ DOCROOT = /^\w+\:\/\/\/?[^\/]+/.exec(PAGEROOT)[0], // optional third / in the protocol portion of this regex so that LABjs doesn't blow up when used in file:/// usage
36
+ docScripts = fGETELEMENTSBYTAGNAME(sSCRIPT),
37
+
38
+ // Ah-ha hush that fuss, feature inference is used to detect specific browsers
39
+ // because the techniques used in LABjs have no known feature detection. If
40
+ // you know of a feature test please contact me ASAP. Feature inference is used
41
+ // instead of user agent sniffing because the UA string can be easily
42
+ // spoofed and is not adequate for such a mission critical part of the code.
43
+ is_opera = global.opera && fOBJTOSTRING.call(global.opera) == "[object Opera]",
44
+ is_gecko = (function(o) { o[o] = o+""; return o[o] != o+""; })(new String("__count__")),
45
+
46
+ global_defs = {
47
+ cache:!(is_gecko||is_opera), // browsers like IE/Safari/Chrome can use the "cache" trick to preload
48
+ order:is_gecko||is_opera, // FF/Opera preserve execution order with script tags automatically, so just add all scripts as fast as possible
49
+ xhr:bTRUE, // use XHR trick to preload local scripts
50
+ dupe:bTRUE, // allow duplicate scripts? defaults to true now 'cause is slightly more performant that way (less checks)
51
+ preserve:bFALSE, // preserve execution order of all loaded scripts (regardless of preloading)
52
+ base:"", // base path to prepend to all non-absolute-path scripts
53
+ which:sHEAD // which DOM object ("head" or "body") to append scripts to
54
+ }
55
+ ;
56
+ global_defs[sPRELOAD] = bTRUE; // use various tricks for "preloading" scripts
57
+
58
+ append_to[sHEAD] = fGETELEMENTSBYTAGNAME(sHEAD);
59
+ append_to[sBODY] = fGETELEMENTSBYTAGNAME(sBODY);
60
+
61
+ function isFunc(func) { return fOBJTOSTRING.call(func) === "[object Function]"; }
62
+ function canonicalScriptURI(src,base_path) {
63
+ var regex = /^\w+\:\/\//, ret;
64
+ if (typeof src !== sSTRING) src = "";
65
+ if (typeof base_path !== sSTRING) base_path = "";
66
+ ret = (regex.test(src) ? "" : base_path) + src;
67
+ return ((regex.test(ret) ? "" : (ret.charAt(0) === "/" ? DOCROOT : PAGEROOT)) + ret);
68
+ }
69
+ function sameDomain(src) { return (canonicalScriptURI(src).indexOf(DOCROOT) === 0); }
70
+ function scriptTagExists(uri) { // checks if a script uri has ever been loaded into this page's DOM
71
+ var i = 0, script;
72
+ while (script = docScripts[i++]) {
73
+ if (typeof script.src === sSTRING && uri === canonicalScriptURI(script.src) && script.getAttribute("rel") !== sPRELOAD) return bTRUE;
74
+ }
75
+ return bFALSE;
76
+ }
77
+ function engine(queueExec,opts) {
78
+ queueExec = !(!queueExec);
79
+ if (opts == nNULL) opts = global_defs;
80
+
81
+ var ready = bFALSE,
82
+ _use_preload = queueExec && opts[sPRELOAD],
83
+ _use_cache_preload = _use_preload && opts.cache,
84
+ _use_script_order = _use_preload && opts.order,
85
+ _use_xhr_preload = _use_preload && opts.xhr,
86
+ _auto_wait = opts.preserve,
87
+ _which = opts.which,
88
+ _base_path = opts.base,
89
+ waitFunc = fNOOP,
90
+ scripts_loading = bFALSE,
91
+ publicAPI,
92
+ first_pass = bTRUE,
93
+ scripts = {},
94
+ exec = [],
95
+ end_of_chain_check_interval = null
96
+ ;
97
+
98
+ _use_preload = _use_cache_preload || _use_xhr_preload || _use_script_order; // if all flags are turned off, preload is moot so disable it
99
+
100
+ function isScriptLoaded(elem,scriptentry) {
101
+ if ((elem[sREADYSTATE] && elem[sREADYSTATE]!==sCOMPLETE && elem[sREADYSTATE]!=="loaded") || scriptentry[sDONE]) { return bFALSE; }
102
+ elem[sONLOAD] = elem[sONREADYSTATECHANGE] = nNULL; // prevent memory leak
103
+ return bTRUE;
104
+ }
105
+ function handleScriptLoad(elem,scriptentry,skipReadyCheck) {
106
+ skipReadyCheck = !(!skipReadyCheck); // used to override ready check when script text was injected from XHR preload
107
+ if (!skipReadyCheck && !(isScriptLoaded(elem,scriptentry))) return;
108
+ scriptentry[sDONE] = bTRUE;
109
+
110
+ for (var key in scripts) {
111
+ if (scripts[sHASOWNPROPERTY](key) && !(scripts[key][sDONE])) return;
112
+ }
113
+ ready = bTRUE;
114
+ waitFunc();
115
+ }
116
+ function loadTriggerExecute(scriptentry) {
117
+ if (isFunc(scriptentry[sLOADTRIGGER])) {
118
+ scriptentry[sLOADTRIGGER]();
119
+ scriptentry[sLOADTRIGGER] = nNULL; // prevent memory leak
120
+ }
121
+ }
122
+ function handleScriptPreload(elem,scriptentry) {
123
+ if (!isScriptLoaded(elem,scriptentry)) return;
124
+ scriptentry[sPRELOADDONE] = bTRUE;
125
+ fSETTIMEOUT(function(){
126
+ append_to[scriptentry[sWHICH]][0].removeChild(elem); // remove preload script node
127
+ loadTriggerExecute(scriptentry);
128
+ },0);
129
+ }
130
+ function handleXHRPreload(xhr,scriptentry) {
131
+ if (xhr[sREADYSTATE] === 4) {
132
+ xhr[sONREADYSTATECHANGE] = fNOOP; // fix a memory leak in IE
133
+ scriptentry[sPRELOADDONE] = bTRUE;
134
+ fSETTIMEOUT(function(){ loadTriggerExecute(scriptentry); },0);
135
+ }
136
+ }
137
+ function createScriptTag(scriptentry,src,type,charset,rel,onload,scriptText) {
138
+ fSETTIMEOUT(function(){
139
+ if (append_to[scriptentry[sWHICH]][0] === nNULL) { // append_to object not yet ready
140
+ fSETTIMEOUT(arguments.callee,25);
141
+ return;
142
+ }
143
+ var scriptElem = oDOC.createElement(sSCRIPT), fSETATTRIBUTE = function(attr,val){scriptElem.setAttribute(attr,val);};
144
+ fSETATTRIBUTE("type",type);
145
+ fSETATTRIBUTE("rel",rel);
146
+ if (typeof charset === sSTRING) fSETATTRIBUTE("charset",charset);
147
+ if (isFunc(onload)) { // load script via 'src' attribute, set onload/onreadystatechange listeners
148
+ scriptElem[sONLOAD] = scriptElem[sONREADYSTATECHANGE] = function(){onload(scriptElem,scriptentry);};
149
+ fSETATTRIBUTE("src",src);
150
+ }
151
+ append_to[scriptentry[sWHICH]][0].appendChild(scriptElem);
152
+ if (typeof scriptText === sSTRING) { // script text already avaiable from XHR preload, so just inject it
153
+ scriptElem.text = scriptText;
154
+ handleScriptLoad(scriptElem,scriptentry,bTRUE); // manually call 'load' callback function, skipReadyCheck=true
155
+ }
156
+ },0);
157
+ }
158
+ function loadScriptElem(scriptentry,src,type,charset) {
159
+ all_scripts[scriptentry[sSRCURI]] = bTRUE;
160
+ createScriptTag(scriptentry,src,type,charset,"",handleScriptLoad);
161
+ }
162
+ function loadScriptCache(scriptentry,src,type,charset) {
163
+ var args = arguments;
164
+ if (first_pass && scriptentry[sPRELOADDONE] == nNULL) { // need to preload into cache
165
+ scriptentry[sPRELOADDONE] = bFALSE;
166
+ createScriptTag(scriptentry,src,"text/html",charset,sPRELOAD,handleScriptPreload); // "text/html" causes a fetch into cache, but no execution
167
+ }
168
+ else if (!first_pass && scriptentry[sPRELOADDONE] != nNULL && !scriptentry[sPRELOADDONE]) { // preload still in progress, make sure trigger is set for execution later
169
+ scriptentry[sLOADTRIGGER] = function(){loadScriptCache.apply(nNULL,args);};
170
+ }
171
+ else if (!first_pass) { // preload done, so reload (from cache, hopefully!) as regular script element
172
+ loadScriptElem.apply(nNULL,args);
173
+ }
174
+ }
175
+ function loadScriptXHR(scriptentry,src,type,charset) {
176
+ var args = arguments, xhr;
177
+ if (first_pass && scriptentry[sPRELOADDONE] == nNULL) { // need to preload
178
+ scriptentry[sPRELOADDONE] = bFALSE;
179
+ xhr = scriptentry.xhr = (oACTIVEX ? new oACTIVEX("Microsoft.XMLHTTP") : new global.XMLHttpRequest());
180
+ xhr[sONREADYSTATECHANGE] = function(){handleXHRPreload(xhr,scriptentry);};
181
+ xhr.open("GET",src);
182
+ xhr.send("");
183
+ }
184
+ else if (!first_pass && scriptentry[sPRELOADDONE] != nNULL && !scriptentry[sPRELOADDONE]) { // preload XHR still in progress, make sure trigger is set for execution later
185
+ scriptentry[sLOADTRIGGER] = function(){loadScriptXHR.apply(nNULL,args);};
186
+ }
187
+ else if (!first_pass) { // preload done, so "execute" script via injection
188
+ all_scripts[scriptentry[sSRCURI]] = bTRUE;
189
+ createScriptTag(scriptentry,src,type,charset,"",nNULL,scriptentry.xhr.responseText);
190
+ scriptentry.xhr = nNULL;
191
+ }
192
+ }
193
+ function loadScript(o) {
194
+ if (o.allowDup == nNULL) o.allowDup = opts.dupe;
195
+ var src = o.src, type = o.type, charset = o.charset, allowDup = o.allowDup,
196
+ src_uri = canonicalScriptURI(src,_base_path), scriptentry, same_domain = sameDomain(src_uri);
197
+ if (typeof type !== sSTRING) type = "text/javascript";
198
+ if (typeof charset !== sSTRING) charset = nNULL;
199
+ allowDup = !(!allowDup);
200
+ if (!allowDup &&
201
+ (
202
+ (all_scripts[src_uri] != nNULL) || (first_pass && scripts[src_uri]) || scriptTagExists(src_uri)
203
+ )
204
+ ) {
205
+ if (scripts[src_uri] != nNULL && scripts[src_uri][sPRELOADDONE] && !scripts[src_uri][sDONE] && same_domain) {
206
+ // this script was preloaded via XHR, but is a duplicate, and dupes are not allowed
207
+ handleScriptLoad(nNULL,scripts[src_uri],bTRUE); // mark the entry as done and check if chain group is done
208
+ }
209
+ return;
210
+ }
211
+ if (scripts[src_uri] == nNULL) scripts[src_uri] = {};
212
+ scriptentry = scripts[src_uri];
213
+ if (scriptentry[sWHICH] == nNULL) scriptentry[sWHICH] = _which;
214
+ scriptentry[sDONE] = bFALSE;
215
+ scriptentry[sSRCURI] = src_uri;
216
+ scripts_loading = bTRUE;
217
+
218
+ if (!_use_script_order && _use_xhr_preload && same_domain) loadScriptXHR(scriptentry,src_uri,type,charset);
219
+ else if (!_use_script_order && _use_cache_preload) loadScriptCache(scriptentry,src_uri,type,charset);
220
+ else loadScriptElem(scriptentry,src_uri,type,charset);
221
+ }
222
+ function onlyQueue(execBody) {
223
+ exec.push(execBody);
224
+ }
225
+ function queueAndExecute(execBody) { // helper for publicAPI functions below
226
+ if (queueExec && !_use_script_order) onlyQueue(execBody);
227
+ if (!queueExec || _use_preload) execBody(); // if engine is either not queueing, or is queuing in preload mode, go ahead and execute
228
+ }
229
+ function serializeArgs(args) {
230
+ var sargs = [], i;
231
+ for (i=0; i<args.length; i++) {
232
+ if (fOBJTOSTRING.call(args[i]) === "[object Array]") sargs = sargs.concat(serializeArgs(args[i]));
233
+ else sargs[sargs.length] = args[i];
234
+ }
235
+ return sargs;
236
+ }
237
+
238
+ publicAPI = {
239
+ script:function() {
240
+ fCLEARTIMEOUT(end_of_chain_check_interval);
241
+ var args = serializeArgs(arguments), use_engine = publicAPI;
242
+ if (_auto_wait) {
243
+ for (var i=0; i<args.length; i++) {
244
+ if (i===0) {
245
+ queueAndExecute(function(){
246
+ loadScript((typeof args[0] === sSTRING) ? {src:args[0]} : args[0]);
247
+ });
248
+ }
249
+ else use_engine = use_engine.script(args[i]);
250
+ use_engine = use_engine.wait();
251
+ }
252
+ }
253
+ else {
254
+ queueAndExecute(function(){
255
+ for (var i=0; i<args.length; i++) {
256
+ loadScript((typeof args[i] === sSTRING) ? {src:args[i]} : args[i]);
257
+ }
258
+ });
259
+ }
260
+ end_of_chain_check_interval = fSETTIMEOUT(function(){first_pass = bFALSE;},5); // hack to "detect" the end of the chain if a wait() is not the last call
261
+ return use_engine;
262
+ },
263
+ wait:function(func) {
264
+ fCLEARTIMEOUT(end_of_chain_check_interval);
265
+ first_pass = bFALSE;
266
+ if (!isFunc(func)) func = fNOOP;
267
+ // On this current chain's waitFunc function, tack on call to trigger the queue for the *next* engine
268
+ // in the chain, which will be executed when the current chain finishes loading
269
+ var e = engine(bTRUE,opts), // 'bTRUE' tells the engine to be in queueing mode
270
+ triggerNextChain = e.trigger, // store ref to e's trigger function for use by 'wfunc'
271
+ wfunc = function(){ try { func(); } catch(err) {} triggerNextChain(); };
272
+ delete e.trigger; // remove the 'trigger' property from e's public API, since only used internally
273
+ var fn = function(){
274
+ if (scripts_loading && !ready) waitFunc = wfunc;
275
+ else fSETTIMEOUT(wfunc,0);
276
+ };
277
+
278
+ if (queueExec && !scripts_loading) onlyQueue(fn);
279
+ else queueAndExecute(fn);
280
+ return e;
281
+ }
282
+ };
283
+ publicAPI.block = publicAPI.wait; // alias "block" to "wait" -- "block" is now deprecated
284
+ if (queueExec) {
285
+ // if queueing, return a function that the previous chain's waitFunc function can use to trigger this
286
+ // engine's queue. NOTE: this trigger function is captured and removed from the public chain API before return
287
+ publicAPI.trigger = function() {
288
+ var i=0, fn;
289
+ while (fn = exec[i++]) fn();
290
+ exec = [];
291
+ };
292
+ }
293
+ return publicAPI;
294
+ }
295
+ function processOpts(opts) {
296
+ var k, newOpts = {},
297
+ boolOpts = {"UseCachePreload":"cache","UseLocalXHR":"xhr","UsePreloading":sPRELOAD,"AlwaysPreserveOrder":"preserve","AllowDuplicates":"dupe"},
298
+ allOpts = {"AppendTo":"which","BasePath":"base"}
299
+ ;
300
+ for (k in boolOpts) allOpts[k] = boolOpts[k];
301
+ newOpts.order = !(!global_defs.order);
302
+ for (k in allOpts) {
303
+ if (allOpts[sHASOWNPROPERTY](k) && global_defs[allOpts[k]] != nNULL) newOpts[allOpts[k]] = (opts[k] != nNULL) ? opts[k] : global_defs[allOpts[k]];
304
+ }
305
+ for (k in boolOpts) { // normalize bool props to actual boolean values if not already
306
+ if (boolOpts[sHASOWNPROPERTY](k)) newOpts[boolOpts[k]] = !(!newOpts[boolOpts[k]]);
307
+ }
308
+ if (!newOpts[sPRELOAD]) newOpts.cache = newOpts.order = newOpts.xhr = bFALSE; // turn off all flags if preloading is disabled
309
+ newOpts.which = (newOpts.which === sHEAD || newOpts.which === sBODY) ? newOpts.which : sHEAD;
310
+ return newOpts;
311
+ }
312
+
313
+ global.$LAB = {
314
+ setGlobalDefaults:function(gdefs) { // intentionally does not return an "engine" instance -- must call as stand-alone function call on $LAB
315
+ global_defs = processOpts(gdefs);
316
+ },
317
+ setOptions:function(opts){ // set options per chain
318
+ return engine(bFALSE,processOpts(opts));
319
+ },
320
+ script:function(){ // will load one or more scripts
321
+ return engine().script.apply(nNULL,arguments);
322
+ },
323
+ wait:function(){ // will ensure that the chain's previous scripts are executed before execution of scripts in subsequent chain links
324
+ return engine().wait.apply(nNULL,arguments);
325
+ }
326
+ };
327
+ global.$LAB.block = global.$LAB.wait; // alias "block" to "wait" -- "block" is now deprecated
328
+
329
+ /* The following "hack" was suggested by Andrea Giammarchi and adapted from: http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html
330
+ NOTE: this hack only operates in FF and then only in versions where document.readyState is not present (FF < 3.6?).
331
+
332
+ The hack essentially "patches" the **page** that LABjs is loaded onto so that it has a proper conforming document.readyState, so that if a script which does
333
+ proper and safe dom-ready detection is loaded onto a page, after dom-ready has passed, it will still be able to detect this state, by inspecting the now hacked
334
+ document.readyState property. The loaded script in question can then immediately trigger any queued code executions that were waiting for the DOM to be ready.
335
+ For instance, jQuery > 1.3.2 has been patched to take advantage of document.readyState, which is enabled by this hack. But 1.3.2 and before are **not** safe or
336
+ affected by this hack, and should therefore **not** be lazy-loaded by script loader tools such as LABjs.
337
+ */
338
+ (function(addEvent,domLoaded,handler){
339
+ if (oDOC[sREADYSTATE] == nNULL && oDOC[addEvent]){
340
+ oDOC[sREADYSTATE] = "loading";
341
+ oDOC[addEvent](domLoaded,handler = function(){
342
+ oDOC.removeEventListener(domLoaded,handler,bFALSE);
343
+ oDOC[sREADYSTATE] = sCOMPLETE;
344
+ },bFALSE);
345
+ }
346
+ })("addEventListener","DOMContentLoaded");
347
+
348
+ })(window);