sproutit-sproutcore 1.0.203 → 1.0.20090721145236

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 (933) hide show
  1. data/Rakefile +54 -189
  2. data/VERSION +1 -0
  3. data/lib/sproutcore/tools/build.rb +1 -1
  4. data/lib/sproutcore.rb +1 -9
  5. data/spec/buildtasks/build/copy_spec.rb +60 -0
  6. data/spec/buildtasks/build/spec_helper.rb +36 -0
  7. data/spec/buildtasks/manifest/catalog_spec.rb +48 -0
  8. data/spec/buildtasks/manifest/hide_buildfiles_spec.rb +125 -0
  9. data/spec/buildtasks/manifest/localize_spec.rb +97 -0
  10. data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +246 -0
  11. data/spec/buildtasks/manifest/prepare_build_tasks/css_spec.rb +87 -0
  12. data/spec/buildtasks/manifest/prepare_build_tasks/html_spec.rb +175 -0
  13. data/spec/buildtasks/manifest/prepare_build_tasks/javascript_spec.rb +65 -0
  14. data/spec/buildtasks/manifest/prepare_build_tasks/minify_spec.rb +70 -0
  15. data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +152 -0
  16. data/spec/buildtasks/manifest/prepare_build_tasks/sass_spec.rb +98 -0
  17. data/spec/buildtasks/manifest/prepare_build_tasks/strings_spec.rb +64 -0
  18. data/spec/buildtasks/manifest/prepare_build_tasks/tests_spec.rb +163 -0
  19. data/spec/buildtasks/manifest/prepare_spec.rb +43 -0
  20. data/spec/buildtasks/manifest/spec_helper.rb +35 -0
  21. data/spec/buildtasks/target_spec.rb +214 -0
  22. data/spec/fixtures/builder_tests/Buildfile +15 -0
  23. data/spec/fixtures/builder_tests/apps/combine_test/a.js +1 -0
  24. data/spec/fixtures/builder_tests/apps/combine_test/b.js +1 -0
  25. data/spec/fixtures/builder_tests/apps/combine_test/c.js +1 -0
  26. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/a.css +1 -0
  27. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/b.css +1 -0
  28. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/c.css +1 -0
  29. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/bar1_sample.rhtml +2 -0
  30. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/erb_sample.html.erb +1 -0
  31. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/icons/image.png +0 -0
  32. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/image.jpg +0 -0
  33. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/rhtml_sample.rhtml +1 -0
  34. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/strings.js +4 -0
  35. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/style.css +0 -0
  36. data/spec/fixtures/builder_tests/apps/html_test/french.lproj/french-icons/fr.png +0 -0
  37. data/spec/fixtures/builder_tests/apps/html_test/french.lproj/strings.js +4 -0
  38. data/spec/fixtures/builder_tests/apps/html_test/lib/layout_template.rhtml +1 -0
  39. data/spec/fixtures/builder_tests/apps/html_test/scripts.js +0 -0
  40. data/spec/fixtures/builder_tests/apps/javascript_test/sc_static.js +15 -0
  41. data/spec/fixtures/builder_tests/apps/javascript_test/sc_super.js +4 -0
  42. data/spec/fixtures/builder_tests/apps/javascript_test/strings.js +7 -0
  43. data/spec/fixtures/builder_tests/apps/sass_test/sample.sass +3 -0
  44. data/spec/fixtures/builder_tests/apps/strings_test/lproj/strings.js +8 -0
  45. data/spec/fixtures/builder_tests/apps/stylesheet_test/build_directives.css +9 -0
  46. data/spec/fixtures/builder_tests/apps/stylesheet_test/sc_static.css +12 -0
  47. data/spec/fixtures/builder_tests/apps/test_test/lib/alt_layout.rhtml +1 -0
  48. data/spec/fixtures/builder_tests/apps/test_test/lib/test_layout.rhtml +3 -0
  49. data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test.js +1 -0
  50. data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test2.js +1 -0
  51. data/spec/fixtures/builder_tests/apps/test_test/tests/rhtml_test.rhtml +4 -0
  52. data/spec/fixtures/builder_tests/frameworks/debug/core.js +0 -0
  53. data/spec/fixtures/builder_tests/frameworks/debug/english.lproj/dummy.css +0 -0
  54. data/spec/fixtures/builder_tests/frameworks/qunit/core.js +0 -0
  55. data/spec/fixtures/builder_tests/frameworks/qunit/english.lproj/dummy.css +0 -0
  56. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/req_style_1.css +0 -0
  57. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/strings.js +4 -0
  58. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/test.rhtml +1 -0
  59. data/spec/fixtures/builder_tests/frameworks/req_target_1/req_js_1.js +0 -0
  60. data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/req_style_2.css +0 -0
  61. data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/test.rhtml +1 -0
  62. data/spec/fixtures/builder_tests/frameworks/req_target_2/javascript.js +1 -0
  63. data/spec/fixtures/builder_tests/frameworks/req_target_2/lib/alt_layout.rhtml +0 -0
  64. data/spec/fixtures/builder_tests/frameworks/req_target_2/req_js_2.js +0 -0
  65. data/spec/fixtures/builder_tests/themes/sample_theme/Buildfile +1 -0
  66. data/spec/fixtures/buildfiles/basic/Buildfile +16 -0
  67. data/spec/fixtures/buildfiles/basic/task_module.rake +6 -0
  68. data/spec/fixtures/buildfiles/installed/Buildfile +7 -0
  69. data/spec/fixtures/buildfiles/installed/Buildfile2 +5 -0
  70. data/spec/fixtures/buildfiles/project_test/Buildfile +4 -0
  71. data/spec/fixtures/buildfiles/project_test/not_project/Buildfile +2 -0
  72. data/spec/fixtures/buildfiles/project_test/not_project/child/PLACEHOLDER +0 -0
  73. data/spec/fixtures/entry_for_project/Buildfile +1 -0
  74. data/spec/fixtures/entry_for_project/apps/test_app/entry.txt +0 -0
  75. data/spec/fixtures/entry_for_project/apps/test_app/frameworks/nested/PLACEHOLDER +0 -0
  76. data/spec/fixtures/entry_for_project/frameworks/shared/PLACEHOLDER +0 -0
  77. data/spec/fixtures/find_targets/custom/Buildfile +8 -0
  78. data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar1/PLACEHOLDER +0 -0
  79. data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar2/PLACEHOLDER +0 -0
  80. data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo1/PLACEHOLDER +0 -0
  81. data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo2/PLACEHOLDER +0 -0
  82. data/spec/fixtures/find_targets/custom/foos/custom_foos/Buildfile +5 -0
  83. data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo1/PLACEHOLDER +0 -0
  84. data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo2/PLACEHOLDER +0 -0
  85. data/spec/fixtures/find_targets/custom/foos/custom_foos/foos/not_foo1/PLACEHOLDER +0 -0
  86. data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar1/PLACEHOLDER +0 -0
  87. data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar2/PLACEHOLDER +0 -0
  88. data/spec/fixtures/find_targets/nested/Buildfile +8 -0
  89. data/spec/fixtures/find_targets/nested/apps/app1/Buildfile +1 -0
  90. data/spec/fixtures/find_targets/nested/apps/app1/apps/nested_app/PLACEHOLDER +0 -0
  91. data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework1/PLACEHOLDER +0 -0
  92. data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework2/PLACEHOLDER +0 -0
  93. data/spec/fixtures/find_targets/standard/clients/client1/PLACEHOLDER +0 -0
  94. data/spec/fixtures/find_targets/standard/frameworks/framework1/frameworks/framework1/PLACEHOLDER +0 -0
  95. data/spec/fixtures/find_targets/standard/frameworks/framework2/PLACEHOLDER +0 -0
  96. data/spec/fixtures/find_targets/standard/themes/theme1/PLACEHOLDER +0 -0
  97. data/spec/fixtures/find_targets/standard/themes/theme2/PLACEHOLDER +0 -0
  98. data/spec/fixtures/languages/apps/caps_long_names/English.lproj/PLACEHOLDER +0 -0
  99. data/spec/fixtures/languages/apps/caps_long_names/FreNCH.lproj/PLACEHOLDER +0 -0
  100. data/spec/fixtures/languages/apps/caps_long_names/UnknOWN.lproj/PLACEHOLDER +0 -0
  101. data/spec/fixtures/languages/apps/long_names/english.lproj/PLACEHOLDER +0 -0
  102. data/spec/fixtures/languages/apps/long_names/french.lproj/PLACEHOLDER +0 -0
  103. data/spec/fixtures/languages/apps/long_names/german.lproj/PLACEHOLDER +0 -0
  104. data/spec/fixtures/languages/apps/long_names/italian.lproj/PLACEHOLDER +0 -0
  105. data/spec/fixtures/languages/apps/long_names/japanese.lproj/PLACEHOLDER +0 -0
  106. data/spec/fixtures/languages/apps/long_names/spanish.lproj/PLACEHOLDER +0 -0
  107. data/spec/fixtures/languages/apps/long_names/unknown.lproj/PLACEHOLDER +0 -0
  108. data/spec/fixtures/languages/apps/no_names/PLACEHOLDER +0 -0
  109. data/spec/fixtures/languages/apps/short_names/de.lproj/PLACEHOLDER +0 -0
  110. data/spec/fixtures/languages/apps/short_names/en-CA.lproj/PLACEHOLDER +0 -0
  111. data/spec/fixtures/languages/apps/short_names/en-GB.lproj/PLACEHOLDER +0 -0
  112. data/spec/fixtures/languages/apps/short_names/en-US.lproj/PLACEHOLDER +0 -0
  113. data/spec/fixtures/languages/apps/short_names/en.lproj/PLACEHOLDER +0 -0
  114. data/spec/fixtures/languages/apps/short_names/es.lproj/PLACEHOLDER +0 -0
  115. data/spec/fixtures/languages/apps/short_names/foo.lproj/PLACEHOLDER +0 -0
  116. data/spec/fixtures/languages/apps/short_names/fr.lproj/PLACEHOLDER +0 -0
  117. data/spec/fixtures/languages/apps/short_names/it.lproj/PLACEHOLDER +0 -0
  118. data/spec/fixtures/languages/apps/short_names/ja.lproj/PLACEHOLDER +0 -0
  119. data/spec/fixtures/ordered_entries/apps/no_requires/1.js +1 -0
  120. data/spec/fixtures/ordered_entries/apps/no_requires/B.js +1 -0
  121. data/spec/fixtures/ordered_entries/apps/no_requires/a/a.js +1 -0
  122. data/spec/fixtures/ordered_entries/apps/no_requires/a/b.js +1 -0
  123. data/spec/fixtures/ordered_entries/apps/no_requires/a.js +1 -0
  124. data/spec/fixtures/ordered_entries/apps/no_requires/b/a.js +1 -0
  125. data/spec/fixtures/ordered_entries/apps/no_requires/c.js +1 -0
  126. data/spec/fixtures/ordered_entries/apps/no_requires/core.js +1 -0
  127. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/B.css +0 -0
  128. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/a.css +0 -0
  129. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/b.css +0 -0
  130. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a.css +0 -0
  131. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/b/a.css +0 -0
  132. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/c.css +0 -0
  133. data/spec/fixtures/ordered_entries/apps/no_requires/lproj/strings.js +1 -0
  134. data/spec/fixtures/ordered_entries/apps/no_requires/utils.js +1 -0
  135. data/spec/fixtures/ordered_entries/apps/with_requires/a.js +2 -0
  136. data/spec/fixtures/ordered_entries/apps/with_requires/b.js +3 -0
  137. data/spec/fixtures/ordered_entries/apps/with_requires/c.js +2 -0
  138. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/a.css +2 -0
  139. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/b.css +2 -0
  140. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/c.css +2 -0
  141. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/d.js +1 -0
  142. data/spec/fixtures/real_world/Buildfile +12 -0
  143. data/spec/fixtures/real_world/apps/account/README +1 -0
  144. data/spec/fixtures/real_world/apps/calendar/README +1 -0
  145. data/spec/fixtures/real_world/apps/contacts/README_BEFORE_EDITING +1 -0
  146. data/spec/fixtures/real_world/apps/files/README +1 -0
  147. data/spec/fixtures/real_world/apps/mail/README +1 -0
  148. data/spec/fixtures/real_world/apps/mobile_photos/README +1 -0
  149. data/spec/fixtures/real_world/apps/photos/README +1 -0
  150. data/spec/fixtures/real_world/apps/uploader/README +1 -0
  151. data/spec/fixtures/real_world/frameworks/core_files/PLACEHOLDER +0 -0
  152. data/spec/fixtures/real_world/frameworks/core_photos/PLACEHOLDER +0 -0
  153. data/spec/fixtures/real_world/frameworks/shared/PLACEHOLDER +0 -0
  154. data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +26 -0
  155. data/spec/fixtures/real_world/frameworks/sproutcore/README +1 -0
  156. data/spec/fixtures/real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER +0 -0
  157. data/spec/fixtures/real_world/frameworks/sproutcore/apps/test_runner/PLACEHOLDER +0 -0
  158. data/spec/fixtures/real_world/frameworks/sproutcore/core.js +0 -0
  159. data/spec/fixtures/real_world/frameworks/sproutcore/debug/debug-resource.html +0 -0
  160. data/spec/fixtures/real_world/frameworks/sproutcore/debug/sample_debug.js +0 -0
  161. data/spec/fixtures/real_world/frameworks/sproutcore/demo2.js +0 -0
  162. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/debug/sample_debug-loc.js +0 -0
  163. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.css +4 -0
  164. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.html +1 -0
  165. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo2.sass +0 -0
  166. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.haml +0 -0
  167. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.html.erb +1 -0
  168. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.rhtml +0 -0
  169. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/fixtures/sample_fixtures-loc.js +0 -0
  170. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/has_require.css +4 -0
  171. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_require.css +1 -0
  172. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_sc_resource.rhtml +1 -0
  173. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/protocols/sample-loc.js +0 -0
  174. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.css +6 -0
  175. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.rhtml +3 -0
  176. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/strings.js +1 -0
  177. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/tests/sample-loc.js +0 -0
  178. data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample-json-fixture.json +1 -0
  179. data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample_fixtures.js +0 -0
  180. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/application/PLACEHOLDER +0 -0
  181. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/costello/core.js +0 -0
  182. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/data_store/PLACEHOLDER +0 -0
  183. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/debug/PLACEHOLDER +0 -0
  184. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/desktop/PLACEHOLDER +0 -0
  185. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/empty_theme/PLACEHOLDER +0 -0
  186. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/foundation/PLACEHOLDER +0 -0
  187. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/mobile/PLACEHOLDER +0 -0
  188. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/qunit/PLACEHOLDER +0 -0
  189. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/uploader/PLACEHOLDER +0 -0
  190. data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/french-resource.js +0 -0
  191. data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/strings.js +1 -0
  192. data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/german-resource.js +0 -0
  193. data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/strings.js +0 -0
  194. data/spec/fixtures/real_world/frameworks/sproutcore/has_require.js +4 -0
  195. data/spec/fixtures/real_world/frameworks/sproutcore/lib/index.html +1 -0
  196. data/spec/fixtures/real_world/frameworks/sproutcore/no_require.js +1 -0
  197. data/spec/fixtures/real_world/frameworks/sproutcore/protocols/sample.js +0 -0
  198. data/spec/fixtures/real_world/frameworks/sproutcore/sc_resource.js +6 -0
  199. data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample1.js +0 -0
  200. data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample2.js +0 -0
  201. data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.js +0 -0
  202. data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.rhtml +1 -0
  203. data/spec/fixtures/real_world/frameworks/sproutcore/themes/standard_theme/README +0 -0
  204. data/spec/fixtures/real_world/frameworks/sproutcore/views/view.js +1 -0
  205. data/spec/fixtures/real_world/generators/sample_custom/Buildfile +0 -0
  206. data/spec/fixtures/recursive_project/Buildfile +8 -0
  207. data/spec/fixtures/recursive_project/frameworks/sproutcore/frameworks/costello/PLACEHOLDER +0 -0
  208. data/spec/lib/builders/combine_spec.rb +67 -0
  209. data/spec/lib/builders/html_spec.rb +577 -0
  210. data/spec/lib/builders/javascript_spec.rb +81 -0
  211. data/spec/lib/builders/sass_spec.rb +43 -0
  212. data/spec/lib/builders/spec_helper.rb +30 -0
  213. data/spec/lib/builders/strings_spec.rb +52 -0
  214. data/spec/lib/builders/stylesheet_spec.rb +63 -0
  215. data/spec/lib/builders/test_index_spec.rb +44 -0
  216. data/spec/lib/builders/test_spec.rb +135 -0
  217. data/spec/lib/buildfile/config_for_spec.rb +81 -0
  218. data/spec/lib/buildfile/define_spec.rb +59 -0
  219. data/spec/lib/buildfile/dup_spec.rb +65 -0
  220. data/spec/lib/buildfile/invoke_spec.rb +130 -0
  221. data/spec/lib/buildfile/load_spec.rb +49 -0
  222. data/spec/lib/buildfile/task/dup_spec.rb +55 -0
  223. data/spec/lib/buildfile/task_defined_spec.rb +17 -0
  224. data/spec/lib/buildfile_commands/build_task_spec.rb +19 -0
  225. data/spec/lib/buildfile_commands/config_spec.rb +97 -0
  226. data/spec/lib/buildfile_commands/import_spec.rb +17 -0
  227. data/spec/lib/buildfile_commands/namespace_spec.rb +18 -0
  228. data/spec/lib/buildfile_commands/proxies_spec.rb +38 -0
  229. data/spec/lib/buildfile_commands/replace_task_spec.rb +29 -0
  230. data/spec/lib/buildfile_commands/task_spec.rb +36 -0
  231. data/spec/lib/helpers/packing_optimizer/optimize_spec.rb +26 -0
  232. data/spec/lib/models/hash_struct/deep_clone_spec.rb +27 -0
  233. data/spec/lib/models/hash_struct/has_options_spec.rb +32 -0
  234. data/spec/lib/models/hash_struct/hash_spec.rb +64 -0
  235. data/spec/lib/models/hash_struct/merge_spec.rb +26 -0
  236. data/spec/lib/models/hash_struct/method_missing.rb +41 -0
  237. data/spec/lib/models/manifest/add_entry_spec.rb +36 -0
  238. data/spec/lib/models/manifest/add_transform_spec.rb +90 -0
  239. data/spec/lib/models/manifest/build_spec.rb +78 -0
  240. data/spec/lib/models/manifest/entry_for_spec.rb +94 -0
  241. data/spec/lib/models/manifest/find_entry.rb +84 -0
  242. data/spec/lib/models/manifest/prepare_spec.rb +62 -0
  243. data/spec/lib/models/manifest_entry/cacheable_url_spec.rb +31 -0
  244. data/spec/lib/models/manifest_entry/prepare_spec.rb +54 -0
  245. data/spec/lib/models/project/add_target_spec.rb +44 -0
  246. data/spec/lib/models/project/buildfile_spec.rb +35 -0
  247. data/spec/lib/models/project/find_targets_for_spec.rb +77 -0
  248. data/spec/lib/models/project/load_nearest_project_spec.rb +23 -0
  249. data/spec/lib/models/project/target_for_spec.rb +33 -0
  250. data/spec/lib/models/project/targets_spec.rb +62 -0
  251. data/spec/lib/models/target/compute_build_number_spec.rb +125 -0
  252. data/spec/lib/models/target/config_spec.rb +30 -0
  253. data/spec/lib/models/target/expand_required_targets_spec.rb +48 -0
  254. data/spec/lib/models/target/installed_languages_spec.rb +47 -0
  255. data/spec/lib/models/target/lproj_for_spec.rb +38 -0
  256. data/spec/lib/models/target/manifest_for_spec.rb +42 -0
  257. data/spec/lib/models/target/parent_target_spec.rb +21 -0
  258. data/spec/lib/models/target/prepare_spec.rb +53 -0
  259. data/spec/lib/models/target/required_targets_spec.rb +119 -0
  260. data/spec/lib/models/target/target_for_spec.rb +56 -0
  261. data/spec/lib/tools/build_number_spec.rb +28 -0
  262. data/spec/lib/tools/gen_spec.rb +207 -0
  263. data/spec/lib/tools/tools_spec.rb +78 -0
  264. data/spec/spec_helper.rb +138 -0
  265. data/sproutcore-abbot.gemspec +640 -0
  266. data/vendor/jsdoc/templates/jsdoc/allclasses.tmpl +17 -0
  267. data/vendor/jsdoc/templates/jsdoc/allfiles.tmpl +56 -0
  268. data/vendor/jsdoc/templates/jsdoc/class.tmpl +487 -0
  269. data/vendor/jsdoc/templates/jsdoc/index.tmpl +38 -0
  270. data/vendor/jsdoc/templates/jsdoc/symbol.tmpl +35 -0
  271. data/vendor/jsdoc/templates/sproutcore/allclasses.tmpl +0 -0
  272. data/vendor/jsdoc/templates/sproutcore/allfiles.tmpl +56 -0
  273. data/vendor/jsdoc/templates/sproutcore/class.tmpl +674 -0
  274. data/vendor/jsdoc/templates/sproutcore/index.tmpl +55 -0
  275. data/vendor/jsdoc/templates/sproutcore/symbol.tmpl +35 -0
  276. metadata +351 -664
  277. data/VERSION.yml +0 -5
  278. data/frameworks/sproutcore/Buildfile +0 -64
  279. data/frameworks/sproutcore/HISTORY +0 -682
  280. data/frameworks/sproutcore/README +0 -23
  281. data/frameworks/sproutcore/apps/docs/core.js +0 -27
  282. data/frameworks/sproutcore/apps/docs/english.lproj/loading.rhtml +0 -9
  283. data/frameworks/sproutcore/apps/docs/english.lproj/main_page.js +0 -22
  284. data/frameworks/sproutcore/apps/docs/english.lproj/strings.js +0 -15
  285. data/frameworks/sproutcore/apps/docs/main.js +0 -30
  286. data/frameworks/sproutcore/apps/tests/controllers/detail.js +0 -16
  287. data/frameworks/sproutcore/apps/tests/controllers/source.js +0 -29
  288. data/frameworks/sproutcore/apps/tests/controllers/target.js +0 -26
  289. data/frameworks/sproutcore/apps/tests/controllers/targets.js +0 -86
  290. data/frameworks/sproutcore/apps/tests/controllers/tests.js +0 -33
  291. data/frameworks/sproutcore/apps/tests/core.js +0 -133
  292. data/frameworks/sproutcore/apps/tests/data_source.js +0 -96
  293. data/frameworks/sproutcore/apps/tests/english.lproj/loading.rhtml +0 -9
  294. data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +0 -39
  295. data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +0 -232
  296. data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +0 -26
  297. data/frameworks/sproutcore/apps/tests/fixtures/target.js +0 -87
  298. data/frameworks/sproutcore/apps/tests/fixtures/test.js +0 -44
  299. data/frameworks/sproutcore/apps/tests/main.js +0 -28
  300. data/frameworks/sproutcore/apps/tests/models/target.js +0 -92
  301. data/frameworks/sproutcore/apps/tests/models/test.js +0 -48
  302. data/frameworks/sproutcore/apps/tests/states/no_targets.js +0 -26
  303. data/frameworks/sproutcore/apps/tests/states/ready.js +0 -56
  304. data/frameworks/sproutcore/apps/tests/states/ready_detail.js +0 -41
  305. data/frameworks/sproutcore/apps/tests/states/ready_empty.js +0 -48
  306. data/frameworks/sproutcore/apps/tests/states/ready_list.js +0 -41
  307. data/frameworks/sproutcore/apps/tests/states/ready_loading.js +0 -44
  308. data/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +0 -31
  309. data/frameworks/sproutcore/apps/tests/states/start.js +0 -39
  310. data/frameworks/sproutcore/apps/tests/tests/controllers/detail.js +0 -15
  311. data/frameworks/sproutcore/apps/tests/tests/controllers/source.js +0 -15
  312. data/frameworks/sproutcore/apps/tests/tests/controllers/target.js +0 -15
  313. data/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +0 -15
  314. data/frameworks/sproutcore/apps/tests/tests/controllers/tests.js +0 -15
  315. data/frameworks/sproutcore/apps/tests/tests/models/target.js +0 -15
  316. data/frameworks/sproutcore/apps/tests/tests/models/test.js +0 -15
  317. data/frameworks/sproutcore/apps/tests/tests/views/offset_checkbox.js +0 -15
  318. data/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +0 -26
  319. data/frameworks/sproutcore/apps/welcome/core.js +0 -23
  320. data/frameworks/sproutcore/apps/welcome/english.lproj/loading.rhtml +0 -8
  321. data/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +0 -43
  322. data/frameworks/sproutcore/apps/welcome/english.lproj/strings.js +0 -15
  323. data/frameworks/sproutcore/apps/welcome/main.js +0 -36
  324. data/frameworks/sproutcore/design/Record State Table.numbers +0 -0
  325. data/frameworks/sproutcore/frameworks/datastore/core.js +0 -14
  326. data/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +0 -113
  327. data/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +0 -273
  328. data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +0 -311
  329. data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures_with_queries.js +0 -238
  330. data/frameworks/sproutcore/frameworks/datastore/debug/json.js +0 -71
  331. data/frameworks/sproutcore/frameworks/datastore/debug/standard_setup.js +0 -96
  332. data/frameworks/sproutcore/frameworks/datastore/fixtures/author_fixtures.js +0 -2503
  333. data/frameworks/sproutcore/frameworks/datastore/fixtures/sample.js +0 -17
  334. data/frameworks/sproutcore/frameworks/datastore/models/fetched_attribute.js +0 -92
  335. data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +0 -54
  336. data/frameworks/sproutcore/frameworks/datastore/models/record.js +0 -561
  337. data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +0 -423
  338. data/frameworks/sproutcore/frameworks/datastore/system/many_array.js +0 -158
  339. data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +0 -488
  340. data/frameworks/sproutcore/frameworks/datastore/system/query.js +0 -979
  341. data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +0 -287
  342. data/frameworks/sproutcore/frameworks/datastore/system/store.js +0 -2007
  343. data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +0 -121
  344. data/frameworks/sproutcore/frameworks/datastore/tests/integration/contact_model.js +0 -114
  345. data/frameworks/sproutcore/frameworks/datastore/tests/integration/mail_model.js +0 -91
  346. data/frameworks/sproutcore/frameworks/datastore/tests/integration/test_runner_model.js +0 -56
  347. data/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +0 -94
  348. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +0 -30
  349. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +0 -73
  350. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +0 -238
  351. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/readAttribute.js +0 -48
  352. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +0 -42
  353. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/storeDidChangeProperties.js +0 -138
  354. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/unknownProperty.js +0 -46
  355. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +0 -71
  356. data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +0 -204
  357. data/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +0 -178
  358. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +0 -40
  359. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +0 -117
  360. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +0 -135
  361. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +0 -110
  362. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +0 -99
  363. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +0 -180
  364. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +0 -126
  365. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +0 -163
  366. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +0 -166
  367. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare_records.js +0 -126
  368. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +0 -165
  369. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation_of_records.js +0 -82
  370. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/find_all.js +0 -362
  371. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/parsing.js +0 -170
  372. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +0 -43
  373. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +0 -60
  374. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +0 -67
  375. data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +0 -164
  376. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +0 -54
  377. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +0 -126
  378. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +0 -126
  379. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +0 -73
  380. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +0 -72
  381. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataHashDidChange.js +0 -78
  382. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +0 -249
  383. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +0 -106
  384. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/init.js +0 -21
  385. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +0 -61
  386. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +0 -74
  387. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/readEditableDataHash.js +0 -74
  388. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +0 -74
  389. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/removeDataHash.js +0 -144
  390. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +0 -137
  391. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/writeDataHash.js +0 -130
  392. data/frameworks/sproutcore/frameworks/debug/core.js +0 -61
  393. data/frameworks/sproutcore/frameworks/deprecated/core.js +0 -59
  394. data/frameworks/sproutcore/frameworks/deprecated/lib/button_views.rb +0 -330
  395. data/frameworks/sproutcore/frameworks/deprecated/lib/collection_view.rb +0 -83
  396. data/frameworks/sproutcore/frameworks/deprecated/lib/core_views.rb +0 -326
  397. data/frameworks/sproutcore/frameworks/deprecated/lib/form_views.rb +0 -253
  398. data/frameworks/sproutcore/frameworks/deprecated/lib/index.rhtml +0 -75
  399. data/frameworks/sproutcore/frameworks/deprecated/lib/menu_views.rb +0 -93
  400. data/frameworks/sproutcore/frameworks/deprecated/server/rails_server.js +0 -80
  401. data/frameworks/sproutcore/frameworks/deprecated/server/rest_server.js +0 -178
  402. data/frameworks/sproutcore/frameworks/deprecated/server/server.js +0 -673
  403. data/frameworks/sproutcore/frameworks/deprecated/system/animator.js +0 -679
  404. data/frameworks/sproutcore/frameworks/deprecated/system/binding.js +0 -36
  405. data/frameworks/sproutcore/frameworks/deprecated/system/browser.js +0 -75
  406. data/frameworks/sproutcore/frameworks/deprecated/system/classic_responder.js +0 -312
  407. data/frameworks/sproutcore/frameworks/deprecated/system/event.js +0 -58
  408. data/frameworks/sproutcore/frameworks/deprecated/system/globals.js +0 -20
  409. data/frameworks/sproutcore/frameworks/deprecated/system/misc.js +0 -58
  410. data/frameworks/sproutcore/frameworks/deprecated/system/node_descriptor.js +0 -72
  411. data/frameworks/sproutcore/frameworks/deprecated/system/object.js +0 -122
  412. data/frameworks/sproutcore/frameworks/deprecated/system/path_module.js +0 -432
  413. data/frameworks/sproutcore/frameworks/deprecated/system/string.js +0 -107
  414. data/frameworks/sproutcore/frameworks/deprecated/tests/application/application.rhtml +0 -125
  415. data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/clippingFrame.rhtml +0 -401
  416. data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/frame.rhtml +0 -357
  417. data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/isVisibleInWindow.rhtml +0 -147
  418. data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/base.rhtml +0 -298
  419. data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/incremental_rendering.rhtml +0 -260
  420. data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/source_list_rendering.rhtml +0 -143
  421. data/frameworks/sproutcore/frameworks/deprecated/tests/views/popup_button.rhtml +0 -128
  422. data/frameworks/sproutcore/frameworks/deprecated/tests/views/text_field.rhtml +0 -37
  423. data/frameworks/sproutcore/frameworks/deprecated/views/collection.js +0 -24
  424. data/frameworks/sproutcore/frameworks/designer/coders/design.js +0 -29
  425. data/frameworks/sproutcore/frameworks/designer/coders/localization.js +0 -27
  426. data/frameworks/sproutcore/frameworks/designer/coders/object.js +0 -347
  427. data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +0 -102
  428. data/frameworks/sproutcore/frameworks/designer/css/css_rule.js +0 -22
  429. data/frameworks/sproutcore/frameworks/designer/css/css_style.js +0 -29
  430. data/frameworks/sproutcore/frameworks/designer/css/css_style_sheet.js +0 -201
  431. data/frameworks/sproutcore/frameworks/designer/ext/page.js +0 -86
  432. data/frameworks/sproutcore/frameworks/designer/ext/view.js +0 -38
  433. data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +0 -17
  434. data/frameworks/sproutcore/frameworks/designer/views/designer.js +0 -569
  435. data/frameworks/sproutcore/frameworks/designer/views/label.js +0 -16
  436. data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +0 -11
  437. data/frameworks/sproutcore/frameworks/designer/views/tab.js +0 -16
  438. data/frameworks/sproutcore/frameworks/desktop/core.js +0 -6
  439. data/frameworks/sproutcore/frameworks/desktop/debug/drag.js +0 -41
  440. data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +0 -56
  441. data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/a_sample_image.jpg +0 -0
  442. data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/apple-logo1.jpeg +0 -0
  443. data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/iframe.html +0 -23
  444. data/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +0 -71
  445. data/frameworks/sproutcore/frameworks/desktop/english.lproj/drag.css +0 -6
  446. data/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +0 -943
  447. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_222222.png +0 -0
  448. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_454545.png +0 -0
  449. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_888888.png +0 -0
  450. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_ffffff.png +0 -0
  451. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/shared.png +0 -0
  452. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/indicator.gif +0 -0
  453. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/panels/sprite-x.png +0 -0
  454. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/panels/sprite-y.png +0 -0
  455. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sc-theme-sprite.png +0 -0
  456. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/standard_fade/000000.png +0 -0
  457. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/standard_fade/ffffff.png +0 -0
  458. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sticky-note.png +0 -0
  459. data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +0 -209
  460. data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +0 -100
  461. data/frameworks/sproutcore/frameworks/desktop/english.lproj/modal.css +0 -5
  462. data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +0 -95
  463. data/frameworks/sproutcore/frameworks/desktop/english.lproj/picker.css +0 -39
  464. data/frameworks/sproutcore/frameworks/desktop/english.lproj/progress.css +0 -31
  465. data/frameworks/sproutcore/frameworks/desktop/english.lproj/radio.css +0 -10
  466. data/frameworks/sproutcore/frameworks/desktop/english.lproj/scroller.css +0 -26
  467. data/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +0 -141
  468. data/frameworks/sproutcore/frameworks/desktop/english.lproj/separator.css +0 -19
  469. data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +0 -62
  470. data/frameworks/sproutcore/frameworks/desktop/english.lproj/split.css +0 -70
  471. data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +0 -9
  472. data/frameworks/sproutcore/frameworks/desktop/english.lproj/strings.js +0 -14
  473. data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +0 -12
  474. data/frameworks/sproutcore/frameworks/desktop/english.lproj/toolbar.css +0 -6
  475. data/frameworks/sproutcore/frameworks/desktop/mixins/border.js +0 -53
  476. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_group.js +0 -22
  477. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +0 -61
  478. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +0 -283
  479. data/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +0 -247
  480. data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +0 -408
  481. data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +0 -651
  482. data/frameworks/sproutcore/frameworks/desktop/panes/modal.js +0 -68
  483. data/frameworks/sproutcore/frameworks/desktop/panes/palette.js +0 -63
  484. data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +0 -184
  485. data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +0 -400
  486. data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +0 -46
  487. data/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +0 -39
  488. data/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +0 -81
  489. data/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +0 -175
  490. data/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +0 -280
  491. data/frameworks/sproutcore/frameworks/desktop/system/drag.js +0 -827
  492. data/frameworks/sproutcore/frameworks/desktop/system/key_bindings.js +0 -40
  493. data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +0 -641
  494. data/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +0 -187
  495. data/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +0 -43
  496. data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/methods.js +0 -10
  497. data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +0 -152
  498. data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +0 -55
  499. data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +0 -59
  500. data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/methods.js +0 -10
  501. data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +0 -35
  502. data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +0 -10
  503. data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +0 -40
  504. data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +0 -10
  505. data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +0 -84
  506. data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/methods.js +0 -10
  507. data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +0 -38
  508. data/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +0 -45
  509. data/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +0 -159
  510. data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +0 -144
  511. data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +0 -99
  512. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +0 -249
  513. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deleteSelection.js +0 -82
  514. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deselect.js +0 -199
  515. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +0 -288
  516. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +0 -65
  517. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +0 -88
  518. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +0 -165
  519. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/nowShowing.js +0 -121
  520. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +0 -177
  521. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/select.js +0 -240
  522. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectNextItem.js +0 -191
  523. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +0 -197
  524. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +0 -141
  525. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +0 -182
  526. data/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/methods.js +0 -10
  527. data/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +0 -64
  528. data/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +0 -10
  529. data/frameworks/sproutcore/frameworks/desktop/tests/views/grid/ui.js +0 -10
  530. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +0 -183
  531. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +0 -133
  532. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +0 -132
  533. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +0 -56
  534. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +0 -167
  535. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +0 -127
  536. data/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +0 -284
  537. data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/methods.js +0 -10
  538. data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +0 -44
  539. data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/methods.js +0 -128
  540. data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +0 -240
  541. data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +0 -113
  542. data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +0 -202
  543. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/methods.js +0 -139
  544. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +0 -111
  545. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +0 -102
  546. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/ui.js +0 -70
  547. data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +0 -95
  548. data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +0 -222
  549. data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +0 -81
  550. data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +0 -100
  551. data/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +0 -37
  552. data/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/methods.js +0 -10
  553. data/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/ui.js +0 -10
  554. data/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +0 -50
  555. data/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +0 -52
  556. data/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +0 -231
  557. data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +0 -54
  558. data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +0 -88
  559. data/frameworks/sproutcore/frameworks/desktop/tests/views/web/methods.js +0 -10
  560. data/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +0 -110
  561. data/frameworks/sproutcore/frameworks/desktop/views/button.js +0 -331
  562. data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +0 -105
  563. data/frameworks/sproutcore/frameworks/desktop/views/collection.js +0 -2757
  564. data/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +0 -44
  565. data/frameworks/sproutcore/frameworks/desktop/views/form.js +0 -594
  566. data/frameworks/sproutcore/frameworks/desktop/views/grid.js +0 -201
  567. data/frameworks/sproutcore/frameworks/desktop/views/list.js +0 -540
  568. data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +0 -660
  569. data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +0 -587
  570. data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +0 -68
  571. data/frameworks/sproutcore/frameworks/desktop/views/progress.js +0 -207
  572. data/frameworks/sproutcore/frameworks/desktop/views/radio.js +0 -332
  573. data/frameworks/sproutcore/frameworks/desktop/views/scene.js +0 -204
  574. data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +0 -690
  575. data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +0 -226
  576. data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +0 -525
  577. data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +0 -331
  578. data/frameworks/sproutcore/frameworks/desktop/views/separator.js +0 -37
  579. data/frameworks/sproutcore/frameworks/desktop/views/slider.js +0 -180
  580. data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +0 -47
  581. data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +0 -169
  582. data/frameworks/sproutcore/frameworks/desktop/views/split.js +0 -677
  583. data/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +0 -55
  584. data/frameworks/sproutcore/frameworks/desktop/views/stacked.js +0 -101
  585. data/frameworks/sproutcore/frameworks/desktop/views/tab.js +0 -191
  586. data/frameworks/sproutcore/frameworks/desktop/views/thumb.js +0 -49
  587. data/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +0 -49
  588. data/frameworks/sproutcore/frameworks/desktop/views/web.js +0 -86
  589. data/frameworks/sproutcore/frameworks/foundation/TESTING +0 -46
  590. data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +0 -509
  591. data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +0 -45
  592. data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +0 -323
  593. data/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +0 -109
  594. data/frameworks/sproutcore/frameworks/foundation/core.js +0 -136
  595. data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +0 -194
  596. data/frameworks/sproutcore/frameworks/foundation/english.lproj/blank.gif +0 -0
  597. data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +0 -68
  598. data/frameworks/sproutcore/frameworks/foundation/english.lproj/button_view.css +0 -55
  599. data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +0 -221
  600. data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +0 -9
  601. data/frameworks/sproutcore/frameworks/foundation/english.lproj/images/sproutcore-logo.png +0 -0
  602. data/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +0 -30
  603. data/frameworks/sproutcore/frameworks/foundation/english.lproj/static_layout.css +0 -5
  604. data/frameworks/sproutcore/frameworks/foundation/english.lproj/strings.js +0 -15
  605. data/frameworks/sproutcore/frameworks/foundation/english.lproj/text_field.css +0 -45
  606. data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +0 -45
  607. data/frameworks/sproutcore/frameworks/foundation/ext/object.js +0 -81
  608. data/frameworks/sproutcore/frameworks/foundation/ext/run_loop.js +0 -158
  609. data/frameworks/sproutcore/frameworks/foundation/fixtures/file_exists.json +0 -1
  610. data/frameworks/sproutcore/frameworks/foundation/license.js +0 -19
  611. data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +0 -299
  612. data/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +0 -171
  613. data/frameworks/sproutcore/frameworks/foundation/mixins/content_display.js +0 -88
  614. data/frameworks/sproutcore/frameworks/foundation/mixins/control.js +0 -352
  615. data/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +0 -146
  616. data/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +0 -462
  617. data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +0 -232
  618. data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +0 -132
  619. data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +0 -251
  620. data/frameworks/sproutcore/frameworks/foundation/mixins/tree_item_content.js +0 -159
  621. data/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +0 -176
  622. data/frameworks/sproutcore/frameworks/foundation/panes/main.js +0 -47
  623. data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +0 -584
  624. data/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +0 -887
  625. data/frameworks/sproutcore/frameworks/foundation/protocols/inline_editor_delegate.js +0 -84
  626. data/frameworks/sproutcore/frameworks/foundation/system/application.js +0 -36
  627. data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +0 -492
  628. data/frameworks/sproutcore/frameworks/foundation/system/browser.js +0 -64
  629. data/frameworks/sproutcore/frameworks/foundation/system/builder.js +0 -210
  630. data/frameworks/sproutcore/frameworks/foundation/system/core_query.js +0 -2015
  631. data/frameworks/sproutcore/frameworks/foundation/system/cursor.js +0 -129
  632. data/frameworks/sproutcore/frameworks/foundation/system/datetime.js +0 -729
  633. data/frameworks/sproutcore/frameworks/foundation/system/error.js +0 -93
  634. data/frameworks/sproutcore/frameworks/foundation/system/event.js +0 -853
  635. data/frameworks/sproutcore/frameworks/foundation/system/image_cache.js +0 -433
  636. data/frameworks/sproutcore/frameworks/foundation/system/json.js +0 -440
  637. data/frameworks/sproutcore/frameworks/foundation/system/locale.js +0 -288
  638. data/frameworks/sproutcore/frameworks/foundation/system/page.js +0 -106
  639. data/frameworks/sproutcore/frameworks/foundation/system/ready.js +0 -195
  640. data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +0 -904
  641. data/frameworks/sproutcore/frameworks/foundation/system/request.js +0 -380
  642. data/frameworks/sproutcore/frameworks/foundation/system/responder.js +0 -120
  643. data/frameworks/sproutcore/frameworks/foundation/system/responder_context.js +0 -243
  644. data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +0 -391
  645. data/frameworks/sproutcore/frameworks/foundation/system/routes.js +0 -487
  646. data/frameworks/sproutcore/frameworks/foundation/system/time.js +0 -478
  647. data/frameworks/sproutcore/frameworks/foundation/system/timer.js +0 -549
  648. data/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +0 -165
  649. data/frameworks/sproutcore/frameworks/foundation/system/utils.js +0 -425
  650. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/array_case.js +0 -182
  651. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/enum_case.js +0 -193
  652. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/null_case.js +0 -64
  653. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/single_case.js +0 -136
  654. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/empty_case.js +0 -82
  655. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/multiple_case.js +0 -111
  656. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_case.js +0 -193
  657. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_enumerable_case.js +0 -179
  658. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/outline_case.js +0 -108
  659. data/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/methods.js +0 -10
  660. data/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/ui.js +0 -113
  661. data/frameworks/sproutcore/frameworks/foundation/tests/integration/creating_views.js +0 -113
  662. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/content.js +0 -195
  663. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/displayProperties.js +0 -89
  664. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/keyEquivalents.js +0 -35
  665. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/content.js +0 -168
  666. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +0 -89
  667. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +0 -128
  668. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/string.js +0 -17
  669. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/flat_case.js +0 -325
  670. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js +0 -718
  671. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/outline_case.js +0 -484
  672. data/frameworks/sproutcore/frameworks/foundation/tests/system/builder.js +0 -42
  673. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +0 -1323
  674. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_dimensions.js +0 -387
  675. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +0 -405
  676. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/setClass.js +0 -49
  677. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/within.js +0 -66
  678. data/frameworks/sproutcore/frameworks/foundation/tests/system/datetime.js +0 -151
  679. data/frameworks/sproutcore/frameworks/foundation/tests/system/error.js +0 -41
  680. data/frameworks/sproutcore/frameworks/foundation/tests/system/json.js +0 -14
  681. data/frameworks/sproutcore/frameworks/foundation/tests/system/locale.js +0 -128
  682. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/begin.js +0 -47
  683. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/element.js +0 -44
  684. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/end.js +0 -119
  685. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +0 -51
  686. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +0 -50
  687. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +0 -28
  688. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +0 -179
  689. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +0 -100
  690. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/init.js +0 -55
  691. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/join.js +0 -28
  692. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/push_text.js +0 -74
  693. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/tag.js +0 -45
  694. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/update.js +0 -205
  695. data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +0 -127
  696. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeKeyPane.js +0 -124
  697. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeMainPane.js +0 -68
  698. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +0 -101
  699. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/targetForAction.js +0 -238
  700. data/frameworks/sproutcore/frameworks/foundation/tests/system/routes.js +0 -33
  701. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invalidate.js +0 -38
  702. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invokeLater.js +0 -201
  703. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/isPaused.js +0 -71
  704. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/performAction.js +0 -67
  705. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +0 -170
  706. data/frameworks/sproutcore/frameworks/foundation/tests/system/user_defaults.js +0 -27
  707. data/frameworks/sproutcore/frameworks/foundation/tests/system/utils/normalizeURL.js +0 -18
  708. data/frameworks/sproutcore/frameworks/foundation/tests/system/utils/range.js +0 -62
  709. data/frameworks/sproutcore/frameworks/foundation/tests/validators/credit_card.js +0 -35
  710. data/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +0 -23
  711. data/frameworks/sproutcore/frameworks/foundation/tests/validators/number.js +0 -47
  712. data/frameworks/sproutcore/frameworks/foundation/tests/validators/password.js +0 -13
  713. data/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +0 -10
  714. data/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +0 -83
  715. data/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +0 -39
  716. data/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +0 -148
  717. data/frameworks/sproutcore/frameworks/foundation/tests/views/main_pane.js +0 -31
  718. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +0 -89
  719. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/firstResponder.js +0 -148
  720. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/keyPane.js +0 -133
  721. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/sendEvent.js +0 -165
  722. data/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +0 -76
  723. data/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +0 -250
  724. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +0 -133
  725. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +0 -246
  726. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +0 -122
  727. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createLayer.js +0 -97
  728. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/destroyLayer.js +0 -85
  729. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +0 -52
  730. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/init.js +0 -50
  731. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/insertBefore.js +0 -200
  732. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisible.js +0 -51
  733. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +0 -113
  734. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layer.js +0 -150
  735. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutChildViews.js +0 -162
  736. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutDidChange.js +0 -127
  737. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +0 -328
  738. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/parentViewDidChange.js +0 -67
  739. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +0 -166
  740. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/removeChild.js +0 -189
  741. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/render.js +0 -83
  742. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/replaceChild.js +0 -29
  743. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +0 -146
  744. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayerLocation.js +0 -194
  745. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/viewDidResize.js +0 -185
  746. data/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +0 -125
  747. data/frameworks/sproutcore/frameworks/foundation/validators/date.js +0 -52
  748. data/frameworks/sproutcore/frameworks/foundation/validators/email.js +0 -45
  749. data/frameworks/sproutcore/frameworks/foundation/validators/not_empty.js +0 -33
  750. data/frameworks/sproutcore/frameworks/foundation/validators/number.js +0 -82
  751. data/frameworks/sproutcore/frameworks/foundation/validators/password.js +0 -86
  752. data/frameworks/sproutcore/frameworks/foundation/validators/validator.js +0 -311
  753. data/frameworks/sproutcore/frameworks/foundation/views/container.js +0 -136
  754. data/frameworks/sproutcore/frameworks/foundation/views/field.js +0 -287
  755. data/frameworks/sproutcore/frameworks/foundation/views/image.js +0 -161
  756. data/frameworks/sproutcore/frameworks/foundation/views/label.js +0 -271
  757. data/frameworks/sproutcore/frameworks/foundation/views/text_field.js +0 -257
  758. data/frameworks/sproutcore/frameworks/foundation/views/view.js +0 -2405
  759. data/frameworks/sproutcore/frameworks/mobile/english.lproj/core.css +0 -12
  760. data/frameworks/sproutcore/frameworks/mobile/lib/index.rhtml +0 -126
  761. data/frameworks/sproutcore/frameworks/mobile/system/root_responder.js +0 -109
  762. data/frameworks/sproutcore/frameworks/mobile/tests/views/button/ui.js +0 -9
  763. data/frameworks/sproutcore/frameworks/mobile/views/button.js +0 -190
  764. data/frameworks/sproutcore/frameworks/runtime/README +0 -12
  765. data/frameworks/sproutcore/frameworks/runtime/core.js +0 -856
  766. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +0 -238
  767. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/indexOf.js +0 -33
  768. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/insertAt.js +0 -121
  769. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/objectAt.js +0 -34
  770. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/popObject.js +0 -50
  771. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/pushObject.js +0 -46
  772. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/rangeObserver.js +0 -371
  773. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeAt.js +0 -100
  774. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeObject.js +0 -49
  775. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +0 -94
  776. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/shiftObject.js +0 -50
  777. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/unshiftObject.js +0 -47
  778. data/frameworks/sproutcore/frameworks/runtime/license.js +0 -28
  779. data/frameworks/sproutcore/frameworks/runtime/mixins/array.js +0 -613
  780. data/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +0 -64
  781. data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +0 -108
  782. data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +0 -1258
  783. data/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +0 -104
  784. data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +0 -1305
  785. data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +0 -141
  786. data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +0 -148
  787. data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +0 -152
  788. data/frameworks/sproutcore/frameworks/runtime/protocols/observable_protocol.js +0 -40
  789. data/frameworks/sproutcore/frameworks/runtime/protocols/sparse_array_delegate.js +0 -131
  790. data/frameworks/sproutcore/frameworks/runtime/system/binding.js +0 -915
  791. data/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +0 -107
  792. data/frameworks/sproutcore/frameworks/runtime/system/index_set.js +0 -1166
  793. data/frameworks/sproutcore/frameworks/runtime/system/object.js +0 -801
  794. data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +0 -265
  795. data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +0 -241
  796. data/frameworks/sproutcore/frameworks/runtime/system/selection_set.js +0 -649
  797. data/frameworks/sproutcore/frameworks/runtime/system/set.js +0 -375
  798. data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +0 -295
  799. data/frameworks/sproutcore/frameworks/runtime/tests/core/IsEqual.js +0 -56
  800. data/frameworks/sproutcore/frameworks/runtime/tests/core/beget.js +0 -23
  801. data/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +0 -66
  802. data/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +0 -44
  803. data/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +0 -16
  804. data/frameworks/sproutcore/frameworks/runtime/tests/core/guidFor.js +0 -147
  805. data/frameworks/sproutcore/frameworks/runtime/tests/core/isArray.js +0 -25
  806. data/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +0 -38
  807. data/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +0 -20
  808. data/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +0 -30
  809. data/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +0 -19
  810. data/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +0 -37
  811. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +0 -57
  812. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +0 -611
  813. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +0 -587
  814. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +0 -132
  815. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/registerDependentKeys.js +0 -79
  816. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/propertyChanges.js +0 -80
  817. data/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +0 -55
  818. data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +0 -265
  819. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +0 -195
  820. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/clone.js +0 -43
  821. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/contains.js +0 -74
  822. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/create.js +0 -42
  823. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexAfter.js +0 -38
  824. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexBefore.js +0 -38
  825. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/intersects.js +0 -74
  826. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/max.js +0 -40
  827. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/min.js +0 -40
  828. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +0 -36
  829. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +0 -189
  830. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/without.js +0 -89
  831. data/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +0 -135
  832. data/frameworks/sproutcore/frameworks/runtime/tests/system/object/bindings.js +0 -339
  833. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +0 -59
  834. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/destroy.js +0 -75
  835. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/objectPropertyDidChange.js +0 -117
  836. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/rangeDidChange.js +0 -110
  837. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/update.js +0 -65
  838. data/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +0 -120
  839. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/add.js +0 -92
  840. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/copy.js +0 -17
  841. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/indexSetForSource.js +0 -85
  842. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/isEqual.js +0 -60
  843. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/remove.js +0 -87
  844. data/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +0 -292
  845. data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +0 -122
  846. data/frameworks/sproutcore/frameworks/testing/core.js +0 -196
  847. data/frameworks/sproutcore/frameworks/testing/english.lproj/additions.css +0 -8
  848. data/frameworks/sproutcore/frameworks/testing/english.lproj/runner.css +0 -126
  849. data/frameworks/sproutcore/frameworks/testing/english.lproj/testsuite.css +0 -131
  850. data/frameworks/sproutcore/frameworks/testing/extras.js +0 -17
  851. data/frameworks/sproutcore/frameworks/testing/jquery.js +0 -3559
  852. data/frameworks/sproutcore/frameworks/testing/qunit.js +0 -827
  853. data/frameworks/sproutcore/frameworks/testing/system/dump.js +0 -205
  854. data/frameworks/sproutcore/frameworks/testing/system/equiv.js +0 -201
  855. data/frameworks/sproutcore/frameworks/testing/system/plan.js +0 -691
  856. data/frameworks/sproutcore/frameworks/testing/system/runner.js +0 -209
  857. data/frameworks/sproutcore/frameworks/testing/system/suite.js +0 -228
  858. data/frameworks/sproutcore/frameworks/testing/utils.js +0 -62
  859. data/frameworks/sproutcore/lib/index.rhtml +0 -121
  860. data/frameworks/sproutcore/license.js +0 -28
  861. data/frameworks/sproutcore/themes/empty_theme/tests/mini_icons.rhtml +0 -69
  862. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/button.css +0 -41
  863. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +0 -8
  864. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/backButton.png +0 -0
  865. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/blueButton.png +0 -0
  866. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/cancel.png +0 -0
  867. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/grayButton.png +0 -0
  868. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/leftButton.png +0 -0
  869. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listArrow.png +0 -0
  870. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listArrowSel.png +0 -0
  871. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listGroup.png +0 -0
  872. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/loading.gif +0 -0
  873. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/pinstripes.png +0 -0
  874. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/rightButton.png +0 -0
  875. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/selection.png +0 -0
  876. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/thumb.png +0 -0
  877. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toggle.png +0 -0
  878. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toggleOn.png +0 -0
  879. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toolButton.png +0 -0
  880. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toolbar.png +0 -0
  881. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/whiteButton.png +0 -0
  882. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/strings.js +0 -15
  883. data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +0 -331
  884. data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +0 -91
  885. data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +0 -134
  886. data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +0 -60
  887. data/frameworks/sproutcore/themes/standard_theme/english.lproj/disclosure.css +0 -55
  888. data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-repeat-x.png +0 -0
  889. data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-sprite.png +0 -0
  890. data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-ysprite.png +0 -0
  891. data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-toolbar-view.png +0 -0
  892. data/frameworks/sproutcore/themes/standard_theme/english.lproj/label.css +0 -11
  893. data/frameworks/sproutcore/themes/standard_theme/english.lproj/list_item.css +0 -30
  894. data/frameworks/sproutcore/themes/standard_theme/english.lproj/pane.css +0 -8
  895. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/background-fat.jpg +0 -0
  896. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/background-thin.jpg +0 -0
  897. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-edge.png +0 -0
  898. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-left-corner.png +0 -0
  899. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-right-corner.png +0 -0
  900. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/left-edge.png +0 -0
  901. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/overlay.png +0 -0
  902. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/right-edge.png +0 -0
  903. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-edge.png +0 -0
  904. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-left-corner.png +0 -0
  905. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-right-corner.png +0 -0
  906. data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +0 -26
  907. data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +0 -122
  908. data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +0 -279
  909. data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +0 -94
  910. data/frameworks/sproutcore/themes/standard_theme/english.lproj/split_view.css +0 -27
  911. data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +0 -18
  912. data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +0 -10
  913. data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +0 -7
  914. data/lib/thor/CHANGELOG.rdoc +0 -52
  915. data/lib/thor/LICENSE +0 -20
  916. data/lib/thor/README.markdown +0 -76
  917. data/lib/thor/Rakefile +0 -6
  918. data/lib/thor/Thorfile +0 -45
  919. data/lib/thor/bin/rake2thor +0 -83
  920. data/lib/thor/bin/thor +0 -7
  921. data/lib/thor/lib/thor/error.rb +0 -3
  922. data/lib/thor/lib/thor/options.rb +0 -267
  923. data/lib/thor/lib/thor/ordered_hash.rb +0 -64
  924. data/lib/thor/lib/thor/runner.rb +0 -305
  925. data/lib/thor/lib/thor/task.rb +0 -83
  926. data/lib/thor/lib/thor/task_hash.rb +0 -22
  927. data/lib/thor/lib/thor/tasks/package.rb +0 -18
  928. data/lib/thor/lib/thor/tasks.rb +0 -77
  929. data/lib/thor/lib/thor/util.rb +0 -75
  930. data/lib/thor/lib/thor.rb +0 -170
  931. data/lib/thor/script/destroy +0 -14
  932. data/lib/thor/script/generate +0 -14
  933. data/lib/thor/task.thor +0 -15
@@ -1,1166 +0,0 @@
1
- // ==========================================================================
2
- // Project: SproutCore Costello - Property Observing Library
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('mixins/enumerable') ;
9
- sc_require('mixins/observable') ;
10
- sc_require('mixins/freezable');
11
- sc_require('mixins/copyable');
12
-
13
- /**
14
- @class
15
-
16
- A collection of ranges. You can use an IndexSet to keep track of non-
17
- continuous ranges of items in a parent array. IndexSet's are used for
18
- selection, for managing invalidation ranges and other data-propogation.
19
-
20
- h2. Examples
21
-
22
- {{{
23
- var set = SC.IndexSet.create(ranges) ;
24
- set.contains(index);
25
- set.add(index, length);
26
- set.remove(index, length);
27
-
28
- // uses a backing SC.Array object to return each index
29
- set.forEach(function(object) { .. })
30
-
31
- // returns the index
32
- set.forEachIndex(function(index) { ... });
33
-
34
- // returns ranges
35
- set.forEachRange(function(start, length) { .. });
36
- }}}
37
-
38
- h2. Implementation Notes
39
-
40
- An IndexSet stores indices on the object. A positive value great than the
41
- index tells you the end of an occupied range. A negative values tells you
42
- the end of an empty range. A value less than the index is a search
43
- accelerator. It tells you the start of the nearest range.
44
-
45
- @extends Object
46
- @extends SC.Enumerable
47
- @extends SC.Observable
48
- @extends SC.Copyable
49
- @extends SC.Freezable
50
- @since SproutCore 1.0
51
- */
52
- SC.IndexSet = SC.mixin({},
53
- SC.Enumerable, SC.Observable, SC.Freezable, SC.Copyable,
54
- /** @scope SC.IndexSet.prototype */ {
55
-
56
- /** @private
57
- Walks a content array and copies its contents to a new array. For large
58
- content arrays this is faster than using slice()
59
- */
60
- _sc_sliceContent: function(c) {
61
- if (c.length < 1000) return c.slice(); // use native when faster
62
- var cur = 0, ret = [], next = c[0];
63
- while(next !== 0) {
64
- ret[cur] = next ;
65
- cur = (next<0) ? (0-next) : next ;
66
- next = c[cur];
67
- }
68
- ret[cur] = 0;
69
- this._hint(0, cur, ret); // hints are not copied manually - add them
70
- return ret ;
71
- },
72
-
73
- /**
74
- To create a set, pass either a start and index or another IndexSet.
75
- */
76
- create: function(start, length) {
77
- var ret = SC.beget(this);
78
- ret.initObservable();
79
-
80
- // optimized method to clone an index set.
81
- if (start && start.isIndexSet) {
82
- ret._content = this._sc_sliceContent(start._content);
83
- ret.max = start.max;
84
- ret.length = start.length;
85
- ret.source = start.source ;
86
-
87
- // otherwise just do a regular add
88
- } else {
89
- ret._content = [0];
90
- if (start !== undefined) ret.add(start, length);
91
- }
92
- return ret ;
93
- },
94
-
95
- isIndexSet: YES,
96
-
97
- HINT_SIZE: 256,
98
-
99
- /**
100
- Total number of indexes contained in the set
101
-
102
- @type number
103
- */
104
- length: 0,
105
-
106
- /**
107
- One greater than the largest index currently stored in the set. This
108
- is sometimes useful when determining the total range of items covering
109
- the index set.
110
- */
111
- max: 0,
112
-
113
- /**
114
- The first index included in the set or -1.
115
-
116
- @property
117
- @type {Number}
118
- */
119
- min: function() {
120
- var content = this._content,
121
- cur = content[0];
122
- return (cur === 0) ? -1 : (cur>0) ? 0 : Math.abs(cur);
123
-
124
- }.property('[]').cacheable(),
125
-
126
- firstObject: function() {
127
- return (this.get('length')>0) ? this.get('min') : undefined;
128
- }.property(),
129
-
130
- /**
131
- Returns the starting index of the nearest range for the specified
132
- index.
133
-
134
- @param {Number} index
135
- @returns {Number} starting index
136
- */
137
- rangeStartForIndex: function(index) {
138
- var content = this._content,
139
- max = this.get('max'),
140
- ret, next, accel;
141
-
142
- // fast cases
143
- if (index >= max) return max ;
144
- if (Math.abs(content[index]) > index) return index ; // we hit a border
145
-
146
- // use accelerator to find nearest content range
147
- accel = index - (index % SC.IndexSet.HINT_SIZE);
148
- ret = content[accel];
149
- if (ret<0 || ret>index) ret = accel;
150
- next = Math.abs(content[ret]);
151
-
152
- // now step forward through ranges until we find one that includes the
153
- // index.
154
- while (next < index) {
155
- ret = next ;
156
- next = Math.abs(content[ret]);
157
- }
158
- return ret ;
159
- },
160
-
161
- /**
162
- Returns YES if the passed index set contains the exact same indexes as
163
- the receiver. If you pass any object other than an index set, returns NO.
164
-
165
- @param {Object} obj another object.
166
- @returns {Boolean}
167
- */
168
- isEqual: function(obj) {
169
-
170
- // optimize for some special cases
171
- if (obj === this) return YES ;
172
- if (!obj || !obj.isIndexSet || (obj.max !== this.max) || (obj.length !== this.length)) return NO;
173
-
174
- // ok, now we need to actually compare the ranges of the two.
175
- var lcontent = this._content,
176
- rcontent = obj._content,
177
- cur = 0,
178
- next = lcontent[cur];
179
-
180
- do {
181
- if (rcontent[cur] !== next) return NO ;
182
- cur = Math.abs(next) ;
183
- next = lcontent[cur];
184
- } while (cur !== 0);
185
- return YES ;
186
- },
187
-
188
- /**
189
- Returns the first index in the set before the passed index or null if
190
- there are no previous indexes in the set.
191
-
192
- @param {Number} index index to check
193
- @returns {Number} index or -1
194
- */
195
- indexBefore: function(index) {
196
-
197
- if (index===0) return -1; // fast path
198
- index--; // start with previous index
199
-
200
- var content = this._content,
201
- max = this.get('max'),
202
- start = this.rangeStartForIndex(index);
203
- if (!content) return null;
204
-
205
- // loop backwards until we find a range that is in the set.
206
- while((start===max) || (content[start]<0)) {
207
- if (start === 0) return -1 ; // nothing before; just quit
208
- index = start -1 ;
209
- start = this.rangeStartForIndex(index);
210
- }
211
-
212
- return index;
213
- },
214
-
215
- /**
216
- Returns the first index in the set after the passed index or null if
217
- there are no additional indexes in the set.
218
-
219
- @param {Number} index index to check
220
- @returns {Number} index or -1
221
- */
222
- indexAfter: function(index) {
223
- var content = this._content,
224
- max = this.get('max'),
225
- start, next ;
226
- if (!content || (index>=max)) return -1; // fast path
227
- index++; // start with next index
228
-
229
-
230
- // loop forwards until we find a range that is in the set.
231
- start = this.rangeStartForIndex(index);
232
- next = content[start];
233
- while(next<0) {
234
- if (next === 0) return -1 ; //nothing after; just quit
235
- index = start = Math.abs(next);
236
- next = content[start];
237
- }
238
-
239
- return index;
240
- },
241
-
242
- /**
243
- Returns YES if the index set contains the named index
244
-
245
- @param {Number} start index or range
246
- @param {Number} length optional range length
247
- @returns {Boolean}
248
- */
249
- contains: function(start, length) {
250
- var content, cur, next, rstart, rnext;
251
-
252
- // normalize input
253
- if (length === undefined) {
254
- if (start === null || start === undefined) return NO ;
255
-
256
- if (typeof start === SC.T_NUMBER) {
257
- length = 1 ;
258
-
259
- // if passed an index set, check each receiver range
260
- } else if (start && start.isIndexSet) {
261
- if (start === this) return YES ; // optimization
262
-
263
- content = start._content ;
264
- cur = 0 ;
265
- next = content[cur];
266
- while (next !== 0) {
267
- if ((next>0) && !this.contains(cur, next-cur)) return NO ;
268
- cur = Math.abs(next);
269
- next = content[cur];
270
- }
271
- return YES ;
272
-
273
- } else {
274
- length = start.length;
275
- start = start.start;
276
- }
277
- }
278
-
279
- rstart = this.rangeStartForIndex(start);
280
- rnext = this._content[rstart];
281
-
282
- return (rnext>0) && (rstart <= start) && (rnext >= (start+length));
283
- },
284
-
285
- /**
286
- Returns YES if the index set contains any of the passed indexes. You
287
- can pass a single index, a range or an index set.
288
-
289
- @param {Number} start index, range, or IndexSet
290
- @param {Number} length optional range length
291
- @returns {Boolean}
292
- */
293
- intersects: function(start, length) {
294
- var content, cur, next, lim;
295
-
296
- // normalize input
297
- if (length === undefined) {
298
- if (typeof start === SC.T_NUMBER) {
299
- length = 1 ;
300
-
301
- // if passed an index set, check each receiver range
302
- } else if (start && start.isIndexSet) {
303
- if (start === this) return YES ; // optimization
304
-
305
- content = start._content ;
306
- cur = 0 ;
307
- next = content[cur];
308
- while (next !== 0) {
309
- if ((next>0) && this.intersects(cur, next-cur)) return YES ;
310
- cur = Math.abs(next);
311
- next = content[cur];
312
- }
313
- return NO ;
314
-
315
- } else {
316
- length = start.length;
317
- start = start.start;
318
- }
319
- }
320
-
321
- cur = this.rangeStartForIndex(start);
322
- content = this._content;
323
- next = content[cur];
324
- lim = start + length;
325
- while (cur < lim) {
326
- if (next === 0) return NO; // no match and at end!
327
- if ((next > 0) && (next > start)) return YES ; // found a match
328
- cur = Math.abs(next);
329
- next = content[cur];
330
- }
331
- return NO ; // no match
332
- },
333
-
334
- /**
335
- Returns a new IndexSet without the passed range or indexes. This is a
336
- convenience over simply cloning and removing. Does some optimizations.
337
-
338
- @param {Number} start index, range, or IndexSet
339
- @param {Number} length optional range length
340
- @returns {SC.IndexSet} new index set
341
- */
342
- without: function(start, length) {
343
- if (start === this) return SC.IndexSet.create(); // just need empty set
344
- return this.clone().remove(start, length);
345
- },
346
-
347
- /**
348
- Replace the index set's current content with the passed index set. This
349
- is faster than clearing the index set adding the values again.
350
-
351
- @param {Number} start index, Range, or another IndexSet
352
- @param {Number} length optional length of range.
353
- @returns {SC.IndexSet} receiver
354
- */
355
- replace: function(start, length) {
356
-
357
- if (length === undefined) {
358
- if (typeof start === SC.T_NUMBER) {
359
- length = 1 ;
360
- } else if (start && start.isIndexSet) {
361
- this._content = this._sc_sliceContent(start._content);
362
- this.beginPropertyChanges()
363
- .set('max', start.max)
364
- .set('length', start.length)
365
- .set('source', start.source)
366
- .enumerableContentDidChange()
367
- .endPropertyChanges();
368
- return this ;
369
-
370
- } else {
371
- length = start.length;
372
- start = start.start;
373
- }
374
- }
375
-
376
- var oldlen = this.length;
377
- this._content.length=1;
378
- this._content[0] = 0;
379
- this.length = this.max = 0 ; // reset without notifying since add()
380
- return this.add(start, length);
381
- },
382
-
383
- /**
384
- Adds the specified range of indexes to the set. You can also pass another
385
- IndexSet to union the contents of the index set with the receiver.
386
-
387
- @param {Number} start index, Range, or another IndexSet
388
- @param {Number} length optional length of range.
389
- @returns {SC.IndexSet} receiver
390
- */
391
- add: function(start, length) {
392
-
393
- if (this.isFrozen) throw SC.FROZEN_ERROR;
394
-
395
- var content, cur, next;
396
-
397
- // normalize IndexSet input
398
- if (start && start.isIndexSet) {
399
-
400
- content = start._content;
401
-
402
- if (!content) return this; // nothing to do
403
-
404
- cur = 0 ;
405
- next = content[0];
406
- while(next !== 0) {
407
- if (next>0) this.add(cur, next-cur);
408
- cur = next<0 ? 0-next : next;
409
- next = content[cur];
410
- }
411
- return this ;
412
-
413
- } else if (length === undefined) {
414
-
415
- if (start === null || start === undefined) {
416
- return this; // nothing to do
417
- } else if (typeof start === SC.T_NUMBER) {
418
- length = 1 ;
419
- } else {
420
- length = start.length;
421
- start = start.start;
422
- }
423
- } else if (length === null) length = 1 ;
424
-
425
- // special case - appending to end of set
426
- var max = this.get('max'),
427
- oldmax = max,
428
- delta, value ;
429
-
430
- content = this._content ;
431
-
432
- if (start === max) {
433
-
434
- // if adding to the end and the end is in set, merge.
435
- if (start > 0) {
436
- cur = this.rangeStartForIndex(start-1);
437
- next = content[cur];
438
-
439
- // just extend range at end
440
- if (next > 0) {
441
- delete content[max]; // no 0
442
- content[cur] = max = start + length ;
443
- start = cur ;
444
-
445
- // previous range was not in set, just tack onto the end
446
- } else {
447
- content[max] = max = start + length;
448
- }
449
- } else {
450
- content[start] = max = length;
451
- }
452
-
453
- content[max] = 0 ;
454
- this.set('max', max);
455
- this.set('length', this.length + length) ;
456
- length = max - start ;
457
-
458
- } else if (start > max) {
459
- content[max] = 0-start; // empty!
460
- content[start] = start+length ;
461
- content[start+length] = 0; // set end
462
- this.set('max', start + length) ;
463
- this.set('length', this.length + length) ;
464
-
465
- // affected range goes from starting range to end of content.
466
- length = start + length - max ;
467
- start = max ;
468
-
469
- // otherwise, merge into existing range
470
- } else {
471
-
472
- // find nearest starting range. split or join that range
473
- cur = this.rangeStartForIndex(start);
474
- next = content[cur];
475
- max = start + length ;
476
- delta = 0 ;
477
-
478
- // we are right on a boundary and we had a range or were the end, then
479
- // go back one more.
480
- if ((start>0) && (cur === start) && (next <= 0)) {
481
- cur = this.rangeStartForIndex(start-1);
482
- next = content[cur] ;
483
- }
484
-
485
- // previous range is not in set. splice it here
486
- if (next < 0) {
487
- content[cur] = 0-start ;
488
-
489
- // if previous range extends beyond this range, splice afterwards also
490
- if (Math.abs(next) > max) {
491
- content[start] = 0-max;
492
- content[max] = next ;
493
- } else content[start] = next;
494
-
495
- // previous range is in set. merge the ranges
496
- } else {
497
- start = cur ;
498
- if (next > max) {
499
- delta -= next - max ;
500
- max = next ;
501
- }
502
- }
503
-
504
- // at this point there should be clean starting point for the range.
505
- // just walk the ranges, adding up the length delta and then removing
506
- // the range until we find a range that passes last
507
- cur = start;
508
- while (cur < max) {
509
- // get next boundary. splice if needed - if value is 0, we are at end
510
- // just skip to last
511
- value = content[cur];
512
- if (value === 0) {
513
- content[max] = 0;
514
- next = max ;
515
- delta += max - cur ;
516
- } else {
517
- next = Math.abs(value);
518
- if (next > max) {
519
- content[max] = value ;
520
- next = max ;
521
- }
522
-
523
- // ok, cur range is entirely inside top range.
524
- // add to delta if needed
525
- if (value < 0) delta += next - cur ;
526
- }
527
-
528
- delete content[cur] ; // and remove range
529
- cur = next;
530
- }
531
-
532
- // cur should always === last now. if the following range is in set,
533
- // merge in also - don't adjust delta because these aren't new indexes
534
- if ((cur = content[max]) > 0) {
535
- delete content[max];
536
- max = cur ;
537
- }
538
-
539
- // finally set my own range.
540
- content[start] = max ;
541
- if (max > oldmax) this.set('max', max) ;
542
-
543
- // adjust length
544
- this.set('length', this.get('length') + delta);
545
-
546
- // compute hint range
547
- length = max - start ;
548
- }
549
-
550
- this._hint(start, length);
551
- if (delta !== 0) this.enumerableContentDidChange();
552
- return this;
553
- },
554
-
555
- /**
556
- Removes the specified range of indexes from the set
557
-
558
- @param {Number} start index, Range, or IndexSet
559
- @param {Number} length optional length of range.
560
- @returns {SC.IndexSet} receiver
561
- */
562
- remove: function(start, length) {
563
-
564
- if (this.isFrozen) throw SC.FROZEN_ERROR;
565
-
566
- // normalize input
567
- if (length === undefined) {
568
- if (start === null || start === undefined) {
569
- return this; // nothing to do
570
-
571
- } else if (typeof start === SC.T_NUMBER) {
572
- length = 1 ;
573
-
574
- // if passed an index set, just add each range in the index set.
575
- } else if (start.isIndexSet) {
576
- start.forEachRange(this.remove, this);
577
- return this;
578
-
579
- } else {
580
- length = start.length;
581
- start = start.start;
582
- }
583
- }
584
-
585
- // special case - appending to end of set
586
- var max = this.get('max'),
587
- oldmax = max,
588
- content = this._content,
589
- cur, next, delta, value, last ;
590
-
591
- // if we're past the end, do nothing.
592
- if (start >= max) return this;
593
-
594
- // find nearest starting range. split or join that range
595
- cur = this.rangeStartForIndex(start);
596
- next = content[cur];
597
- last = start + length ;
598
- delta = 0 ;
599
-
600
- // we are right on a boundary and we had a range or were the end, then
601
- // go back one more.
602
- if ((start>0) && (cur === start) && (next > 0)) {
603
- cur = this.rangeStartForIndex(start-1);
604
- next = content[cur] ;
605
- }
606
-
607
- // previous range is in set. splice it here
608
- if (next > 0) {
609
- content[cur] = start ;
610
-
611
- // if previous range extends beyond this range, splice afterwards also
612
- if (next > last) {
613
- content[start] = last;
614
- content[last] = next ;
615
- } else content[start] = next;
616
-
617
- // previous range is not in set. merge the ranges
618
- } else {
619
- start = cur ;
620
- next = Math.abs(next);
621
- if (next > last) {
622
- last = next ;
623
- }
624
- }
625
-
626
- // at this point there should be clean starting point for the range.
627
- // just walk the ranges, adding up the length delta and then removing
628
- // the range until we find a range that passes last
629
- cur = start;
630
- while (cur < last) {
631
- // get next boundary. splice if needed - if value is 0, we are at end
632
- // just skip to last
633
- value = content[cur];
634
- if (value === 0) {
635
- content[last] = 0;
636
- next = last ;
637
-
638
- } else {
639
- next = Math.abs(value);
640
- if (next > last) {
641
- content[last] = value ;
642
- next = last ;
643
- }
644
-
645
- // ok, cur range is entirely inside top range.
646
- // add to delta if needed
647
- if (value > 0) delta += next - cur ;
648
- }
649
-
650
- delete content[cur] ; // and remove range
651
- cur = next;
652
- }
653
-
654
- // cur should always === last now. if the following range is not in set,
655
- // merge in also - don't adjust delta because these aren't new indexes
656
- if ((cur = content[last]) < 0) {
657
- delete content[last];
658
- last = Math.abs(cur) ;
659
- }
660
-
661
- // set my own range - if the next item is 0, then clear it.
662
- if (content[last] === 0) {
663
- delete content[last];
664
- content[start] = 0 ;
665
- this.set('max', start); //max has changed
666
-
667
- } else {
668
- content[start] = 0-last ;
669
- }
670
-
671
- // adjust length
672
- this.set('length', this.get('length') - delta);
673
-
674
- // compute hint range
675
- length = last - start ;
676
-
677
- this._hint(start, length);
678
- if (delta !== 0) this.enumerableContentDidChange();
679
- return this;
680
- },
681
-
682
- /** @private
683
- iterates through a named range, setting hints every HINT_SIZE indexes
684
- pointing to the nearest range start. The passed range must start on a
685
- range boundary. It can end anywhere.
686
- */
687
- _hint: function(start, length, content) {
688
- if (content === undefined) content = this._content;
689
-
690
- var skip = SC.IndexSet.HINT_SIZE,
691
- next = Math.abs(content[start]), // start of next range
692
- loc = start - (start % skip) + skip, // next hint loc
693
- lim = start + length ; // stop
694
-
695
- while (loc < lim) {
696
- // make sure we are in current rnage
697
- while ((next !== 0) && (next <= loc)) {
698
- start = next ;
699
- next = Math.abs(content[start]) ;
700
- }
701
-
702
- // past end
703
- if (next === 0) {
704
- delete content[loc];
705
-
706
- // do not change if on actual boundary
707
- } else if (loc !== start) {
708
- content[loc] = start ; // set hint
709
- }
710
-
711
- loc += skip;
712
- }
713
- },
714
-
715
- /**
716
- Clears the set
717
- */
718
- clear: function() {
719
- if (this.isFrozen) throw SC.FROZEN_ERROR;
720
-
721
- var oldlen = this.length;
722
- this._content.length=1;
723
- this._content[0] = 0;
724
- this.set('length', 0).set('max', 0);
725
- if (oldlen > 0) this.enumerableContentDidChange();
726
- },
727
-
728
- /**
729
- Add all the ranges in the passed array.
730
- */
731
- addEach: function(objects) {
732
- if (this.isFrozen) throw SC.FROZEN_ERROR;
733
-
734
- var idx = objects.get('length') ;
735
- if (objects.objectAt) {
736
- while(--idx >= 0) this.add(objects.objectAt(idx)) ;
737
- } else {
738
- while(--idx >= 0) this.add(objects[idx]) ;
739
- }
740
- return this ;
741
- },
742
-
743
- /**
744
- Removes all the ranges in the passed array.
745
- */
746
- removeEach: function(objects) {
747
- if (this.isFrozen) throw SC.FROZEN_ERROR;
748
-
749
- var idx = objects.get('length') ;
750
- if (objects.objectAt) {
751
- while(--idx >= 0) this.remove(objects.objectAt(idx)) ;
752
- } else {
753
- while(--idx >= 0) this.remove(objects[idx]) ;
754
- }
755
- return this ;
756
- },
757
-
758
- /**
759
- Clones the set into a new set.
760
- */
761
- clone: function() {
762
- return SC.IndexSet.create(this);
763
- },
764
-
765
- /**
766
- Returns a string describing the internal range structure. Useful for
767
- debugging.
768
-
769
- @returns {String}
770
- */
771
- inspect: function() {
772
- var content = this._content,
773
- len = content.length,
774
- idx = 0,
775
- ret = [],
776
- item;
777
-
778
- for(idx=0;idx<len;idx++) {
779
- item = content[idx];
780
- if (item !== undefined) ret.push("%@:%@".fmt(idx,item));
781
- }
782
- return "SC.IndexSet<%@>".fmt(ret.join(' , '));
783
- },
784
-
785
- /**
786
- Invoke the callback, passing each occuppied range instead of each
787
- index. This can be a more efficient way to iterate in some cases. The
788
- callback should have the signature:
789
-
790
- {{{
791
- callback(start, length, indexSet, source) { ... }
792
- }}}
793
-
794
- If you pass a target as a second option, the callback will be called in
795
- the target context.
796
-
797
- @param {Function} callback the iterator callback
798
- @param {Object} target the target
799
- @returns {SC.IndexSet} receiver
800
- */
801
- forEachRange: function(callback, target) {
802
- var content = this._content,
803
- cur = 0,
804
- next = content[cur],
805
- source = this.source;
806
-
807
- if (target === undefined) target = null ;
808
- while (next !== 0) {
809
- if (next > 0) callback.call(target, cur, next - cur, this, source);
810
- cur = Math.abs(next);
811
- next = content[cur];
812
- }
813
-
814
- return this ;
815
- },
816
-
817
- /**
818
- Invokes the callback for each index within the passed start/length range.
819
- Otherwise works just like regular forEach().
820
-
821
- @param {Number} start starting index
822
- @param {Number} length length of range
823
- @param {Function} callback
824
- @param {Object} target
825
- @returns {SC.IndexSet} receiver
826
- */
827
- forEachIn: function(start, length, callback, target) {
828
- var content = this._content,
829
- cur = 0,
830
- idx = 0,
831
- lim = start + length,
832
- source = this.source,
833
- next = content[cur];
834
-
835
- if (target === undefined) target = null ;
836
- while (next !== 0) {
837
- if (cur < start) cur = start ; // skip forward
838
- while((cur < next) && (cur < lim)) {
839
- callback.call(target, cur++, idx++, this, source);
840
- }
841
-
842
- if (cur >= lim) {
843
- cur = next = 0 ;
844
- } else {
845
- cur = Math.abs(next);
846
- next = content[cur];
847
- }
848
- }
849
- return this ;
850
- },
851
-
852
- /**
853
- Total number of indexes within the specified range.
854
-
855
- @param {Number|SC.IndexSet} start index, range object or IndexSet
856
- @param {Number} length optional range length
857
- @returns {Number} count of indexes
858
- */
859
- lengthIn: function(start, length) {
860
-
861
- var ret = 0 ;
862
-
863
- // normalize input
864
- if (length === undefined) {
865
- if (start === null || start === undefined) {
866
- return 0; // nothing to do
867
-
868
- } else if (typeof start === SC.T_NUMBER) {
869
- length = 1 ;
870
-
871
- // if passed an index set, just add each range in the index set.
872
- } else if (start.isIndexSet) {
873
- start.forEachRange(function(start, length) {
874
- ret += this.lengthIn(start, length);
875
- }, this);
876
- return ret;
877
-
878
- } else {
879
- length = start.length;
880
- start = start.start;
881
- }
882
- }
883
-
884
- // fast path
885
- if (this.get('length') === 0) return 0;
886
-
887
- var content = this._content,
888
- cur = 0,
889
- next = content[cur],
890
- lim = start + length ;
891
-
892
- while (cur<lim && next !== 0) {
893
- if (next>0) {
894
- ret += (next>lim) ? lim-cur : next-cur;
895
- }
896
- cur = Math.abs(next);
897
- next = content[cur];
898
- }
899
-
900
- return ret ;
901
- },
902
-
903
- // ..........................................................
904
- // OBJECT API
905
- //
906
-
907
- /**
908
- Optionally set the source property on an index set and then you can
909
- iterate over the actual object values referenced by the index set. See
910
- indexOf(), lastIndexOf(), forEachObject(), addObject() and removeObject().
911
- */
912
- source: null,
913
-
914
- /**
915
- Returns the first index in the set that matches the passed object. You
916
- must have a source property on the set for this to work.
917
-
918
- @param {Object} object the object to check
919
- @param {Number} startAt optional starting point
920
- @returns {Number} found index or -1 if not in set
921
- */
922
- indexOf: function(object, startAt) {
923
- var source = this.source;
924
- if (!source) throw "%@.indexOf() requires source".fmt(this);
925
-
926
- var len = source.get('length'),
927
-
928
- // start with the first index in the set
929
- content = this._content,
930
- cur = content[0]<0 ? Math.abs(content[0]) : 0,
931
- idx ;
932
-
933
- while(cur>=0 && cur<len) {
934
- idx = source.indexOf(object, cur);
935
- if (idx<0) return -1 ; // not found in source
936
- if (this.contains(idx)) return idx; // found in source and in set.
937
- cur = idx+1;
938
- }
939
-
940
- return -1; // not found
941
- },
942
-
943
- /**
944
- Returns the last index in the set that matches the passed object. You
945
- must have a source property on the set for this to work.
946
-
947
- @param {Object} object the object to check
948
- @param {Number} startAt optional starting point
949
- @returns {Number} found index or -1 if not in set
950
- */
951
- lastIndexOf: function(object, startAt) {
952
- var source = this.source;
953
- if (!source) throw "%@.lastIndexOf() requires source".fmt(this);
954
-
955
- // start with the last index in the set
956
- var len = source.get('length'),
957
- cur = this.max-1,
958
- idx ;
959
-
960
- if (cur >= len) cur = len-1;
961
- while (cur>=0) {
962
- idx = source.lastIndexOf(object, cur);
963
- if (idx<0) return -1 ; // not found in source
964
- if (this.contains(idx)) return idx; // found in source and in set.
965
- cur = idx+1;
966
- }
967
-
968
- return -1; // not found
969
- },
970
-
971
- /**
972
- Iterates through the objects at each index location in the set. You must
973
- have a source property on the set for this to work. The callback you pass
974
- will be invoked for each object in the set with the following signature:
975
-
976
- {{{
977
- function callback(object, index, source, indexSet) { ... }
978
- }}}
979
-
980
- If you pass a target, it will be used when the callback is called.
981
-
982
- @param {Function} callback function to invoke.
983
- @param {Object} target optional content. otherwise uses window
984
- @returns {SC.IndexSet} receiver
985
- */
986
- forEachObject: function(callback, target) {
987
- var source = this.source;
988
- if (!source) throw "%@.forEachObject() requires source".fmt(this);
989
-
990
- var content = this._content,
991
- cur = 0,
992
- idx = 0,
993
- next = content[cur];
994
-
995
- if (target === undefined) target = null ;
996
- while (next !== 0) {
997
-
998
- while(cur < next) {
999
- callback.call(target, source.objectAt(cur), cur, source, this);
1000
- cur++;
1001
- }
1002
-
1003
- cur = Math.abs(next);
1004
- next = content[cur];
1005
- }
1006
- return this ;
1007
- },
1008
-
1009
- /**
1010
- Adds all indexes where the object appears to the set. If firstOnly is
1011
- passed, then it will find only the first index and add it. If you know
1012
- the object only appears in the source array one time, firstOnly may make
1013
- this method faster.
1014
-
1015
- Requires source to work.
1016
-
1017
- @param {Object} object the object to add
1018
- @returns {SC.IndexSet} receiver
1019
- */
1020
- addObject: function(object, firstOnly) {
1021
- var source = this.source;
1022
- if (!source) throw "%@.addObject() requires source".fmt(this);
1023
-
1024
- var len = source.get('length'),
1025
- cur = 0, idx;
1026
-
1027
- while(cur>=0 && cur<len) {
1028
- idx = source.indexOf(object, cur);
1029
- if (idx >= 0) {
1030
- this.add(idx);
1031
- if (firstOnly) return this ;
1032
- cur = idx++;
1033
- } else return this ;
1034
- }
1035
- return this ;
1036
- },
1037
-
1038
- /**
1039
- Adds any indexes matching the passed objects. If firstOnly is passed,
1040
- then only finds the first index for each object.
1041
-
1042
- @param {SC.Enumerable} objects the objects to add
1043
- @returns {SC.IndexSet} receiver
1044
- */
1045
- addObjects: function(objects, firstOnly) {
1046
- objects.forEach(function(object) {
1047
- this.addObject(object, firstOnly);
1048
- }, this);
1049
- return this;
1050
- },
1051
-
1052
- /**
1053
- Removes all indexes where the object appears to the set. If firstOnly is
1054
- passed, then it will find only the first index and add it. If you know
1055
- the object only appears in the source array one time, firstOnly may make
1056
- this method faster.
1057
-
1058
- Requires source to work.
1059
-
1060
- @param {Object} object the object to add
1061
- @returns {SC.IndexSet} receiver
1062
- */
1063
- removeObject: function(object, firstOnly) {
1064
- var source = this.source;
1065
- if (!source) throw "%@.removeObject() requires source".fmt(this);
1066
-
1067
- var len = source.get('length'),
1068
- cur = 0, idx;
1069
-
1070
- while(cur>=0 && cur<len) {
1071
- idx = source.indexOf(object, cur);
1072
- if (idx >= 0) {
1073
- this.remove(idx);
1074
- if (firstOnly) return this ;
1075
- cur = idx+1;
1076
- } else return this ;
1077
- }
1078
- return this ;
1079
- },
1080
-
1081
- /**
1082
- Removes any indexes matching the passed objects. If firstOnly is passed,
1083
- then only finds the first index for each object.
1084
-
1085
- @param {SC.Enumerable} objects the objects to add
1086
- @returns {SC.IndexSet} receiver
1087
- */
1088
- removeObjects: function(objects, firstOnly) {
1089
- objects.forEach(function(object) {
1090
- this.removeObject(object, firstOnly);
1091
- }, this);
1092
- return this;
1093
- },
1094
-
1095
-
1096
- // .......................................
1097
- // PRIVATE
1098
- //
1099
-
1100
- /**
1101
- Usually observing notifications from IndexSet are not useful, so
1102
- supress them by default.
1103
- */
1104
- LOG_OBSERVING: NO,
1105
-
1106
- /** @private - optimized call to forEach() */
1107
- forEach: function(callback, target) {
1108
- var content = this._content,
1109
- cur = 0,
1110
- idx = 0,
1111
- source = this.source,
1112
- next = content[cur];
1113
-
1114
- if (target === undefined) target = null ;
1115
- while (next !== 0) {
1116
- while(cur < next) {
1117
- callback.call(target, cur++, idx++, this, source);
1118
- }
1119
- cur = Math.abs(next);
1120
- next = content[cur];
1121
- }
1122
- return this ;
1123
- },
1124
-
1125
- /** @private - support iterators */
1126
- nextObject: function(ignore, idx, context) {
1127
- var content = this._content,
1128
- next = context.next,
1129
- max = this.get('max'); // next boundary
1130
-
1131
- // seed.
1132
- if (idx === null) {
1133
- idx = next = 0 ;
1134
-
1135
- } else if (idx >= max) {
1136
- delete context.next; // cleanup context
1137
- return null ; // nothing left to do
1138
-
1139
- } else idx++; // look on next index
1140
-
1141
- // look for next non-empty range if needed.
1142
- if (idx === next) {
1143
- do {
1144
- idx = Math.abs(next);
1145
- next = content[idx];
1146
- } while(next < 0);
1147
- context.next = next;
1148
- }
1149
-
1150
- return idx;
1151
- },
1152
-
1153
- toString: function() {
1154
- var str = [];
1155
- this.forEachRange(function(start, length) {
1156
- str.push(length === 1 ? start : "%@..%@".fmt(start, start + length - 1));
1157
- }, this);
1158
- return "SC.IndexSet<%@>".fmt(str.join(',')) ;
1159
- },
1160
-
1161
- max: 0
1162
-
1163
- }) ;
1164
-
1165
- SC.IndexSet.slice = SC.IndexSet.copy = SC.IndexSet.clone ;
1166
- SC.IndexSet.EMPTY = SC.IndexSet.create().freeze();