sproutit-sproutcore 1.0.0.20090416161445 → 1.0.0.20090720093355

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 (754) hide show
  1. data/Buildfile +4 -2
  2. data/frameworks/sproutcore/Buildfile +3 -2
  3. data/frameworks/sproutcore/README +2 -1
  4. data/frameworks/sproutcore/apps/docs/core.js +27 -0
  5. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Preview.pdf +0 -0
  6. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Thumbnail.tiff +0 -0
  7. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/data.plist +14378 -0
  8. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image10.png +0 -0
  9. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image11.png +0 -0
  10. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image13.png +0 -0
  11. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image14.png +0 -0
  12. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image8.png +0 -0
  13. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image9.tiff +0 -0
  14. data/frameworks/sproutcore/apps/docs/english.lproj/loading.rhtml +9 -0
  15. data/frameworks/sproutcore/apps/docs/english.lproj/main_page.js +22 -0
  16. data/frameworks/sproutcore/apps/{sc_jsdoc → docs}/english.lproj/strings.js +7 -7
  17. data/frameworks/sproutcore/apps/docs/main.js +30 -0
  18. data/frameworks/sproutcore/apps/tests/controllers/detail.js +16 -0
  19. data/frameworks/sproutcore/apps/tests/controllers/source.js +29 -0
  20. data/frameworks/sproutcore/apps/tests/controllers/target.js +26 -0
  21. data/frameworks/sproutcore/apps/tests/controllers/targets.js +65 -26
  22. data/frameworks/sproutcore/apps/tests/controllers/tests.js +14 -19
  23. data/frameworks/sproutcore/apps/tests/core.js +114 -16
  24. data/frameworks/sproutcore/apps/tests/data_source.js +96 -0
  25. data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +22 -2
  26. data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +168 -22
  27. data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +14 -5
  28. data/frameworks/sproutcore/apps/tests/fixtures/target.js +81 -37
  29. data/frameworks/sproutcore/apps/tests/fixtures/test.js +38 -37
  30. data/frameworks/sproutcore/apps/tests/main.js +9 -20
  31. data/frameworks/sproutcore/apps/tests/models/target.js +74 -31
  32. data/frameworks/sproutcore/apps/tests/models/test.js +30 -2
  33. data/frameworks/sproutcore/{frameworks/desktop/mixins/collection_item.js → apps/tests/states/no_targets.js} +16 -12
  34. data/frameworks/sproutcore/apps/tests/states/ready.js +56 -0
  35. data/frameworks/sproutcore/apps/tests/states/ready_detail.js +41 -0
  36. data/frameworks/sproutcore/apps/tests/states/ready_empty.js +48 -0
  37. data/frameworks/sproutcore/apps/tests/states/ready_list.js +41 -0
  38. data/frameworks/sproutcore/apps/tests/states/ready_loading.js +44 -0
  39. data/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +31 -0
  40. data/frameworks/sproutcore/apps/tests/states/start.js +39 -0
  41. data/frameworks/sproutcore/apps/tests/tests/controllers/{test.js → detail.js} +3 -3
  42. data/frameworks/sproutcore/apps/tests/tests/controllers/source.js +15 -0
  43. data/frameworks/sproutcore/apps/tests/tests/controllers/target.js +15 -0
  44. data/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +3 -3
  45. data/frameworks/sproutcore/apps/tests/tests/views/offset_checkbox.js +15 -0
  46. data/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +26 -0
  47. data/frameworks/sproutcore/design/CollectionView State Charts.graffle +4848 -0
  48. data/frameworks/sproutcore/design/Design Charts.graffle +8788 -6375
  49. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Preview.pdf +0 -0
  50. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Thumbnail.tiff +0 -0
  51. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/data.plist +1452 -0
  52. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/image8.png +0 -0
  53. data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Preview.pdf +0 -0
  54. data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Thumbnail.tiff +0 -0
  55. data/frameworks/sproutcore/design/TestRunner Design.graffle/data.plist +24187 -0
  56. data/frameworks/sproutcore/design/TestRunner Design.graffle/image10.png +0 -0
  57. data/frameworks/sproutcore/design/TestRunner Design.graffle/image11.png +0 -0
  58. data/frameworks/sproutcore/design/TestRunner Design.graffle/image13.png +0 -0
  59. data/frameworks/sproutcore/design/TestRunner Design.graffle/image15.png +0 -0
  60. data/frameworks/sproutcore/design/TestRunner Design.graffle/image16.png +0 -0
  61. data/frameworks/sproutcore/design/TestRunner Design.graffle/image17.png +0 -0
  62. data/frameworks/sproutcore/design/TestRunner Design.graffle/image18.png +0 -0
  63. data/frameworks/sproutcore/design/TestRunner Design.graffle/image19.png +0 -0
  64. data/frameworks/sproutcore/design/TestRunner Design.graffle/image22.tiff +0 -0
  65. data/frameworks/sproutcore/design/TestRunner Design.graffle/image23.png +0 -0
  66. data/frameworks/sproutcore/design/TestRunner Design.graffle/image24.png +0 -0
  67. data/frameworks/sproutcore/design/TestRunner Design.graffle/image25.png +0 -0
  68. data/frameworks/sproutcore/design/TestRunner Design.graffle/image30.png +0 -0
  69. data/frameworks/sproutcore/design/TestRunner Design.graffle/image31.png +0 -0
  70. data/frameworks/sproutcore/design/TestRunner Design.graffle/image8.png +0 -0
  71. data/frameworks/sproutcore/design/TestRunner Design.graffle/image9.png +0 -0
  72. data/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +2 -2
  73. data/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +66 -49
  74. data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +146 -31
  75. data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures_with_queries.js +238 -0
  76. data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +27 -11
  77. data/frameworks/sproutcore/frameworks/datastore/models/record.js +163 -32
  78. data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +67 -5
  79. data/frameworks/sproutcore/frameworks/datastore/system/many_array.js +157 -0
  80. data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +202 -19
  81. data/frameworks/sproutcore/frameworks/datastore/system/query.js +929 -78
  82. data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +143 -5
  83. data/frameworks/sproutcore/frameworks/datastore/system/store.js +443 -125
  84. data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +38 -3
  85. data/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +94 -0
  86. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +30 -0
  87. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +238 -0
  88. data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +105 -16
  89. data/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +178 -0
  90. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +1 -1
  91. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +9 -8
  92. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +6 -6
  93. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +6 -6
  94. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +3 -3
  95. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +7 -7
  96. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +4 -4
  97. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +7 -7
  98. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +7 -7
  99. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare_records.js +126 -0
  100. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +165 -0
  101. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation_of_records.js +82 -0
  102. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/find_all.js +362 -0
  103. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/parsing.js +170 -0
  104. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +43 -0
  105. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +60 -0
  106. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +67 -0
  107. data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +2 -13
  108. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +3 -4
  109. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +73 -0
  110. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +15 -0
  111. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +4 -2
  112. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +1 -1
  113. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +2 -2
  114. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +1 -1
  115. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +2 -2
  116. data/frameworks/sproutcore/frameworks/debug/core.js +60 -0
  117. data/frameworks/sproutcore/frameworks/deprecated/core.js +0 -2
  118. data/frameworks/sproutcore/frameworks/deprecated/server/server.js +0 -1
  119. data/frameworks/sproutcore/frameworks/deprecated/system/browser.js +0 -2
  120. data/frameworks/sproutcore/frameworks/deprecated/system/classic_responder.js +0 -2
  121. data/frameworks/sproutcore/frameworks/deprecated/system/event.js +0 -2
  122. data/frameworks/sproutcore/frameworks/deprecated/system/misc.js +0 -2
  123. data/frameworks/sproutcore/frameworks/deprecated/system/object.js +0 -2
  124. data/frameworks/sproutcore/frameworks/deprecated/system/path_module.js +0 -1
  125. data/frameworks/sproutcore/frameworks/deprecated/system/string.js +0 -2
  126. data/frameworks/sproutcore/frameworks/designer/coders/design.js +1 -2
  127. data/frameworks/sproutcore/frameworks/designer/coders/localization.js +1 -2
  128. data/frameworks/sproutcore/frameworks/designer/coders/object.js +1 -1
  129. data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +1 -1
  130. data/frameworks/sproutcore/frameworks/designer/ext/page.js +0 -2
  131. data/frameworks/sproutcore/frameworks/designer/ext/view.js +0 -2
  132. data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +2 -3
  133. data/frameworks/sproutcore/frameworks/designer/views/designer.js +24 -8
  134. data/frameworks/sproutcore/frameworks/designer/views/label.js +1 -2
  135. data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +0 -2
  136. data/frameworks/sproutcore/frameworks/designer/views/tab.js +1 -2
  137. data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +2 -2
  138. data/frameworks/sproutcore/frameworks/desktop/english.lproj/drag.css +6 -0
  139. data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +63 -10
  140. data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +5 -4
  141. data/frameworks/sproutcore/frameworks/desktop/english.lproj/modal.css +5 -0
  142. data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +1 -0
  143. data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +5 -0
  144. data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +1 -0
  145. data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +1 -1
  146. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +61 -0
  147. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +136 -79
  148. data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +55 -24
  149. data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +295 -147
  150. data/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
  151. data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +1 -1
  152. data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +18 -20
  153. data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +2 -2
  154. data/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +4 -4
  155. data/frameworks/sproutcore/frameworks/desktop/system/drag.js +337 -231
  156. data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +3 -3
  157. data/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +1 -1
  158. data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +2 -2
  159. data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +46 -1
  160. data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +4 -2
  161. data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +5 -6
  162. data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +11 -11
  163. data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +11 -7
  164. data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +9 -9
  165. data/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +19 -0
  166. data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +0 -1
  167. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +249 -0
  168. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deleteSelection.js +82 -0
  169. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deselect.js +199 -0
  170. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +288 -0
  171. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +65 -0
  172. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +88 -0
  173. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +165 -0
  174. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/nowShowing.js +121 -0
  175. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +177 -0
  176. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/select.js +240 -0
  177. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectNextItem.js +191 -0
  178. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +197 -39
  179. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +141 -0
  180. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +182 -0
  181. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +183 -0
  182. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +133 -0
  183. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +132 -0
  184. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +56 -0
  185. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +167 -0
  186. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +127 -0
  187. data/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +30 -1
  188. data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +8 -8
  189. data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +9 -9
  190. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +45 -6
  191. data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +2 -1
  192. data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +17 -1
  193. data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +44 -29
  194. data/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +231 -0
  195. data/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +1 -1
  196. data/frameworks/sproutcore/frameworks/desktop/views/button.js +15 -4
  197. data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +8 -1
  198. data/frameworks/sproutcore/frameworks/desktop/views/collection.js +1739 -1123
  199. data/frameworks/sproutcore/frameworks/desktop/views/form.js +0 -1
  200. data/frameworks/sproutcore/frameworks/desktop/views/grid.js +13 -11
  201. data/frameworks/sproutcore/frameworks/desktop/views/list.js +405 -571
  202. data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +211 -74
  203. data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +319 -169
  204. data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +57 -51
  205. data/frameworks/sproutcore/frameworks/desktop/views/progress.js +2 -2
  206. data/frameworks/sproutcore/frameworks/desktop/views/scene.js +150 -2
  207. data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +92 -50
  208. data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +86 -63
  209. data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +38 -22
  210. data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +51 -12
  211. data/frameworks/sproutcore/frameworks/desktop/views/slider.js +2 -0
  212. data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +17 -1087
  213. data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +3 -3
  214. data/frameworks/sproutcore/frameworks/desktop/views/split.js +35 -9
  215. data/frameworks/sproutcore/frameworks/desktop/views/stacked.js +101 -0
  216. data/frameworks/sproutcore/frameworks/desktop/views/tab.js +23 -22
  217. data/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +1 -1
  218. data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +382 -363
  219. data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +7 -279
  220. data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +212 -310
  221. data/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +109 -0
  222. data/frameworks/sproutcore/frameworks/foundation/core.js +25 -0
  223. data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +30 -8
  224. data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +19 -4
  225. data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +219 -3
  226. data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +1 -0
  227. data/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +30 -0
  228. data/frameworks/sproutcore/frameworks/foundation/english.lproj/strings.js +15 -0
  229. data/frameworks/sproutcore/frameworks/{desktop → foundation}/english.lproj/text_field.css +19 -3
  230. data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +6 -1
  231. data/frameworks/sproutcore/frameworks/foundation/license.js +19 -0
  232. data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +15 -7
  233. data/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +171 -0
  234. data/frameworks/sproutcore/frameworks/foundation/mixins/control.js +5 -5
  235. data/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +462 -0
  236. data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +162 -84
  237. data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +33 -2
  238. data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +17 -3
  239. data/frameworks/sproutcore/frameworks/foundation/mixins/tree_item_content.js +159 -0
  240. data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +49 -20
  241. data/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +887 -0
  242. data/frameworks/sproutcore/frameworks/foundation/system/application.js +36 -0
  243. data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +310 -62
  244. data/frameworks/sproutcore/frameworks/foundation/system/datetime.js +729 -0
  245. data/frameworks/sproutcore/frameworks/foundation/system/event.js +57 -21
  246. data/frameworks/sproutcore/frameworks/foundation/system/ready.js +11 -5
  247. data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +55 -16
  248. data/frameworks/sproutcore/frameworks/foundation/system/request.js +152 -27
  249. data/frameworks/sproutcore/frameworks/foundation/system/responder.js +120 -0
  250. data/frameworks/sproutcore/frameworks/foundation/system/responder_context.js +243 -0
  251. data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +29 -6
  252. data/frameworks/sproutcore/frameworks/foundation/system/routes.js +143 -102
  253. data/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +9 -2
  254. data/frameworks/sproutcore/frameworks/foundation/system/utils.js +104 -9
  255. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/array_case.js +182 -0
  256. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/enum_case.js +193 -0
  257. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/null_case.js +64 -0
  258. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/single_case.js +136 -0
  259. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/empty_case.js +82 -0
  260. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/multiple_case.js +111 -0
  261. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_case.js +193 -0
  262. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_enumerable_case.js +179 -0
  263. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/outline_case.js +108 -0
  264. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/keyEquivalents.js +35 -0
  265. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +128 -0
  266. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/string.js +17 -0
  267. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/flat_case.js +325 -0
  268. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js +718 -0
  269. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/outline_case.js +484 -0
  270. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +28 -28
  271. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +1 -1
  272. data/frameworks/sproutcore/frameworks/foundation/tests/system/datetime.js +151 -0
  273. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +2 -2
  274. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +1 -1
  275. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +1 -1
  276. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +12 -12
  277. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +1 -1
  278. data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +52 -14
  279. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +27 -23
  280. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +1 -1
  281. data/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +12 -10
  282. data/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +148 -0
  283. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +1 -1
  284. data/frameworks/sproutcore/frameworks/{desktop → foundation}/tests/views/text_field/methods.js +0 -0
  285. data/frameworks/sproutcore/frameworks/{desktop → foundation}/tests/views/text_field/ui.js +53 -1
  286. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +1 -0
  287. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +1 -1
  288. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +35 -0
  289. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +1 -1
  290. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisible.js +51 -0
  291. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +12 -1
  292. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +83 -3
  293. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +1 -1
  294. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +4 -0
  295. data/frameworks/sproutcore/frameworks/foundation/views/container.js +1 -1
  296. data/frameworks/sproutcore/frameworks/foundation/views/field.js +27 -16
  297. data/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -1
  298. data/frameworks/sproutcore/frameworks/foundation/views/label.js +16 -6
  299. data/frameworks/sproutcore/frameworks/{desktop → foundation}/views/text_field.js +39 -15
  300. data/frameworks/sproutcore/frameworks/foundation/views/view.js +328 -83
  301. data/frameworks/sproutcore/frameworks/runtime/README +1 -0
  302. data/frameworks/sproutcore/frameworks/runtime/core.js +110 -31
  303. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +238 -0
  304. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/indexOf.js +33 -0
  305. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/insertAt.js +121 -0
  306. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/objectAt.js +34 -0
  307. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/popObject.js +50 -0
  308. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/pushObject.js +46 -0
  309. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/rangeObserver.js +371 -0
  310. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeAt.js +100 -0
  311. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeObject.js +49 -0
  312. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +94 -0
  313. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/shiftObject.js +50 -0
  314. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/unshiftObject.js +47 -0
  315. data/frameworks/sproutcore/frameworks/runtime/mixins/array.js +320 -110
  316. data/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +64 -0
  317. data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +44 -6
  318. data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +142 -77
  319. data/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +104 -0
  320. data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +298 -142
  321. data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +17 -11
  322. data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +55 -15
  323. data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +29 -5
  324. data/frameworks/sproutcore/frameworks/runtime/protocols/observable_protocol.js +40 -0
  325. data/frameworks/sproutcore/frameworks/runtime/system/binding.js +39 -15
  326. data/frameworks/sproutcore/frameworks/runtime/system/index_set.js +1166 -0
  327. data/frameworks/sproutcore/frameworks/runtime/system/object.js +33 -15
  328. data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +201 -35
  329. data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +42 -15
  330. data/frameworks/sproutcore/frameworks/runtime/system/selection_set.js +649 -0
  331. data/frameworks/sproutcore/frameworks/runtime/system/set.js +183 -54
  332. data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +20 -11
  333. data/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +2 -2
  334. data/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +44 -0
  335. data/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +16 -0
  336. data/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +1 -1
  337. data/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +1 -1
  338. data/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +5 -5
  339. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +57 -0
  340. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +21 -2
  341. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +249 -129
  342. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +11 -2
  343. data/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +55 -0
  344. data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +81 -6
  345. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +195 -0
  346. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/clone.js +43 -0
  347. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/contains.js +74 -0
  348. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/create.js +42 -0
  349. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexAfter.js +38 -0
  350. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexBefore.js +38 -0
  351. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/intersects.js +74 -0
  352. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/max.js +40 -0
  353. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/min.js +40 -0
  354. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +36 -0
  355. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +189 -0
  356. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/without.js +89 -0
  357. data/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +1 -1
  358. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +59 -0
  359. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/destroy.js +75 -0
  360. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/objectPropertyDidChange.js +117 -0
  361. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/rangeDidChange.js +110 -0
  362. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/update.js +65 -0
  363. data/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +3 -3
  364. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/add.js +92 -0
  365. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/copy.js +17 -0
  366. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/indexSetForSource.js +85 -0
  367. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/isEqual.js +60 -0
  368. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/remove.js +87 -0
  369. data/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +4 -25
  370. data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +39 -1
  371. data/frameworks/sproutcore/frameworks/testing/core.js +183 -0
  372. data/frameworks/sproutcore/frameworks/testing/english.lproj/runner.css +126 -0
  373. data/frameworks/sproutcore/frameworks/testing/extras.js +0 -26
  374. data/frameworks/sproutcore/frameworks/testing/qunit.js +33 -25
  375. data/frameworks/sproutcore/frameworks/testing/system/dump.js +205 -0
  376. data/frameworks/sproutcore/frameworks/testing/system/equiv.js +201 -0
  377. data/frameworks/sproutcore/frameworks/testing/system/plan.js +691 -0
  378. data/frameworks/sproutcore/frameworks/testing/system/runner.js +209 -0
  379. data/frameworks/sproutcore/frameworks/testing/system/suite.js +228 -0
  380. data/frameworks/sproutcore/frameworks/testing/utils.js +8 -1
  381. data/frameworks/sproutcore/lib/index.rhtml +4 -1
  382. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/10.png +0 -0
  383. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/100.png +0 -0
  384. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/102.png +0 -0
  385. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/110.png +0 -0
  386. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/120.png +0 -0
  387. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/127.png +0 -0
  388. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/18.png +0 -0
  389. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/19.png +0 -0
  390. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/2.png +0 -0
  391. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/24.png +0 -0
  392. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/26.png +0 -0
  393. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/27.png +0 -0
  394. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/28.png +0 -0
  395. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/29.png +0 -0
  396. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/30.png +0 -0
  397. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/31.png +0 -0
  398. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/33.png +0 -0
  399. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/37.png +0 -0
  400. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/41.png +0 -0
  401. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/99.png +0 -0
  402. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/10.png +0 -0
  403. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/100.png +0 -0
  404. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/102.png +0 -0
  405. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/110.png +0 -0
  406. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/120.png +0 -0
  407. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/127.png +0 -0
  408. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/18.png +0 -0
  409. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/19.png +0 -0
  410. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/2.png +0 -0
  411. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/24.png +0 -0
  412. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/26.png +0 -0
  413. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/27.png +0 -0
  414. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/28.png +0 -0
  415. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/29.png +0 -0
  416. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/30.png +0 -0
  417. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/31.png +0 -0
  418. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/33.png +0 -0
  419. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/37.png +0 -0
  420. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/41.png +0 -0
  421. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/99.png +0 -0
  422. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/10.png +0 -0
  423. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/100.png +0 -0
  424. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/102.png +0 -0
  425. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/110.png +0 -0
  426. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/120.png +0 -0
  427. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/127.png +0 -0
  428. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/18.png +0 -0
  429. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/19.png +0 -0
  430. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/2.png +0 -0
  431. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/24.png +0 -0
  432. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/26.png +0 -0
  433. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/27.png +0 -0
  434. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/28.png +0 -0
  435. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/29.png +0 -0
  436. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/30.png +0 -0
  437. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/31.png +0 -0
  438. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/33.png +0 -0
  439. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/37.png +0 -0
  440. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/41.png +0 -0
  441. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/99.png +0 -0
  442. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/10.png +0 -0
  443. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/18.png +0 -0
  444. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/19.png +0 -0
  445. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/2.png +0 -0
  446. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x-2.psd +0 -0
  447. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x.psd +0 -0
  448. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-sprite.psd +0 -0
  449. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-ysprite.psd +0 -0
  450. data/frameworks/sproutcore/themes/standard_theme/Source/shared-icons.psd +0 -0
  451. data/frameworks/sproutcore/themes/standard_theme/Source/sproutcore-logo.psd +0 -0
  452. data/frameworks/sproutcore/themes/standard_theme/Source/sticky-note.psd +0 -0
  453. data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +191 -193
  454. data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +11 -10
  455. data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +85 -4
  456. data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +15 -2
  457. data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-repeat-x.png +0 -0
  458. data/frameworks/sproutcore/themes/standard_theme/english.lproj/label.css +0 -26
  459. data/frameworks/sproutcore/themes/standard_theme/english.lproj/list_item.css +30 -0
  460. data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +9 -6
  461. data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +20 -11
  462. data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +192 -54
  463. data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +56 -24
  464. data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +13 -7
  465. data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +1 -4
  466. data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +4 -1
  467. data/lib/sproutcore/builders/minify.rb +2 -2
  468. data/lib/sproutcore/builders/test.rb +1 -1
  469. data/lib/sproutcore/buildfile.rb +1 -0
  470. data/lib/sproutcore/rack/dev.rb +1 -1
  471. data/lib/sproutcore/rack/filesystem.rb +265 -0
  472. data/lib/sproutcore/rack/proxy.rb +11 -3
  473. data/lib/sproutcore/rack/service.rb +11 -1
  474. data/lib/sproutcore/tools.rb +11 -1
  475. data/lib/sproutcore/tools/server.rb +6 -4
  476. data/vendor/jsdoc/README.txt +151 -0
  477. data/vendor/jsdoc/changes.txt +47 -0
  478. metadata +263 -308
  479. data/frameworks/sproutcore/apps/sc_jsdoc/controllers/docs.js +0 -149
  480. data/frameworks/sproutcore/apps/sc_jsdoc/core.js +0 -16
  481. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.css +0 -17
  482. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.js +0 -99
  483. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/images/sproutcore-logo.png +0 -0
  484. data/frameworks/sproutcore/apps/sc_jsdoc/main.js +0 -27
  485. data/frameworks/sproutcore/apps/sc_jsdoc/models/doc.js +0 -21
  486. data/frameworks/sproutcore/apps/sc_qunit/controllers/runner.js +0 -209
  487. data/frameworks/sproutcore/apps/sc_qunit/core.js +0 -16
  488. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.css +0 -17
  489. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.js +0 -107
  490. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/images/sproutcore-logo.png +0 -0
  491. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/strings.js +0 -15
  492. data/frameworks/sproutcore/apps/sc_qunit/main.js +0 -18
  493. data/frameworks/sproutcore/apps/sc_qunit/models/test.js +0 -24
  494. data/frameworks/sproutcore/apps/sc_qunit/views/test_iframe.js +0 -52
  495. data/frameworks/sproutcore/apps/tests/controllers/test.js +0 -20
  496. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/blank.gif +0 -0
  497. data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +0 -83
  498. data/frameworks/sproutcore/frameworks/desktop/english.lproj/palette.css +0 -3
  499. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/methods.js +0 -10
  500. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/methods.js +0 -10
  501. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui.js +0 -110
  502. data/frameworks/sproutcore/frameworks/foundation/mixins/responder.js +0 -156
  503. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array.js +0 -118
  504. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/controller.js +0 -268
  505. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object.js +0 -433
  506. data/frameworks/sproutcore/frameworks/runtime/tests/system/array.js +0 -263
  507. data/frameworks/sproutcore/frameworks/testing/tests/debug/qunit.js +0 -25
  508. data/spec/buildtasks/manifest/spec_helper.rb +0 -35
  509. data/spec/buildtasks/target_spec.rb +0 -214
  510. data/spec/fixtures/builder_tests/Buildfile +0 -15
  511. data/spec/fixtures/builder_tests/apps/combine_test/a.js +0 -1
  512. data/spec/fixtures/builder_tests/apps/combine_test/b.js +0 -1
  513. data/spec/fixtures/builder_tests/apps/combine_test/c.js +0 -1
  514. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/a.css +0 -1
  515. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/b.css +0 -1
  516. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/c.css +0 -1
  517. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/bar1_sample.rhtml +0 -2
  518. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/erb_sample.html.erb +0 -1
  519. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/icons/image.png +0 -0
  520. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/image.jpg +0 -0
  521. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/rhtml_sample.rhtml +0 -1
  522. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/strings.js +0 -4
  523. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/style.css +0 -0
  524. data/spec/fixtures/builder_tests/apps/html_test/french.lproj/french-icons/fr.png +0 -0
  525. data/spec/fixtures/builder_tests/apps/html_test/french.lproj/strings.js +0 -4
  526. data/spec/fixtures/builder_tests/apps/html_test/lib/layout_template.rhtml +0 -1
  527. data/spec/fixtures/builder_tests/apps/html_test/scripts.js +0 -0
  528. data/spec/fixtures/builder_tests/apps/javascript_test/sc_static.js +0 -15
  529. data/spec/fixtures/builder_tests/apps/javascript_test/sc_super.js +0 -4
  530. data/spec/fixtures/builder_tests/apps/javascript_test/strings.js +0 -7
  531. data/spec/fixtures/builder_tests/apps/sass_test/sample.sass +0 -3
  532. data/spec/fixtures/builder_tests/apps/strings_test/lproj/strings.js +0 -8
  533. data/spec/fixtures/builder_tests/apps/stylesheet_test/build_directives.css +0 -9
  534. data/spec/fixtures/builder_tests/apps/stylesheet_test/sc_static.css +0 -12
  535. data/spec/fixtures/builder_tests/apps/test_test/lib/alt_layout.rhtml +0 -1
  536. data/spec/fixtures/builder_tests/apps/test_test/lib/test_layout.rhtml +0 -3
  537. data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test.js +0 -1
  538. data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test2.js +0 -1
  539. data/spec/fixtures/builder_tests/apps/test_test/tests/rhtml_test.rhtml +0 -4
  540. data/spec/fixtures/builder_tests/frameworks/debug/core.js +0 -0
  541. data/spec/fixtures/builder_tests/frameworks/debug/english.lproj/dummy.css +0 -0
  542. data/spec/fixtures/builder_tests/frameworks/qunit/core.js +0 -0
  543. data/spec/fixtures/builder_tests/frameworks/qunit/english.lproj/dummy.css +0 -0
  544. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/req_style_1.css +0 -0
  545. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/strings.js +0 -4
  546. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/test.rhtml +0 -1
  547. data/spec/fixtures/builder_tests/frameworks/req_target_1/req_js_1.js +0 -0
  548. data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/req_style_2.css +0 -0
  549. data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/test.rhtml +0 -1
  550. data/spec/fixtures/builder_tests/frameworks/req_target_2/javascript.js +0 -1
  551. data/spec/fixtures/builder_tests/frameworks/req_target_2/lib/alt_layout.rhtml +0 -0
  552. data/spec/fixtures/builder_tests/frameworks/req_target_2/req_js_2.js +0 -0
  553. data/spec/fixtures/builder_tests/themes/sample_theme/Buildfile +0 -1
  554. data/spec/fixtures/buildfiles/basic/Buildfile +0 -16
  555. data/spec/fixtures/buildfiles/basic/task_module.rake +0 -6
  556. data/spec/fixtures/buildfiles/installed/Buildfile +0 -7
  557. data/spec/fixtures/buildfiles/installed/Buildfile2 +0 -5
  558. data/spec/fixtures/buildfiles/project_test/Buildfile +0 -4
  559. data/spec/fixtures/buildfiles/project_test/not_project/Buildfile +0 -2
  560. data/spec/fixtures/buildfiles/project_test/not_project/child/PLACEHOLDER +0 -0
  561. data/spec/fixtures/entry_for_project/Buildfile +0 -1
  562. data/spec/fixtures/entry_for_project/apps/test_app/frameworks/nested/PLACEHOLDER +0 -0
  563. data/spec/fixtures/entry_for_project/frameworks/shared/PLACEHOLDER +0 -0
  564. data/spec/fixtures/find_targets/custom/Buildfile +0 -8
  565. data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar1/PLACEHOLDER +0 -0
  566. data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar2/PLACEHOLDER +0 -0
  567. data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo1/PLACEHOLDER +0 -0
  568. data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo2/PLACEHOLDER +0 -0
  569. data/spec/fixtures/find_targets/custom/foos/custom_foos/Buildfile +0 -5
  570. data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo1/PLACEHOLDER +0 -0
  571. data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo2/PLACEHOLDER +0 -0
  572. data/spec/fixtures/find_targets/custom/foos/custom_foos/foos/not_foo1/PLACEHOLDER +0 -0
  573. data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar1/PLACEHOLDER +0 -0
  574. data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar2/PLACEHOLDER +0 -0
  575. data/spec/fixtures/find_targets/nested/Buildfile +0 -8
  576. data/spec/fixtures/find_targets/nested/apps/app1/Buildfile +0 -1
  577. data/spec/fixtures/find_targets/nested/apps/app1/apps/nested_app/PLACEHOLDER +0 -0
  578. data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework1/PLACEHOLDER +0 -0
  579. data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework2/PLACEHOLDER +0 -0
  580. data/spec/fixtures/find_targets/standard/clients/client1/PLACEHOLDER +0 -0
  581. data/spec/fixtures/find_targets/standard/frameworks/framework1/frameworks/framework1/PLACEHOLDER +0 -0
  582. data/spec/fixtures/find_targets/standard/frameworks/framework2/PLACEHOLDER +0 -0
  583. data/spec/fixtures/find_targets/standard/themes/theme1/PLACEHOLDER +0 -0
  584. data/spec/fixtures/find_targets/standard/themes/theme2/PLACEHOLDER +0 -0
  585. data/spec/fixtures/languages/apps/caps_long_names/English.lproj/PLACEHOLDER +0 -0
  586. data/spec/fixtures/languages/apps/caps_long_names/FreNCH.lproj/PLACEHOLDER +0 -0
  587. data/spec/fixtures/languages/apps/caps_long_names/UnknOWN.lproj/PLACEHOLDER +0 -0
  588. data/spec/fixtures/languages/apps/long_names/english.lproj/PLACEHOLDER +0 -0
  589. data/spec/fixtures/languages/apps/long_names/french.lproj/PLACEHOLDER +0 -0
  590. data/spec/fixtures/languages/apps/long_names/german.lproj/PLACEHOLDER +0 -0
  591. data/spec/fixtures/languages/apps/long_names/italian.lproj/PLACEHOLDER +0 -0
  592. data/spec/fixtures/languages/apps/long_names/japanese.lproj/PLACEHOLDER +0 -0
  593. data/spec/fixtures/languages/apps/long_names/spanish.lproj/PLACEHOLDER +0 -0
  594. data/spec/fixtures/languages/apps/long_names/unknown.lproj/PLACEHOLDER +0 -0
  595. data/spec/fixtures/languages/apps/no_names/PLACEHOLDER +0 -0
  596. data/spec/fixtures/languages/apps/short_names/de.lproj/PLACEHOLDER +0 -0
  597. data/spec/fixtures/languages/apps/short_names/en-CA.lproj/PLACEHOLDER +0 -0
  598. data/spec/fixtures/languages/apps/short_names/en-GB.lproj/PLACEHOLDER +0 -0
  599. data/spec/fixtures/languages/apps/short_names/en-US.lproj/PLACEHOLDER +0 -0
  600. data/spec/fixtures/languages/apps/short_names/en.lproj/PLACEHOLDER +0 -0
  601. data/spec/fixtures/languages/apps/short_names/es.lproj/PLACEHOLDER +0 -0
  602. data/spec/fixtures/languages/apps/short_names/foo.lproj/PLACEHOLDER +0 -0
  603. data/spec/fixtures/languages/apps/short_names/fr.lproj/PLACEHOLDER +0 -0
  604. data/spec/fixtures/languages/apps/short_names/it.lproj/PLACEHOLDER +0 -0
  605. data/spec/fixtures/languages/apps/short_names/ja.lproj/PLACEHOLDER +0 -0
  606. data/spec/fixtures/ordered_entries/apps/no_requires/1.js +0 -1
  607. data/spec/fixtures/ordered_entries/apps/no_requires/B.js +0 -1
  608. data/spec/fixtures/ordered_entries/apps/no_requires/a.js +0 -1
  609. data/spec/fixtures/ordered_entries/apps/no_requires/a/a.js +0 -1
  610. data/spec/fixtures/ordered_entries/apps/no_requires/a/b.js +0 -1
  611. data/spec/fixtures/ordered_entries/apps/no_requires/b/a.js +0 -1
  612. data/spec/fixtures/ordered_entries/apps/no_requires/c.js +0 -1
  613. data/spec/fixtures/ordered_entries/apps/no_requires/core.js +0 -1
  614. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/B.css +0 -0
  615. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a.css +0 -0
  616. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/a.css +0 -0
  617. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/b.css +0 -0
  618. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/b/a.css +0 -0
  619. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/c.css +0 -0
  620. data/spec/fixtures/ordered_entries/apps/no_requires/lproj/strings.js +0 -1
  621. data/spec/fixtures/ordered_entries/apps/no_requires/utils.js +0 -1
  622. data/spec/fixtures/ordered_entries/apps/with_requires/a.js +0 -2
  623. data/spec/fixtures/ordered_entries/apps/with_requires/b.js +0 -3
  624. data/spec/fixtures/ordered_entries/apps/with_requires/c.js +0 -2
  625. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/a.css +0 -2
  626. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/b.css +0 -2
  627. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/c.css +0 -2
  628. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/d.js +0 -1
  629. data/spec/fixtures/real_world/Buildfile +0 -12
  630. data/spec/fixtures/real_world/apps/account/README +0 -1
  631. data/spec/fixtures/real_world/apps/calendar/README +0 -1
  632. data/spec/fixtures/real_world/apps/contacts/README_BEFORE_EDITING +0 -1
  633. data/spec/fixtures/real_world/apps/files/README +0 -1
  634. data/spec/fixtures/real_world/apps/mail/README +0 -1
  635. data/spec/fixtures/real_world/apps/mobile_photos/README +0 -1
  636. data/spec/fixtures/real_world/apps/photos/README +0 -1
  637. data/spec/fixtures/real_world/apps/uploader/README +0 -1
  638. data/spec/fixtures/real_world/frameworks/core_files/PLACEHOLDER +0 -0
  639. data/spec/fixtures/real_world/frameworks/core_photos/PLACEHOLDER +0 -0
  640. data/spec/fixtures/real_world/frameworks/shared/PLACEHOLDER +0 -0
  641. data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +0 -26
  642. data/spec/fixtures/real_world/frameworks/sproutcore/README +0 -1
  643. data/spec/fixtures/real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER +0 -0
  644. data/spec/fixtures/real_world/frameworks/sproutcore/apps/test_runner/PLACEHOLDER +0 -0
  645. data/spec/fixtures/real_world/frameworks/sproutcore/core.js +0 -0
  646. data/spec/fixtures/real_world/frameworks/sproutcore/debug/debug-resource.html +0 -0
  647. data/spec/fixtures/real_world/frameworks/sproutcore/debug/sample_debug.js +0 -0
  648. data/spec/fixtures/real_world/frameworks/sproutcore/demo2.js +0 -0
  649. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/debug/sample_debug-loc.js +0 -0
  650. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.css +0 -4
  651. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.html +0 -1
  652. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo2.sass +0 -0
  653. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.haml +0 -0
  654. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.html.erb +0 -1
  655. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.rhtml +0 -0
  656. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/fixtures/sample_fixtures-loc.js +0 -0
  657. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/has_require.css +0 -4
  658. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_require.css +0 -1
  659. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_sc_resource.rhtml +0 -1
  660. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/protocols/sample-loc.js +0 -0
  661. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.css +0 -6
  662. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.rhtml +0 -3
  663. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/strings.js +0 -1
  664. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/tests/sample-loc.js +0 -0
  665. data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample-json-fixture.json +0 -1
  666. data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample_fixtures.js +0 -0
  667. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/application/PLACEHOLDER +0 -0
  668. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/costello/core.js +0 -0
  669. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/data_store/PLACEHOLDER +0 -0
  670. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/debug/PLACEHOLDER +0 -0
  671. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/desktop/PLACEHOLDER +0 -0
  672. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/empty_theme/PLACEHOLDER +0 -0
  673. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/foundation/PLACEHOLDER +0 -0
  674. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/mobile/PLACEHOLDER +0 -0
  675. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/qunit/PLACEHOLDER +0 -0
  676. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/uploader/PLACEHOLDER +0 -0
  677. data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/french-resource.js +0 -0
  678. data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/strings.js +0 -1
  679. data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/german-resource.js +0 -0
  680. data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/strings.js +0 -0
  681. data/spec/fixtures/real_world/frameworks/sproutcore/has_require.js +0 -4
  682. data/spec/fixtures/real_world/frameworks/sproutcore/lib/index.html +0 -1
  683. data/spec/fixtures/real_world/frameworks/sproutcore/no_require.js +0 -1
  684. data/spec/fixtures/real_world/frameworks/sproutcore/protocols/sample.js +0 -0
  685. data/spec/fixtures/real_world/frameworks/sproutcore/sc_resource.js +0 -6
  686. data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample1.js +0 -0
  687. data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample2.js +0 -0
  688. data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.js +0 -0
  689. data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.rhtml +0 -1
  690. data/spec/fixtures/real_world/frameworks/sproutcore/themes/standard_theme/README +0 -0
  691. data/spec/fixtures/real_world/frameworks/sproutcore/views/view.js +0 -1
  692. data/spec/fixtures/real_world/generators/sample_custom/Buildfile +0 -0
  693. data/spec/fixtures/real_world/generators/sample_custom/templates/{filename}.js +0 -1
  694. data/spec/fixtures/recursive_project/Buildfile +0 -8
  695. data/spec/fixtures/recursive_project/frameworks/sproutcore/frameworks/costello/PLACEHOLDER +0 -0
  696. data/spec/lib/builders/combine_spec.rb +0 -67
  697. data/spec/lib/builders/html_spec.rb +0 -577
  698. data/spec/lib/builders/javascript_spec.rb +0 -81
  699. data/spec/lib/builders/sass_spec.rb +0 -43
  700. data/spec/lib/builders/spec_helper.rb +0 -30
  701. data/spec/lib/builders/strings_spec.rb +0 -52
  702. data/spec/lib/builders/stylesheet_spec.rb +0 -63
  703. data/spec/lib/builders/test_index_spec.rb +0 -44
  704. data/spec/lib/builders/test_spec.rb +0 -135
  705. data/spec/lib/buildfile/config_for_spec.rb +0 -81
  706. data/spec/lib/buildfile/define_spec.rb +0 -59
  707. data/spec/lib/buildfile/dup_spec.rb +0 -65
  708. data/spec/lib/buildfile/invoke_spec.rb +0 -130
  709. data/spec/lib/buildfile/load_spec.rb +0 -49
  710. data/spec/lib/buildfile/task/dup_spec.rb +0 -55
  711. data/spec/lib/buildfile/task_defined_spec.rb +0 -17
  712. data/spec/lib/buildfile_commands/build_task_spec.rb +0 -19
  713. data/spec/lib/buildfile_commands/config_spec.rb +0 -97
  714. data/spec/lib/buildfile_commands/import_spec.rb +0 -17
  715. data/spec/lib/buildfile_commands/namespace_spec.rb +0 -18
  716. data/spec/lib/buildfile_commands/proxies_spec.rb +0 -38
  717. data/spec/lib/buildfile_commands/replace_task_spec.rb +0 -29
  718. data/spec/lib/buildfile_commands/task_spec.rb +0 -36
  719. data/spec/lib/helpers/packing_optimizer/optimize_spec.rb +0 -26
  720. data/spec/lib/models/hash_struct/deep_clone_spec.rb +0 -27
  721. data/spec/lib/models/hash_struct/has_options_spec.rb +0 -32
  722. data/spec/lib/models/hash_struct/hash_spec.rb +0 -64
  723. data/spec/lib/models/hash_struct/merge_spec.rb +0 -26
  724. data/spec/lib/models/hash_struct/method_missing.rb +0 -41
  725. data/spec/lib/models/manifest/add_entry_spec.rb +0 -36
  726. data/spec/lib/models/manifest/add_transform_spec.rb +0 -90
  727. data/spec/lib/models/manifest/build_spec.rb +0 -78
  728. data/spec/lib/models/manifest/entry_for_spec.rb +0 -94
  729. data/spec/lib/models/manifest/find_entry.rb +0 -84
  730. data/spec/lib/models/manifest/prepare_spec.rb +0 -62
  731. data/spec/lib/models/manifest_entry/cacheable_url_spec.rb +0 -31
  732. data/spec/lib/models/manifest_entry/prepare_spec.rb +0 -54
  733. data/spec/lib/models/project/add_target_spec.rb +0 -44
  734. data/spec/lib/models/project/buildfile_spec.rb +0 -35
  735. data/spec/lib/models/project/find_targets_for_spec.rb +0 -77
  736. data/spec/lib/models/project/load_nearest_project_spec.rb +0 -23
  737. data/spec/lib/models/project/target_for_spec.rb +0 -33
  738. data/spec/lib/models/project/targets_spec.rb +0 -62
  739. data/spec/lib/models/target/compute_build_number_spec.rb +0 -125
  740. data/spec/lib/models/target/config_spec.rb +0 -30
  741. data/spec/lib/models/target/expand_required_targets_spec.rb +0 -48
  742. data/spec/lib/models/target/installed_languages_spec.rb +0 -47
  743. data/spec/lib/models/target/lproj_for_spec.rb +0 -38
  744. data/spec/lib/models/target/manifest_for_spec.rb +0 -42
  745. data/spec/lib/models/target/parent_target_spec.rb +0 -21
  746. data/spec/lib/models/target/prepare_spec.rb +0 -53
  747. data/spec/lib/models/target/required_targets_spec.rb +0 -119
  748. data/spec/lib/models/target/target_for_spec.rb +0 -56
  749. data/spec/lib/tools/build_number_spec.rb +0 -28
  750. data/spec/lib/tools/gen_spec.rb +0 -207
  751. data/spec/lib/tools/tools_spec.rb +0 -78
  752. data/spec/spec_helper.rb +0 -138
  753. data/vendor/github_gem_lint.rb +0 -22
  754. data/vendor/yui-compressor/yuicompressor-2.4.2.jar +0 -0
@@ -0,0 +1,120 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
4
+ // Portions ©2008-2009 Apple, Inc. All rights reserved.
5
+ // License: Licened under MIT license (see license.js)
6
+ // ==========================================================================
7
+
8
+ /** @class
9
+
10
+ Provides common methods for sending events down a responder chain.
11
+ Responder chains are used most often to deliver events to user interface
12
+ elements in your application, but you can also use them to deliver generic
13
+ events to any part of your application, including controllers.
14
+
15
+ @extends SC.Object
16
+ @since SproutCore 1.0
17
+ */
18
+ SC.Responder = SC.Object.extend( /** SC.Responder.prototype */ {
19
+
20
+ isResponder: YES,
21
+
22
+ /** @property
23
+ The pane this responder belongs to. This is used to determine where you
24
+ belong to in the responder chain. Normally you should leave this property
25
+ set to null.
26
+ */
27
+ pane: null,
28
+
29
+ /** @property
30
+ The app this responder belongs to. For non-user-interface responder
31
+ chains, this is used to determine the context. Usually this
32
+ is the property you will want to work with.
33
+ */
34
+ responderContext: null,
35
+
36
+ /** @property
37
+ This is the nextResponder in the responder chain. If the receiver does
38
+ not implement a particular event handler, it will bubble to the next
39
+ responder.
40
+
41
+ This can point to an object directly or it can be a string, in which case
42
+ the path will be resolved from the responderContext root.
43
+ */
44
+ nextResponder: null,
45
+
46
+ /** @property
47
+ YES if the view is currently first responder. This property is always
48
+ edited by the pane during its makeFirstResponder() method.
49
+ */
50
+ isFirstResponder: NO,
51
+
52
+ /** @property
53
+
54
+ YES the responder is somewhere in the responder chain. This currently
55
+ only works when used with a ResponderContext.
56
+
57
+ @type {Boolean}
58
+ */
59
+ hasFirstResponder: NO,
60
+
61
+ /** @property
62
+ Set to YES if your view is willing to accept first responder status. This is used when calculcating key responder loop.
63
+ */
64
+ acceptsFirstResponder: YES,
65
+
66
+ /**
67
+ Call this method on your view or responder to make it become first
68
+ responder.
69
+
70
+ @returns {SC.Responder} receiver
71
+ */
72
+ becomeFirstResponder: function() {
73
+ var pane = this.get('pane') || this.get('responderContext');
74
+ if (pane && this.get('acceptsFirstResponder')) {
75
+ if (pane.get('firstResponder') !== this) pane.makeFirstResponder(this);
76
+ }
77
+ return this ;
78
+ },
79
+
80
+ /**
81
+ Call this method on your view or responder to resign your first responder
82
+ status. Normally this is not necessary since you will lose first responder
83
+ status automatically when another view becomes first responder.
84
+
85
+ @returns {SC.Responder} receiver
86
+ */
87
+ resignFirstResponder: function() {
88
+ var pane = this.get('pane') || this.get('responderContext');
89
+ if (pane && (pane.get('firstResponder') === this)) {
90
+ pane.makeFirstResponder(null);
91
+ }
92
+ return YES;
93
+ },
94
+
95
+ /**
96
+ Called just before the responder or any of its subresponder's are about to
97
+ lose their first responder status. The passed responder is the responder
98
+ that is about to lose its status.
99
+
100
+ Override this method to provide any standard teardown when the first
101
+ responder changes.
102
+
103
+ @param {SC.Responder} responder the responder that is about to change
104
+ @returns {void}
105
+ */
106
+ willLoseFirstResponder: function(responder) {},
107
+
108
+ /**
109
+ Called just after the responder or any of its subresponder's becomes a
110
+ first responder.
111
+
112
+ Override this method to provide any standard setup when the first
113
+ responder changes.
114
+
115
+ @param {SC.Responder} responder the responder that changed
116
+ @returns {void}
117
+ */
118
+ didBecomeFirstResponder: function(responder) {}
119
+
120
+ });
@@ -0,0 +1,243 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
4
+ // Portions ©2008-2009 Apple, Inc. All rights reserved.
5
+ // License: Licened under MIT license (see license.js)
6
+ // ==========================================================================
7
+
8
+ sc_require('system/responder');
9
+
10
+ /** @class
11
+
12
+ The root object for a responder chain. A responder context can dispatch
13
+ actions directly to a first responder; walking up the responder chain until
14
+ it finds a responder that can handle the action.
15
+
16
+ If no responder can be found to handle the action, it will attempt to send
17
+ the action to the defaultResponder.
18
+
19
+ You can have as many ResponderContext's as you want within your application.
20
+ Every SC.Pane and SC.Application automatically implements this mixin.
21
+
22
+ Note that to implement this you must be a responder yourself.
23
+
24
+ @extends SC.Responder
25
+ @since SproutCore 1.0
26
+ */
27
+ SC.ResponderContext = SC.Responder.extend({
28
+
29
+ // ..........................................................
30
+ // PROPERTIES
31
+ //
32
+
33
+ isResponderContext: YES,
34
+
35
+ /** @property
36
+
37
+ When set to YES, logs tracing information about all actions sent and
38
+ responder changes.
39
+ */
40
+ trace: NO,
41
+
42
+ /** @property
43
+ The default responder. Set this to point to a responder object that can
44
+ respond to events when no other view in the hierarchy handles them.
45
+
46
+ You can also implement actions directly on the application object if you
47
+ prefer.
48
+ */
49
+ defaultResponder: null,
50
+
51
+ /** @property
52
+ The next responder for an app is always its defaultResponder.
53
+ */
54
+ nextResponder: function() {
55
+ return this.get('defaultResponder');
56
+ }.property('defaultResponder').cacheable(),
57
+
58
+ /** @property
59
+ The first responder. This is the first responder that should receive
60
+ actions.
61
+ */
62
+ firstResponder: null,
63
+
64
+ // ..........................................................
65
+ // METHODS
66
+ //
67
+
68
+ /**
69
+ Finds the next responder for the passed responder based on the responder's
70
+ nextResponder property. If the property is a string, then lookup the path
71
+ in the receiver.
72
+ */
73
+ nextResponderFor: function(responder) {
74
+ var next = responder.get('nextResponder');
75
+ if (typeof next === SC.T_STRING) {
76
+ next = SC.objectForPropertyPath(next, this);
77
+ } else if (!next && (responder !== this)) next = this ;
78
+ return next ;
79
+ },
80
+
81
+ /**
82
+ Finds the responder name by searching the responders one time.
83
+ */
84
+ responderNameFor: function(responder) {
85
+ if (!responder) return "(No Responder)";
86
+ else if (responder._scrc_name) return responder._scrc_name;
87
+
88
+ // none found, let's go hunting...look three levels deep
89
+ var n = this.NAMESPACE;
90
+ this._findResponderNamesFor(this, 3, n ? [this.NAMESPACE] : []);
91
+
92
+ return responder._scrc_name || responder.toString(); // try again
93
+ },
94
+
95
+ _findResponderNamesFor: function(responder, level, path) {
96
+ var key, value;
97
+
98
+ for(key in responder) {
99
+ if (key === 'nextResponder') continue ;
100
+ value = responder[key];
101
+ if (value && value.isResponder) {
102
+ if (value._scrc_name) continue ;
103
+ path.push(key);
104
+ value._scrc_name = path.join('.');
105
+ if (level>0) this._findResponderNamesFor(value, level-1, path);
106
+ path.pop();
107
+ }
108
+ }
109
+ },
110
+
111
+ /**
112
+ Makes the passed responder into the new firstResponder for this
113
+ responder context. This will cause the current first responder to lose
114
+ its responder status and possibly keyResponder status as well.
115
+
116
+ When you change the first responder, this will send callbacks to
117
+ responders up the chain until you reach a shared responder, at which point
118
+ it will stop notifying.
119
+
120
+ @param {SC.Responder} responder
121
+ @returns {SC.ResponderContext} receiver
122
+ */
123
+ makeFirstResponder: function(responder) {
124
+ var current = this.get('firstResponder'),
125
+ last = this.get('nextResponder'),
126
+ trace = this.get('trace'),
127
+ common ;
128
+
129
+ if (this._locked) {
130
+ if (trace) {
131
+ console.log('%@: AFTER ACTION: makeFirstResponder => %@'.fmt(this, this.responderNameFor(responder)));
132
+ }
133
+
134
+ this._pendingResponder = responder;
135
+ return ;
136
+ }
137
+
138
+ if (trace) {
139
+ console.log('%@: makeFirstResponder => %@'.fmt(this, this.responderNameFor(responder)));
140
+ }
141
+
142
+ this._locked = YES;
143
+ this._pendingResponder = null;
144
+
145
+ // Find the nearest common responder in the responder chain for the new
146
+ // responder. If there are no common responders, use last responder.
147
+ common = responder ? this.nextResponderFor(responder) : null;
148
+ while (common) {
149
+ if (common.get('hasFirstResponder')) break;
150
+ common = (common===last) ? null : this.nextResponderFor(common);
151
+ }
152
+ if (!common) common = last;
153
+
154
+ // Cleanup old first responder
155
+ this._notifyWillLoseFirstResponder(current, current, common);
156
+ if (current) current.set('isFirstResponder', NO);
157
+
158
+ // Set new first responder. If new firstResponder does not have its
159
+ // responderContext property set, then set it.
160
+ this.set('firstResponder', responder) ;
161
+ if (responder) responder.set('isFirstResponder', YES);
162
+
163
+ this._notifyDidBecomeFirstResponder(responder, responder, common);
164
+
165
+ this._locked = NO ;
166
+ if (responder = this._pendingResponder) {
167
+ this._pendingResponder= null ;
168
+ this.makeFirstResponder(this._pendingResponder);
169
+ }
170
+
171
+ return this ;
172
+ },
173
+
174
+ _notifyWillLoseFirstResponder: function(responder, cur, root) {
175
+ if (cur === root) return ; // nothing to do
176
+
177
+ cur.willLoseFirstResponder(responder);
178
+ cur.set('hasFirstResponder', NO);
179
+
180
+ var next = this.nextResponderFor(cur);
181
+ if (next) this._notifyWillLoseFirstResponder(responder, next, root);
182
+ },
183
+
184
+ _notifyDidBecomeFirstResponder: function(responder, cur, root) {
185
+ if (cur === root) return ; // nothing to do
186
+
187
+ var next = this.nextResponderFor(cur);
188
+ if (next) this._notifyDidBecomeFirstResponder(responder, next, root);
189
+
190
+ cur.set('hasFirstResponder', YES);
191
+ cur.didBecomeFirstResponder(responder);
192
+ },
193
+
194
+ /**
195
+ Send the passed action down the responder chain, starting with the
196
+ current first responder. This will look for the first responder that
197
+ actually implements the action method and returns YES or no value when
198
+ called.
199
+
200
+ @param {String} action name of action
201
+ @param {Object} sender object sending the action
202
+ @param {Object} context optional additonal context info
203
+ @returns {SC.Responder} the responder that handled it or null
204
+ */
205
+ sendAction: function(action, sender, context) {
206
+ var working = this.get('firstResponder'),
207
+ last = this.get('nextResponder'),
208
+ trace = this.get('trace'),
209
+ handled = NO,
210
+ responder;
211
+
212
+ this._locked = YES;
213
+ if (trace) {
214
+ console.log("%@: begin action '%@' (%@, %@)".fmt(this, action, sender, context));
215
+ }
216
+
217
+ while (!handled && working) {
218
+ if (working.tryToPerform) {
219
+ handled = working.tryToPerform(action, sender, context);
220
+ }
221
+
222
+ if (!handled) {
223
+ working = (working===last) ? null : this.nextResponderFor(working);
224
+ }
225
+ }
226
+
227
+ if (trace) {
228
+ if (!handled) console.log("%@: action '%@' NOT HANDLED".fmt(this,action));
229
+ else console.log("%@: action '%@' handled by %@".fmt(this, action, this.responderNameFor(working)));
230
+ }
231
+
232
+ this._locked = NO ;
233
+
234
+ if (responder = this._pendingResponder) {
235
+ this._pendingResponder= null ;
236
+ this.makeFirstResponder(responder);
237
+ }
238
+
239
+
240
+ return working ;
241
+ }
242
+
243
+ });
@@ -177,28 +177,51 @@ SC.RootResponder = SC.Object.extend({
177
177
  the action name you pass to this method. Set 'tagret' to null to search
178
178
  the responder chain.
179
179
 
180
+ IMPORTANT: This method's API and implementation will likely change
181
+ significantly after SproutCore 1.0 to match the version found in
182
+ SC.ResponderContext.
183
+
184
+ You generally should not call or override this method in your own
185
+ applications.
186
+
180
187
  @param {String} action The action to perform - this is a method name.
181
188
  @param {SC.Responder} target object to set method to (can be null)
182
189
  @param {Object} sender The sender of the action
183
190
  @param {SC.Pane} pane optional pane to start search with
191
+ @param {Object} context optional. only passed to ResponderContexts
184
192
  @returns {Boolean} YES if action was performed, NO otherwise
185
193
  @test in targetForAction
186
194
  */
187
- sendAction: function( action, target, sender, pane) {
195
+ sendAction: function( action, target, sender, pane, context) {
188
196
  target = this.targetForAction(action, target, sender, pane) ;
189
- return target && target.tryToPerform(action, sender) ;
197
+
198
+ // HACK: If the target is a ResponderContext, forward the action.
199
+ if (target && target.isResponderContext) {
200
+ return !!target.sendAction(action, sender, context);
201
+ } else return target && target.tryToPerform(action, sender);
190
202
  },
191
203
 
192
204
  _responderFor: function(target, methodName) {
205
+ var defaultResponder = target ? target.get('defaultResponder') : null;
206
+
193
207
  if (target) {
194
- target = target.get('firstResponder') ||
195
- target.get('defaultResponder') ||
196
- target ;
208
+ target = target.get('firstResponder') || target;
197
209
  do {
198
210
  if (target.respondsTo(methodName)) return target ;
199
211
  } while (target = target.get('nextResponder')) ;
200
212
  }
201
- return null ;
213
+
214
+ // HACK: Eventually we need to normalize the sendAction() method between
215
+ // this and the ResponderContext, but for the moment just look for a
216
+ // ResponderContext as the defaultResponder and return it if present.
217
+ if (typeof defaultResponder === SC.T_STRING) {
218
+ defaultResponder = SC.objectForPropertyPath(defaultResponder);
219
+ }
220
+
221
+ if (!defaultResponder) return null;
222
+ else if (defaultResponder.isResponderContext) return defaultResponder;
223
+ else if (defaultResponder.respondsTo(methodName)) return defaultResponder;
224
+ else return null;
202
225
  },
203
226
 
204
227
  /**
@@ -9,7 +9,7 @@
9
9
  @class
10
10
 
11
11
  Routes makes it possible to load a location in the browser.
12
-
12
+
13
13
  This is useful when application need to change state depending upon the URL
14
14
  change. Applications can support deep-linking using routes, which means user
15
15
  can type specific URL to see certain state of the app e.g.
@@ -36,11 +36,11 @@
36
36
  the location.
37
37
 
38
38
  h2. Example
39
-
39
+
40
40
  {{{
41
41
  SC.routes.add(':', RoutesDemo, 'routeHandler');
42
42
  }}}
43
-
43
+
44
44
  This route would match any URL change. Whatever comes after # would get
45
45
  passed as parameter. RouteDemo is the object that contains method
46
46
  'routeHandler'.
@@ -56,8 +56,9 @@
56
56
  @extends SC.Object
57
57
  @since SproutCore 1.0
58
58
  */
59
- SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
60
-
59
+ SC.routes = SC.Object.create(
60
+ /** @scope SC.routes.prototype */ {
61
+
61
62
  // set this property to your current app lication
62
63
  location: function(key,value) {
63
64
  if (value !== undefined) {
@@ -65,18 +66,18 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
65
66
 
66
67
  // convert an object hash to a string, if it was passed.
67
68
  if (typeof(value) == "object") {
68
-
69
+
69
70
  // get the original route and any params
70
- var parts = (value.route) ? value.route.split('&') : [''] ;
71
+ var parts = value.route ? value.route.split('&') : [''] ;
71
72
  var route = parts.shift() ;
72
73
  var params = {} ;
73
74
  parts.forEach(function(p) {
74
75
  var bits = p.split('=') ;
75
76
  params[bits[0]] = bits[1] ;
76
77
  }) ;
77
-
78
+
78
79
  // overlay any params passed in the object.
79
- for(var key in value) {
80
+ for(key in value) {
80
81
  if (!value.hasOwnProperty(key)) continue ;
81
82
  if (key != 'route') {
82
83
  params[key] = encodeURIComponent(''+value[key]) ;
@@ -85,7 +86,7 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
85
86
 
86
87
  // now build params.
87
88
  parts = [route] ;
88
- for(var key in params) {
89
+ for(key in params) {
89
90
  if (!params.hasOwnProperty(key)) continue ;
90
91
  parts.push([key,params[key]].join('=')) ;
91
92
  }
@@ -103,7 +104,9 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
103
104
  return this._location ;
104
105
  }.property(),
105
106
 
106
- // ensures we are at the current route location.
107
+ /**
108
+ Ensures we are at the current route location.
109
+ */
107
110
  ping: function() {
108
111
  if (!this._didSetupHistory) {
109
112
  this._didSetupHistory = true ;
@@ -112,38 +115,49 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
112
115
  this._checkWindowLocation();
113
116
  },
114
117
 
115
- // register a route here. Routes have the following format:
116
- // static/route/path -- matches this path only.
117
- // static/route/:path -- matches any static/route, :path passed as param.
118
- // static/*route -- matches any static, route gets rest of URL.
119
- //
120
- // parameters can also be passed using &.
121
- // static/route&param1=value&param2=value2
122
-
118
+ /**
119
+ Register a route here. Routes have the following format:
120
+
121
+ static/route/path -- matches this path only.
122
+ static/route/:path -- matches any static/route, :path passed as param.
123
+ static/ *route -- matches any static, route gets rest of URL.
124
+
125
+ parameters can also be passed using &.
126
+ static/route&param1=value&param2=value2
127
+
128
+ @param {string} route
129
+ @param {Object} target
130
+ @param {Function or String} method or method name on target
131
+ @returns {SC.routes} receiver
132
+ */
123
133
  add: function(route, target, method) {
124
- // normalize the target/method
125
- if (SC.typeOf(target) === SC.T_FUNCTION) {
126
- method = target; target = null ;
127
- } else if (SC.typeOf(method) === SC.T_STRING) {
128
- method = target[method] ;
129
- }
130
-
134
+ // normalize the target/method
135
+ if (method===undefined && SC.typeOf(target) === SC.T_FUNCTION) {
136
+ method = target; target = null ;
137
+ } else if (SC.typeOf(method) === SC.T_STRING) {
138
+ method = target[method] ;
139
+ }
140
+
131
141
  var parts = route.split('/') ;
132
- if (!this._routes) this._routes = SC.Routes._Route.create() ;
142
+ if (!this._routes) this._routes = SC.routes._Route.create() ;
133
143
  this._routes.addRoute(parts, target, method) ;
134
- return this;
144
+ return this;
135
145
  },
136
-
137
146
 
138
- // eval routes.
147
+ /**
148
+ Eval routes.
149
+
150
+ @param {String} route
151
+ */
139
152
  gotoRoute: function(route) {
140
- var params = {} ; var parts, route, routeHandler, target, method ;
141
-
153
+ var params = {},
154
+ parts, routeHandler, target, method ;
155
+
142
156
  // save this route for window location sensing
143
157
  this._lastRoute = route ;
144
158
 
145
159
  // step 1: split out parameters
146
- var parts = route.split('&') ;
160
+ parts = route.split('&') ;
147
161
  if (parts && parts.length > 0) {
148
162
  route = parts.shift() ;
149
163
  parts.forEach(function(part) {
@@ -156,20 +170,19 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
156
170
  parts = route.split('/') ;
157
171
 
158
172
  // step 3: evaluate route.
159
- if (!this._routes) this._routes = SC.Routes._Route.create() ;
160
-
173
+ if (!this._routes) this._routes = SC.routes._Route.create() ;
174
+
161
175
  routeHandler = this._routes.functionForRoute(parts,params) ;
162
176
 
163
177
  if (routeHandler) {
164
- target = routeHandler._target;
165
- method = routeHandler._method;
166
- method.call(target, params);
167
- }
168
-
169
- //else console.log('could not find route for: "'+route+'"') ;
178
+ target = routeHandler._target;
179
+ method = routeHandler._method;
180
+ method.call(target, params);
181
+ }
182
+ //else console.log('could not find route for: "'+route+'"') ;
170
183
  },
171
184
 
172
-
185
+ /** @private */
173
186
  init: function() {
174
187
  arguments.callee.base.call(this) ;
175
188
  if (SC.browser.isSafari && !(SC.browser.safari >= 3)) {
@@ -180,28 +193,42 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
180
193
  this._didSetupHistory = false ;
181
194
  },
182
195
 
183
- // _checkWindowLocation and _setWindowLocation are implemented separately for
184
- // each browser. Below are the implementations, which get copied during init.
196
+ // use this method instead of invokeLater() to check windowLocation since
197
+ // we don't want to trigger runLoops.
198
+ invokeCheckWindowLocation: function(after) {
199
+ var f = this.__checkWindowLocation, that = this;
200
+ if (!f) {
201
+ f = this.__checkWindowLocation = function() {
202
+ that._checkWindowLocation();
203
+ };
204
+ }
205
+ setTimeout(f, after);
206
+ },
207
+
208
+ /** @private
209
+ _checkWindowLocation and _setWindowLocation are implemented separately for
210
+ each browser. Below are the implementations, which get copied during init.
211
+ */
185
212
  browserFuncs: {
186
213
 
187
214
  // for Safari2 and earlier.
188
215
  safari: {
189
-
216
+
190
217
  _setupHistory: function() {
191
218
  // get initial cloc.
192
219
  var cloc = location.hash ;
193
220
  cloc = (cloc && cloc.length > 0) ? cloc.slice(1,cloc.length) : '' ;
194
221
  this._cloc = cloc ;
195
-
222
+
196
223
  // create back stack.
197
224
  this._backStack = [] ;
198
225
  this._backStack.length = history.length ;
199
226
  this._backStack.push(cloc) ;
200
-
227
+
201
228
  // create forward stack.
202
229
  this._forwardStack = [] ;
203
-
204
- this.invokeLater(this._checkWindowLocation, 1000) ;
230
+
231
+ this.invokeCheckWindowLocation(1000) ;
205
232
  },
206
233
 
207
234
  _checkWindowLocation: function() {
@@ -211,10 +238,10 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
211
238
  // takes a little while for Safari to catch up. So what we do instead
212
239
  // is first check to see if Safari's length has changed from its last
213
240
  // known length and only then check for a delta.
214
- var historyDidChange = (history.length - this._lastLength) != 0;
241
+ var historyDidChange = (history.length - this._lastLength) !== 0;
215
242
  var delta = (historyDidChange) ? (history.length - this._backStack.length) : 0 ;
216
243
  this._lastLength = history.length ;
217
-
244
+
218
245
  if (historyDidChange) console.log('historyDidChange') ;
219
246
 
220
247
  // if the history length has changed, then we need to move forward or
@@ -239,13 +266,13 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
239
266
  // shift out the current loc.
240
267
  this._backStack.push(this._cloc) ;
241
268
 
242
- for(var i=0; i < (delta-1); i++) {
269
+ for(i=0; i < (delta-1); i++) {
243
270
  this._backStack.push(this._forwardStack.pop()) ;
244
271
  }
245
272
 
246
273
  this._cloc = this._forwardStack.pop() ;
247
274
  }
248
-
275
+
249
276
  // if the history has changed but the delta hasn't, then that means
250
277
  // a new location was set via _setWindowLocation(). Normally we would
251
278
  // call gotoRoute in that method, but doing so will crash Safari.
@@ -255,7 +282,7 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
255
282
  this.gotoRoute(this._cloc) ;
256
283
  this._locationDidChange = false ;
257
284
  }
258
-
285
+
259
286
  var cloc = this._cloc ;
260
287
  var loc = this.get('location') ;
261
288
  if (cloc != loc) {
@@ -263,10 +290,10 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
263
290
  this.gotoRoute(cloc) ;
264
291
  }
265
292
 
266
- this.invokeLater(this._checkWindowLocation, 50) ;
293
+ this.invokeCheckWindowLocation(50) ;
267
294
  },
268
-
269
- _setWindowLocation: function(loc) {
295
+
296
+ _setWindowLocation: function(loc) {
270
297
  var cloc = this._cloc ;
271
298
  if (cloc != loc) {
272
299
  this._backStack.push(this._cloc) ;
@@ -275,24 +302,24 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
275
302
  location.hash = (loc && loc.length > 0) ? loc : '' ;
276
303
  this._locationDidChange = true ;
277
304
  }
278
- }
305
+ }
279
306
 
280
307
  },
281
308
 
282
309
  // for IE.
283
310
  ie: {
284
311
  _setupHistory: function() {
285
- this.invokeLater(this._checkWindowLocation, 1000) ;
312
+ this.invokeCheckWindowLocation(1000) ;
286
313
  },
287
-
314
+
288
315
  _checkWindowLocation: function() {
289
316
  var loc = this.get('location') ;
290
317
  var cloc = location.hash ;
291
318
  cloc = (cloc && cloc.length > 0) ? cloc.slice(1,cloc.length) : '' ;
292
319
  if (cloc != loc) this.set('location',(cloc) ? cloc : '') ;
293
- this.invokeLater(this._checkWindowLocation, 100) ;
320
+ this.invokeCheckWindowLocation(100) ;
294
321
  },
295
-
322
+
296
323
  _setWindowLocation: function(loc) {
297
324
  //console.log('_setWindowLocation('+loc+')') ;
298
325
  var cloc = location.hash ;
@@ -305,23 +332,27 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
305
332
  }
306
333
  },
307
334
 
335
+ /** @private */
308
336
  _setupHistory: function() {
309
337
  var that = this ;
310
- this._checkWindowLocation.invokeLater(this, 1000) ;
338
+ this.invokeCheckWindowLocation(1000) ;
311
339
  },
312
340
 
341
+ /** @private */
313
342
  _checkWindowLocation: function() {
314
343
  var loc = this.get('location') ;
315
344
  var cloc = location.hash ;
316
345
  cloc = (cloc && cloc.length > 0) ? cloc.slice(1,cloc.length) : '' ;
317
346
  if (cloc != loc) {
318
- SC.RunLoop.begin();
319
- this.set('location',(cloc) ? cloc : '') ;
320
- SC.RunLoop.end();
321
- }
322
- // this.invokeLater(this._checkWindowLocation, 100) ;
347
+ SC.RunLoop.begin();
348
+ this.set('location',(cloc) ? cloc : '') ;
349
+ SC.RunLoop.end();
350
+ }
351
+
352
+ this.invokeCheckWindowLocation(150) ;
323
353
  },
324
354
 
355
+ /** @private */
325
356
  _setWindowLocation: function(loc) {
326
357
  //console.log('_setWindowLocation('+loc+')') ;
327
358
  var cloc = location.hash ;
@@ -332,16 +363,17 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
332
363
  this.gotoRoute(loc) ;
333
364
  },
334
365
 
366
+ /** @private */
335
367
  _routes: null,
336
368
 
337
- // This object handles a single route level.
369
+ /** @private This object handles a single route level. */
338
370
  _Route: SC.Object.extend({
339
371
 
340
372
  // route handler class.
341
- _target: null,
342
-
343
- // route handler
344
- _method: null,
373
+ _target: null,
374
+
375
+ // route handler
376
+ _method: null,
345
377
 
346
378
  // staticly named routes.
347
379
  _static: null,
@@ -353,11 +385,11 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
353
385
  _wildcard: null,
354
386
 
355
387
  addRoute: function(parts, target, method) {
356
-
357
- if (!parts || parts.length == 0) {
358
- this._target = target;
359
- this._method = method;
360
-
388
+
389
+ if (!parts || parts.length === 0) {
390
+ this._target = target;
391
+ this._method = method;
392
+
361
393
  // add to route table.
362
394
  } else {
363
395
  var part = parts.shift() ; // get next route.
@@ -368,7 +400,7 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
368
400
  case ':':
369
401
  part = part.slice(1,part.length) ;
370
402
  var routes = this._dynamic[part] || [] ;
371
- nextRoute = SC.Routes._Route.create() ;
403
+ nextRoute = SC.routes._Route.create() ;
372
404
  routes.push(nextRoute) ;
373
405
  this._dynamic[part] = routes ;
374
406
  break ;
@@ -377,14 +409,14 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
377
409
  case '*':
378
410
  part = part.slice(1,part.length) ;
379
411
  this._wildcard = part ;
380
- this._target = target;
381
- this._method = method;
412
+ this._target = target;
413
+ this._method = method;
382
414
  break ;
383
415
 
384
416
  // setup a normal static route.
385
417
  default:
386
- var routes = this._static[part] || [] ;
387
- nextRoute = SC.Routes._Route.create() ;
418
+ routes = this._static[part] || [] ;
419
+ nextRoute = SC.routes._Route.create() ;
388
420
  routes.push(nextRoute) ;
389
421
  this._static[part] = routes ;
390
422
  }
@@ -396,41 +428,50 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
396
428
 
397
429
  // process the next level of the route and pass on.
398
430
  functionForRoute: function(parts, params) {
399
-
431
+
400
432
  // if parts it empty, then we are here, so return func
401
- if (!parts || parts.length == 0) {
402
- return this ;
433
+ if (!parts || parts.length === 0) {
434
+ return this ;
403
435
 
404
436
  // process the next part
405
437
  } else {
406
- var part = parts.shift() ;
407
- var routes, nextRoute, ret, loc ;
438
+ var part = parts.shift(),
439
+ ret = null,
440
+ routes, nextRoute, loc ;
408
441
 
409
442
  // try to match to static
410
443
  routes = this._static[part] ;
411
- if (routes) for(loc=0;(loc < routes.length) && (ret==null);loc++) {
412
- var clone = parts.slice() ;
413
- ret = routes[loc].functionForRoute(clone, params) ;
444
+ if (routes) {
445
+ for(loc=0;(loc < routes.length) && (ret===null);loc++) {
446
+ var clone = parts.slice() ;
447
+ ret = routes[loc].functionForRoute(clone, params) ;
448
+ }
414
449
  }
415
450
 
416
451
  // try to match dynamic if no static match was found.
417
- if (ret == null) for(var key in this._dynamic) {
418
- routes = this._dynamic[key] ;
419
- if (routes) for(loc=0;(loc<routes.length) && (ret == null);loc++) {
420
- var clone = parts.slice() ;
421
- ret = routes[loc].functionForRoute(clone,params) ;
452
+ if (ret === null) {
453
+ for(var key in this._dynamic) {
454
+ routes = this._dynamic[key] ;
455
+ if (routes) {
456
+ for(loc=0;(loc<routes.length) && (ret === null);loc++) {
457
+ clone = parts.slice() ;
458
+ ret = routes[loc].functionForRoute(clone,params) ;
422
459
 
423
- // if a route was found, save the current part in params.
424
- if (ret && params) params[key] = part ;
460
+ // if a route was found, save the current part in params.
461
+ if (ret && params) params[key] = part ;
462
+ }
463
+ }
464
+
465
+ if (ret) break ;
425
466
  }
426
- if (ret) break ;
427
467
  }
428
468
 
469
+
429
470
  // if nothing still found, and there is a wildcard, match that.
430
- if ((ret == null) && this._wildcard) {
471
+ if ((ret === null) && this._wildcard) {
431
472
  parts.unshift(part) ;
432
473
  if (params) params[this._wildcard] = parts.join('/') ;
433
- ret = this;
474
+ ret = this;
434
475
  }
435
476
 
436
477
  return ret ;
@@ -443,4 +484,4 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
443
484
  }
444
485
  })
445
486
 
446
- }) ;
487
+ });