luca 0.9.9 → 0.9.42

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 (604) hide show
  1. data/CHANGELOG +9 -153
  2. data/Gemfile +1 -10
  3. data/Gemfile.lock +40 -113
  4. data/Guardfile +25 -3
  5. data/README.md +57 -54
  6. data/ROADMAP +32 -15
  7. data/Rakefile +75 -24
  8. data/app.rb +46 -12
  9. data/{app/assets → assets}/images/glyphicons-halflings-white.png +0 -0
  10. data/{app/assets → assets}/images/glyphicons-halflings.png +0 -0
  11. data/assets/javascripts/dependencies/backbone-min.js +37 -0
  12. data/assets/javascripts/dependencies/backbone-query.min.js +1 -0
  13. data/assets/javascripts/dependencies/bootstrap.min.js +7 -0
  14. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-coffeescript.js +0 -0
  15. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-css.js +0 -0
  16. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-html.js +0 -0
  17. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-javascript.js +0 -0
  18. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-less.js +0 -0
  19. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-vim.js +0 -0
  20. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror.js +0 -0
  21. data/assets/javascripts/dependencies/coffee-script.js +12189 -0
  22. data/{spec → assets}/javascripts/dependencies/jasmine-html.js +0 -0
  23. data/{spec → assets}/javascripts/dependencies/jasmine.js +0 -0
  24. data/assets/javascripts/dependencies/jquery.js +4 -0
  25. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/modal.js +0 -0
  26. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/modernizr.min.js +0 -0
  27. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/prettify.js +0 -0
  28. data/{spec → assets}/javascripts/dependencies/sinon.js +0 -0
  29. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/spin-min.js +0 -0
  30. data/assets/javascripts/dependencies/underscore-min.js +31 -0
  31. data/assets/javascripts/dependencies/underscore-string.min.js +14 -0
  32. data/assets/javascripts/dependencies.coffee +5 -0
  33. data/assets/javascripts/luca/index.coffee +1 -0
  34. data/assets/javascripts/luca-templates.js +1 -0
  35. data/assets/javascripts/luca-ui-base.coffee +1 -0
  36. data/assets/javascripts/luca-ui-bootstrap.js +1 -0
  37. data/assets/javascripts/luca-ui-development-tools.coffee +9 -0
  38. data/assets/javascripts/luca-ui-full.js +3 -0
  39. data/assets/javascripts/luca-ui-spec.coffee +2 -0
  40. data/assets/javascripts/luca-ui.js +3 -0
  41. data/assets/javascripts/sandbox/application.coffee +57 -0
  42. data/assets/javascripts/sandbox/config.coffee +7 -0
  43. data/assets/javascripts/sandbox/router.coffee +24 -0
  44. data/assets/javascripts/sandbox/templates/builder/component_list.luca +1 -0
  45. data/assets/javascripts/sandbox/templates/builder.luca +2 -0
  46. data/assets/javascripts/sandbox/templates/main.luca +53 -0
  47. data/assets/javascripts/sandbox/templates/sandbox/docs_index.luca +1 -0
  48. data/assets/javascripts/sandbox/templates/sandbox/navigation.luca +8 -0
  49. data/assets/javascripts/sandbox/templates/sandbox/readme.luca +30 -0
  50. data/assets/javascripts/sandbox/templates/sandbox.luca +1 -0
  51. data/assets/javascripts/sandbox/views/builder/builder_canvas.coffee +3 -0
  52. data/assets/javascripts/sandbox/views/builder/builder_editor.coffee +6 -0
  53. data/assets/javascripts/sandbox/views/builder/component_list.coffee +38 -0
  54. data/assets/javascripts/sandbox/views/builder/project_browser.coffee +14 -0
  55. data/assets/javascripts/sandbox/views/builder.coffee +133 -0
  56. data/assets/javascripts/sandbox/views/docs_controller.coffee +7 -0
  57. data/assets/javascripts/sandbox/views/inspector/instance_filter.coffee +18 -0
  58. data/{app/assets/stylesheets/luca/containers/modal_view.scss → assets/javascripts/sandbox/views/inspector/instance_list.coffee} +0 -0
  59. data/assets/javascripts/sandbox/views/inspector.coffee +11 -0
  60. data/assets/javascripts/sandbox/views/top_navigation.coffee +4 -0
  61. data/assets/javascripts/sandbox.coffee +7 -0
  62. data/assets/javascripts/spec-dependencies.coffee +4 -0
  63. data/assets/stylesheets/bootstrap-responsive.min.css +2 -0
  64. data/assets/stylesheets/bootstrap.min.css +727 -0
  65. data/{vendor/assets → assets}/stylesheets/codemirror-blackboard.css +0 -0
  66. data/{vendor/assets → assets}/stylesheets/codemirror-monokai.css +0 -0
  67. data/{vendor/assets → assets}/stylesheets/codemirror.css +0 -0
  68. data/{vendor/assets → assets}/stylesheets/jasmine.css +0 -0
  69. data/assets/stylesheets/luca-ui-bootstrap.css +4 -0
  70. data/assets/stylesheets/luca-ui-development-tools.css +5 -0
  71. data/assets/stylesheets/luca-ui-full.css +3 -0
  72. data/assets/stylesheets/luca-ui-spec.css +3 -0
  73. data/assets/stylesheets/luca-ui.css +3 -0
  74. data/assets/stylesheets/prettify.css +40 -0
  75. data/assets/stylesheets/sandbox/builder.scss +79 -0
  76. data/assets/stylesheets/sandbox/sandbox.scss +18 -0
  77. data/assets/stylesheets/sandbox.css +3 -0
  78. data/assets/stylesheets/themes/amelia-bootstrap.css +826 -0
  79. data/assets/stylesheets/themes/slate-bootstrap.css +797 -0
  80. data/assets/stylesheets/themes/superhero-bootstrap.css +830 -0
  81. data/config.ru +2 -1
  82. data/docs/{old/application.md → application.md} +0 -0
  83. data/docs/{old/collection.md → collection.md} +0 -0
  84. data/docs/{old/collection_manager.md → collection_manager.md} +0 -0
  85. data/docs/{old/container_philosophy.md → container_philosophy.md} +0 -0
  86. data/docs/{old/event_binding_helpers.md → event_binding_helpers.md} +0 -0
  87. data/docs/{old/method_caching_and_computed_properties.md → method_caching_and_computed_properties.md} +0 -0
  88. data/docs/{old/view.md → view.md} +0 -0
  89. data/lib/luca/code_browser.rb +55 -0
  90. data/lib/luca/command_line.rb +69 -0
  91. data/lib/luca/rails/engine.rb +0 -12
  92. data/lib/luca/rails/version.rb +2 -1
  93. data/lib/luca/rails.rb +3 -5
  94. data/lib/luca/template.rb +0 -2
  95. data/lib/luca.rb +1 -25
  96. data/luca.gemspec +7 -16
  97. data/site/assets/bootstrap.min.js +7 -0
  98. data/site/assets/dependencies.js +94 -0
  99. data/site/assets/glyphicons-halflings-white.png +0 -0
  100. data/site/assets/glyphicons-halflings.png +0 -0
  101. data/site/assets/luca-ui-bootstrap.css +1331 -0
  102. data/site/assets/luca-ui-bootstrap.js +9 -0
  103. data/site/assets/luca-ui-development-tools.css +234 -0
  104. data/site/assets/luca-ui-development-tools.js +18561 -0
  105. data/site/assets/luca-ui-development-tools.min.js +15 -0
  106. data/site/assets/luca-ui-full.min.js +8 -0
  107. data/site/assets/luca-ui.min.js +4 -0
  108. data/site/assets/sandbox.css +62 -0
  109. data/site/assets/sandbox.js +469 -0
  110. data/site/docs/application.html +41 -0
  111. data/site/docs/caching.html +43 -0
  112. data/site/docs/collection.html +75 -0
  113. data/site/docs/collection_manager.html +71 -0
  114. data/site/docs/containers.html +118 -0
  115. data/site/docs/events.html +153 -0
  116. data/site/docs/view.html +128 -0
  117. data/site/img/glyphicons-halflings-white.png +0 -0
  118. data/site/img/glyphicons-halflings.png +0 -0
  119. data/site/index.html +20 -0
  120. data/site/source-map.js +1 -0
  121. data/spec/{javascripts/components → components}/application_spec.coffee +0 -0
  122. data/spec/{javascripts/components → components}/collection_loader_view_spec.coffee +0 -0
  123. data/{site/source/app/assets/javascripts/docs/lib/util.coffee → spec/components/controller_spec.coffee} +0 -0
  124. data/spec/{javascripts/components → components}/fields/checkbox_array_spec.coffee +0 -0
  125. data/spec/components/form_view_spec.coffee +80 -0
  126. data/spec/{javascripts/components → components}/grid_view_spec.coffee +0 -0
  127. data/spec/{javascripts/components → components}/record_manager_spec.coffee +0 -0
  128. data/spec/{javascripts/components → components}/template_spec.coffee +0 -0
  129. data/spec/containers/card_view_spec.coffee +50 -0
  130. data/{site/source/app/assets/javascripts/docs/views/components/code_editor/index.coffee → spec/containers/column_view_spec.coffee} +0 -0
  131. data/spec/{javascripts/containers → containers}/modal_view_spec.coffee +0 -0
  132. data/spec/{javascripts/containers → containers}/panel_view_spec.coffee +0 -0
  133. data/spec/{javascripts/components/pagination_control_spec.coffee → containers/split_view_spec.coffee} +0 -0
  134. data/spec/{javascripts/containers → containers}/tab_view_spec.coffee +0 -0
  135. data/spec/{javascripts/containers → containers}/viewport_spec.coffee +0 -0
  136. data/spec/{javascripts/core → core}/collection_spec.coffee +1 -26
  137. data/spec/core/container_spec.coffee +66 -0
  138. data/spec/{javascripts/concerns/paginatable_spec.coffee → core/field_spec.coffee} +0 -0
  139. data/spec/{javascripts/core → core}/model_spec.coffee +3 -26
  140. data/spec/{javascripts/core → core}/observer_spec.coffee +0 -0
  141. data/spec/{javascripts/core → core}/view_spec.coffee +38 -114
  142. data/spec/{javascripts/core/framework_spec.coffee → framework_spec.coffee} +2 -31
  143. data/spec/{javascripts/helper.coffee → helper.coffee} +0 -0
  144. data/spec/{javascripts/managers → managers}/collection_manager_spec.coffee +0 -0
  145. data/spec/{javascripts/managers → managers}/socket_manager_spec.coffee +0 -0
  146. data/src/components/application.coffee +318 -0
  147. data/src/components/base_toolbar.coffee +15 -0
  148. data/{app/assets/javascripts/luca → src}/components/collection_loader_view.coffee +1 -3
  149. data/src/components/collection_view.coffee +131 -0
  150. data/src/components/controller.coffee +63 -0
  151. data/src/components/fields/button_field.coffee +38 -0
  152. data/{app/assets/javascripts/luca → src}/components/fields/checkbox_array.coffee +7 -18
  153. data/{app/assets/javascripts/luca → src}/components/fields/checkbox_field.coffee +10 -19
  154. data/{app/assets/javascripts/luca → src}/components/fields/file_upload_field.coffee +4 -5
  155. data/src/components/fields/hidden_field.coffee +12 -0
  156. data/src/components/fields/label_field.coffee +14 -0
  157. data/src/components/fields/select_field.coffee +97 -0
  158. data/src/components/fields/text_area_field.coffee +40 -0
  159. data/{app/assets/javascripts/luca → src}/components/fields/text_field.coffee +5 -16
  160. data/src/components/fields/type_ahead_field.coffee +22 -0
  161. data/src/components/form_button_toolbar.coffee +25 -0
  162. data/src/components/form_view.coffee +275 -0
  163. data/src/components/grid_view.coffee +269 -0
  164. data/src/components/index.coffee +1 -0
  165. data/src/components/load_mask.coffee +3 -0
  166. data/src/components/nav_bar.coffee +22 -0
  167. data/src/components/page_controller.coffee +2 -0
  168. data/{app/assets/javascripts/luca → src}/components/record_manager.coffee +0 -0
  169. data/{app/assets/javascripts/luca → src}/components/router.coffee +1 -6
  170. data/src/components/table_view.coffee +53 -0
  171. data/src/components/template.coffee +5 -0
  172. data/src/components/toolbar_dialog.coffee +25 -0
  173. data/src/containers/card_view.coffee +93 -0
  174. data/src/containers/column_view.coffee +42 -0
  175. data/{app/assets/javascripts/luca → src}/containers/modal_view.coffee +9 -9
  176. data/src/containers/page_view.coffee +2 -0
  177. data/{app/assets/javascripts/luca → src}/containers/panel_toolbar.coffee +84 -89
  178. data/src/containers/panel_view.coffee +23 -0
  179. data/src/containers/split_view.coffee +8 -0
  180. data/{app/assets/javascripts/luca → src}/containers/tab_view.coffee +21 -27
  181. data/{app/assets/javascripts/luca → src}/containers/viewport.coffee +18 -14
  182. data/{app/assets/javascripts/luca → src}/core/collection.coffee +51 -97
  183. data/src/core/container.coffee +374 -0
  184. data/{tutorials/component-definitions.md → src/core/core.coffee} +0 -0
  185. data/src/core/field.coffee +79 -0
  186. data/src/core/model.coffee +43 -0
  187. data/{app/assets/javascripts/luca → src}/core/observer.coffee +0 -0
  188. data/src/core/panel.coffee +118 -0
  189. data/{app/assets/javascripts/luca/core/registry → src/core}/registry.coffee +43 -63
  190. data/{app/assets/javascripts/luca/util → src/core}/script_loader.coffee +0 -0
  191. data/src/core/view.coffee +264 -0
  192. data/src/define.coffee +110 -0
  193. data/{app/assets/javascripts/luca → src}/framework.coffee +103 -98
  194. data/src/index.coffee +23 -0
  195. data/{app/assets/javascripts/luca → src}/managers/collection_manager.coffee +13 -37
  196. data/src/managers/socket_manager.coffee +54 -0
  197. data/{app/assets/javascripts/luca/concerns → src/modules}/deferrable.coffee +4 -5
  198. data/src/modules/grid_layout.coffee +3 -0
  199. data/{app/assets/javascripts/luca/concerns/loadmaskable.coffee → src/modules/load_mask.coffee} +11 -23
  200. data/{app/assets/javascripts/luca/concerns → src/modules}/local_storage.coffee +0 -0
  201. data/src/plugins/development_tool_helpers.coffee +21 -0
  202. data/src/plugins/events.coffee +54 -0
  203. data/src/samples/definition.coffee +49 -0
  204. data/{tutorials/component-definitions/01_intro.md → src/stylesheets/base.scss} +0 -0
  205. data/{app/assets/stylesheets/luca → src/stylesheets}/components/checkbox_array.scss +1 -1
  206. data/src/stylesheets/components/form_view.scss +59 -0
  207. data/{app/assets/stylesheets/luca → src/stylesheets}/components/grid_view.scss +0 -0
  208. data/{app/assets/stylesheets/luca → src/stylesheets}/components/load_mask.scss +0 -0
  209. data/src/stylesheets/components/toolbar.scss +0 -0
  210. data/{app/assets/stylesheets/luca → src/stylesheets}/components/viewport.scss +4 -1
  211. data/src/stylesheets/containers/container.scss +16 -0
  212. data/src/stylesheets/containers/modal_view.scss +0 -0
  213. data/{app/assets/stylesheets/luca → src/stylesheets}/containers/panels.scss +0 -0
  214. data/{app/assets/stylesheets/luca → src/stylesheets}/containers/tab_view.scss +5 -5
  215. data/{app/assets/stylesheets/luca → src/stylesheets}/normalize.scss +0 -0
  216. data/src/stylesheets/tools/class_browser.scss +32 -0
  217. data/src/stylesheets/tools/code_editor.scss +24 -0
  218. data/src/stylesheets/tools/component_tester.scss +26 -0
  219. data/{app/assets/stylesheets/luca/development → src/stylesheets/tools}/console.scss +0 -0
  220. data/src/templates/components/bootstrap_form_controls.luca +7 -0
  221. data/src/templates/components/collection_loader_view.luca +5 -0
  222. data/src/templates/components/form_alert +0 -0
  223. data/src/templates/components/form_alert.luca +3 -0
  224. data/src/templates/components/grid_view.luca +7 -0
  225. data/src/templates/components/grid_view_empty_text.luca +3 -0
  226. data/src/templates/components/load_mask.luca +3 -0
  227. data/src/templates/components/nav_bar.luca +2 -0
  228. data/src/templates/containers/basic.luca +1 -0
  229. data/src/templates/containers/tab_selector_container.luca +8 -0
  230. data/src/templates/containers/tab_view.luca +2 -0
  231. data/src/templates/containers/toolbar_wrapper.luca +1 -0
  232. data/src/templates/fields/button_field.luca +2 -0
  233. data/src/templates/fields/button_field_link.luca +5 -0
  234. data/src/templates/fields/checkbox_array.luca +4 -0
  235. data/src/templates/fields/checkbox_array_item.luca +4 -0
  236. data/src/templates/fields/checkbox_field.luca +9 -0
  237. data/src/templates/fields/file_upload_field.luca +8 -0
  238. data/src/templates/fields/hidden_field.luca +1 -0
  239. data/src/templates/fields/select_field.luca +8 -0
  240. data/src/templates/fields/text_area_field.luca +8 -0
  241. data/src/templates/fields/text_field.luca +17 -0
  242. data/src/templates/sample/contents.luca +1 -0
  243. data/src/templates/sample/welcome.luca +1 -0
  244. data/src/templates/table_view.luca +4 -0
  245. data/src/tools/application_inspector.coffee +2 -0
  246. data/src/tools/code_editor.coffee +258 -0
  247. data/{app/assets/javascripts/luca/development → src/tools}/code_mirror_field.coffee +1 -2
  248. data/src/tools/coffee_script_editor.coffee +82 -0
  249. data/src/tools/collection_inspector.coffee +4 -0
  250. data/src/tools/collections/components.coffee +59 -0
  251. data/src/tools/collections/instances.coffee +15 -0
  252. data/src/tools/component_tester.coffee +462 -0
  253. data/{app/assets/javascripts/luca/development → src/tools}/console.coffee +24 -55
  254. data/src/tools/models/components.coffee +25 -0
  255. data/src/tools/models/instance.coffee +2 -0
  256. data/src/tools/templates/component_tester/help.luca +14 -0
  257. data/{app/assets/javascripts/luca/util/luca.coffee → src/util.coffee} +6 -90
  258. data/vendor/assets/javascripts/luca-ui-development-tools.js +18533 -0
  259. data/vendor/assets/javascripts/luca-ui-development-tools.min.js +15 -0
  260. data/vendor/assets/javascripts/luca-ui-full.js +4806 -0
  261. data/vendor/assets/javascripts/luca-ui-full.min.js +8 -0
  262. data/vendor/assets/javascripts/luca-ui-templates.js +24 -0
  263. data/vendor/assets/javascripts/luca-ui.js +1703 -4394
  264. data/vendor/assets/javascripts/luca-ui.min.js +4 -5
  265. data/vendor/assets/luca-ui/base.css +85 -0
  266. data/vendor/assets/luca-ui/components/application.js +91 -0
  267. data/vendor/assets/luca-ui/components/base_toolbar.js +23 -0
  268. data/vendor/assets/luca-ui/components/controller.js +38 -0
  269. data/vendor/assets/luca-ui/components/fields/button_field.js +45 -0
  270. data/vendor/assets/luca-ui/components/fields/checkbox_field.js +43 -0
  271. data/vendor/assets/luca-ui/components/fields/file_upload_field.js +20 -0
  272. data/vendor/assets/luca-ui/components/fields/hidden_field.js +20 -0
  273. data/vendor/assets/luca-ui/components/fields/select_field.js +97 -0
  274. data/vendor/assets/luca-ui/components/fields/text_area_field.js +48 -0
  275. data/vendor/assets/luca-ui/components/fields/text_field.js +46 -0
  276. data/vendor/assets/luca-ui/components/fields/type_ahead_field.js +13 -0
  277. data/vendor/assets/luca-ui/components/form_button_toolbar.js +32 -0
  278. data/vendor/assets/luca-ui/components/form_view.css +32 -0
  279. data/vendor/assets/luca-ui/components/form_view.js +207 -0
  280. data/{app/assets/stylesheets/luca/components/table_view.scss → vendor/assets/luca-ui/components/grid_view.css} +51 -60
  281. data/vendor/assets/luca-ui/components/grid_view.js +202 -0
  282. data/vendor/assets/luca-ui/components/record_manager.js +207 -0
  283. data/vendor/assets/luca-ui/components/router.js +36 -0
  284. data/vendor/assets/luca-ui/components/template.js +26 -0
  285. data/vendor/assets/luca-ui/components/toolbar.css +11 -0
  286. data/vendor/assets/luca-ui/containers/card_view.js +98 -0
  287. data/vendor/assets/luca-ui/containers/column_view.js +52 -0
  288. data/vendor/assets/luca-ui/containers/container.css +3 -0
  289. data/vendor/assets/luca-ui/containers/modal_view.css +0 -0
  290. data/vendor/assets/luca-ui/containers/modal_view.js +87 -0
  291. data/vendor/assets/luca-ui/containers/panel_view.js +34 -0
  292. data/vendor/assets/luca-ui/containers/split_view.js +13 -0
  293. data/vendor/assets/luca-ui/containers/tab_view.css +16 -0
  294. data/vendor/assets/luca-ui/containers/tab_view.js +80 -0
  295. data/vendor/assets/luca-ui/containers/viewport.js +18 -0
  296. data/vendor/assets/luca-ui/core/collection.js +221 -0
  297. data/vendor/assets/luca-ui/core/container.js +205 -0
  298. data/vendor/assets/luca-ui/core/field.js +59 -0
  299. data/vendor/assets/luca-ui/core/observer.js +42 -0
  300. data/vendor/assets/luca-ui/core/view.js +127 -0
  301. data/vendor/assets/luca-ui/framework.js +110 -0
  302. data/vendor/assets/luca-ui/index.js +5 -0
  303. data/vendor/assets/luca-ui/managers/collection_manager.js +98 -0
  304. data/vendor/assets/luca-ui/managers/socket_manager.js +52 -0
  305. data/vendor/assets/luca-ui/modules/deferrable.js +21 -0
  306. data/vendor/assets/luca-ui/modules/local_storage.js +81 -0
  307. data/vendor/assets/luca-ui/normalize.css +359 -0
  308. data/vendor/assets/luca-ui/stylesheets/base.css +85 -0
  309. data/vendor/assets/luca-ui/stylesheets/components/form_view.css +32 -0
  310. data/vendor/assets/luca-ui/stylesheets/components/grid_view.css +76 -0
  311. data/vendor/assets/luca-ui/stylesheets/components/toolbar.css +11 -0
  312. data/vendor/assets/luca-ui/stylesheets/containers/container.css +3 -0
  313. data/vendor/assets/luca-ui/stylesheets/containers/modal_view.css +0 -0
  314. data/vendor/assets/luca-ui/stylesheets/containers/tab_view.css +16 -0
  315. data/vendor/assets/luca-ui/stylesheets/normalize.css +359 -0
  316. data/vendor/assets/luca-ui/templates/components/bootstrap_form_controls.js +4 -0
  317. data/vendor/assets/luca-ui/templates/components/form_view.js +4 -0
  318. data/vendor/assets/luca-ui/templates/components/grid_view.js +4 -0
  319. data/vendor/assets/luca-ui/templates/components/grid_view_empty_text.js +4 -0
  320. data/vendor/assets/luca-ui/templates/containers/basic.js +4 -0
  321. data/vendor/assets/luca-ui/templates/containers/tab_selector_container.js +4 -0
  322. data/vendor/assets/luca-ui/templates/containers/tab_view.js +4 -0
  323. data/vendor/assets/luca-ui/templates/containers/toolbar_wrapper.js +4 -0
  324. data/vendor/assets/luca-ui/templates/fields/button_field.js +4 -0
  325. data/vendor/assets/luca-ui/templates/fields/button_field_link.js +4 -0
  326. data/vendor/assets/luca-ui/templates/fields/checkbox_field.js +4 -0
  327. data/vendor/assets/luca-ui/templates/fields/file_upload_field.js +4 -0
  328. data/vendor/assets/luca-ui/templates/fields/hidden_field.js +4 -0
  329. data/vendor/assets/luca-ui/templates/fields/select_field.js +4 -0
  330. data/vendor/assets/luca-ui/templates/fields/text_area_field.js +4 -0
  331. data/vendor/assets/luca-ui/templates/fields/text_field.js +4 -0
  332. data/vendor/assets/luca-ui/templates/sample/contents.js +4 -0
  333. data/vendor/assets/luca-ui/templates/sample/welcome.js +4 -0
  334. data/vendor/assets/stylesheets/luca-ui.css +471 -68
  335. data/views/jasmine.erb +2 -2
  336. metadata +328 -496
  337. data/app/assets/javascripts/luca/basic.coffee +0 -8
  338. data/app/assets/javascripts/luca/components/application.coffee +0 -530
  339. data/app/assets/javascripts/luca/components/collection_view.coffee +0 -211
  340. data/app/assets/javascripts/luca/components/controller.coffee +0 -176
  341. data/app/assets/javascripts/luca/components/fields/base.coffee +0 -144
  342. data/app/assets/javascripts/luca/components/fields/button_field.coffee +0 -91
  343. data/app/assets/javascripts/luca/components/fields/hidden_field.coffee +0 -11
  344. data/app/assets/javascripts/luca/components/fields/label_field.coffee +0 -12
  345. data/app/assets/javascripts/luca/components/fields/select_field.coffee +0 -159
  346. data/app/assets/javascripts/luca/components/fields/text_area_field.coffee +0 -57
  347. data/app/assets/javascripts/luca/components/fields/type_ahead_field.coffee +0 -20
  348. data/app/assets/javascripts/luca/components/form_view.coffee +0 -421
  349. data/app/assets/javascripts/luca/components/grid_layout_view.coffee +0 -42
  350. data/app/assets/javascripts/luca/components/index.coffee +0 -7
  351. data/app/assets/javascripts/luca/components/load_mask.coffee +0 -8
  352. data/app/assets/javascripts/luca/components/multi_collection_view.coffee +0 -92
  353. data/app/assets/javascripts/luca/components/nav_bar.coffee +0 -80
  354. data/app/assets/javascripts/luca/components/page.coffee +0 -70
  355. data/app/assets/javascripts/luca/components/pagination_control.coffee +0 -104
  356. data/app/assets/javascripts/luca/components/simple_collection_view.coffee +0 -10
  357. data/app/assets/javascripts/luca/components/table_view.coffee +0 -93
  358. data/app/assets/javascripts/luca/components/table_view_scrollable.coffee +0 -23
  359. data/app/assets/javascripts/luca/concerns/application_event_bindings.coffee +0 -19
  360. data/app/assets/javascripts/luca/concerns/collection_event_bindings.coffee +0 -47
  361. data/app/assets/javascripts/luca/concerns/development_tool_helpers.coffee +0 -30
  362. data/app/assets/javascripts/luca/concerns/dom_helpers.coffee +0 -61
  363. data/app/assets/javascripts/luca/concerns/enhanced_properties.coffee +0 -23
  364. data/app/assets/javascripts/luca/concerns/filterable.coffee +0 -101
  365. data/app/assets/javascripts/luca/concerns/form_model_bindings.coffee +0 -20
  366. data/app/assets/javascripts/luca/concerns/grid_layout.coffee +0 -15
  367. data/app/assets/javascripts/luca/concerns/modal_view.coffee +0 -63
  368. data/app/assets/javascripts/luca/concerns/model_presenter.coffee +0 -23
  369. data/app/assets/javascripts/luca/concerns/paginatable.coffee +0 -79
  370. data/app/assets/javascripts/luca/concerns/query_collection_bindings.coffee +0 -52
  371. data/app/assets/javascripts/luca/concerns/sortable.coffee +0 -69
  372. data/app/assets/javascripts/luca/concerns/state_model.coffee +0 -58
  373. data/app/assets/javascripts/luca/concerns/templating.coffee +0 -13
  374. data/app/assets/javascripts/luca/config.coffee +0 -54
  375. data/app/assets/javascripts/luca/containers/card_view.coffee +0 -178
  376. data/app/assets/javascripts/luca/containers/container.coffee +0 -711
  377. data/app/assets/javascripts/luca/containers/index.coffee +0 -2
  378. data/app/assets/javascripts/luca/containers/page_controller.coffee +0 -25
  379. data/app/assets/javascripts/luca/core/events.coffee +0 -114
  380. data/app/assets/javascripts/luca/core/index.coffee +0 -12
  381. data/app/assets/javascripts/luca/core/model.coffee +0 -56
  382. data/app/assets/javascripts/luca/core/panel.coffee +0 -124
  383. data/app/assets/javascripts/luca/core/registry/component_definition.coffee +0 -319
  384. data/app/assets/javascripts/luca/core/registry/concerns.coffee +0 -70
  385. data/app/assets/javascripts/luca/core/registry/index.coffee +0 -4
  386. data/app/assets/javascripts/luca/core/registry/meta_data.coffee +0 -99
  387. data/app/assets/javascripts/luca/core/templates.coffee +0 -51
  388. data/app/assets/javascripts/luca/core/view.coffee +0 -383
  389. data/app/assets/javascripts/luca/dependencies.coffee +0 -9
  390. data/app/assets/javascripts/luca/development/code_sync_manager.coffee +0 -173
  391. data/app/assets/javascripts/luca/development/component.coffee +0 -76
  392. data/app/assets/javascripts/luca/development/components.coffee +0 -57
  393. data/app/assets/javascripts/luca/development/index.coffee +0 -5
  394. data/app/assets/javascripts/luca/index.coffee +0 -9
  395. data/app/assets/javascripts/luca/managers/index.coffee +0 -2
  396. data/app/assets/javascripts/luca/managers/socket_manager.coffee +0 -89
  397. data/app/assets/javascripts/luca/templates/components/bootstrap_form_controls.jst.ejs +0 -10
  398. data/app/assets/javascripts/luca/templates/components/collection_loader_view.jst.ejs +0 -6
  399. data/app/assets/javascripts/luca/templates/components/form_alert.jst.ejs +0 -4
  400. data/app/assets/javascripts/luca/templates/components/grid_view.jst.ejs +0 -11
  401. data/app/assets/javascripts/luca/templates/components/grid_view_empty_text.jst.ejs +0 -3
  402. data/app/assets/javascripts/luca/templates/components/load_mask.jst.ejs +0 -5
  403. data/app/assets/javascripts/luca/templates/components/nav_bar.jst.ejs +0 -19
  404. data/app/assets/javascripts/luca/templates/components/pagination.jst.ejs +0 -10
  405. data/app/assets/javascripts/luca/templates/components/table_view.jst.ejs +0 -4
  406. data/app/assets/javascripts/luca/templates/containers/basic.jst.ejs +0 -1
  407. data/app/assets/javascripts/luca/templates/containers/tab_selector_container.jst.ejs +0 -12
  408. data/app/assets/javascripts/luca/templates/containers/tab_view.jst.ejs +0 -2
  409. data/app/assets/javascripts/luca/templates/containers/toolbar_wrapper.jst.ejs +0 -1
  410. data/app/assets/javascripts/luca/templates/fields/button_field.jst.ejs +0 -2
  411. data/app/assets/javascripts/luca/templates/fields/button_field_link.jst.ejs +0 -6
  412. data/app/assets/javascripts/luca/templates/fields/checkbox_array.jst.ejs +0 -4
  413. data/app/assets/javascripts/luca/templates/fields/checkbox_array_item.jst.ejs +0 -3
  414. data/app/assets/javascripts/luca/templates/fields/checkbox_field.jst.ejs +0 -10
  415. data/app/assets/javascripts/luca/templates/fields/file_upload_field.jst.ejs +0 -10
  416. data/app/assets/javascripts/luca/templates/fields/hidden_field.jst.ejs +0 -1
  417. data/app/assets/javascripts/luca/templates/fields/select_field.jst.ejs +0 -11
  418. data/app/assets/javascripts/luca/templates/fields/text_area_field.jst.ejs +0 -11
  419. data/app/assets/javascripts/luca/templates/fields/text_field.jst.ejs +0 -16
  420. data/app/assets/javascripts/luca/util/deprecations.coffee +0 -18
  421. data/app/assets/javascripts/luca/util/index.coffee +0 -4
  422. data/app/assets/javascripts/luca/util/keybindings.coffee +0 -24
  423. data/app/assets/javascripts/luca/util/logging.coffee +0 -30
  424. data/app/assets/javascripts/luca-ui.js +0 -1
  425. data/app/assets/stylesheets/luca/components/form_view.scss +0 -7
  426. data/app/assets/stylesheets/luca/containers/container.scss +0 -19
  427. data/app/assets/stylesheets/luca/development/index.css +0 -3
  428. data/app/assets/stylesheets/luca/index.css +0 -4
  429. data/bin/luca +0 -14
  430. data/docs/framework.json +0 -1
  431. data/docs/luca-framework-documentation.js +0 -1
  432. data/lib/generators/luca/application/application_generator.rb +0 -75
  433. data/lib/generators/luca/application/templates/controller.rb +0 -4
  434. data/lib/generators/luca/application/templates/index.html.erb +0 -19
  435. data/lib/generators/luca/application/templates/index.html.haml +0 -7
  436. data/lib/generators/luca/application/templates/javascripts/application.coffee +0 -18
  437. data/lib/generators/luca/application/templates/javascripts/collection_manager.coffee +0 -2
  438. data/lib/generators/luca/application/templates/javascripts/config.coffee +0 -3
  439. data/lib/generators/luca/application/templates/javascripts/dependencies.coffee +0 -3
  440. data/lib/generators/luca/application/templates/javascripts/home.jst.ejs +0 -2
  441. data/lib/generators/luca/application/templates/javascripts/index.coffee +0 -15
  442. data/lib/generators/luca/application/templates/javascripts/router.coffee +0 -4
  443. data/lib/guard/luca.rb +0 -84
  444. data/lib/luca/asset_compiler.rb +0 -117
  445. data/lib/luca/cli/generate.rb +0 -37
  446. data/lib/luca/cli/server.rb +0 -20
  447. data/lib/luca/cli/sync.rb +0 -40
  448. data/lib/luca/cli/watch.rb +0 -16
  449. data/lib/luca/cli.rb +0 -68
  450. data/lib/luca/collection/endpoint.rb +0 -38
  451. data/lib/luca/collection/file_backend.rb +0 -121
  452. data/lib/luca/collection/redis_backend.rb +0 -153
  453. data/lib/luca/collection.rb +0 -64
  454. data/lib/luca/compiled_asset.rb +0 -61
  455. data/lib/luca/component_definition.rb +0 -356
  456. data/lib/luca/luca_application.rb +0 -258
  457. data/lib/luca/project.rb +0 -73
  458. data/lib/luca/project_harness.rb +0 -96
  459. data/lib/luca/server.rb +0 -7
  460. data/lib/luca/stylesheet.rb +0 -35
  461. data/lib/luca/template_asset.rb +0 -64
  462. data/lib/luca/version.rb +0 -3
  463. data/lib/luca/watcher.rb +0 -72
  464. data/lib/railties/luca/tasks.rake +0 -38
  465. data/site/.bundle/config +0 -2
  466. data/site/.gitignore +0 -5
  467. data/site/.rvmrc +0 -1
  468. data/site/CHANGELOG.md +0 -41
  469. data/site/DOCS.md +0 -41
  470. data/site/Gemfile +0 -8
  471. data/site/Gemfile.lock +0 -134
  472. data/site/LICENSE.md +0 -19
  473. data/site/config.rb +0 -84
  474. data/site/helpers/site_helpers.rb +0 -20
  475. data/site/html5bp-docs/README.md +0 -38
  476. data/site/html5bp-docs/contribute.md +0 -104
  477. data/site/html5bp-docs/crossdomain.md +0 -21
  478. data/site/html5bp-docs/css.md +0 -135
  479. data/site/html5bp-docs/extend.md +0 -507
  480. data/site/html5bp-docs/faq.md +0 -77
  481. data/site/html5bp-docs/htaccess.md +0 -323
  482. data/site/html5bp-docs/html.md +0 -170
  483. data/site/html5bp-docs/js.md +0 -31
  484. data/site/html5bp-docs/misc.md +0 -25
  485. data/site/html5bp-docs/usage.md +0 -109
  486. data/site/readme.md +0 -47
  487. data/site/source/.htaccess +0 -540
  488. data/site/source/404.html +0 -157
  489. data/site/source/app/assets/javascripts/dependencies.js.coffee +0 -6
  490. data/site/source/app/assets/javascripts/docs/application.coffee +0 -64
  491. data/site/source/app/assets/javascripts/docs/collections/docs_documentation.coffee +0 -17
  492. data/site/source/app/assets/javascripts/docs/collections/github_repositories.coffee +0 -7
  493. data/site/source/app/assets/javascripts/docs/collections/index.coffee +0 -1
  494. data/site/source/app/assets/javascripts/docs/collections/luca_documentation.coffee +0 -17
  495. data/site/source/app/assets/javascripts/docs/collections/public_gists.coffee +0 -4
  496. data/site/source/app/assets/javascripts/docs/config.coffee +0 -5
  497. data/site/source/app/assets/javascripts/docs/index.coffee +0 -12
  498. data/site/source/app/assets/javascripts/docs/lib/router.coffee +0 -3
  499. data/site/source/app/assets/javascripts/docs/models/component.coffee +0 -99
  500. data/site/source/app/assets/javascripts/docs/models/github_repository.coffee +0 -3
  501. data/site/source/app/assets/javascripts/docs/models/index.coffee +0 -1
  502. data/site/source/app/assets/javascripts/docs/templates/component_documentation.jst.ejs +0 -55
  503. data/site/source/app/assets/javascripts/docs/templates/examples_browser/overview.jst.ejs +0 -4
  504. data/site/source/app/assets/javascripts/docs/templates/examples_browser/selector.jst.ejs +0 -11
  505. data/site/source/app/assets/javascripts/docs/templates/github_repository.jst.ejs +0 -4
  506. data/site/source/app/assets/javascripts/docs/templates/layouts/main.jst.ejs +0 -4
  507. data/site/source/app/assets/javascripts/docs/templates/left_navigation.jst.ejs +0 -5
  508. data/site/source/app/assets/javascripts/docs/templates/pages/getting_started.jst.ejs +0 -78
  509. data/site/source/app/assets/javascripts/docs/templates/pages/home.jst.ejs +0 -57
  510. data/site/source/app/assets/javascripts/docs/views/components/code_editor.coffee +0 -45
  511. data/site/source/app/assets/javascripts/docs/views/components/component_documentation.coffee +0 -72
  512. data/site/source/app/assets/javascripts/docs/views/index.coffee +0 -3
  513. data/site/source/app/assets/javascripts/docs/views/pages/browse_source/details.coffee +0 -37
  514. data/site/source/app/assets/javascripts/docs/views/pages/browse_source/list.coffee +0 -31
  515. data/site/source/app/assets/javascripts/docs/views/pages/browse_source.coffee +0 -46
  516. data/site/source/app/assets/javascripts/docs/views/pages/component_editor.coffee +0 -10
  517. data/site/source/app/assets/javascripts/docs/views/pages/examples_browser/docs.coffee +0 -12
  518. data/site/source/app/assets/javascripts/docs/views/pages/examples_browser/source.coffee +0 -13
  519. data/site/source/app/assets/javascripts/docs/views/pages/examples_browser.coffee +0 -102
  520. data/site/source/app/assets/javascripts/docs/views/pages/home.coffee +0 -10
  521. data/site/source/app/assets/javascripts/docs/views/views/api_browser/index.coffee +0 -43
  522. data/site/source/app/assets/javascripts/docs/views/views/collection_view_examples/grid_layout_view_example.coffee +0 -14
  523. data/site/source/app/assets/javascripts/docs/views/views/collection_view_examples/table_view_example.coffee +0 -39
  524. data/site/source/app/assets/javascripts/docs/views/views/form_view_examples/basic_example.coffee +0 -38
  525. data/site/source/app/assets/javascripts/docs/views/views/form_view_examples/complex_layout.coffee +0 -110
  526. data/site/source/app/assets/javascripts/docs/views/views/top_navigation.coffee +0 -6
  527. data/site/source/app/assets/javascripts/docs-docs.js +0 -1
  528. data/site/source/app/assets/javascripts/luca-docs.js +0 -1
  529. data/site/source/app/assets/javascripts/luca-framework-documentation.js +0 -1
  530. data/site/source/app/assets/javascripts/site.js.coffee +0 -4
  531. data/site/source/app/assets/javascripts/vendor/codemirror.js +0 -4786
  532. data/site/source/app/assets/javascripts/vendor/coffeescript.js +0 -346
  533. data/site/source/app/assets/javascripts/vendor/css.js +0 -465
  534. data/site/source/app/assets/javascripts/vendor/htmlmixed.js +0 -84
  535. data/site/source/app/assets/javascripts/vendor/javascript.js +0 -422
  536. data/site/source/app/assets/javascripts/vendor/js-beautify.js +0 -1353
  537. data/site/source/app/assets/javascripts/vendor/modernizr-2.6.1.min.js +0 -4
  538. data/site/source/app/assets/javascripts/vendor/vim.js +0 -2511
  539. data/site/source/app/assets/stylesheets/docs/api-browser.css.scss +0 -5
  540. data/site/source/app/assets/stylesheets/docs/application.css.scss +0 -35
  541. data/site/source/app/assets/stylesheets/docs/browse-source.css.scss +0 -5
  542. data/site/source/app/assets/stylesheets/docs/scrollable-table.css.scss +0 -5
  543. data/site/source/app/assets/stylesheets/site.css.scss +0 -2
  544. data/site/source/app/assets/stylesheets/vendor/codemirror.css +0 -240
  545. data/site/source/app/assets/stylesheets/vendor/prettify-tomorrow-night-bright.css +0 -160
  546. data/site/source/app/assets/stylesheets/vendor/twilight.css +0 -26
  547. data/site/source/crossdomain.xml +0 -15
  548. data/site/source/documentation.html.haml +0 -1
  549. data/site/source/favicon_base.png +0 -0
  550. data/site/source/humans.txt +0 -15
  551. data/site/source/images/background.png +0 -0
  552. data/site/source/images/middleman.png +0 -0
  553. data/site/source/index.html.haml +0 -1
  554. data/site/source/layouts/layout.haml +0 -55
  555. data/site/source/readme.md +0 -63
  556. data/site/source/robots.txt +0 -3
  557. data/spec/javascripts/components/collection_view_spec.coffee +0 -59
  558. data/spec/javascripts/components/controller_spec.coffee +0 -62
  559. data/spec/javascripts/components/form_view_spec.coffee +0 -162
  560. data/spec/javascripts/components/multi_collection_view_spec.coffee +0 -5
  561. data/spec/javascripts/components/table_view_spec.coffee +0 -17
  562. data/spec/javascripts/concerns/collection_event_bindings_spec.coffee +0 -15
  563. data/spec/javascripts/concerns/dom_helpers_spec.coffee +0 -16
  564. data/spec/javascripts/concerns/filterable_spec.coffee +0 -25
  565. data/spec/javascripts/concerns/model_presenter_spec.coffee +0 -31
  566. data/spec/javascripts/concerns/state_model_spec.coffee +0 -55
  567. data/spec/javascripts/containers/card_view_spec.coffee +0 -108
  568. data/spec/javascripts/core/concerns_spec.coffee +0 -88
  569. data/spec/javascripts/core/container_spec.coffee +0 -287
  570. data/spec/javascripts/core/define_spec.coffee +0 -116
  571. data/spec/javascripts/core/events_spec.coffee +0 -26
  572. data/spec/javascripts/core/field_spec.coffee +0 -4
  573. data/spec/javascripts/core/util_spec.coffee +0 -24
  574. data/spec/javascripts/dependencies/index.coffee +0 -3
  575. data/spec/lib/component_definition_spec.rb +0 -63
  576. data/spec/lib/input_compiler_spec.rb +0 -9
  577. data/spec/lib/luca_application_spec.rb +0 -30
  578. data/spec/support/fixtures/application.coffee +0 -45
  579. data/spec/support/fixtures/component.coffee +0 -34
  580. data/tutorials/component-driven-design.md +0 -140
  581. data/tutorials/structure-of-a-project.md +0 -63
  582. data/vendor/assets/javascripts/backbone-ext.js +0 -21
  583. data/vendor/assets/javascripts/backbone-min.js +0 -42
  584. data/vendor/assets/javascripts/backbone-query.min.js +0 -1
  585. data/vendor/assets/javascripts/bootstrap.min.js +0 -7
  586. data/vendor/assets/javascripts/codemirror-ui.js +0 -503
  587. data/vendor/assets/javascripts/hogan.js +0 -707
  588. data/vendor/assets/javascripts/inflections.js +0 -656
  589. data/vendor/assets/javascripts/jasmine-html.js +0 -190
  590. data/vendor/assets/javascripts/jasmine.js +0 -2476
  591. data/vendor/assets/javascripts/jquery.js +0 -5
  592. data/vendor/assets/javascripts/keymaster.min.js +0 -4
  593. data/vendor/assets/javascripts/luca-dependencies.min.js +0 -8
  594. data/vendor/assets/javascripts/luca-development.min.js +0 -1
  595. data/vendor/assets/javascripts/luca-spec.js +0 -11
  596. data/vendor/assets/javascripts/luca.full.min.js +0 -12
  597. data/vendor/assets/javascripts/luca.min.js +0 -5
  598. data/vendor/assets/javascripts/sinon.js +0 -3469
  599. data/vendor/assets/javascripts/underscore-min.js +0 -1
  600. data/vendor/assets/javascripts/underscore-string.min.js +0 -1
  601. data/vendor/assets/stylesheets/bootstrap-responsive.min.css +0 -9
  602. data/vendor/assets/stylesheets/bootstrap.min.css +0 -9
  603. data/vendor/assets/stylesheets/luca-components.css +0 -202
  604. data/vendor/assets/stylesheets/luca-development.css +0 -23
@@ -1,287 +0,0 @@
1
- describe 'The Luca Container', ->
2
- beforeEach ->
3
- c = @container = new Luca.Container
4
- defaults:
5
- defaultProperty: 'it_works'
6
- extensions:[
7
- extension: 1
8
- ,
9
- extension: 2
10
- ,
11
- extension: 3
12
- ]
13
- components:[
14
- name: "component_one"
15
- ctype: "view"
16
- defaultProperty: "oh_yeah"
17
- bodyTemplate: ()-> "markup for component one"
18
- id: "c1"
19
- value: 1
20
- getter: "getOne"
21
- spy: sinon.spy()
22
- role: "role_one"
23
- ,
24
- name: "component_two"
25
- ctype: "view"
26
- bodyTemplate: ()-> "markup for component two"
27
- id: "c2"
28
- value: 0
29
- spy: sinon.spy()
30
- role: "role_two"
31
- getter: "getComponentTwo"
32
- ,
33
- name: "component_three"
34
- ctype: "container"
35
- id: "c3"
36
- value: 1
37
- spy: sinon.spy()
38
- components:[
39
- ctype: "view"
40
- name: "component_four"
41
- bodyTemplate: ()-> "markup for component four"
42
- spy: sinon.spy()
43
- ]
44
- ]
45
-
46
- @container.on "before:attach", ()->
47
- console.log "before attach", @, arguments
48
- @container.render()
49
-
50
- it "should create getter methods on the for components with roles", ->
51
- expect( @container.getRoleTwo ).toBeDefined()
52
-
53
- it "should create getter methods on the for components with roles", ->
54
- expect( @container.getRoleTwo().name ).toEqual 'component_two'
55
-
56
- it "should create a getter function on the container", ->
57
- expect( @container.getOne().name ).toEqual 'component_one'
58
-
59
- it "should apply extensions to the components", ->
60
- expect( @container.getRoleOne().extension ).toEqual 1
61
- expect( @container.getRoleTwo().extension ).toEqual 2
62
-
63
- it "should apply default properties to components", ->
64
- defaults = @container.selectByAttribute('defaultProperty','it_works')
65
- custom = @container.selectByAttribute('defaultProperty','oh_yeah')
66
- expect( defaults.length ).toEqual(2)
67
- expect( custom.length ).toEqual(1)
68
-
69
- it "should trigger after initialize", ->
70
- expect( @container ).toHaveTriggered "after:initialize"
71
-
72
- it "should have some components", ->
73
- expect( @container.components.length ).toEqual 3
74
-
75
- it "should render the container and all of the sub views", ->
76
- @container.render()
77
- html=$(@container.el).html()
78
- expect( html ).toContain "markup for component one"
79
- expect( html ).toContain "markup for component two"
80
-
81
- it "should render the container and all of the nested sub views", ->
82
- @container.render()
83
- html=$(@container.el).html()
84
- expect( html ).toContain "markup for component four"
85
-
86
- it "should select all components matching a key/value combo", ->
87
- components = @container.selectByAttribute("value",1)
88
- expect( components.length ).toEqual 2
89
-
90
- it "should run a function on each component", ->
91
- @container.eachComponent (c)-> c.spy()
92
-
93
- _( @container.components ).each (component)->
94
- expect( component.spy ).toHaveBeenCalled()
95
-
96
- it "should run a function on each component including nested", ->
97
- @container.render()
98
- @container.eachComponent (c)-> c.spy()
99
- expect( Luca.cache("component_four").spy ).toHaveBeenCalled()
100
-
101
- describe 'Component Inheritance and Customization', ->
102
- it "should accept an array for extensions configuration and join on position/index", ->
103
- container = new Luca.Container
104
- extensions:[
105
- undefined
106
- ,
107
- name: "custom_two"
108
- ]
109
- components:[
110
- role: "component_one"
111
- name: "component_one"
112
- ,
113
- role: "component_two"
114
- name: "component_two"
115
- ]
116
-
117
- container.render()
118
-
119
- expect( container.getComponentTwo().name ).toEqual "custom_two"
120
-
121
- it "should accept an object for extensions configuration and join using role", ->
122
- container = new Luca.Container
123
- extensions:
124
- component_one:
125
- name: "custom_one"
126
- components:[
127
- role: "component_one"
128
- name: "component_one"
129
- ,
130
- role: "component_two"
131
- name: "component_two"
132
- ]
133
-
134
- container.render()
135
-
136
- expect( container.getComponentOne().name ).toEqual "custom_one"
137
-
138
- describe 'Component Event Binding', ->
139
- beforeEach ->
140
- @container = new Luca.Container
141
- componentEvents:
142
- "haha trigger:one" : "one"
143
- "alpha trigger:two" : "two"
144
- "getAlphaComponent trigger:three" : "three"
145
- "* trigger:four" : "four"
146
- "beta trigger:five" : "five"
147
-
148
- one: ()->
149
- @trigger "one"
150
-
151
- two: ()->
152
- @trigger "two"
153
-
154
- three: ()->
155
- @trigger "three"
156
-
157
- four: ()->
158
- @trigger "four"
159
-
160
- five: ()->
161
- @trigger "five"
162
-
163
- afterRender: ()->
164
- @getGamma().trigger("after:render:gamma")
165
-
166
- registerComponentEvents: ()->
167
- Luca.Container::registerComponentEvents.apply(@, arguments)
168
-
169
- components:[
170
- name: "component_alpha"
171
- role: "alpha"
172
- getter: "getAlphaComponent"
173
- ,
174
- name: "container_tester"
175
- type: "container"
176
- components:[
177
- name: "beta_view"
178
- role: "beta"
179
- components:[
180
- role: "gamma"
181
- name: "haha"
182
- ]
183
- ]
184
- ]
185
-
186
- @container.render()
187
-
188
- it "should give me all of the components", ->
189
- names = _( @container.allChildren() ).pluck('name')
190
- expect( names ).toEqual ['component_alpha','container_tester','beta_view','haha']
191
-
192
- it "should drill down into nested components", ->
193
- expect( @container.getBeta ).toBeDefined()
194
- expect( @container.getBeta().name ).toEqual 'beta_view'
195
-
196
- it "should observe the right rendering order", ->
197
- expect( @container.getGamma() ).toHaveTriggered("after:render:gamma")
198
-
199
- it "should pick up events on nested components", ->
200
- @container.getBeta().trigger("trigger:five")
201
- expect( @container ).toHaveTriggered("five")
202
-
203
- it "should recursively define role based getters", ->
204
- expect( @container.getAlpha ).toBeDefined()
205
- expect( @container.getBeta ).toBeDefined()
206
- expect( @container.getGamma ).toBeDefined()
207
-
208
- it "should define a getter", ->
209
- expect( @container.getAlphaComponent ).toBeDefined()
210
-
211
- it "should find a nested component by name", ->
212
- expect( @container.findComponentByName('haha') ).toBeDefined()
213
-
214
- it "should find the component by its name", ->
215
- expect( @container.findComponentByName("beta_view") ).toBeDefined()
216
-
217
- it "should find the component by its role", ->
218
- expect( @container.findComponentByRole("alpha") ).toBeDefined()
219
-
220
- it "should find the component by its getter", ->
221
- expect( @container.findComponentByGetter('getAlphaComponent') ).toBeDefined()
222
-
223
- it "should accept wildcard for component", ->
224
- @container.getAlphaComponent().trigger "trigger:four"
225
- expect( @container ).toHaveTriggered("four")
226
-
227
- it "should accept component events with a component name", ->
228
- @container.getGamma().trigger "trigger:one"
229
- expect(@container).toHaveTriggered("one")
230
-
231
- it "should accept component events with a component role", ->
232
- @container.getAlphaComponent().trigger "trigger:two"
233
- expect(@container).toHaveTriggered("two")
234
-
235
- it "should accept component events with a component getter", ->
236
- @container.getAlphaComponent().trigger "trigger:three"
237
- expect(@container).toHaveTriggered("three")
238
-
239
-
240
- describe 'Parent Container Tracking', ->
241
- nestedContainer = Luca.register("Luca.components.NestedSpec")
242
- nestedContainer.extends("Luca.Container")
243
- nestedContainer.defines
244
- name: "nested_container"
245
- components:[
246
- type: "container"
247
- name: "one",
248
- role: "one"
249
- components:[
250
- type: "container"
251
- role: "two"
252
- name: "two"
253
- components:[
254
- name: "three"
255
- role: "three"
256
- ]
257
- ]
258
- ]
259
-
260
- it "should not have a parent unless created by a container", ->
261
- nestedContainer = (new Luca.components.NestedSpec()).render()
262
- expect( nestedContainer.getParent ).not.toBeDefined()
263
-
264
- it "should know the root", ->
265
- nestedContainer = (new Luca.components.NestedSpec()).render()
266
- one = nestedContainer.getOne()
267
- expect( one.getRootComponent().name ).toEqual 'nested_container'
268
-
269
- it "should know the root", ->
270
- nestedContainer = (new Luca.components.NestedSpec()).render()
271
- two = nestedContainer.getTwo()
272
- expect( two.getRootComponent().name ).toEqual 'nested_container'
273
-
274
- it "should know its parent", ->
275
- nestedContainer = (new Luca.components.NestedSpec()).render()
276
- one = nestedContainer.getOne()
277
- expect( one.getParent().name ).toEqual 'nested_container'
278
-
279
- it "should know its parent", ->
280
- nestedContainer = (new Luca.components.NestedSpec()).render()
281
- two = nestedContainer.getTwo()
282
- expect( two.getParent().name ).toEqual 'one'
283
-
284
- it "should know its parent", ->
285
- nestedContainer = (new Luca.components.NestedSpec()).render()
286
- three = nestedContainer.getThree()
287
- expect( three.getParent().name ).toEqual 'two'
@@ -1,116 +0,0 @@
1
- describe 'The Component Definition System', ->
2
- beforeEach ->
3
- unfinished = Luca.register 'Luca.components.UnfinishedDefinition'
4
-
5
- sample = Luca.register 'Luca.components.SampleComponentDefinition'
6
-
7
- sample.classMethods
8
- classMethod: ()-> "classMethod"
9
-
10
- sample.contains
11
- name: "component_one"
12
- ,
13
- name: "component_two"
14
-
15
- sample.classConfiguration
16
- classAttribute: "classAttribute"
17
-
18
- sample.afterDefinition( sinon.spy() )
19
-
20
- sample.publicInterface
21
- publicAttribute: "publicAttribute"
22
- publicMethod: ()-> "publicMethod"
23
-
24
- sample.privateInterface
25
- privateAttribute: "privateAttribute"
26
- privateMethod: ()-> "privateMethod"
27
-
28
- sample.publicConfiguration
29
- publicProperty: "publicProperty"
30
-
31
- sample.privateConfiguration
32
- privateProperty: "privateProperty"
33
-
34
- sample.register()
35
-
36
- it "should find a definition ", ->
37
- definition = Luca.define.findDefinition('Luca.components.UnfinishedDefinition')
38
- expect( Luca.components.UnfinishedDefinition ).not.toBeDefined()
39
- expect( definition ).toBeDefined()
40
-
41
- it "should find a component definition through the Luca() helper", ->
42
- definition = Luca("Luca.components.SampleComponentDefinition")
43
- expect( definition.extend ).toBeDefined()
44
- expect( definition.register ).not.toBeDefined()
45
-
46
- it "should find an incomplete definition through the Luca() helper", ->
47
- definition = Luca("Luca.components.UnfinishedDefinition")
48
- expect( definition ).toBeDefined()
49
- expect( definition.register ).toBeDefined()
50
-
51
- # I did this to make the definition not require a single method
52
- # to be called at the end every time, if it is more readable to leave it off.
53
- it "should know if a definition is 'open'", ->
54
- definition = Luca("Luca.components.UnfinishedDefinition")
55
- expect( definition.isOpen() ).toBeTruthy()
56
-
57
- it "should close any open definitions", ->
58
- Luca.define.close()
59
- expect( Luca.components.UnfinishedDefinition ).toBeDefined()
60
- expect( Luca.define.incomplete().length ).toEqual 0
61
-
62
- it "should define a component", ->
63
- expect( Luca.isComponentPrototype(Luca.components.SampleComponentDefinition) ).toEqual true
64
-
65
- it "should add everything defined for the prototype", ->
66
- for attribute in ["publicMethod","publicProperty","publicAttribute","privateAttribute","privateMethod","privateProperty"]
67
- expect( Luca.components.SampleComponentDefinition.prototype[attribute] ).toBeDefined()
68
-
69
- it "should default to Luca.View for the extends portion", ->
70
- expect( Luca.parentClasses(Luca.components.SampleComponentDefinition) ).toContain 'Luca.View'
71
-
72
- it "should define class methods ", ->
73
- test = Luca.components.SampleComponentDefinition.classMethod()
74
- expect( test ).toEqual 'classMethod'
75
-
76
- it "should inherit class methods when extending", ->
77
- Luca.register("Luca.components.ExtendedSampleComponent").extends("Luca.components.SampleComponentDefinition").register()
78
- test = Luca.components.ExtendedSampleComponent.classMethod()
79
- expect( test ).toEqual('classMethod')
80
-
81
- it "should define class configuration ", ->
82
- test = Luca.components.SampleComponentDefinition.classAttribute
83
- expect( test ).toEqual 'classAttribute'
84
-
85
- describe 'The Component MetaData', ->
86
- beforeEach ->
87
- @metaData = Luca.registry.getMetaDataFor('Luca.components.SampleComponentDefinition')
88
-
89
- it "should provide access to component meta data", ->
90
- meta = Luca.components.SampleComponentDefinition::componentMetaData()
91
- expect( meta ).toEqual( @metaData )
92
-
93
- it "should know the public interface", ->
94
- expect( @metaData.publicAttributes() ).toContain('publicProperty','publicMethod','publicAttribute')
95
-
96
- it "should know the public methods", ->
97
- expect( @metaData.publicMethods() ).toContain('publicMethod')
98
- expect( @metaData.publicMethods() ).not.toContain('publicAttribute')
99
-
100
- it "should know the private interface", ->
101
- expect( @metaData.privateAttributes() ).toContain('privateProperty','privateMethod','privateAttribute')
102
-
103
- it "should know the private methods", ->
104
- expect( @metaData.privateMethods() ).toContain('privateMethod')
105
- expect( @metaData.privateMethods() ).not.toContain('privateAttribute')
106
-
107
- it "should know the class methods", ->
108
- expect( @metaData.classMethods() ).toContain("classMethod")
109
-
110
- it "should fire the afterDefinition hook on the component class", ->
111
- expect( Luca.components.SampleComponentDefinition.afterDefinition ).toHaveBeenCalled()
112
-
113
- describe 'Component Configuration Validations', ->
114
- xit "should support specifying which values are required"
115
- xit "should validate required values are present"
116
- xit "should validate required values match certain expectations around data type"
@@ -1,26 +0,0 @@
1
- describe 'The Event Helpers', ->
2
- describe 'The Event Relayer', ->
3
- beforeEach ->
4
- @a = new Luca.View(name:"a")
5
- @b = new Luca.View(name:"b")
6
-
7
- (new Luca.EventRelayer
8
- target: @a
9
- source: @b
10
- prefix: "prefix"
11
- events:[
12
- "event:one"
13
- "event:two"
14
- "event:three"
15
- ]).setup()
16
-
17
- xit 'should relay events from component a to component b', ->
18
- @b.trigger("event:one")
19
- @b.trigger("event:two")
20
- @b.trigger("event:three")
21
-
22
- expect( @a ).toHaveTriggered("prefix:event:one")
23
- expect( @a ).toHaveTriggered("prefix:event:two")
24
- expect( @a ).toHaveTriggered("prefix:event:three")
25
-
26
-
@@ -1,4 +0,0 @@
1
- describe 'The core Field class', ->
2
- it "should be set to isField", ->
3
- field = new Luca.core.Field()
4
- expect( field.isField ).toEqual true
@@ -1,24 +0,0 @@
1
- describe 'The Luca Utilities', ->
2
- describe "Converting from component class to css class", ->
3
- it "should produce a css class from the component class name", ->
4
- component = "Luca.Container"
5
- cssClass = Luca.util.toCssClass(component)
6
- expect( cssClass ).toEqual 'luca-container'
7
-
8
- it "should produce a css class from the component class name", ->
9
- component = "Luca.components.MultiCollectionView"
10
- cssClass = Luca.util.toCssClass(component)
11
- expect( cssClass ).toEqual 'luca-components-multi-collection-view'
12
-
13
- it "should produce a css class from the component class name", ->
14
- component = "Luca.View"
15
- cssClass = Luca.util.toCssClass(component)
16
- expect( cssClass ).toEqual 'luca-view'
17
-
18
- it "should exclude parts", ->
19
- component = "Luca.components.MultiCollectionView"
20
- cssClass = Luca.util.toCssClass(component, 'components')
21
- expect( cssClass ).toEqual "luca-multi-collection-view"
22
-
23
-
24
-
@@ -1,3 +0,0 @@
1
- #= require jasmine
2
- #= require jasmine-html
3
- #= require sinon
@@ -1,63 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe ComponentDefinition do
4
- let(:path) { File.join(Rails.root,"spec","support","fixtures","component.coffee")}
5
- let(:definition) { ComponentDefinition.new(path) }
6
-
7
- it "should be valid" do
8
- definition.should be_valid
9
- end
10
-
11
- it "should recognize the class being defined" do
12
- definition.class_name.should == "Luca.SampleComponent"
13
- end
14
-
15
- it "should know the type alias" do
16
- definition.type_alias.should == "sample_component"
17
- end
18
-
19
- it "should be view based" do
20
- definition.should be_view_based
21
- end
22
-
23
- it "should have a css class identifier" do
24
- definition.css_class_identifier.should == "luca-sample-component"
25
- end
26
-
27
- it "should know the class it extends" do
28
- definition.extends.should == "Luca.View"
29
- end
30
-
31
- it "should detect the definition variable name" do
32
- definition.definition_proxy_variable_name.should == "component"
33
- end
34
-
35
- it "should tell me which methods are defined" do
36
- definition.defines_methods.should == ["methodOne","methodTwo"]
37
- end
38
-
39
- it "should tell me which properties are defined" do
40
- definition.defines_properties.should == ["privateSetting","el","bodyClassName", "publicSetting"]
41
- end
42
-
43
- it "should tell me where a method is defined" do
44
- definition.find_definition_of("methodOne").line_number.should > 0
45
- end
46
-
47
- it "should tell me where a property is defined" do
48
- definition.find_definition_of("privateSetting").line_number.should > 0
49
- end
50
-
51
- it "should find the documentation for a method definition" do
52
- definition.find_comments_above("methodOne").should_not be_empty
53
- end
54
-
55
- it "should produce human readable documentation for a method definition" do
56
- definition.documentation_for("methodOne").should == "here is some documentation for methodOne"
57
- end
58
-
59
- it "should not pick up things which aren't documentation" do
60
- definition.documentation_for("bodyClassName").should == ""
61
- end
62
-
63
- end
@@ -1,9 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe AssetCompiler do
4
- xit "should compile coffeescript" do
5
- input = "console.log(foo) for foo in [1,2,3]"
6
- compiler = AssetCompiler.new(mode:"coffeescript", input: input)
7
- compiler.output.should == "haha"
8
- end
9
- end
@@ -1,30 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe LucaApplication do
4
- let(:repo) { LucaApplication.new("tools") }
5
- let(:application_file_path) { File.join(repo.send(:coffeescripts_location),'tools_application.coffee') }
6
-
7
- it "should retrieve source code for a component" do
8
- source_length = repo.source_code_for_class("Tools.Application").length
9
- file_length = File.size( repo.find_definition_file_for_class('Tools.Application') )
10
- file_length.should be_within(5).of( source_length )
11
- end
12
-
13
- it "should map all component definitions to their respective files" do
14
- map = repo.component_definition_filemap
15
- map["Tools.Application"].should == application_file_path
16
- end
17
-
18
- xit "should find a template object by its filename" do
19
- end
20
-
21
- it "should find a component definition by class name" do
22
- repo.find_component_definition_for_class('Tools.Application').should be_present
23
- repo.find_component_definition_for_class('Tools.Collection').should be_present
24
- end
25
-
26
- it "should detect the namespace" do
27
- repo.namespace.should == "Tools"
28
- end
29
-
30
- end
@@ -1,45 +0,0 @@
1
- application = Tools.register "Tools.Application"
2
- application.extends "Luca.Application"
3
-
4
- application.configuration
5
- el: '#viewport'
6
- bodyClassName: "viewport-body"
7
-
8
- bindMethods:[
9
- "toggleLayout"
10
- ]
11
-
12
- topToolbar:
13
- buttons:[
14
- label: "Toggle Layout"
15
- eventId: "toggle:layout"
16
- ]
17
-
18
- bottomToolbar:
19
- buttons:[]
20
-
21
- fluid: false
22
- applyWrapper: false
23
- autoBoot: false
24
- useController: false
25
- name: 'ToolsApp'
26
- router: "Tools.Router"
27
- collectionManager: "ToolsCollectionManager"
28
-
29
- application.contains
30
- type: "component_inspector"
31
- role: "component_inspector"
32
- className: "work-area row-fluid"
33
-
34
- application.publicMethods
35
- currentApplication: ()->
36
- "tools"
37
-
38
- toggleLayout: ()->
39
- Tools().getComponentInspector().cycleLayout()
40
-
41
- application.privateMethods
42
- boundaries: ()->
43
- [0,60,400,460]
44
-
45
- application.register()
@@ -1,34 +0,0 @@
1
- # This is a sample component definition file
2
- # for the luca framework. The header of the file
3
- # is used to describe the general purpose of the component.
4
- component = Luca.register "Luca.SampleComponent"
5
- component.extends "Luca.View"
6
-
7
- # We can comment on a specific entry such as the mixins.
8
- component.mixesIn "SomeMixin"
9
-
10
- component.privateConfiguration
11
- # this is a basic description of the private setting.
12
- # expects: Boolean
13
- privateSetting: false
14
- el: '#viewport'
15
- bodyClassName: "viewport-body"
16
-
17
- component.publicConfiguration
18
- # this is a comment for the public setting
19
- publicSetting: ["1,2,3"]
20
-
21
- component.publicMethods
22
- # here is some documentation for methodOne
23
- methodOne: ()->
24
- @thisIsSomeMethodicalShitSon()
25
- @puttingAllsortsOfCode
26
- allUp: "InYo"
27
- bidness: "Baby"
28
-
29
- # here is a multi line comment for methodTwo
30
- # it is pretty dope
31
- # that i can do this
32
- methodTwo: (butThistime="withSomArguments", youKnow=[], man={})->
33
- @okCool()
34
-