riojs 0.0.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 (270) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +24 -0
  3. data/VERSION +1 -0
  4. data/bin/rio +5 -0
  5. data/generators/rio_app/USAGE +19 -0
  6. data/generators/rio_app/rio_app_generator.rb +40 -0
  7. data/generators/rio_app/templates/app.build +10 -0
  8. data/generators/rio_app/templates/app.css +0 -0
  9. data/generators/rio_app/templates/app.js +20 -0
  10. data/generators/rio_app/templates/app_view.html.erb +19 -0
  11. data/generators/rio_app/templates/fixture.js +4 -0
  12. data/generators/rio_app/templates/rio.html.erb +18 -0
  13. data/generators/rio_app/templates/rio_controller.rb +2 -0
  14. data/generators/rio_app/templates/spec.js +7 -0
  15. data/generators/rio_component/USAGE +13 -0
  16. data/generators/rio_component/rio_component_generator.rb +16 -0
  17. data/generators/rio_component/templates/component.css +0 -0
  18. data/generators/rio_component/templates/component.js +11 -0
  19. data/generators/rio_component/templates/fixture.js +3 -0
  20. data/generators/rio_component/templates/spec.js +6 -0
  21. data/generators/rio_model/USAGE +12 -0
  22. data/generators/rio_model/rio_model_generator.rb +21 -0
  23. data/generators/rio_model/templates/fixture.js +3 -0
  24. data/generators/rio_model/templates/model.js +9 -0
  25. data/generators/rio_model/templates/spec.js +6 -0
  26. data/generators/rio_page/USAGE +14 -0
  27. data/generators/rio_page/rio_page_generator.rb +16 -0
  28. data/generators/rio_page/templates/fixture.js +3 -0
  29. data/generators/rio_page/templates/page.css +12 -0
  30. data/generators/rio_page/templates/page.js +12 -0
  31. data/generators/rio_page/templates/page.jst +64 -0
  32. data/generators/rio_page/templates/spec.js +6 -0
  33. data/generators/rio_resource/USAGE +20 -0
  34. data/generators/rio_resource/rio_resource_generator.rb +10 -0
  35. data/generators/rio_resource/templates/controller.rb +3 -0
  36. data/init.rb +4 -0
  37. data/install/config/juggernaut_hosts.yml +18 -0
  38. data/install/lib/tasks/rio.rake +1 -0
  39. data/install/script/rio_server +37 -0
  40. data/lib/rio/autospec.rb +86 -0
  41. data/lib/rio/install.rb +90 -0
  42. data/lib/rio/juggernaut.rb +212 -0
  43. data/lib/rio/path.rb +3 -0
  44. data/lib/rio/rio_compressor.rb +219 -0
  45. data/lib/rio/rio_file_controller.rb +16 -0
  46. data/lib/rio/rio_on_rails.rb +586 -0
  47. data/lib/rio/rio_proxy_controller.rb +60 -0
  48. data/lib/rio/rio_push_controller.rb +48 -0
  49. data/lib/rio/rio_routes.rb +24 -0
  50. data/lib/rio/rio_spec_controller.rb +70 -0
  51. data/lib/riojs.rb +14 -0
  52. data/lib/tasks/rio.rb +63 -0
  53. data/public/images/background-chiffon.png +0 -0
  54. data/public/images/button-gradient-overlay-down.png +0 -0
  55. data/public/images/button-gradient-overlay.png +0 -0
  56. data/public/images/icons/add.png +0 -0
  57. data/public/images/icons/error-big.png +0 -0
  58. data/public/images/icons/warning-big.png +0 -0
  59. data/public/images/rio-logo-big.png +0 -0
  60. data/public/images/rio-logo.png +0 -0
  61. data/public/images/splitter-handle-horizontal.png +0 -0
  62. data/public/images/splitter-handle-vertical.png +0 -0
  63. data/public/images/tab-bar-gradient-overlay.png +0 -0
  64. data/public/images/title-gradient-overlay.png +0 -0
  65. data/public/images/trash.gif +0 -0
  66. data/public/javascripts/components/accordion.js +144 -0
  67. data/public/javascripts/components/alert_box.js +59 -0
  68. data/public/javascripts/components/base.js +47 -0
  69. data/public/javascripts/components/box.js +63 -0
  70. data/public/javascripts/components/button.js +98 -0
  71. data/public/javascripts/components/checkbox.js +44 -0
  72. data/public/javascripts/components/container.js +265 -0
  73. data/public/javascripts/components/grid_view.js +107 -0
  74. data/public/javascripts/components/image.js +19 -0
  75. data/public/javascripts/components/input.js +171 -0
  76. data/public/javascripts/components/label.js +15 -0
  77. data/public/javascripts/components/lightbox.js +160 -0
  78. data/public/javascripts/components/link.js +43 -0
  79. data/public/javascripts/components/list_item.js +44 -0
  80. data/public/javascripts/components/list_view.js +192 -0
  81. data/public/javascripts/components/marquee.js +131 -0
  82. data/public/javascripts/components/menu.js +89 -0
  83. data/public/javascripts/components/notification.js +75 -0
  84. data/public/javascripts/components/overlay.js +134 -0
  85. data/public/javascripts/components/panel.js +146 -0
  86. data/public/javascripts/components/radio.js +46 -0
  87. data/public/javascripts/components/splitter.js +65 -0
  88. data/public/javascripts/components/tab_bar.js +64 -0
  89. data/public/javascripts/components/tab_panel.js +57 -0
  90. data/public/javascripts/components/textarea.js +223 -0
  91. data/public/javascripts/components/toggle_button.js +22 -0
  92. data/public/javascripts/components/tooltip.js +80 -0
  93. data/public/javascripts/lib/application.js +482 -0
  94. data/public/javascripts/lib/attr.js +760 -0
  95. data/public/javascripts/lib/benchmark.js +235 -0
  96. data/public/javascripts/lib/blank.html +39 -0
  97. data/public/javascripts/lib/boot.js +300 -0
  98. data/public/javascripts/lib/clipboard.js +96 -0
  99. data/public/javascripts/lib/collection_entity.js +46 -0
  100. data/public/javascripts/lib/component.js +129 -0
  101. data/public/javascripts/lib/console.js +75 -0
  102. data/public/javascripts/lib/console/apps/console.build +43 -0
  103. data/public/javascripts/lib/console/apps/console.js +28 -0
  104. data/public/javascripts/lib/console/blank.html +39 -0
  105. data/public/javascripts/lib/console/components/benchmark.js +196 -0
  106. data/public/javascripts/lib/console/components/console.js +352 -0
  107. data/public/javascripts/lib/console/components/dependencies_list.js +17 -0
  108. data/public/javascripts/lib/console/components/docs.js +66 -0
  109. data/public/javascripts/lib/console/components/playground.js +30 -0
  110. data/public/javascripts/lib/console/console.html +27 -0
  111. data/public/javascripts/lib/console/console_commands.js +287 -0
  112. data/public/javascripts/lib/console/console_commands.js.rej +21 -0
  113. data/public/javascripts/lib/console/console_mixin.js +22 -0
  114. data/public/javascripts/lib/console/docs/files.html +579 -0
  115. data/public/javascripts/lib/console/docs/index.html +323 -0
  116. data/public/javascripts/lib/console/docs/symbols/Object.html +291 -0
  117. data/public/javascripts/lib/console/docs/symbols/_global_.html +413 -0
  118. data/public/javascripts/lib/console/docs/symbols/rio.AIM.html +490 -0
  119. data/public/javascripts/lib/console/docs/symbols/rio.Application.html +841 -0
  120. data/public/javascripts/lib/console/docs/symbols/rio.Attr.html +1075 -0
  121. data/public/javascripts/lib/console/docs/symbols/rio.Binding.html +272 -0
  122. data/public/javascripts/lib/console/docs/symbols/rio.Component.html +419 -0
  123. data/public/javascripts/lib/console/docs/symbols/rio.Cookie.html +543 -0
  124. data/public/javascripts/lib/console/docs/symbols/rio.DelayedTask#initialize.html +270 -0
  125. data/public/javascripts/lib/console/docs/symbols/rio.DelayedTask.html +391 -0
  126. data/public/javascripts/lib/console/docs/symbols/rio.JsTemplate.html +271 -0
  127. data/public/javascripts/lib/console/docs/symbols/rio.Juggernaut.html +329 -0
  128. data/public/javascripts/lib/console/docs/symbols/rio.Model.html +822 -0
  129. data/public/javascripts/lib/console/docs/symbols/rio.Page.html +383 -0
  130. data/public/javascripts/lib/console/docs/symbols/rio.Template.html +328 -0
  131. data/public/javascripts/lib/console/docs/symbols/rio.Utils.html +617 -0
  132. data/public/javascripts/lib/console/docs/symbols/rio.html +506 -0
  133. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_components_base.js.html +54 -0
  134. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_application.js.html +490 -0
  135. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_attr.js.html +768 -0
  136. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_boot.js.html +308 -0
  137. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_clipboard.js.html +103 -0
  138. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_collection_entity.js.html +53 -0
  139. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_component.js.html +137 -0
  140. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_cookie.js.html +81 -0
  141. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_delayed_task.js.html +68 -0
  142. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_file.js.html +80 -0
  143. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_flash_detect.js.html +129 -0
  144. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_form.js.html +95 -0
  145. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_id.js.html +50 -0
  146. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_inflector.js.html +167 -0
  147. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_js_template.js.html +283 -0
  148. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_juggernaut.js.html +303 -0
  149. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_key_map.js.html +68 -0
  150. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_layout_manager.js.html +175 -0
  151. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_log.js.html +17 -0
  152. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_model.js.html +1074 -0
  153. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_page.js.html +246 -0
  154. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_parameters.js.html +66 -0
  155. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_protohack.js.html +305 -0
  156. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_push.js.html +12 -0
  157. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_rsh.js.html +659 -0
  158. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_swfobject.js.html +12 -0
  159. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_tag.js.html +60 -0
  160. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_template.js.html +64 -0
  161. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_theme.js.html +105 -0
  162. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_undo.js.html +142 -0
  163. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_utils.js.html +87 -0
  164. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_yaml.js.html +88 -0
  165. data/public/javascripts/lib/console/file-small.png +0 -0
  166. data/public/javascripts/lib/console/green-circle.png +0 -0
  167. data/public/javascripts/lib/console/loading.gif +0 -0
  168. data/public/javascripts/lib/console/pages/console_page.js +149 -0
  169. data/public/javascripts/lib/console/pages/console_page.jst +27 -0
  170. data/public/javascripts/lib/console/red-circle.png +0 -0
  171. data/public/javascripts/lib/cookie.js +74 -0
  172. data/public/javascripts/lib/delayed_task.js +61 -0
  173. data/public/javascripts/lib/dependencies.js +76 -0
  174. data/public/javascripts/lib/environment.js +30 -0
  175. data/public/javascripts/lib/event.simulate.js +137 -0
  176. data/public/javascripts/lib/expressinstall.swf +0 -0
  177. data/public/javascripts/lib/file.js +72 -0
  178. data/public/javascripts/lib/flash_detect.js +122 -0
  179. data/public/javascripts/lib/flashembed.min.js +16 -0
  180. data/public/javascripts/lib/form.js +88 -0
  181. data/public/javascripts/lib/id.js +43 -0
  182. data/public/javascripts/lib/inflector.js +160 -0
  183. data/public/javascripts/lib/instrumenter.js +106 -0
  184. data/public/javascripts/lib/js_template.js +275 -0
  185. data/public/javascripts/lib/jslint.js +4950 -0
  186. data/public/javascripts/lib/juggernaut.js +295 -0
  187. data/public/javascripts/lib/juggernaut.swf +0 -0
  188. data/public/javascripts/lib/key_map.js +60 -0
  189. data/public/javascripts/lib/layout_manager.js +167 -0
  190. data/public/javascripts/lib/model.js +1067 -0
  191. data/public/javascripts/lib/page.js +238 -0
  192. data/public/javascripts/lib/parameters.js +59 -0
  193. data/public/javascripts/lib/png_fix.js +75 -0
  194. data/public/javascripts/lib/protohack.js +297 -0
  195. data/public/javascripts/lib/push.js +5 -0
  196. data/public/javascripts/lib/rio.build +28 -0
  197. data/public/javascripts/lib/rio_development.build +5 -0
  198. data/public/javascripts/lib/rio_lint.js +66 -0
  199. data/public/javascripts/lib/rsh.js +651 -0
  200. data/public/javascripts/lib/spec.js +545 -0
  201. data/public/javascripts/lib/spec_runner.js +242 -0
  202. data/public/javascripts/lib/swfobject.js +5 -0
  203. data/public/javascripts/lib/tag.js +52 -0
  204. data/public/javascripts/lib/undo.js +134 -0
  205. data/public/javascripts/lib/utils.js +80 -0
  206. data/public/javascripts/lib/yaml.js +80 -0
  207. data/public/javascripts/pages/playground_page.js +15 -0
  208. data/public/javascripts/prototype/builder.js +146 -0
  209. data/public/javascripts/prototype/controls.js +1004 -0
  210. data/public/javascripts/prototype/dragdrop.js +1030 -0
  211. data/public/javascripts/prototype/effects.js +1137 -0
  212. data/public/javascripts/prototype/prototype.js +4320 -0
  213. data/public/javascripts/prototype/slider.js +283 -0
  214. data/public/javascripts/prototype/sound.js +67 -0
  215. data/public/javascripts/specs/components/box_spec.js +6 -0
  216. data/public/javascripts/specs/components/checkbox_spec.js +26 -0
  217. data/public/javascripts/specs/components/container_spec.js +6 -0
  218. data/public/javascripts/specs/components/input_spec.js +71 -0
  219. data/public/javascripts/specs/components/panel_spec.js +6 -0
  220. data/public/javascripts/specs/components/radio_spec.js +40 -0
  221. data/public/javascripts/specs/fixtures/components/box.js +3 -0
  222. data/public/javascripts/specs/fixtures/components/checkbox.js +9 -0
  223. data/public/javascripts/specs/fixtures/components/container.js +3 -0
  224. data/public/javascripts/specs/fixtures/components/input.js +12 -0
  225. data/public/javascripts/specs/fixtures/components/menu.js +19 -0
  226. data/public/javascripts/specs/fixtures/components/menu_item.js +18 -0
  227. data/public/javascripts/specs/fixtures/components/radio.js +11 -0
  228. data/public/javascripts/specs/lib/application_spec.js +281 -0
  229. data/public/javascripts/specs/lib/attr_spec.js +1514 -0
  230. data/public/javascripts/specs/lib/benchmark_spec.js +361 -0
  231. data/public/javascripts/specs/lib/collection_entity_spec.js +131 -0
  232. data/public/javascripts/specs/lib/component_spec.js +86 -0
  233. data/public/javascripts/specs/lib/form_spec.js +171 -0
  234. data/public/javascripts/specs/lib/id_spec.js +21 -0
  235. data/public/javascripts/specs/lib/instrumenter_spec.js +5 -0
  236. data/public/javascripts/specs/lib/js_template_spec.js +131 -0
  237. data/public/javascripts/specs/lib/key_map_spec.js +227 -0
  238. data/public/javascripts/specs/lib/model_spec.js +2268 -0
  239. data/public/javascripts/specs/lib/parameters_spec.js +94 -0
  240. data/public/javascripts/specs/lib/spec_spec.js +943 -0
  241. data/public/javascripts/specs/lib/undo_spec.js +105 -0
  242. data/public/javascripts/specs/lib/yaml_spec.js +127 -0
  243. data/public/sounds/basso.wav +0 -0
  244. data/public/sounds/purr.wav +0 -0
  245. data/public/stylesheets/components/accordion.css +24 -0
  246. data/public/stylesheets/components/alert_box.css +35 -0
  247. data/public/stylesheets/components/box.css +0 -0
  248. data/public/stylesheets/components/button.css +39 -0
  249. data/public/stylesheets/components/checkbox.css +9 -0
  250. data/public/stylesheets/components/container.css +3 -0
  251. data/public/stylesheets/components/grid_view.css +52 -0
  252. data/public/stylesheets/components/input.css +10 -0
  253. data/public/stylesheets/components/label.css +3 -0
  254. data/public/stylesheets/components/lightbox.css +31 -0
  255. data/public/stylesheets/components/link.css +4 -0
  256. data/public/stylesheets/components/list_view.css +23 -0
  257. data/public/stylesheets/components/marquee.css +29 -0
  258. data/public/stylesheets/components/menu.css +34 -0
  259. data/public/stylesheets/components/notification.css +52 -0
  260. data/public/stylesheets/components/overlay.css +8 -0
  261. data/public/stylesheets/components/panel.css +36 -0
  262. data/public/stylesheets/components/radio.css +9 -0
  263. data/public/stylesheets/components/splitter.css +35 -0
  264. data/public/stylesheets/components/tab_bar.css +59 -0
  265. data/public/stylesheets/components/tab_panel.css +15 -0
  266. data/public/stylesheets/components/textarea.css +11 -0
  267. data/public/stylesheets/components/tooltip.css +10 -0
  268. data/public/stylesheets/console.css +151 -0
  269. data/public/stylesheets/css_reset.css +55 -0
  270. metadata +343 -0
@@ -0,0 +1,88 @@
1
+ <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
2
+ .KEYW {color: #933;}
3
+ .COMM {color: #bbb; font-style: italic;}
4
+ .NUMB {color: #393;}
5
+ .STRN {color: #393;}
6
+ .REGX {color: #339;}
7
+ .line {border-right: 1px dotted #666; color: #666; font-style: normal;}
8
+ </style></head><body><pre><span class='line'> 1</span> <span class="COMM">// Based on the work of Tj Holowaychuk</span><span class="WHIT">
9
+ <span class='line'> 2</span> </span><span class="COMM">// http://refactormycode.com/codes/1045-js-yaml-parser</span><span class="WHIT">
10
+ <span class='line'> 3</span> </span><span class="COMM">//</span><span class="WHIT">
11
+ <span class='line'> 4</span> </span><span class="COMM">// This implementation is not complete</span><span class="WHIT">
12
+ <span class='line'> 5</span>
13
+ <span class='line'> 6</span> </span><span class="NAME">rio.Yaml</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
14
+ <span class='line'> 7</span> </span><span class="NAME">dump</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">obj</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">indent</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
15
+ <span class='line'> 8</span> </span><span class="NAME">indent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">indent</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
16
+ <span class='line'> 9</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">indentText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="PUNC">.</span><span class="NAME">times</span><span class="PUNC">(</span><span class="NAME">indent</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
17
+ <span class='line'> 10</span>
18
+ <span class='line'> 11</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Object.isArray</span><span class="PUNC">(</span><span class="NAME">obj</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
19
+ <span class='line'> 12</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">obj.map</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">item</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
20
+ <span class='line'> 13</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">indentText</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"- "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">item</span><span class="PUNC">;</span><span class="WHIT">
21
+ <span class='line'> 14</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">join</span><span class="PUNC">(</span><span class="STRN">"\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
22
+ <span class='line'> 15</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
23
+ <span class='line'> 16</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Object.keys</span><span class="PUNC">(</span><span class="NAME">obj</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">map</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
24
+ <span class='line'> 17</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">obj</span><span class="PUNC">[</span><span class="NAME">k</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
25
+ <span class='line'> 18</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._isPrimitive</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
26
+ <span class='line'> 19</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">indentText</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">": "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">;</span><span class="WHIT">
27
+ <span class='line'> 20</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
28
+ <span class='line'> 21</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">indentText</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">":\n"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.dump</span><span class="PUNC">(</span><span class="NAME">obj</span><span class="PUNC">[</span><span class="NAME">k</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">indent</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
29
+ <span class='line'> 22</span> </span><span class="PUNC">}</span><span class="WHIT">
30
+ <span class='line'> 23</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">join</span><span class="PUNC">(</span><span class="STRN">"\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
31
+ <span class='line'> 24</span> </span><span class="PUNC">}</span><span class="WHIT">
32
+ <span class='line'> 25</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
33
+ <span class='line'> 26</span>
34
+ <span class='line'> 27</span> </span><span class="NAME">parse</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
35
+ <span class='line'> 28</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this._parse</span><span class="PUNC">(</span><span class="NAME">this._tokenize</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
36
+ <span class='line'> 29</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
37
+ <span class='line'> 30</span>
38
+ <span class='line'> 31</span> </span><span class="NAME">_isPrimitive</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
39
+ <span class='line'> 32</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Object.isNumber</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">Object.isString</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
40
+ <span class='line'> 33</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
41
+ <span class='line'> 34</span>
42
+ <span class='line'> 35</span> </span><span class="NAME">_valueOf</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">token</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
43
+ <span class='line'> 36</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
44
+ <span class='line'> 37</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">eval</span><span class="PUNC">(</span><span class="STRN">'('</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">token</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">')'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
45
+ <span class='line'> 38</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
46
+ <span class='line'> 39</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">token</span><span class="PUNC">;</span><span class="WHIT">
47
+ <span class='line'> 40</span> </span><span class="PUNC">}</span><span class="WHIT">
48
+ <span class='line'> 41</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
49
+ <span class='line'> 42</span>
50
+ <span class='line'> 43</span> </span><span class="NAME">_tokenize</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
51
+ <span class='line'> 44</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str.match</span><span class="PUNC">(</span><span class="REGX">/(---|true|false|null|#(.*)|\[(.*?)\]|\{(.*?)\}|[^\w\n]*[\/\.\w\-]+:|[^\w\n]*-(.+)|\d+\.\d+|\d+|\n+|\w.+)/g</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
52
+ <span class='line'> 45</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
53
+ <span class='line'> 46</span>
54
+ <span class='line'> 47</span> </span><span class="NAME">_indentLevel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">token</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
55
+ <span class='line'> 48</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">token</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">Math.max</span><span class="PUNC">(</span><span class="NAME">token.match</span><span class="PUNC">(</span><span class="REGX">/^(\t*).*/</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">token.match</span><span class="PUNC">(</span><span class="REGX">/^([\s]*).*/</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
56
+ <span class='line'> 49</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
57
+ <span class='line'> 50</span>
58
+ <span class='line'> 51</span> </span><span class="NAME">_parse</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">tokens</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
59
+ <span class='line'> 52</span> </span><span class="KEYW">while</span><span class="PUNC">(</span><span class="NAME">tokens</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tokens.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
60
+ <span class='line'> 53</span>
61
+ <span class='line'> 54</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">token</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="REGX">/-(.*)/</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="REGX">/([\/\.\w\-]+):/</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">stack</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
62
+ <span class='line'> 55</span>
63
+ <span class='line'> 56</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">indentLevel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._indentLevel</span><span class="PUNC">(</span><span class="NAME">tokens</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
64
+ <span class='line'> 57</span>
65
+ <span class='line'> 58</span> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tokens</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._indentLevel</span><span class="PUNC">(</span><span class="NAME">tokens</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">indentLevel</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">tokens</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
66
+ <span class='line'> 59</span> </span><span class="NAME">token</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tokens.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
67
+ <span class='line'> 60</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">token</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'#'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">token</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'---'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">token</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
68
+ <span class='line'> 61</span> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
69
+ <span class='line'> 62</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key.exec</span><span class="PUNC">(</span><span class="NAME">token</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
70
+ <span class='line'> 63</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">RegExp.$1.strip</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
71
+ <span class='line'> 64</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tokens</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
72
+ <span class='line'> 65</span> </span><span class="NAME">tokens.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
73
+ <span class='line'> 66</span> </span><span class="NAME">stack</span><span class="PUNC">[</span><span class="NAME">keyName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._parse</span><span class="PUNC">(</span><span class="NAME">tokens</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
74
+ <span class='line'> 67</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
75
+ <span class='line'> 68</span> </span><span class="NAME">stack</span><span class="PUNC">[</span><span class="NAME">keyName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._valueOf</span><span class="PUNC">(</span><span class="NAME">tokens.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
76
+ <span class='line'> 69</span> </span><span class="PUNC">}</span><span class="WHIT">
77
+ <span class='line'> 70</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">list.exec</span><span class="PUNC">(</span><span class="NAME">token</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
78
+ <span class='line'> 71</span> </span><span class="PUNC">(</span><span class="NAME">Object.isArray</span><span class="PUNC">(</span><span class="NAME">stack</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">stack</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">stack</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">push</span><span class="PUNC">(</span><span class="NAME">RegExp.$1.strip</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
79
+ <span class='line'> 72</span> </span><span class="PUNC">}</span><span class="WHIT">
80
+ <span class='line'> 73</span> </span><span class="PUNC">}</span><span class="WHIT">
81
+ <span class='line'> 74</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">stack</span><span class="PUNC">;</span><span class="WHIT">
82
+ <span class='line'> 75</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
83
+ <span class='line'> 76</span>
84
+ <span class='line'> 77</span> </span><span class="NAME">toString</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
85
+ <span class='line'> 78</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"Yaml"</span><span class="PUNC">;</span><span class="WHIT">
86
+ <span class='line'> 79</span> </span><span class="PUNC">}</span><span class="WHIT">
87
+ <span class='line'> 80</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
88
+ <span class='line'> 81</span> </span></pre></body></html>
@@ -0,0 +1,149 @@
1
+ rio.pages.ConsolePage = rio.Page.create("ConsolePage", {
2
+ require: [
3
+ "lib/dependencies",
4
+ "components/tab_bar",
5
+ "lib/console/components/dependencies_list",
6
+ "lib/console/components/console",
7
+ "lib/console/components/docs",
8
+ "lib/console/components/playground",
9
+ "lib/console/components/benchmark",
10
+ "components/image"
11
+ ],
12
+ template: "console_page",
13
+ methods: {
14
+
15
+ render: function() {
16
+ this.getConsoleTab().selected.bind(function(selected) {
17
+ this.getConsole()[selected ? "show" : "hide"]();
18
+ this.getConsole().focus.bind(this.getConsole()).defer();
19
+ }.bind(this));
20
+ this.getPlaygroundTab().selected.bind(function(selected) {
21
+ this.getPlayground()[selected ? "show" : "hide"]();
22
+ this.getPlayground().focus.bind(this.getPlayground()).defer();
23
+ }.bind(this));
24
+ this.getBenchmarkTab().selected.bind(function(selected) {
25
+ this.getBenchmark()[selected ? "show" : "hide"]();
26
+ }.bind(this));
27
+ this.getDependenciesTab().selected.bind(function(selected) {
28
+ this.getDependenciesList()[selected ? "show" : "hide"]();
29
+ }.bind(this));
30
+ this.getDocsTab().selected.bind(function(selected) {
31
+ this.getDocs()[selected ? "show" : "hide"]();
32
+ }.bind(this));
33
+
34
+ var loadedMessage = "Booted: " + opener.rio.boot.appName + (opener.rio.boot.bootCompressed ? " (compressed)" : "");
35
+ this.log(loadedMessage);
36
+ opener.rio.console.onload();
37
+ this.getConsole().focus.bind(this.getConsole()).defer();
38
+
39
+ if (opener.rio.push) {
40
+ opener.rio.push.live.bind(function(live) {
41
+ this.getPushConnectionIndicator().setSrc(live ? "green-circle.png" : "red-circle.png");
42
+ }.bind(this));
43
+ }
44
+
45
+ Event.observe(window, "load", function() {
46
+ (function() { rio.ContainerLayout.resize(); }).defer();
47
+ (function() { rio.ContainerLayout.resize(); }).delay(1);
48
+ });
49
+ },
50
+
51
+ setApplication: function(options) {
52
+ var dependencies = this.checkDependencies({
53
+ app: "apps/" + options.name,
54
+ loadedScripts: options.scripts,
55
+ loadedStylesheets: options.stylesheets,
56
+ loadedTemplates: options.templates,
57
+ onFailure: function() {
58
+ this.getDependenciesTab().setName("Dependencies (out of sync)");
59
+ this.getDependenciesTab().html().setStyle({ color: "#B41C00", fontWeight: 700 });
60
+ }.bind(this)
61
+ });
62
+ this.getDependenciesList().setContent(dependencies.yaml());
63
+
64
+ this.checkDependencies({
65
+ app: "lib/console/apps/console",
66
+ loadedScripts: rio.boot.appScripts(),
67
+ loadedStylesheets: rio.boot.loadedStylesheets,
68
+ loadedTemplates: rio.boot.loadedTemplates
69
+ });
70
+ },
71
+
72
+ checkDependencies: function(options) {
73
+ var dependencies = new rio.Dependencies({
74
+ app: options.app,
75
+ loadedScripts: options.loadedScripts,
76
+ loadedStylesheets: options.loadedStylesheets,
77
+ loadedTemplates: options.loadedTemplates
78
+ });
79
+
80
+ var syncInProgress = rio.Tag.img("", {
81
+ src: "/javascripts/lib/console/loading.gif",
82
+ style: "display: none; position: relative; top: 3px;"
83
+ });
84
+ var syncComplete = rio.Tag.span("[synchronized]", { style: "display: none; color: #999; font-size: 11px" });
85
+ var syncButton = new rio.components.Button({
86
+ text: "synchronize",
87
+ onClick: function() {
88
+ syncButton.hide();
89
+ syncInProgress.show();
90
+ dependencies.synchronize({
91
+ onSuccess: function() {
92
+ syncInProgress.hide();
93
+ syncComplete.show();
94
+ }
95
+ });
96
+ }
97
+ });
98
+
99
+ dependencies.matchLoadedFiles({
100
+ onFailure: function() {
101
+ if (opener.rio.boot.bootCompressed) { return; }
102
+ this.logHtml([
103
+ "> " + options.app + ": Dependencies out of sync. ",
104
+ rio.Tag.span([syncButton, syncInProgress, syncComplete])
105
+ ], "errorLogItem");
106
+ (options.onFailure || Prototype.emptyFunction)();
107
+ }.bind(this)
108
+ });
109
+
110
+ return dependencies;
111
+ },
112
+
113
+ keyPress: function(e) {
114
+ switch(e.keyCode) {
115
+ case Event.KEY_LEFT:
116
+ if (e.ctrlKey && e.shiftKey) {
117
+ this.getTabs().selectPrevious();
118
+ e.stop();
119
+ }
120
+ break;
121
+ case Event.KEY_RIGHT:
122
+ if (e.ctrlKey && e.shiftKey) {
123
+ this.getTabs().selectNext();
124
+ e.stop();
125
+ }
126
+ }
127
+ },
128
+
129
+ log: function(msg, className, prefix) {
130
+ this.getConsole().log(msg, className, prefix);
131
+ },
132
+
133
+ logHtml: function(msg, className) {
134
+ this.getConsole().logHtml(msg, className);
135
+ },
136
+
137
+ touch: function(files) {
138
+ this.getConsole().touch(files);
139
+ },
140
+
141
+ selectDependenciesPane: function() {
142
+ this.getDependenciesTab().setSelected(true);
143
+ },
144
+
145
+ selectPlaygroundPane: function() {
146
+ this.getPlaygroundTab().setSelected(true);
147
+ }
148
+ }
149
+ });
@@ -0,0 +1,27 @@
1
+ <rio:Container layout="true" height="100%">
2
+ <items>
3
+ <rio:Container region="north" padding="5px 0px 0px 0px" backgroundColor="#eee">
4
+ <items>
5
+ <rio:Image rio:id="pushConnectionIndicator" src="red-circle.png" className="pushConnectionIndicator" />
6
+ <rio:TabBar rio:id="tabs">
7
+ <tabs>
8
+ <rio:Tab rio:id="consoleTab" name="Console" selected="true" />
9
+ <rio:Tab rio:id="playgroundTab" name="Playground" />
10
+ <rio:Tab rio:id="benchmarkTab" name="Benchmark" />
11
+ <rio:Tab rio:id="dependenciesTab" name="Dependencies" />
12
+ <rio:Tab rio:id="docsTab" name="Docs" />
13
+ </tabs>
14
+ </rio:TabBar>
15
+ </items>
16
+ </rio:Container>
17
+ <rio:Container region="center" border="none" overflow="hidden">
18
+ <items>
19
+ <rio:Console rio:id="console" onNavigateToPlayground="{this.selectPlaygroundPane.bind(this)}" />
20
+ <rio:Playground rio:id="playground" />
21
+ <rio:Benchmark rio:id="benchmark" />
22
+ <rio:DependenciesList rio:id="dependenciesList" />
23
+ <rio:Docs rio:id="docs" />
24
+ </items>
25
+ </rio:Container>
26
+ </items>
27
+ </rio:Container>
@@ -0,0 +1,74 @@
1
+ /**
2
+ @namespace
3
+
4
+ Methods for managing cookies.
5
+ */
6
+ rio.Cookie = {
7
+
8
+ key: "_RIO_",
9
+ bindings: {},
10
+ observers: {},
11
+
12
+ /**
13
+ Gets the value of a cookie.
14
+
15
+ @param {String} name The name of the cookie to get.
16
+ */
17
+ get: function(name) {
18
+ var cookies = document.cookie.match(this.key + name + '=(.*?)(;|$)');
19
+ return (cookies) ? unescape(cookies[1]) : null;
20
+ },
21
+
22
+ /**
23
+ Sets the value of a cookie.
24
+
25
+ @param {String} name The name of the cookie to set.
26
+ @param {Object} value The value to set in the cookie.
27
+ */
28
+ set: function(name, value) {
29
+ // Set to 5000 days
30
+ var expires = new Date(new Date().getTime()+(1000*60*60*24*5000)).toGMTString();
31
+ var cookie = this.key + name + "=" + escape((value || "").toString());
32
+ try {
33
+ document.cookie = cookie + "; expires=" + expires;
34
+ this["_" + name] = value;
35
+ (this.observers[name] || []).each(function(observer) { observer(value); });
36
+ } catch (e) {
37
+ rio.log("Cookie.js - " + e);
38
+ }
39
+ },
40
+
41
+ /**
42
+ Set a default value for a cookie if the cookie is not yet defined
43
+
44
+ @param {String} name The name of the cookie to set.
45
+ @param {Object} value The default value to set in the cookie.
46
+ */
47
+ setDefault: function(name, value) {
48
+ if (document.cookie.match(this.key + name + '=(.*?)(;|$)') == undefined) {
49
+ this.set(name, value);
50
+ }
51
+ },
52
+
53
+ bind: function(name, observer) {
54
+ if (this.observers[name] == undefined) { this.observers[name] = []; }
55
+
56
+ this.observers[name].push(observer);
57
+ observer(this.get(name));
58
+ },
59
+
60
+ binding: function(name, defaultValue) {
61
+ if (defaultValue) {
62
+ this.setDefault(name, defaultValue);
63
+ }
64
+ if (this.bindings[name]) { return this.bindings[name]; }
65
+
66
+ this["_" + name] = this.get(name);
67
+ this.bindings[name] = new rio.Binding(this, name);
68
+
69
+ this[("get-" + name).camelize()] = this.get.curry(name).bind(this);
70
+ this[("set-" + name).camelize()] = this.set.curry(name).bind(this);
71
+
72
+ return this.bindings[name];
73
+ }
74
+ };
@@ -0,0 +1,61 @@
1
+ /**
2
+ @class
3
+
4
+ DelayedTask will execute a function after a delay. Every time delay is called, any pending execution
5
+ will be canceled.
6
+ */
7
+ rio.DelayedTask = Class.create(/** @scope rio.DelayedTask.prototype */{
8
+ /** @constructor */
9
+ initialize: function() {
10
+ this.id = null;
11
+ this.start = null;
12
+ this.delayLength = null;
13
+ this.task = null;
14
+ this.args = [];
15
+ this.scope = this;
16
+ },
17
+
18
+ /** @private */
19
+ timeout: function() {
20
+ if (new Date().getTime() - this.start >= this.delayLength) {
21
+ clearInterval(this.id);
22
+ this.id = null;
23
+ this.task.apply(this.scope, this.args || []);
24
+ }
25
+ },
26
+
27
+ /**
28
+ Executes the passed in task after a delay. This will also cancel any pending tasks.
29
+
30
+ @param {Number} delayLength The delay in milliseconds
31
+ @param {Function} task Task to execute after the delay
32
+ @param {Object} scope (optional) The scope in which to execute the task
33
+ @param {Array} args (optional) Arguments to pass into the task function
34
+ */
35
+ delay: function(delayLength, task, scope, args) {
36
+ if (this.id && delayLength != this.delayLength) {
37
+ this.cancel();
38
+ }
39
+
40
+ this.delayLength = delayLength;
41
+ this.task = task;
42
+ this.scope = scope;
43
+ this.args = args;
44
+
45
+ this.start = new Date().getTime();
46
+
47
+ if (!this.id) {
48
+ this.id = setInterval(this.timeout.bind(this), this.delayLength);
49
+ }
50
+ },
51
+
52
+ /**
53
+ * Cancels the queued task
54
+ */
55
+ cancel: function() {
56
+ if (this.id) {
57
+ clearInterval(this.id);
58
+ this.id = null;
59
+ }
60
+ }
61
+ });
@@ -0,0 +1,76 @@
1
+ rio.Dependencies = Class.create({
2
+ initialize: function(options) {
3
+ this._app = options.app;
4
+ this._loadedScripts = options.loadedScripts;
5
+ this._loadedStylesheets = options.loadedStylesheets;
6
+ this._loadedTemplates = options.loadedTemplates;
7
+ },
8
+
9
+ storedDependencies: function(onSuccess) {
10
+ rio.File.open("/javascripts/" + this._app + ".build", {
11
+ onSuccess: function(file) {
12
+ onSuccess(file);
13
+ }
14
+ });
15
+ },
16
+
17
+ matchLoadedFiles: function(options) {
18
+
19
+ var checkDependencies = function(stored, loaded) {
20
+ var match = true;
21
+ if (loaded.length == 0) {
22
+ match = match && (stored == undefined);
23
+ } else {
24
+ match = match && loaded.length == stored.length;
25
+ for (var i=0, length = loaded.length; i < length; i++) {
26
+ match = match && loaded[i] == stored[i];
27
+ }
28
+ }
29
+ return match;
30
+ };
31
+
32
+ this.storedDependencies(function(file) {
33
+ var match = true;
34
+ try {
35
+ var storedDependencies = rio.Yaml.parse(file);
36
+
37
+ match = match && checkDependencies(storedDependencies.scripts, this._loadedScripts);
38
+ match = match && checkDependencies(storedDependencies.templates, this._loadedTemplates);
39
+ match = match && checkDependencies(storedDependencies.stylesheets, this._loadedStylesheets);
40
+ } catch(e) {
41
+ match = false;
42
+ }
43
+
44
+ if (match) {
45
+ (options.onSuccess || Prototype.emptyFunction)();
46
+ } else {
47
+ options.onFailure();
48
+ }
49
+ }.bind(this));
50
+ },
51
+
52
+ synchronize: function(options) {
53
+ rio.File.write("/javascripts/" + this._app + ".build", this.yaml(), {
54
+ onSuccess: options.onSuccess
55
+ });
56
+ },
57
+
58
+ yaml: function() {
59
+ var dependenciesFile = rio.File.open("/javascripts/" + this._app + ".build", { asynchronous: false });
60
+ var dependencies = rio.Yaml.parse(dependenciesFile);
61
+
62
+ dependencies.scripts = this._loadedScripts;
63
+ if (!this._loadedTemplates.empty()) {
64
+ dependencies.templates = this._loadedTemplates;
65
+ } else {
66
+ delete dependencies.templates;
67
+ }
68
+ if (!this._loadedStylesheets.empty()) {
69
+ dependencies.stylesheets = this._loadedStylesheets;
70
+ } else {
71
+ delete dependencies.stylesheets;
72
+ }
73
+
74
+ return rio.Yaml.dump(dependencies);
75
+ }
76
+ });