sproutit-sproutcore 1.0.0.20090416161445 → 1.0.0.20090720093355
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Buildfile +4 -2
- data/frameworks/sproutcore/Buildfile +3 -2
- data/frameworks/sproutcore/README +2 -1
- data/frameworks/sproutcore/apps/docs/core.js +27 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Preview.pdf +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/data.plist +14378 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image10.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image11.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image13.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image14.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image8.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image9.tiff +0 -0
- data/frameworks/sproutcore/apps/docs/english.lproj/loading.rhtml +9 -0
- data/frameworks/sproutcore/apps/docs/english.lproj/main_page.js +22 -0
- data/frameworks/sproutcore/apps/{sc_jsdoc → docs}/english.lproj/strings.js +7 -7
- data/frameworks/sproutcore/apps/docs/main.js +30 -0
- data/frameworks/sproutcore/apps/tests/controllers/detail.js +16 -0
- data/frameworks/sproutcore/apps/tests/controllers/source.js +29 -0
- data/frameworks/sproutcore/apps/tests/controllers/target.js +26 -0
- data/frameworks/sproutcore/apps/tests/controllers/targets.js +65 -26
- data/frameworks/sproutcore/apps/tests/controllers/tests.js +14 -19
- data/frameworks/sproutcore/apps/tests/core.js +114 -16
- data/frameworks/sproutcore/apps/tests/data_source.js +96 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +22 -2
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +168 -22
- data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +14 -5
- data/frameworks/sproutcore/apps/tests/fixtures/target.js +81 -37
- data/frameworks/sproutcore/apps/tests/fixtures/test.js +38 -37
- data/frameworks/sproutcore/apps/tests/main.js +9 -20
- data/frameworks/sproutcore/apps/tests/models/target.js +74 -31
- data/frameworks/sproutcore/apps/tests/models/test.js +30 -2
- data/frameworks/sproutcore/{frameworks/desktop/mixins/collection_item.js → apps/tests/states/no_targets.js} +16 -12
- data/frameworks/sproutcore/apps/tests/states/ready.js +56 -0
- data/frameworks/sproutcore/apps/tests/states/ready_detail.js +41 -0
- data/frameworks/sproutcore/apps/tests/states/ready_empty.js +48 -0
- data/frameworks/sproutcore/apps/tests/states/ready_list.js +41 -0
- data/frameworks/sproutcore/apps/tests/states/ready_loading.js +44 -0
- data/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +31 -0
- data/frameworks/sproutcore/apps/tests/states/start.js +39 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/{test.js → detail.js} +3 -3
- data/frameworks/sproutcore/apps/tests/tests/controllers/source.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/target.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +3 -3
- data/frameworks/sproutcore/apps/tests/tests/views/offset_checkbox.js +15 -0
- data/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +26 -0
- data/frameworks/sproutcore/design/CollectionView State Charts.graffle +4848 -0
- data/frameworks/sproutcore/design/Design Charts.graffle +8788 -6375
- data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Preview.pdf +0 -0
- data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/frameworks/sproutcore/design/SproutCore Design Template.graffle/data.plist +1452 -0
- data/frameworks/sproutcore/design/SproutCore Design Template.graffle/image8.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Preview.pdf +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/data.plist +24187 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image10.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image11.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image13.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image15.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image16.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image17.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image18.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image19.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image22.tiff +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image23.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image24.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image25.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image30.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image31.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image8.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image9.png +0 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +2 -2
- data/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +66 -49
- data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +146 -31
- data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures_with_queries.js +238 -0
- data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +27 -11
- data/frameworks/sproutcore/frameworks/datastore/models/record.js +163 -32
- data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +67 -5
- data/frameworks/sproutcore/frameworks/datastore/system/many_array.js +157 -0
- data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +202 -19
- data/frameworks/sproutcore/frameworks/datastore/system/query.js +929 -78
- data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +143 -5
- data/frameworks/sproutcore/frameworks/datastore/system/store.js +443 -125
- data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +38 -3
- data/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +94 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +30 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +238 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +105 -16
- data/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +178 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +1 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +9 -8
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +6 -6
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +6 -6
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +3 -3
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +7 -7
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +4 -4
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +7 -7
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +7 -7
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare_records.js +126 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +165 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation_of_records.js +82 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/find_all.js +362 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/parsing.js +170 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +43 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +60 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +67 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +2 -13
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +3 -4
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +73 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +15 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +4 -2
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +1 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +2 -2
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +1 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +2 -2
- data/frameworks/sproutcore/frameworks/debug/core.js +60 -0
- data/frameworks/sproutcore/frameworks/deprecated/core.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/server/server.js +0 -1
- data/frameworks/sproutcore/frameworks/deprecated/system/browser.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/classic_responder.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/event.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/misc.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/object.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/path_module.js +0 -1
- data/frameworks/sproutcore/frameworks/deprecated/system/string.js +0 -2
- data/frameworks/sproutcore/frameworks/designer/coders/design.js +1 -2
- data/frameworks/sproutcore/frameworks/designer/coders/localization.js +1 -2
- data/frameworks/sproutcore/frameworks/designer/coders/object.js +1 -1
- data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +1 -1
- data/frameworks/sproutcore/frameworks/designer/ext/page.js +0 -2
- data/frameworks/sproutcore/frameworks/designer/ext/view.js +0 -2
- data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +2 -3
- data/frameworks/sproutcore/frameworks/designer/views/designer.js +24 -8
- data/frameworks/sproutcore/frameworks/designer/views/label.js +1 -2
- data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +0 -2
- data/frameworks/sproutcore/frameworks/designer/views/tab.js +1 -2
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +2 -2
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/drag.css +6 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +63 -10
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +5 -4
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/modal.css +5 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +1 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +5 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +1 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +1 -1
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +61 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +136 -79
- data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +55 -24
- data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +295 -147
- data/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +18 -20
- data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +2 -2
- data/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +4 -4
- data/frameworks/sproutcore/frameworks/desktop/system/drag.js +337 -231
- data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +3 -3
- data/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +2 -2
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +46 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +4 -2
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +5 -6
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +11 -11
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +11 -7
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +9 -9
- data/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +19 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +0 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +249 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deleteSelection.js +82 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deselect.js +199 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +288 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +65 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +88 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +165 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/nowShowing.js +121 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +177 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/select.js +240 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectNextItem.js +191 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +197 -39
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +141 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +182 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +183 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +133 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +132 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +56 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +167 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +127 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +30 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +8 -8
- data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +9 -9
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +45 -6
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +2 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +17 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +44 -29
- data/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +231 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/views/button.js +15 -4
- data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +8 -1
- data/frameworks/sproutcore/frameworks/desktop/views/collection.js +1739 -1123
- data/frameworks/sproutcore/frameworks/desktop/views/form.js +0 -1
- data/frameworks/sproutcore/frameworks/desktop/views/grid.js +13 -11
- data/frameworks/sproutcore/frameworks/desktop/views/list.js +405 -571
- data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +211 -74
- data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +319 -169
- data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +57 -51
- data/frameworks/sproutcore/frameworks/desktop/views/progress.js +2 -2
- data/frameworks/sproutcore/frameworks/desktop/views/scene.js +150 -2
- data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +92 -50
- data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +86 -63
- data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +38 -22
- data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +51 -12
- data/frameworks/sproutcore/frameworks/desktop/views/slider.js +2 -0
- data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +17 -1087
- data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +3 -3
- data/frameworks/sproutcore/frameworks/desktop/views/split.js +35 -9
- data/frameworks/sproutcore/frameworks/desktop/views/stacked.js +101 -0
- data/frameworks/sproutcore/frameworks/desktop/views/tab.js +23 -22
- data/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +382 -363
- data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +7 -279
- data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +212 -310
- data/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +109 -0
- data/frameworks/sproutcore/frameworks/foundation/core.js +25 -0
- data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +30 -8
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +19 -4
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +219 -3
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +1 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +30 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/frameworks/{desktop → foundation}/english.lproj/text_field.css +19 -3
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +6 -1
- data/frameworks/sproutcore/frameworks/foundation/license.js +19 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +15 -7
- data/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +171 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/control.js +5 -5
- data/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +462 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +162 -84
- data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +33 -2
- data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +17 -3
- data/frameworks/sproutcore/frameworks/foundation/mixins/tree_item_content.js +159 -0
- data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +49 -20
- data/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +887 -0
- data/frameworks/sproutcore/frameworks/foundation/system/application.js +36 -0
- data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +310 -62
- data/frameworks/sproutcore/frameworks/foundation/system/datetime.js +729 -0
- data/frameworks/sproutcore/frameworks/foundation/system/event.js +57 -21
- data/frameworks/sproutcore/frameworks/foundation/system/ready.js +11 -5
- data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +55 -16
- data/frameworks/sproutcore/frameworks/foundation/system/request.js +152 -27
- data/frameworks/sproutcore/frameworks/foundation/system/responder.js +120 -0
- data/frameworks/sproutcore/frameworks/foundation/system/responder_context.js +243 -0
- data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +29 -6
- data/frameworks/sproutcore/frameworks/foundation/system/routes.js +143 -102
- data/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +9 -2
- data/frameworks/sproutcore/frameworks/foundation/system/utils.js +104 -9
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/array_case.js +182 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/enum_case.js +193 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/null_case.js +64 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/single_case.js +136 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/empty_case.js +82 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/multiple_case.js +111 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_case.js +193 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_enumerable_case.js +179 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/outline_case.js +108 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/keyEquivalents.js +35 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +128 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/string.js +17 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/flat_case.js +325 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js +718 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/outline_case.js +484 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +28 -28
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/system/datetime.js +151 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +2 -2
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +12 -12
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +52 -14
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +27 -23
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +12 -10
- data/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +148 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +1 -1
- data/frameworks/sproutcore/frameworks/{desktop → foundation}/tests/views/text_field/methods.js +0 -0
- data/frameworks/sproutcore/frameworks/{desktop → foundation}/tests/views/text_field/ui.js +53 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +1 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +35 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisible.js +51 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +12 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +83 -3
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +4 -0
- data/frameworks/sproutcore/frameworks/foundation/views/container.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/views/field.js +27 -16
- data/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -1
- data/frameworks/sproutcore/frameworks/foundation/views/label.js +16 -6
- data/frameworks/sproutcore/frameworks/{desktop → foundation}/views/text_field.js +39 -15
- data/frameworks/sproutcore/frameworks/foundation/views/view.js +328 -83
- data/frameworks/sproutcore/frameworks/runtime/README +1 -0
- data/frameworks/sproutcore/frameworks/runtime/core.js +110 -31
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +238 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/indexOf.js +33 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/insertAt.js +121 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/objectAt.js +34 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/popObject.js +50 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/pushObject.js +46 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/rangeObserver.js +371 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeAt.js +100 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeObject.js +49 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +94 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/shiftObject.js +50 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/unshiftObject.js +47 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/array.js +320 -110
- data/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +64 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +44 -6
- data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +142 -77
- data/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +104 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +298 -142
- data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +17 -11
- data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +55 -15
- data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +29 -5
- data/frameworks/sproutcore/frameworks/runtime/protocols/observable_protocol.js +40 -0
- data/frameworks/sproutcore/frameworks/runtime/system/binding.js +39 -15
- data/frameworks/sproutcore/frameworks/runtime/system/index_set.js +1166 -0
- data/frameworks/sproutcore/frameworks/runtime/system/object.js +33 -15
- data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +201 -35
- data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +42 -15
- data/frameworks/sproutcore/frameworks/runtime/system/selection_set.js +649 -0
- data/frameworks/sproutcore/frameworks/runtime/system/set.js +183 -54
- data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +20 -11
- data/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +2 -2
- data/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +44 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +16 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +1 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +1 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +5 -5
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +57 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +21 -2
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +249 -129
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +11 -2
- data/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +55 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +81 -6
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +195 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/clone.js +43 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/contains.js +74 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/create.js +42 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexAfter.js +38 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexBefore.js +38 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/intersects.js +74 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/max.js +40 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/min.js +40 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +36 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +189 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/without.js +89 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +1 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +59 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/destroy.js +75 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/objectPropertyDidChange.js +117 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/rangeDidChange.js +110 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/update.js +65 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +3 -3
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/add.js +92 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/copy.js +17 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/indexSetForSource.js +85 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/isEqual.js +60 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/remove.js +87 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +4 -25
- data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +39 -1
- data/frameworks/sproutcore/frameworks/testing/core.js +183 -0
- data/frameworks/sproutcore/frameworks/testing/english.lproj/runner.css +126 -0
- data/frameworks/sproutcore/frameworks/testing/extras.js +0 -26
- data/frameworks/sproutcore/frameworks/testing/qunit.js +33 -25
- data/frameworks/sproutcore/frameworks/testing/system/dump.js +205 -0
- data/frameworks/sproutcore/frameworks/testing/system/equiv.js +201 -0
- data/frameworks/sproutcore/frameworks/testing/system/plan.js +691 -0
- data/frameworks/sproutcore/frameworks/testing/system/runner.js +209 -0
- data/frameworks/sproutcore/frameworks/testing/system/suite.js +228 -0
- data/frameworks/sproutcore/frameworks/testing/utils.js +8 -1
- data/frameworks/sproutcore/lib/index.rhtml +4 -1
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/10.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/100.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/102.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/110.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/120.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/127.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/18.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/19.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/2.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/24.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/26.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/27.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/28.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/29.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/30.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/31.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/33.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/37.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/41.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/99.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/10.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/100.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/102.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/110.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/120.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/127.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/18.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/19.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/2.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/24.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/26.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/27.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/28.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/29.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/30.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/31.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/33.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/37.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/41.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/99.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/10.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/100.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/102.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/110.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/120.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/127.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/18.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/19.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/2.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/24.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/26.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/27.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/28.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/29.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/30.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/31.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/33.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/37.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/41.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/99.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/10.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/18.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/19.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/2.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x-2.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-sprite.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-ysprite.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/shared-icons.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sproutcore-logo.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sticky-note.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +191 -193
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +11 -10
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +85 -4
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +15 -2
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-repeat-x.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/label.css +0 -26
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/list_item.css +30 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +9 -6
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +20 -11
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +192 -54
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +56 -24
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +13 -7
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +1 -4
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +4 -1
- data/lib/sproutcore/builders/minify.rb +2 -2
- data/lib/sproutcore/builders/test.rb +1 -1
- data/lib/sproutcore/buildfile.rb +1 -0
- data/lib/sproutcore/rack/dev.rb +1 -1
- data/lib/sproutcore/rack/filesystem.rb +265 -0
- data/lib/sproutcore/rack/proxy.rb +11 -3
- data/lib/sproutcore/rack/service.rb +11 -1
- data/lib/sproutcore/tools.rb +11 -1
- data/lib/sproutcore/tools/server.rb +6 -4
- data/vendor/jsdoc/README.txt +151 -0
- data/vendor/jsdoc/changes.txt +47 -0
- metadata +263 -308
- data/frameworks/sproutcore/apps/sc_jsdoc/controllers/docs.js +0 -149
- data/frameworks/sproutcore/apps/sc_jsdoc/core.js +0 -16
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.css +0 -17
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.js +0 -99
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/main.js +0 -27
- data/frameworks/sproutcore/apps/sc_jsdoc/models/doc.js +0 -21
- data/frameworks/sproutcore/apps/sc_qunit/controllers/runner.js +0 -209
- data/frameworks/sproutcore/apps/sc_qunit/core.js +0 -16
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.css +0 -17
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.js +0 -107
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/strings.js +0 -15
- data/frameworks/sproutcore/apps/sc_qunit/main.js +0 -18
- data/frameworks/sproutcore/apps/sc_qunit/models/test.js +0 -24
- data/frameworks/sproutcore/apps/sc_qunit/views/test_iframe.js +0 -52
- data/frameworks/sproutcore/apps/tests/controllers/test.js +0 -20
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/blank.gif +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +0 -83
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/palette.css +0 -3
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/methods.js +0 -10
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/methods.js +0 -10
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui.js +0 -110
- data/frameworks/sproutcore/frameworks/foundation/mixins/responder.js +0 -156
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array.js +0 -118
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/controller.js +0 -268
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object.js +0 -433
- data/frameworks/sproutcore/frameworks/runtime/tests/system/array.js +0 -263
- data/frameworks/sproutcore/frameworks/testing/tests/debug/qunit.js +0 -25
- data/spec/buildtasks/manifest/spec_helper.rb +0 -35
- data/spec/buildtasks/target_spec.rb +0 -214
- data/spec/fixtures/builder_tests/Buildfile +0 -15
- data/spec/fixtures/builder_tests/apps/combine_test/a.js +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/b.js +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/c.js +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/a.css +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/b.css +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/c.css +0 -1
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/bar1_sample.rhtml +0 -2
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/erb_sample.html.erb +0 -1
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/icons/image.png +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/image.jpg +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/rhtml_sample.rhtml +0 -1
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/strings.js +0 -4
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/style.css +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/french.lproj/french-icons/fr.png +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/french.lproj/strings.js +0 -4
- data/spec/fixtures/builder_tests/apps/html_test/lib/layout_template.rhtml +0 -1
- data/spec/fixtures/builder_tests/apps/html_test/scripts.js +0 -0
- data/spec/fixtures/builder_tests/apps/javascript_test/sc_static.js +0 -15
- data/spec/fixtures/builder_tests/apps/javascript_test/sc_super.js +0 -4
- data/spec/fixtures/builder_tests/apps/javascript_test/strings.js +0 -7
- data/spec/fixtures/builder_tests/apps/sass_test/sample.sass +0 -3
- data/spec/fixtures/builder_tests/apps/strings_test/lproj/strings.js +0 -8
- data/spec/fixtures/builder_tests/apps/stylesheet_test/build_directives.css +0 -9
- data/spec/fixtures/builder_tests/apps/stylesheet_test/sc_static.css +0 -12
- data/spec/fixtures/builder_tests/apps/test_test/lib/alt_layout.rhtml +0 -1
- data/spec/fixtures/builder_tests/apps/test_test/lib/test_layout.rhtml +0 -3
- data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test.js +0 -1
- data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test2.js +0 -1
- data/spec/fixtures/builder_tests/apps/test_test/tests/rhtml_test.rhtml +0 -4
- data/spec/fixtures/builder_tests/frameworks/debug/core.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/debug/english.lproj/dummy.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/qunit/core.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/qunit/english.lproj/dummy.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/req_style_1.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/strings.js +0 -4
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/test.rhtml +0 -1
- data/spec/fixtures/builder_tests/frameworks/req_target_1/req_js_1.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/req_style_2.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/test.rhtml +0 -1
- data/spec/fixtures/builder_tests/frameworks/req_target_2/javascript.js +0 -1
- data/spec/fixtures/builder_tests/frameworks/req_target_2/lib/alt_layout.rhtml +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/req_js_2.js +0 -0
- data/spec/fixtures/builder_tests/themes/sample_theme/Buildfile +0 -1
- data/spec/fixtures/buildfiles/basic/Buildfile +0 -16
- data/spec/fixtures/buildfiles/basic/task_module.rake +0 -6
- data/spec/fixtures/buildfiles/installed/Buildfile +0 -7
- data/spec/fixtures/buildfiles/installed/Buildfile2 +0 -5
- data/spec/fixtures/buildfiles/project_test/Buildfile +0 -4
- data/spec/fixtures/buildfiles/project_test/not_project/Buildfile +0 -2
- data/spec/fixtures/buildfiles/project_test/not_project/child/PLACEHOLDER +0 -0
- data/spec/fixtures/entry_for_project/Buildfile +0 -1
- data/spec/fixtures/entry_for_project/apps/test_app/frameworks/nested/PLACEHOLDER +0 -0
- data/spec/fixtures/entry_for_project/frameworks/shared/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/Buildfile +0 -8
- data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/Buildfile +0 -5
- data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/foos/not_foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/nested/Buildfile +0 -8
- data/spec/fixtures/find_targets/nested/apps/app1/Buildfile +0 -1
- data/spec/fixtures/find_targets/nested/apps/app1/apps/nested_app/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/clients/client1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/frameworks/framework1/frameworks/framework1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/frameworks/framework2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/themes/theme1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/themes/theme2/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/English.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/FreNCH.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/UnknOWN.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/english.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/french.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/german.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/italian.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/japanese.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/spanish.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/unknown.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/no_names/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/de.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-CA.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-GB.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-US.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/es.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/foo.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/fr.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/it.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/ja.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/1.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/B.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/a.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/a/a.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/a/b.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/b/a.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/c.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/core.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/B.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/b.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/b/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/c.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/lproj/strings.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/utils.js +0 -1
- data/spec/fixtures/ordered_entries/apps/with_requires/a.js +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/b.js +0 -3
- data/spec/fixtures/ordered_entries/apps/with_requires/c.js +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/a.css +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/b.css +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/c.css +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/d.js +0 -1
- data/spec/fixtures/real_world/Buildfile +0 -12
- data/spec/fixtures/real_world/apps/account/README +0 -1
- data/spec/fixtures/real_world/apps/calendar/README +0 -1
- data/spec/fixtures/real_world/apps/contacts/README_BEFORE_EDITING +0 -1
- data/spec/fixtures/real_world/apps/files/README +0 -1
- data/spec/fixtures/real_world/apps/mail/README +0 -1
- data/spec/fixtures/real_world/apps/mobile_photos/README +0 -1
- data/spec/fixtures/real_world/apps/photos/README +0 -1
- data/spec/fixtures/real_world/apps/uploader/README +0 -1
- data/spec/fixtures/real_world/frameworks/core_files/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/core_photos/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/shared/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +0 -26
- data/spec/fixtures/real_world/frameworks/sproutcore/README +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/apps/test_runner/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/core.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/debug/debug-resource.html +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/debug/sample_debug.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/demo2.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/debug/sample_debug-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.css +0 -4
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.html +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo2.sass +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.haml +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.html.erb +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.rhtml +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/fixtures/sample_fixtures-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/has_require.css +0 -4
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_require.css +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_sc_resource.rhtml +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/protocols/sample-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.css +0 -6
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.rhtml +0 -3
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/strings.js +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/tests/sample-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample-json-fixture.json +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample_fixtures.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/application/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/costello/core.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/data_store/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/debug/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/desktop/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/empty_theme/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/foundation/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/mobile/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/qunit/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/uploader/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/french-resource.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/strings.js +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/german-resource.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/strings.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/has_require.js +0 -4
- data/spec/fixtures/real_world/frameworks/sproutcore/lib/index.html +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/no_require.js +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/protocols/sample.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/sc_resource.js +0 -6
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample1.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample2.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.rhtml +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/themes/standard_theme/README +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/views/view.js +0 -1
- data/spec/fixtures/real_world/generators/sample_custom/Buildfile +0 -0
- data/spec/fixtures/real_world/generators/sample_custom/templates/{filename}.js +0 -1
- data/spec/fixtures/recursive_project/Buildfile +0 -8
- data/spec/fixtures/recursive_project/frameworks/sproutcore/frameworks/costello/PLACEHOLDER +0 -0
- data/spec/lib/builders/combine_spec.rb +0 -67
- data/spec/lib/builders/html_spec.rb +0 -577
- data/spec/lib/builders/javascript_spec.rb +0 -81
- data/spec/lib/builders/sass_spec.rb +0 -43
- data/spec/lib/builders/spec_helper.rb +0 -30
- data/spec/lib/builders/strings_spec.rb +0 -52
- data/spec/lib/builders/stylesheet_spec.rb +0 -63
- data/spec/lib/builders/test_index_spec.rb +0 -44
- data/spec/lib/builders/test_spec.rb +0 -135
- data/spec/lib/buildfile/config_for_spec.rb +0 -81
- data/spec/lib/buildfile/define_spec.rb +0 -59
- data/spec/lib/buildfile/dup_spec.rb +0 -65
- data/spec/lib/buildfile/invoke_spec.rb +0 -130
- data/spec/lib/buildfile/load_spec.rb +0 -49
- data/spec/lib/buildfile/task/dup_spec.rb +0 -55
- data/spec/lib/buildfile/task_defined_spec.rb +0 -17
- data/spec/lib/buildfile_commands/build_task_spec.rb +0 -19
- data/spec/lib/buildfile_commands/config_spec.rb +0 -97
- data/spec/lib/buildfile_commands/import_spec.rb +0 -17
- data/spec/lib/buildfile_commands/namespace_spec.rb +0 -18
- data/spec/lib/buildfile_commands/proxies_spec.rb +0 -38
- data/spec/lib/buildfile_commands/replace_task_spec.rb +0 -29
- data/spec/lib/buildfile_commands/task_spec.rb +0 -36
- data/spec/lib/helpers/packing_optimizer/optimize_spec.rb +0 -26
- data/spec/lib/models/hash_struct/deep_clone_spec.rb +0 -27
- data/spec/lib/models/hash_struct/has_options_spec.rb +0 -32
- data/spec/lib/models/hash_struct/hash_spec.rb +0 -64
- data/spec/lib/models/hash_struct/merge_spec.rb +0 -26
- data/spec/lib/models/hash_struct/method_missing.rb +0 -41
- data/spec/lib/models/manifest/add_entry_spec.rb +0 -36
- data/spec/lib/models/manifest/add_transform_spec.rb +0 -90
- data/spec/lib/models/manifest/build_spec.rb +0 -78
- data/spec/lib/models/manifest/entry_for_spec.rb +0 -94
- data/spec/lib/models/manifest/find_entry.rb +0 -84
- data/spec/lib/models/manifest/prepare_spec.rb +0 -62
- data/spec/lib/models/manifest_entry/cacheable_url_spec.rb +0 -31
- data/spec/lib/models/manifest_entry/prepare_spec.rb +0 -54
- data/spec/lib/models/project/add_target_spec.rb +0 -44
- data/spec/lib/models/project/buildfile_spec.rb +0 -35
- data/spec/lib/models/project/find_targets_for_spec.rb +0 -77
- data/spec/lib/models/project/load_nearest_project_spec.rb +0 -23
- data/spec/lib/models/project/target_for_spec.rb +0 -33
- data/spec/lib/models/project/targets_spec.rb +0 -62
- data/spec/lib/models/target/compute_build_number_spec.rb +0 -125
- data/spec/lib/models/target/config_spec.rb +0 -30
- data/spec/lib/models/target/expand_required_targets_spec.rb +0 -48
- data/spec/lib/models/target/installed_languages_spec.rb +0 -47
- data/spec/lib/models/target/lproj_for_spec.rb +0 -38
- data/spec/lib/models/target/manifest_for_spec.rb +0 -42
- data/spec/lib/models/target/parent_target_spec.rb +0 -21
- data/spec/lib/models/target/prepare_spec.rb +0 -53
- data/spec/lib/models/target/required_targets_spec.rb +0 -119
- data/spec/lib/models/target/target_for_spec.rb +0 -56
- data/spec/lib/tools/build_number_spec.rb +0 -28
- data/spec/lib/tools/gen_spec.rb +0 -207
- data/spec/lib/tools/tools_spec.rb +0 -78
- data/spec/spec_helper.rb +0 -138
- data/vendor/github_gem_lint.rb +0 -22
- data/vendor/yui-compressor/yuicompressor-2.4.2.jar +0 -0
@@ -0,0 +1,100 @@
|
|
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
|
+
/*globals module test ok equals same CoreTest */
|
9
|
+
|
10
|
+
sc_require('debug/test_suites/array/base');
|
11
|
+
|
12
|
+
SC.ArraySuite.define(function(T) {
|
13
|
+
|
14
|
+
var observer, obj ;
|
15
|
+
|
16
|
+
module(T.desc("removeAt"), {
|
17
|
+
setup: function() {
|
18
|
+
obj = T.newObject();
|
19
|
+
observer = T.observer(obj);
|
20
|
+
}
|
21
|
+
});
|
22
|
+
|
23
|
+
test("[X].removeAt(0) => [] + notify", function() {
|
24
|
+
|
25
|
+
var before = T.expected(1);
|
26
|
+
obj.replace(0,0, before);
|
27
|
+
observer.observe('[]', 'length') ;
|
28
|
+
|
29
|
+
obj.removeAt(0) ;
|
30
|
+
T.validateAfter(obj, [], observer, YES);
|
31
|
+
});
|
32
|
+
|
33
|
+
test("[].removeAt(200) => OUT_OF_RANGE_EXCEPTION exception", function() {
|
34
|
+
var didThrow = NO ;
|
35
|
+
try {
|
36
|
+
obj.removeAt(200);
|
37
|
+
} catch (e) {
|
38
|
+
equals(e, SC.OUT_OF_RANGE_EXCEPTION, 'should throw SC.OUT_OF_RANGE_EXCEPTION');
|
39
|
+
didThrow = YES ;
|
40
|
+
}
|
41
|
+
ok(didThrow, 'should raise exception');
|
42
|
+
});
|
43
|
+
|
44
|
+
test("[A,B].removeAt(0) => [B] + notify", function() {
|
45
|
+
var before = T.expected(2),
|
46
|
+
after = [before[1]];
|
47
|
+
|
48
|
+
obj.replace(0,0,before);
|
49
|
+
observer.observe('[]', 'length') ;
|
50
|
+
|
51
|
+
obj.removeAt(0);
|
52
|
+
T.validateAfter(obj, after, observer, YES);
|
53
|
+
});
|
54
|
+
|
55
|
+
test("[A,B].removeAt(1) => [A] + notify", function() {
|
56
|
+
var before = T.expected(2),
|
57
|
+
after = [before[0]];
|
58
|
+
|
59
|
+
obj.replace(0,0,before);
|
60
|
+
observer.observe('[]', 'length') ;
|
61
|
+
|
62
|
+
obj.removeAt(1);
|
63
|
+
T.validateAfter(obj, after, observer, YES);
|
64
|
+
});
|
65
|
+
|
66
|
+
test("[A,B,C].removeAt(1) => [A,C] + notify", function() {
|
67
|
+
var before = T.expected(3),
|
68
|
+
after = [before[0], before[2]];
|
69
|
+
|
70
|
+
obj.replace(0,0,before);
|
71
|
+
observer.observe('[]', 'length') ;
|
72
|
+
|
73
|
+
obj.removeAt(1);
|
74
|
+
T.validateAfter(obj, after, observer, YES);
|
75
|
+
});
|
76
|
+
|
77
|
+
test("[A,B,C,D].removeAt(1,2) => [A,D] + notify", function() {
|
78
|
+
var before = T.expected(4),
|
79
|
+
after = [before[0], before[3]];
|
80
|
+
|
81
|
+
obj.replace(0,0,before);
|
82
|
+
observer.observe('[]', 'length') ;
|
83
|
+
|
84
|
+
obj.removeAt(1,2);
|
85
|
+
T.validateAfter(obj, after, observer, YES);
|
86
|
+
});
|
87
|
+
|
88
|
+
test("[A,B,C,D].removeAt(IndexSet<0,2-3>) => [B] + notify", function() {
|
89
|
+
var before = T.expected(4),
|
90
|
+
after = [before[1]];
|
91
|
+
|
92
|
+
obj.replace(0,0,before);
|
93
|
+
observer.observe('[]', 'length') ;
|
94
|
+
|
95
|
+
obj.removeAt(SC.IndexSet.create(0).add(2,2));
|
96
|
+
T.validateAfter(obj, after, observer, YES);
|
97
|
+
});
|
98
|
+
|
99
|
+
});
|
100
|
+
|
@@ -0,0 +1,49 @@
|
|
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
|
+
/*globals module test ok equals same CoreTest */
|
9
|
+
|
10
|
+
sc_require('debug/test_suites/array/base');
|
11
|
+
|
12
|
+
SC.ArraySuite.define(function(T) {
|
13
|
+
|
14
|
+
var observer, obj ;
|
15
|
+
|
16
|
+
module(T.desc("removeObject"), {
|
17
|
+
setup: function() {
|
18
|
+
obj = T.newObject();
|
19
|
+
observer = T.observer(obj);
|
20
|
+
}
|
21
|
+
});
|
22
|
+
|
23
|
+
test("should return receiver", function() {
|
24
|
+
obj = T.newObject(3);
|
25
|
+
equals(obj.removeObject(obj.objectAt(0)), obj, 'should return receiver');
|
26
|
+
});
|
27
|
+
|
28
|
+
test("[A,B,C].removeObject(B) => [A,C] + notify", function() {
|
29
|
+
|
30
|
+
var before = T.expected(3),
|
31
|
+
after = [before[0], before[2]];
|
32
|
+
obj.replace(0,0, before);
|
33
|
+
observer.observe('[]', 'length') ;
|
34
|
+
|
35
|
+
obj.removeObject(before[1]) ;
|
36
|
+
T.validateAfter(obj, after, observer, YES);
|
37
|
+
});
|
38
|
+
|
39
|
+
test("[A,B,C].removeObject(D) => [A,B,C]", function() {
|
40
|
+
var exp = T.expected(4),
|
41
|
+
extra = exp.pop();
|
42
|
+
obj.replace(0,0,exp);
|
43
|
+
observer.observe('[]', 'length') ;
|
44
|
+
|
45
|
+
obj.removeObject(extra);
|
46
|
+
T.validateAfter(obj, exp, observer, NO, NO);
|
47
|
+
});
|
48
|
+
|
49
|
+
});
|
@@ -0,0 +1,94 @@
|
|
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
|
+
/*globals module test ok equals same CoreTest */
|
9
|
+
|
10
|
+
sc_require('debug/test_suites/array/base');
|
11
|
+
|
12
|
+
SC.ArraySuite.define(function(T) {
|
13
|
+
|
14
|
+
var observer, obj ;
|
15
|
+
|
16
|
+
module(T.desc("replace"), {
|
17
|
+
setup: function() {
|
18
|
+
obj = T.newObject();
|
19
|
+
observer = T.observer(obj);
|
20
|
+
}
|
21
|
+
});
|
22
|
+
|
23
|
+
test("[].replace(0,0,'X') => ['X'] + notify", function() {
|
24
|
+
|
25
|
+
var exp = T.expected(1);
|
26
|
+
|
27
|
+
observer.observe('[]', 'length') ;
|
28
|
+
obj.replace(0,0,exp) ;
|
29
|
+
|
30
|
+
T.validateAfter(obj, exp, observer, YES);
|
31
|
+
});
|
32
|
+
|
33
|
+
test("[A,B,C,D].replace(1,2,X) => [A,X,D] + notify", function() {
|
34
|
+
|
35
|
+
var exp = T.expected(5),
|
36
|
+
before = exp.slice(0,4),
|
37
|
+
replace = exp.slice(4),
|
38
|
+
after = [before[0], replace[0], before[3]];
|
39
|
+
|
40
|
+
obj.replace(0,0, before) ; // precond
|
41
|
+
observer.observe('[]', 'length') ;
|
42
|
+
|
43
|
+
obj.replace(1,2,replace) ;
|
44
|
+
|
45
|
+
T.validateAfter(obj, after, observer, YES);
|
46
|
+
});
|
47
|
+
|
48
|
+
test("[A,B,C,D].replace(1,2,[X,Y]) => [A,X,Y,D] + notify", function() {
|
49
|
+
|
50
|
+
// setup the before, after, and replace arrays. Use generated objects
|
51
|
+
var exp = T.expected(6),
|
52
|
+
before = exp.slice(0, 4),
|
53
|
+
replace = exp.slice(4),
|
54
|
+
after = [before[0], replace[0], replace[1], before[3]];
|
55
|
+
|
56
|
+
obj.replace(0,0, before) ;
|
57
|
+
observer.observe('[]', 'length') ;
|
58
|
+
|
59
|
+
obj.replace(1,2, replace) ;
|
60
|
+
|
61
|
+
T.validateAfter(obj, after, observer, YES);
|
62
|
+
});
|
63
|
+
|
64
|
+
test("[A,B].replace(1,0,[X,Y]) => [A,X,Y,B] + notify", function() {
|
65
|
+
|
66
|
+
// setup the before, after, and replace arrays. Use generated objects
|
67
|
+
var exp = T.expected(4),
|
68
|
+
before = exp.slice(0, 2),
|
69
|
+
replace = exp.slice(2),
|
70
|
+
after = [before[0], replace[0], replace[1], before[1]] ;
|
71
|
+
|
72
|
+
obj.replace(0,0, before);
|
73
|
+
observer.observe('[]', 'length') ;
|
74
|
+
|
75
|
+
obj.replace(1,0, replace) ;
|
76
|
+
|
77
|
+
T.validateAfter(obj, after, observer, YES);
|
78
|
+
});
|
79
|
+
|
80
|
+
test("[A,B,C,D].replace(2,2) => [A,B] + notify", function() {
|
81
|
+
|
82
|
+
// setup the before, after, and replace arrays. Use generated objects
|
83
|
+
var before = T.expected(4),
|
84
|
+
after = [before[0], before[1]];
|
85
|
+
|
86
|
+
obj.replace(0,0, before);
|
87
|
+
observer.observe('[]', 'length') ;
|
88
|
+
|
89
|
+
obj.replace(2,2) ;
|
90
|
+
|
91
|
+
T.validateAfter(obj, after, observer, YES);
|
92
|
+
});
|
93
|
+
|
94
|
+
});
|
@@ -0,0 +1,50 @@
|
|
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
|
+
/*globals module test ok equals same CoreTest */
|
9
|
+
|
10
|
+
sc_require('debug/test_suites/array/base');
|
11
|
+
|
12
|
+
SC.ArraySuite.define(function(T) {
|
13
|
+
|
14
|
+
var observer, obj ;
|
15
|
+
|
16
|
+
module(T.desc("shiftObject"), {
|
17
|
+
setup: function() {
|
18
|
+
obj = T.newObject();
|
19
|
+
observer = T.observer(obj);
|
20
|
+
}
|
21
|
+
});
|
22
|
+
|
23
|
+
test("[].shiftObject() => [] + returns undefined + NO notify", function() {
|
24
|
+
observer.observe('[]', 'length') ;
|
25
|
+
equals(obj.shiftObject(), undefined, 'should return undefined') ;
|
26
|
+
T.validateAfter(obj, [], observer, NO, NO);
|
27
|
+
});
|
28
|
+
|
29
|
+
test("[X].shiftObject() => [] + notify", function() {
|
30
|
+
var exp = T.expected(1)[0];
|
31
|
+
|
32
|
+
obj.replace(0,0, [exp]);
|
33
|
+
observer.observe('[]', 'length') ;
|
34
|
+
|
35
|
+
equals(obj.shiftObject(), exp, 'should return shifted object') ;
|
36
|
+
T.validateAfter(obj, [], observer, YES, YES);
|
37
|
+
});
|
38
|
+
|
39
|
+
test("[A,B,C].shiftObject() => [B,C] + notify", function() {
|
40
|
+
var before = T.expected(3),
|
41
|
+
value = before[0],
|
42
|
+
after = before.slice(1);
|
43
|
+
|
44
|
+
obj.replace(0,0,before);
|
45
|
+
observer.observe('[]', 'length') ;
|
46
|
+
equals(obj.shiftObject(), value, 'should return shifted object') ;
|
47
|
+
T.validateAfter(obj, after, observer, YES);
|
48
|
+
});
|
49
|
+
|
50
|
+
});
|
@@ -0,0 +1,47 @@
|
|
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
|
+
/*globals module test ok equals same CoreTest */
|
9
|
+
|
10
|
+
sc_require('debug/test_suites/array/base');
|
11
|
+
|
12
|
+
SC.ArraySuite.define(function(T) {
|
13
|
+
|
14
|
+
var observer, obj ;
|
15
|
+
|
16
|
+
module(T.desc("unshiftObject"), {
|
17
|
+
setup: function() {
|
18
|
+
obj = T.newObject();
|
19
|
+
observer = T.observer(obj);
|
20
|
+
}
|
21
|
+
});
|
22
|
+
|
23
|
+
test("returns unshifted object", function() {
|
24
|
+
var exp = T.expected(1)[0];
|
25
|
+
equals(obj.pushObject(exp), exp, 'should return receiver');
|
26
|
+
});
|
27
|
+
|
28
|
+
|
29
|
+
test("[].unshiftObject(X) => [X] + notify", function() {
|
30
|
+
var exp = T.expected(1);
|
31
|
+
observer.observe('[]', 'length') ;
|
32
|
+
obj.unshiftObject(exp[0]) ;
|
33
|
+
T.validateAfter(obj, exp, observer, YES);
|
34
|
+
});
|
35
|
+
|
36
|
+
test("[A,B,C].unshiftObject(X) => [X,A,B,C] + notify", function() {
|
37
|
+
var after = T.expected(4),
|
38
|
+
before = after.slice(1),
|
39
|
+
value = after[0];
|
40
|
+
|
41
|
+
obj.replace(0,0,before);
|
42
|
+
observer.observe('[]', 'length') ;
|
43
|
+
obj.unshiftObject(value) ;
|
44
|
+
T.validateAfter(obj, after, observer, YES);
|
45
|
+
});
|
46
|
+
|
47
|
+
});
|
@@ -7,8 +7,8 @@
|
|
7
7
|
|
8
8
|
// note: SC.Observable also enhances array. make sure we are called after
|
9
9
|
// SC.Observable so our version of unknownProperty wins.
|
10
|
-
sc_require('mixins/observable')
|
11
|
-
sc_require('mixins/enumerable')
|
10
|
+
sc_require('mixins/observable');
|
11
|
+
sc_require('mixins/enumerable');
|
12
12
|
sc_require('system/range_observer');
|
13
13
|
|
14
14
|
SC.OUT_OF_RANGE_EXCEPTION = "Index out of range" ;
|
@@ -33,60 +33,65 @@ SC.OUT_OF_RANGE_EXCEPTION = "Index out of range" ;
|
|
33
33
|
|
34
34
|
You can use the methods defined in this module to access and modify array
|
35
35
|
contents in a KVO-friendly way. You can also be notified whenever the
|
36
|
-
membership if an array changes by
|
37
|
-
|
36
|
+
membership if an array changes by changing the syntax of the property to
|
37
|
+
.observes('*myProperty.[]') .
|
38
|
+
|
38
39
|
To support SC.Array in your own class, you must override two
|
39
40
|
primitives to use it: replace() and objectAt().
|
40
|
-
|
41
|
+
|
41
42
|
Note that the SC.Array mixin also incorporates the SC.Enumerable mixin. All
|
42
43
|
SC.Array-like objects are also enumerable.
|
43
|
-
|
44
|
+
|
44
45
|
@extends SC.Enumerable
|
45
46
|
@since SproutCore 0.9.0
|
46
47
|
*/
|
47
48
|
SC.Array = {
|
48
|
-
|
49
|
-
/**
|
50
|
-
@field {Number} length
|
51
49
|
|
52
|
-
|
53
|
-
|
54
|
-
*/
|
55
|
-
|
50
|
+
/**
|
51
|
+
Walk like a duck - use isSCArray to avoid conflicts
|
52
|
+
*/
|
53
|
+
isSCArray: YES,
|
56
54
|
|
57
|
-
/**
|
58
|
-
|
59
|
-
|
60
|
-
|
55
|
+
/**
|
56
|
+
@field {Number} length
|
57
|
+
|
58
|
+
Your array must support the length property. Your replace methods should
|
59
|
+
set this property whenever it changes.
|
60
|
+
*/
|
61
|
+
// length: 0,
|
61
62
|
|
62
|
-
|
63
|
-
|
64
|
-
the
|
65
|
-
|
66
|
-
|
67
|
-
Number
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
63
|
+
/**
|
64
|
+
This is one of the primitves you must implement to support SC.Array. You
|
65
|
+
should replace amt objects started at idx with the objects in the passed
|
66
|
+
array. You should also call this.enumerableContentDidChange() ;
|
67
|
+
|
68
|
+
@param {Number} idx
|
69
|
+
Starting index in the array to replace. If idx >= length, then append to
|
70
|
+
the end of the array.
|
71
|
+
|
72
|
+
@param {Number} amt
|
73
|
+
Number of elements that should be removed from the array, starting at
|
74
|
+
*idx*.
|
75
|
+
|
76
|
+
@param {Array} objects
|
77
|
+
An array of zero or more objects that should be inserted into the array at
|
78
|
+
*idx*
|
79
|
+
*/
|
74
80
|
replace: function(idx, amt, objects) {
|
75
81
|
throw "replace() must be implemented to support SC.Array" ;
|
76
82
|
},
|
77
|
-
|
78
|
-
/**
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
*/
|
88
|
-
objectAt: function(idx)
|
89
|
-
{
|
83
|
+
|
84
|
+
/**
|
85
|
+
This is one of the primitives you must implement to support SC.Array.
|
86
|
+
Returns the object at the named index. If your object supports retrieving
|
87
|
+
the value of an array item using get() (i.e. myArray.get(0)), then you do
|
88
|
+
not need to implement this method yourself.
|
89
|
+
|
90
|
+
@param {Number} idx
|
91
|
+
The index of the item to return. If idx exceeds the current length,
|
92
|
+
return null.
|
93
|
+
*/
|
94
|
+
objectAt: function(idx) {
|
90
95
|
if (idx < 0) return undefined ;
|
91
96
|
if (idx >= this.get('length')) return undefined;
|
92
97
|
return this.get(idx);
|
@@ -94,7 +99,7 @@ SC.Array = {
|
|
94
99
|
|
95
100
|
/**
|
96
101
|
@field []
|
97
|
-
|
102
|
+
|
98
103
|
This is the handler for the special array content property. If you get
|
99
104
|
this property, it will return this. If you set this property it a new
|
100
105
|
array, it will replace the current content.
|
@@ -108,13 +113,13 @@ SC.Array = {
|
|
108
113
|
return this ;
|
109
114
|
}.property(),
|
110
115
|
|
111
|
-
/**
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
*/
|
116
|
+
/**
|
117
|
+
This will use the primitive replace() method to insert an object at the
|
118
|
+
specified index.
|
119
|
+
|
120
|
+
@param {Number} idx index of insert the object at.
|
121
|
+
@param {Object} object object to insert
|
122
|
+
*/
|
118
123
|
insertAt: function(idx, object) {
|
119
124
|
if (idx > this.get('length')) throw SC.OUT_OF_RANGE_EXCEPTION ;
|
120
125
|
this.replace(idx,0,[object]) ;
|
@@ -122,17 +127,48 @@ SC.Array = {
|
|
122
127
|
},
|
123
128
|
|
124
129
|
/**
|
125
|
-
Remove an object at the specified index using the replace() primitive
|
126
|
-
|
127
|
-
|
130
|
+
Remove an object at the specified index using the replace() primitive
|
131
|
+
method. You can pass either a single index, a start and a length or an
|
132
|
+
index set.
|
133
|
+
|
134
|
+
If you pass a single index or a start and length that is beyond the
|
135
|
+
length this method will throw an SC.OUT_OF_RANGE_EXCEPTION
|
136
|
+
|
137
|
+
@param {Number|SC.IndexSet} start index, start of range, or index set
|
138
|
+
@param {Number} length length of passing range
|
139
|
+
@returns {Object} receiver
|
128
140
|
*/
|
129
|
-
removeAt: function(
|
130
|
-
|
131
|
-
var
|
132
|
-
|
133
|
-
|
141
|
+
removeAt: function(start, length) {
|
142
|
+
|
143
|
+
var delta = 0, // used to shift range
|
144
|
+
empty = [];
|
145
|
+
|
146
|
+
if (typeof start === SC.T_NUMBER) {
|
147
|
+
|
148
|
+
if ((start < 0) || (start >= this.get('length'))) {
|
149
|
+
throw SC.OUT_OF_RANGE_EXCEPTION;
|
150
|
+
}
|
151
|
+
|
152
|
+
// fast case
|
153
|
+
if (length === undefined) {
|
154
|
+
this.replace(start,1,empty);
|
155
|
+
return this ;
|
156
|
+
} else {
|
157
|
+
start = SC.IndexSet.create(start, length);
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
this.beginPropertyChanges();
|
162
|
+
start.forEachRange(function(start, length) {
|
163
|
+
start -= delta ;
|
164
|
+
delta += length ;
|
165
|
+
this.replace(start, length, empty); // remove!
|
166
|
+
}, this);
|
167
|
+
this.endPropertyChanges();
|
168
|
+
|
169
|
+
return this ;
|
134
170
|
},
|
135
|
-
|
171
|
+
|
136
172
|
/**
|
137
173
|
Search the array of this object, removing any occurrences of it.
|
138
174
|
@param {object} obj object to remove
|
@@ -146,6 +182,20 @@ SC.Array = {
|
|
146
182
|
return this ;
|
147
183
|
},
|
148
184
|
|
185
|
+
/**
|
186
|
+
Search the array for the passed set of objects and remove any occurrences
|
187
|
+
of the.
|
188
|
+
|
189
|
+
@param {SC.Enumerable} objects the objects to remove
|
190
|
+
@returns {SC.Array} receiver
|
191
|
+
*/
|
192
|
+
removeObjects: function(objects) {
|
193
|
+
this.beginPropertyChanges();
|
194
|
+
objects.forEach(function(obj) { this.removeObject(obj); }, this);
|
195
|
+
this.endPropertyChanges();
|
196
|
+
return this;
|
197
|
+
},
|
198
|
+
|
149
199
|
/**
|
150
200
|
Push the object onto the end of the array. Works just like push() but it
|
151
201
|
is KVO-compliant.
|
@@ -155,6 +205,21 @@ SC.Array = {
|
|
155
205
|
return obj ;
|
156
206
|
},
|
157
207
|
|
208
|
+
|
209
|
+
/**
|
210
|
+
Add the objects in the passed numerable to the end of the array. Defers
|
211
|
+
notifying observers of the change until all objects are added.
|
212
|
+
|
213
|
+
@param {SC.Enumerable} objects the objects to add
|
214
|
+
@returns {SC.Array} receiver
|
215
|
+
*/
|
216
|
+
pushObjects: function(objects) {
|
217
|
+
this.beginPropertyChanges();
|
218
|
+
objects.forEach(function(obj) { this.pushObject(obj); }, this);
|
219
|
+
this.endPropertyChanges();
|
220
|
+
return this;
|
221
|
+
},
|
222
|
+
|
158
223
|
/**
|
159
224
|
Pop object from array or nil if none are left. Works just like pop() but
|
160
225
|
it is KVO-compliant.
|
@@ -187,6 +252,21 @@ SC.Array = {
|
|
187
252
|
this.insertAt(0, obj) ;
|
188
253
|
return obj ;
|
189
254
|
},
|
255
|
+
|
256
|
+
|
257
|
+
/**
|
258
|
+
Adds the named objects to the beginning of the array. Defers notifying
|
259
|
+
observers until all objects have been added.
|
260
|
+
|
261
|
+
@param {SC.Enumerable} objects the objects to add
|
262
|
+
@returns {SC.Array} receiver
|
263
|
+
*/
|
264
|
+
unshiftObjects: function(objects) {
|
265
|
+
this.beginPropertyChanges();
|
266
|
+
objects.forEach(function(obj) { this.unshiftObject(obj); }, this);
|
267
|
+
this.endPropertyChanges();
|
268
|
+
return this;
|
269
|
+
},
|
190
270
|
|
191
271
|
/**
|
192
272
|
Compares each item in the array. Returns true if they are equal.
|
@@ -227,7 +307,7 @@ SC.Array = {
|
|
227
307
|
}) ;
|
228
308
|
return ret ;
|
229
309
|
},
|
230
|
-
|
310
|
+
|
231
311
|
/**
|
232
312
|
Generates a new array with only unique values from the contents of the
|
233
313
|
old array.
|
@@ -242,14 +322,6 @@ SC.Array = {
|
|
242
322
|
return ret ;
|
243
323
|
},
|
244
324
|
|
245
|
-
/**
|
246
|
-
SC.CollectionView compatibility. SC.Array does not calculate groups by
|
247
|
-
default. Use SC.ArrayController and/or SC.ResultSet instead.
|
248
|
-
|
249
|
-
@type SC.Array
|
250
|
-
*/
|
251
|
-
groups: [],
|
252
|
-
|
253
325
|
rangeObserverClass: SC.RangeObserver,
|
254
326
|
|
255
327
|
/**
|
@@ -261,48 +333,135 @@ SC.Array = {
|
|
261
333
|
The callback for a range observer should have the signature:
|
262
334
|
|
263
335
|
{{{
|
264
|
-
function rangePropertyDidChange(array, objects, key)
|
336
|
+
function rangePropertyDidChange(array, objects, key, indexes, conext)
|
265
337
|
}}}
|
266
338
|
|
267
339
|
If the passed key is '[]' it means that the object itself changed.
|
268
340
|
|
269
341
|
The return value from this method is an opaque reference to the
|
270
|
-
|
342
|
+
range observer object. You can use this reference to destroy the
|
271
343
|
range observer when you are done with it or to update its range.
|
344
|
+
|
345
|
+
@param {SC.IndexSet} indexes indexes to observe
|
346
|
+
@param {Object} target object to invoke on change
|
347
|
+
@param {String|Function} method the method to invoke
|
348
|
+
@param {Object} context optional context
|
349
|
+
@returns {SC.RangeObserver} range observer
|
272
350
|
*/
|
273
|
-
|
351
|
+
addRangeObserver: function(indexes, target, method, context) {
|
274
352
|
var rangeob = this._array_rangeObservers;
|
275
|
-
if (!rangeob) rangeob = this._array_rangeObservers =
|
276
|
-
|
353
|
+
if (!rangeob) rangeob = this._array_rangeObservers = SC.CoreSet.create() ;
|
354
|
+
|
277
355
|
var C = this.rangeObserverClass ;
|
278
|
-
var
|
279
|
-
|
356
|
+
var isDeep = NO; //disable this feature for now
|
357
|
+
var ret = C.create(this, indexes, target, method, context, isDeep) ;
|
358
|
+
rangeob.add(ret);
|
359
|
+
|
360
|
+
// first time a range observer is added, begin observing the [] property
|
361
|
+
if (!this._array_isNotifyingRangeObservers) {
|
362
|
+
this._array_isNotifyingRangeObservers = YES ;
|
363
|
+
this.addObserver('[]', this, this._array_notifyRangeObservers);
|
364
|
+
}
|
365
|
+
|
280
366
|
return ret ;
|
281
367
|
},
|
282
368
|
|
283
|
-
|
284
|
-
|
369
|
+
/**
|
370
|
+
Moves a range observer so that it observes a new range of objects on the
|
371
|
+
array. You must have an existing range observer object from a call to
|
372
|
+
addRangeObserver().
|
373
|
+
|
374
|
+
The return value should replace the old range observer object that you
|
375
|
+
pass in.
|
376
|
+
|
377
|
+
@param {SC.RangeObserver} rangeObserver the range observer
|
378
|
+
@param {SC.IndexSet} indexes new indexes to observe
|
379
|
+
@returns {SC.RangeObserver} the range observer (or a new one)
|
380
|
+
*/
|
381
|
+
updateRangeObserver: function(rangeObserver, indexes) {
|
382
|
+
return rangeObserver.update(this, indexes);
|
285
383
|
},
|
286
|
-
|
287
|
-
|
384
|
+
|
385
|
+
/**
|
386
|
+
Removes a range observer from the receiver. The range observer must
|
387
|
+
already be active on the array.
|
388
|
+
|
389
|
+
The return value should replace the old range observer object. It will
|
390
|
+
usually be null.
|
391
|
+
|
392
|
+
@param {SC.RangeObserver} rangeObserver the range observer
|
393
|
+
@returns {SC.RangeObserver} updated range observer or null
|
394
|
+
*/
|
395
|
+
removeRangeObserver: function(rangeObserver) {
|
288
396
|
var ret = rangeObserver.destroy(this);
|
289
397
|
var rangeob = this._array_rangeObservers;
|
290
|
-
if (rangeob) rangeob
|
398
|
+
if (rangeob) rangeob.remove(rangeObserver) ; // clear
|
291
399
|
return ret ;
|
292
400
|
},
|
293
401
|
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
402
|
+
/**
|
403
|
+
Updates observers with content change. To support range observers,
|
404
|
+
you must pass three change parameters to this method. Otherwise this
|
405
|
+
method will assume the entire range has changed.
|
406
|
+
|
407
|
+
This also assumes you have already updated the length property.
|
408
|
+
@param {Number} start the starting index of the change
|
409
|
+
@param {Number} amt the final range of objects changed
|
410
|
+
@param {Number} delta if you added or removed objects, the delta change
|
411
|
+
@returns {SC.Array} receiver
|
412
|
+
*/
|
413
|
+
enumerableContentDidChange: function(start, amt, delta) {
|
414
|
+
var rangeob = this._array_rangeObservers,
|
415
|
+
oldlen = this._array_oldLength,
|
416
|
+
newlen, length, changes ;
|
417
|
+
|
418
|
+
this.beginPropertyChanges();
|
419
|
+
this.notifyPropertyChange('length'); // flush caches
|
420
|
+
|
421
|
+
// schedule info for range observers
|
422
|
+
if (rangeob && rangeob.length>0) {
|
423
|
+
|
424
|
+
// if no oldLength has been cached, just assume 0
|
425
|
+
if (oldlen === undefined) oldlen = 0;
|
426
|
+
this._array_oldLength = newlen = this.get('length');
|
427
|
+
|
428
|
+
// normalize input parameters
|
429
|
+
// if delta was not passed, assume it is the different between the
|
430
|
+
// new and old length.
|
431
|
+
if (start === undefined) start = 0;
|
432
|
+
if (delta === undefined) delta = newlen - oldlen ;
|
433
|
+
if (delta !== 0 || amt === undefined) {
|
434
|
+
length = newlen - start ;
|
435
|
+
if (delta<0) length -= delta; // cover removed range as well
|
436
|
+
} else {
|
437
|
+
length = amt ;
|
301
438
|
}
|
439
|
+
|
440
|
+
changes = this._array_rangeChanges;
|
441
|
+
if (!changes) changes = this._array_rangeChanges = SC.IndexSet.create();
|
442
|
+
changes.add(start, length);
|
302
443
|
}
|
303
444
|
|
304
445
|
this.notifyPropertyChange('[]') ;
|
446
|
+
this.endPropertyChanges();
|
447
|
+
|
305
448
|
return this ;
|
449
|
+
},
|
450
|
+
|
451
|
+
/**
|
452
|
+
Observer fires whenever the '[]' property changes. If there are
|
453
|
+
range observers, will notify observers of change.
|
454
|
+
*/
|
455
|
+
_array_notifyRangeObservers: function() {
|
456
|
+
var rangeob = this._array_rangeObservers,
|
457
|
+
changes = this._array_rangeChanges,
|
458
|
+
len = rangeob ? rangeob.length : 0,
|
459
|
+
idx, cur;
|
460
|
+
|
461
|
+
if (len > 0 && changes && changes.length > 0) {
|
462
|
+
for(idx=0;idx<len;idx++) rangeob[idx].rangeDidChange(changes);
|
463
|
+
changes.clear(); // reset for later notifications
|
464
|
+
}
|
306
465
|
}
|
307
466
|
|
308
467
|
} ;
|
@@ -335,19 +494,48 @@ SC.Array.slice = function(beginIndex, endIndex) {
|
|
335
494
|
Returns the index for a particular object in the index.
|
336
495
|
|
337
496
|
@param {Object} object the item to search for
|
497
|
+
@param {NUmber} startAt optional starting location to search, default 0
|
338
498
|
@returns {Number} index of -1 if not found
|
339
499
|
*/
|
340
|
-
SC.Array.indexOf = function(object) {
|
500
|
+
SC.Array.indexOf = function(object, startAt) {
|
341
501
|
var idx, len = this.get('length');
|
342
|
-
|
502
|
+
|
503
|
+
if (startAt === undefined) startAt = 0;
|
504
|
+
else startAt = (startAt < 0) ? Math.ceil(startAt) : Math.floor(startAt);
|
505
|
+
if (startAt < 0) startAt += len;
|
506
|
+
|
507
|
+
for(idx=startAt;idx<len;idx++) {
|
343
508
|
if (this.objectAt(idx) === object) return idx ;
|
344
509
|
}
|
345
510
|
return -1;
|
346
511
|
};
|
347
512
|
|
348
513
|
// Some browsers do not support indexOf natively. Patch if needed
|
349
|
-
if (!Array.prototype.indexOf)
|
350
|
-
|
514
|
+
if (!Array.prototype.indexOf) Array.prototype.indexOf = SC.Array.indexOf;
|
515
|
+
|
516
|
+
/**
|
517
|
+
Returns the last index for a particular object in the index.
|
518
|
+
|
519
|
+
@param {Object} object the item to search for
|
520
|
+
@param {NUmber} startAt optional starting location to search, default 0
|
521
|
+
@returns {Number} index of -1 if not found
|
522
|
+
*/
|
523
|
+
SC.Array.lastIndexOf = function(object, startAt) {
|
524
|
+
var idx, len = this.get('length');
|
525
|
+
|
526
|
+
if (startAt === undefined) startAt = len-1;
|
527
|
+
else startAt = (startAt < 0) ? Math.ceil(startAt) : Math.floor(startAt);
|
528
|
+
if (startAt < 0) startAt += len;
|
529
|
+
|
530
|
+
for(idx=startAt;idx>=0;idx--) {
|
531
|
+
if (this.objectAt(idx) === object) return idx ;
|
532
|
+
}
|
533
|
+
return -1;
|
534
|
+
};
|
535
|
+
|
536
|
+
// Some browsers do not support lastIndexOf natively. Patch if needed
|
537
|
+
if (!Array.prototype.lastIndexOf) {
|
538
|
+
Array.prototype.lastIndexOf = SC.Array.lastIndexOf;
|
351
539
|
}
|
352
540
|
|
353
541
|
// ......................................................
|
@@ -357,47 +545,69 @@ if (!Array.prototype.indexOf) {
|
|
357
545
|
// because working with arrays are so common.
|
358
546
|
(function() {
|
359
547
|
SC.mixin(Array.prototype, {
|
360
|
-
|
548
|
+
|
361
549
|
// primitive for array support.
|
362
550
|
replace: function(idx, amt, objects) {
|
551
|
+
if (this.isFrozen) throw SC.FROZEN_ERROR ;
|
363
552
|
if (!objects || objects.length === 0) {
|
364
553
|
this.splice(idx, amt) ;
|
365
554
|
} else {
|
366
555
|
var args = [idx, amt].concat(objects) ;
|
367
556
|
this.splice.apply(this,args) ;
|
368
557
|
}
|
369
|
-
|
558
|
+
|
370
559
|
// if we replaced exactly the same number of items, then pass only the
|
371
560
|
// replaced range. Otherwise, pass the full remaining array length
|
372
561
|
// since everything has shifted
|
373
562
|
var len = objects ? (objects.get ? objects.get('length') : objects.length) : 0;
|
374
|
-
|
375
|
-
this.enumerableContentDidChange(idx, amt) ;
|
563
|
+
this.enumerableContentDidChange(idx, amt, len - amt) ;
|
376
564
|
return this ;
|
377
565
|
},
|
378
|
-
|
566
|
+
|
379
567
|
// If you ask for an unknown property, then try to collect the value
|
380
568
|
// from member items.
|
381
569
|
unknownProperty: function(key, value) {
|
382
570
|
var ret = this.reducedProperty(key, value) ;
|
383
|
-
if (ret === undefined) {
|
384
|
-
ret =
|
571
|
+
if ((value !== undefined) && ret === undefined) {
|
572
|
+
ret = this[key] = value;
|
385
573
|
}
|
386
574
|
return ret ;
|
387
|
-
}
|
575
|
+
}
|
388
576
|
|
577
|
+
});
|
389
578
|
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
579
|
+
// If browser did not implement indexOf natively, then override with
|
580
|
+
// specialized version
|
581
|
+
var indexOf = Array.prototype.indexOf;
|
582
|
+
if (!indexOf || (indexOf === SC.Array.indexOf)) {
|
583
|
+
Array.prototype.indexOf = function(object, startAt) {
|
584
|
+
var idx, len = this.length;
|
585
|
+
|
586
|
+
if (startAt === undefined) startAt = 0;
|
587
|
+
else startAt = (startAt < 0) ? Math.ceil(startAt) : Math.floor(startAt);
|
588
|
+
if (startAt < 0) startAt += len;
|
589
|
+
|
590
|
+
for(idx=startAt;idx<len;idx++) {
|
591
|
+
if (this[idx] === object) return idx ;
|
397
592
|
}
|
398
593
|
return -1;
|
399
|
-
}
|
400
|
-
}
|
594
|
+
} ;
|
595
|
+
}
|
401
596
|
|
402
|
-
|
403
|
-
|
597
|
+
var lastIndexOf = Array.prototype.lastIndexOf ;
|
598
|
+
if (!lastIndexOf || (lastIndexOf === SC.Array.lastIndexOf)) {
|
599
|
+
Array.prototype.lastIndexOf = function(object, startAt) {
|
600
|
+
var idx, len = this.length;
|
601
|
+
|
602
|
+
if (startAt === undefined) startAt = len-1;
|
603
|
+
else startAt = (startAt < 0) ? Math.ceil(startAt) : Math.floor(startAt);
|
604
|
+
if (startAt < 0) startAt += len;
|
605
|
+
|
606
|
+
for(idx=startAt;idx>=0;idx--) {
|
607
|
+
if (this[idx] === object) return idx ;
|
608
|
+
}
|
609
|
+
return -1;
|
610
|
+
};
|
611
|
+
}
|
612
|
+
|
613
|
+
})();
|