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,64 @@
|
|
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
|
+
/**
|
9
|
+
@namespace
|
10
|
+
|
11
|
+
Implements some standard methods for copying an object. Add this mixin to
|
12
|
+
any object you create that can create a copy of itself. This mixin is
|
13
|
+
added automatically to the built-in array.
|
14
|
+
|
15
|
+
You should generally implement the copy() method to return a copy of the
|
16
|
+
recevier.
|
17
|
+
|
18
|
+
Note that frozenCopy() will only work if you implement SC.Freezable as well.
|
19
|
+
|
20
|
+
@since SproutCore 1.0
|
21
|
+
*/
|
22
|
+
SC.Copyable = {
|
23
|
+
|
24
|
+
/**
|
25
|
+
walk like a duck. Indicates that the object can be copied.
|
26
|
+
|
27
|
+
@type Boolean
|
28
|
+
*/
|
29
|
+
isCopyable: YES,
|
30
|
+
|
31
|
+
/**
|
32
|
+
Override to return a copy of the receiver. Default implementation raises
|
33
|
+
an exception.
|
34
|
+
|
35
|
+
@returns {Object} copy of receiver
|
36
|
+
*/
|
37
|
+
copy: function() {
|
38
|
+
throw "%@.copy() is not implemented";
|
39
|
+
},
|
40
|
+
|
41
|
+
/**
|
42
|
+
If the object implements SC.Freezable, then this will return a new copy
|
43
|
+
if the object is not frozen and the receiver if the object is frozen.
|
44
|
+
|
45
|
+
Raises an exception if you try to call this method on a object that does
|
46
|
+
not support freezing.
|
47
|
+
|
48
|
+
You should use this method whenever you want a copy of a freezable object
|
49
|
+
since a freezable object can simply return itself without actually
|
50
|
+
consuming more memory.
|
51
|
+
|
52
|
+
@returns {Object} copy of receiver or receiver
|
53
|
+
*/
|
54
|
+
frozenCopy: function() {
|
55
|
+
var isFrozen = this.get ? this.get('isFrozen') : this.isFrozen;
|
56
|
+
if (isFrozen === YES) return this;
|
57
|
+
else if (isFrozen === undefined) throw "%@ does not support freezing";
|
58
|
+
else return this.copy().freeze();
|
59
|
+
}
|
60
|
+
};
|
61
|
+
|
62
|
+
// Make Array copyable
|
63
|
+
SC.mixin(Array.prototype, SC.Copyable);
|
64
|
+
Array.prototype.copy = Array.prototype.slice;
|
@@ -34,6 +34,31 @@
|
|
34
34
|
*/
|
35
35
|
SC.DelegateSupport = {
|
36
36
|
|
37
|
+
/**
|
38
|
+
Selects the delegate that implements the specified method name. Pass one
|
39
|
+
or more delegates. The receiver is automatically included as a default.
|
40
|
+
|
41
|
+
This can be more efficient than using invokeDelegateMethod() which has
|
42
|
+
to marshall arguments into a delegate call.
|
43
|
+
|
44
|
+
@param {String} methodName
|
45
|
+
@param {Object...} delegate one or more delegate arguments
|
46
|
+
@returns {Object} delegate or null
|
47
|
+
*/
|
48
|
+
delegateFor: function(methodName) {
|
49
|
+
var idx = 1,
|
50
|
+
len = arguments.length,
|
51
|
+
ret ;
|
52
|
+
|
53
|
+
while(idx<len) {
|
54
|
+
ret = arguments[idx];
|
55
|
+
if (ret && ret[methodName] !== undefined) return ret ;
|
56
|
+
idx++;
|
57
|
+
}
|
58
|
+
|
59
|
+
return (this[methodName] !== undefined) ? this : null;
|
60
|
+
},
|
61
|
+
|
37
62
|
/**
|
38
63
|
Invokes the named method on the delegate that you pass. If no delegate
|
39
64
|
is defined or if the delegate does not implement the method, then a
|
@@ -49,7 +74,7 @@ SC.DelegateSupport = {
|
|
49
74
|
@returns value returned by delegate
|
50
75
|
*/
|
51
76
|
invokeDelegateMethod: function(delegate, methodName, args) {
|
52
|
-
args = SC
|
77
|
+
args = SC.A(arguments); args = args.slice(2, args.length) ;
|
53
78
|
if (!delegate || !delegate[methodName]) delegate = this ;
|
54
79
|
|
55
80
|
var method = delegate[methodName];
|
@@ -57,14 +82,27 @@ SC.DelegateSupport = {
|
|
57
82
|
},
|
58
83
|
|
59
84
|
/**
|
60
|
-
|
61
|
-
|
85
|
+
Search the named delegates for the passed property. If one is found,
|
86
|
+
gets the property value and returns it. If none of the passed delegates
|
87
|
+
implement the property, search the receiver for the property as well.
|
62
88
|
|
63
|
-
@param {Object} delegate the delegate or null
|
64
89
|
@param {String} key the property to get.
|
90
|
+
@param {Object} delegate one or more delegate
|
91
|
+
@returns {Object} property value or undefined
|
65
92
|
*/
|
66
|
-
getDelegateProperty: function(
|
67
|
-
|
93
|
+
getDelegateProperty: function(key, delegate) {
|
94
|
+
var idx = 1,
|
95
|
+
len = arguments.length,
|
96
|
+
ret ;
|
97
|
+
|
98
|
+
while(idx<len) {
|
99
|
+
ret = arguments[idx++];
|
100
|
+
if (ret && ret[key] !== undefined) {
|
101
|
+
return ret.get ? ret.get(key) : ret[key] ;
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
return (this[key] !== undefined) ? this.get(key) : undefined ;
|
68
106
|
}
|
69
107
|
|
70
108
|
};
|
@@ -8,6 +8,8 @@
|
|
8
8
|
require('core') ;
|
9
9
|
require('system/enumerator');
|
10
10
|
|
11
|
+
/*globals Prototype */
|
12
|
+
|
11
13
|
/**
|
12
14
|
@namespace
|
13
15
|
|
@@ -48,6 +50,11 @@ require('system/enumerator');
|
|
48
50
|
*/
|
49
51
|
SC.Enumerable = {
|
50
52
|
|
53
|
+
/**
|
54
|
+
Walk like a duck.
|
55
|
+
*/
|
56
|
+
isEnumerable: YES,
|
57
|
+
|
51
58
|
/**
|
52
59
|
Implement this method to make your class enumerable.
|
53
60
|
|
@@ -80,9 +87,32 @@ SC.Enumerable = {
|
|
80
87
|
@returns {Object} the next object in the iteration or undefined
|
81
88
|
*/
|
82
89
|
nextObject: function(index, previousObject, context) {
|
83
|
-
return
|
90
|
+
return this.objectAt ? this.objectAt(index) : this[index] ;
|
84
91
|
},
|
85
92
|
|
93
|
+
/**
|
94
|
+
Helper method returns the first object from a collection. This is usually
|
95
|
+
used by bindings and other parts of the framework to extract a single
|
96
|
+
object if the enumerable contains only one item.
|
97
|
+
|
98
|
+
If you override this method, you should implement it so that it will
|
99
|
+
always return the same value each time it is called. If your enumerable
|
100
|
+
contains only one object, this method should always return that object.
|
101
|
+
If your enumerable is empty, this method should return undefined.
|
102
|
+
|
103
|
+
@returns {Object} the object or undefined
|
104
|
+
*/
|
105
|
+
firstObject: function() {
|
106
|
+
if (this.get('length')===0) return undefined ;
|
107
|
+
if (this.objectAt) return this.objectAt(0); // support arrays out of box
|
108
|
+
|
109
|
+
// handle generic enumerables
|
110
|
+
var context = SC.Enumerator._popContext(), ret;
|
111
|
+
ret = this.nextObject(0, null, context);
|
112
|
+
context = SC.Enumerator._pushContext(context);
|
113
|
+
return ret ;
|
114
|
+
}.property(),
|
115
|
+
|
86
116
|
/**
|
87
117
|
Returns a new enumerator for this object. See SC.Enumerator for
|
88
118
|
documentation on how to use this object. Enumeration is an alternative
|
@@ -118,7 +148,7 @@ SC.Enumerable = {
|
|
118
148
|
*/
|
119
149
|
forEach: function(callback, target) {
|
120
150
|
if (typeof callback !== "function") throw new TypeError() ;
|
121
|
-
var len =
|
151
|
+
var len = this.get ? this.get('length') : this.length ;
|
122
152
|
if (target === undefined) target = null;
|
123
153
|
|
124
154
|
var last = null ;
|
@@ -143,14 +173,14 @@ SC.Enumerable = {
|
|
143
173
|
@returns {Array} extracted values
|
144
174
|
*/
|
145
175
|
getEach: function(key) {
|
146
|
-
var len =
|
176
|
+
var len = this.get ? this.get('length') : this.length ;
|
147
177
|
var ret = [] ;
|
148
178
|
|
149
179
|
var last = null ;
|
150
180
|
var context = SC.Enumerator._popContext();
|
151
181
|
for(var idx=0;idx<len;idx++) {
|
152
182
|
var next = this.nextObject(idx, last, context) ;
|
153
|
-
var obj =
|
183
|
+
var obj = next ? (next.get ? next.get(key) : next[key]) : null;
|
154
184
|
ret[ret.length] = obj;
|
155
185
|
last = next ;
|
156
186
|
}
|
@@ -170,7 +200,7 @@ SC.Enumerable = {
|
|
170
200
|
@returns {Object} receiver
|
171
201
|
*/
|
172
202
|
setEach: function(key, value) {
|
173
|
-
var len =
|
203
|
+
var len = this.get ? this.get('length') : this.length ;
|
174
204
|
|
175
205
|
var last = null ;
|
176
206
|
var context = SC.Enumerator._popContext();
|
@@ -215,7 +245,7 @@ SC.Enumerable = {
|
|
215
245
|
*/
|
216
246
|
map: function(callback, target) {
|
217
247
|
if (typeof callback !== "function") throw new TypeError() ;
|
218
|
-
var len =
|
248
|
+
var len = this.get ? this.get('length') : this.length ;
|
219
249
|
if (target === undefined) target = null;
|
220
250
|
|
221
251
|
var ret = [];
|
@@ -239,13 +269,13 @@ SC.Enumerable = {
|
|
239
269
|
@returns {Array} The mapped array.
|
240
270
|
*/
|
241
271
|
mapProperty: function(key) {
|
242
|
-
var len =
|
272
|
+
var len = this.get ? this.get('length') : this.length ;
|
243
273
|
var ret = [];
|
244
274
|
var last = null ;
|
245
275
|
var context = SC.Enumerator._popContext();
|
246
276
|
for(var idx=0;idx<len;idx++) {
|
247
277
|
var next = this.nextObject(idx, last, context) ;
|
248
|
-
ret[idx] =
|
278
|
+
ret[idx] = next ? (next.get ? next.get(key) : next[key]) : null;
|
249
279
|
last = next ;
|
250
280
|
}
|
251
281
|
last = null ;
|
@@ -281,7 +311,7 @@ SC.Enumerable = {
|
|
281
311
|
*/
|
282
312
|
filter: function(callback, target) {
|
283
313
|
if (typeof callback !== "function") throw new TypeError() ;
|
284
|
-
var len =
|
314
|
+
var len = this.get ? this.get('length') : this.length ;
|
285
315
|
if (target === undefined) target = null;
|
286
316
|
|
287
317
|
var ret = [];
|
@@ -297,6 +327,41 @@ SC.Enumerable = {
|
|
297
327
|
return ret ;
|
298
328
|
},
|
299
329
|
|
330
|
+
/**
|
331
|
+
Returns an array sorted by the value of the passed key parameters.
|
332
|
+
null objects will be sorted first. You can pass either an array of keys
|
333
|
+
or multiple parameters which will act as key names
|
334
|
+
|
335
|
+
@param {String} key one or more key names
|
336
|
+
@returns {Array}
|
337
|
+
*/
|
338
|
+
sortProperty: function(key) {
|
339
|
+
var keys = (typeof key === SC.T_STRING) ? arguments : key,
|
340
|
+
len = keys.length,
|
341
|
+
src;
|
342
|
+
|
343
|
+
// get the src array to sort
|
344
|
+
if (this instanceof Array) src = this;
|
345
|
+
else {
|
346
|
+
src = [];
|
347
|
+
this.forEach(function(i) { src.push(i); });
|
348
|
+
}
|
349
|
+
|
350
|
+
if (!src) return [];
|
351
|
+
return src.sort(function(a,b) {
|
352
|
+
var idx, key, aValue, bValue, ret = 0;
|
353
|
+
|
354
|
+
for(idx=0;ret===0 && idx<len;idx++) {
|
355
|
+
key = keys[idx];
|
356
|
+
aValue = a ? (a.get ? a.get(key) : a[key]) : null;
|
357
|
+
bValue = b ? (b.get ? b.get(key) : b[key]) : null;
|
358
|
+
ret = SC.compare(aValue, bValue);
|
359
|
+
}
|
360
|
+
return ret ;
|
361
|
+
});
|
362
|
+
},
|
363
|
+
|
364
|
+
|
300
365
|
/**
|
301
366
|
Returns an array with just the items with the matched property. You
|
302
367
|
can pass an optional second argument with the target value. Otherwise
|
@@ -307,13 +372,13 @@ SC.Enumerable = {
|
|
307
372
|
@returns {Array} filtered array
|
308
373
|
*/
|
309
374
|
filterProperty: function(key, value) {
|
310
|
-
var len =
|
375
|
+
var len = this.get ? this.get('length') : this.length ;
|
311
376
|
var ret = [];
|
312
377
|
var last = null ;
|
313
378
|
var context = SC.Enumerator._popContext();
|
314
379
|
for(var idx=0;idx<len;idx++) {
|
315
380
|
var next = this.nextObject(idx, last, context) ;
|
316
|
-
var cur =
|
381
|
+
var cur = next ? (next.get ? next.get(key) : next[key]) : null;
|
317
382
|
var matched = (value === undefined) ? !!cur : SC.isEqual(cur, value);
|
318
383
|
if (matched) ret.push(next) ;
|
319
384
|
last = next ;
|
@@ -351,10 +416,10 @@ SC.Enumerable = {
|
|
351
416
|
*/
|
352
417
|
find: function(callback, target) {
|
353
418
|
if (typeof callback !== "function") throw new TypeError() ;
|
354
|
-
var len =
|
419
|
+
var len = this.get ? this.get('length') : this.length ;
|
355
420
|
if (target === undefined) target = null;
|
356
|
-
|
357
|
-
var next, found = NO, ret = null ;
|
421
|
+
|
422
|
+
var last = null, next, found = NO, ret = null ;
|
358
423
|
var context = SC.Enumerator._popContext();
|
359
424
|
for(var idx=0;idx<len && !found;idx++) {
|
360
425
|
next = this.nextObject(idx, last, context) ;
|
@@ -378,12 +443,12 @@ SC.Enumerable = {
|
|
378
443
|
@returns {Object} found item or null
|
379
444
|
*/
|
380
445
|
findProperty: function(key, value) {
|
381
|
-
var len =
|
446
|
+
var len = this.get ? this.get('length') : this.length ;
|
382
447
|
var found = NO, ret = null, last = null, next, cur ;
|
383
448
|
var context = SC.Enumerator._popContext();
|
384
449
|
for(var idx=0;idx<len && !found;idx++) {
|
385
450
|
next = this.nextObject(idx, last, context) ;
|
386
|
-
cur =
|
451
|
+
cur = next ? (next.get ? next.get(key) : next[key]) : null;
|
387
452
|
found = (value === undefined) ? !!cur : SC.isEqual(cur, value);
|
388
453
|
if (found) ret = next ;
|
389
454
|
last = next ;
|
@@ -426,7 +491,7 @@ SC.Enumerable = {
|
|
426
491
|
*/
|
427
492
|
every: function(callback, target) {
|
428
493
|
if (typeof callback !== "function") throw new TypeError() ;
|
429
|
-
var len =
|
494
|
+
var len = this.get ? this.get('length') : this.length ;
|
430
495
|
if (target === undefined) target = null;
|
431
496
|
|
432
497
|
var ret = YES;
|
@@ -451,13 +516,13 @@ SC.Enumerable = {
|
|
451
516
|
@returns {Array} filtered array
|
452
517
|
*/
|
453
518
|
everyProperty: function(key, value) {
|
454
|
-
var len =
|
519
|
+
var len = this.get ? this.get('length') : this.length ;
|
455
520
|
var ret = YES;
|
456
521
|
var last = null ;
|
457
522
|
var context = SC.Enumerator._popContext();
|
458
523
|
for(var idx=0;ret && (idx<len);idx++) {
|
459
524
|
var next = this.nextObject(idx, last, context) ;
|
460
|
-
var cur =
|
525
|
+
var cur = next ? (next.get ? next.get(key) : next[key]) : null;
|
461
526
|
ret = (value === undefined) ? !!cur : SC.isEqual(cur, value);
|
462
527
|
last = next ;
|
463
528
|
}
|
@@ -500,7 +565,7 @@ SC.Enumerable = {
|
|
500
565
|
*/
|
501
566
|
some: function(callback, target) {
|
502
567
|
if (typeof callback !== "function") throw new TypeError() ;
|
503
|
-
var len =
|
568
|
+
var len = this.get ? this.get('length') : this.length ;
|
504
569
|
if (target === undefined) target = null;
|
505
570
|
|
506
571
|
var ret = NO;
|
@@ -525,13 +590,13 @@ SC.Enumerable = {
|
|
525
590
|
@returns {Boolean} YES
|
526
591
|
*/
|
527
592
|
someProperty: function(key, value) {
|
528
|
-
var len =
|
593
|
+
var len = this.get ? this.get('length') : this.length ;
|
529
594
|
var ret = NO;
|
530
595
|
var last = null ;
|
531
596
|
var context = SC.Enumerator._popContext();
|
532
597
|
for(var idx=0; !ret && (idx<len); idx++) {
|
533
598
|
var next = this.nextObject(idx, last, context) ;
|
534
|
-
var cur =
|
599
|
+
var cur = next ? (next.get ? next.get(key) : next[key]) : null;
|
535
600
|
ret = (value === undefined) ? !!cur : SC.isEqual(cur, value);
|
536
601
|
last = next ;
|
537
602
|
}
|
@@ -574,7 +639,7 @@ SC.Enumerable = {
|
|
574
639
|
*/
|
575
640
|
reduce: function(callback, initialValue, reducerProperty) {
|
576
641
|
if (typeof callback !== "function") throw new TypeError() ;
|
577
|
-
var len =
|
642
|
+
var len = this.get ? this.get('length') : this.length ;
|
578
643
|
|
579
644
|
// no value to return if no initial value & empty
|
580
645
|
if (len===0 && initialValue === undefined) throw new TypeError();
|
@@ -588,7 +653,7 @@ SC.Enumerable = {
|
|
588
653
|
// while ret is still undefined, just set the first value we get as ret.
|
589
654
|
// this is not the ideal behavior actually but it matches the FireFox
|
590
655
|
// implementation... :(
|
591
|
-
if (next
|
656
|
+
if (next !== null) {
|
592
657
|
if (ret === undefined) {
|
593
658
|
ret = next ;
|
594
659
|
} else {
|
@@ -615,23 +680,25 @@ SC.Enumerable = {
|
|
615
680
|
@returns {Array} return values from calling invoke.
|
616
681
|
*/
|
617
682
|
invoke: function(methodName) {
|
618
|
-
var len =
|
683
|
+
var len = this.get ? this.get('length') : this.length ;
|
619
684
|
if (len <= 0) return [] ; // nothing to invoke....
|
620
|
-
|
685
|
+
|
686
|
+
var idx;
|
687
|
+
|
621
688
|
// collect the arguments
|
622
689
|
var args = [] ;
|
623
690
|
var alen = arguments.length ;
|
624
691
|
if (alen > 1) {
|
625
|
-
for(
|
692
|
+
for(idx=1;idx<alen;idx++) args.push(arguments[idx]) ;
|
626
693
|
}
|
627
694
|
|
628
695
|
// call invoke
|
629
696
|
var ret = [] ;
|
630
697
|
var last = null ;
|
631
698
|
var context = SC.Enumerator._popContext();
|
632
|
-
for(
|
699
|
+
for(idx=0;idx<len;idx++) {
|
633
700
|
var next = this.nextObject(idx, last, context) ;
|
634
|
-
var method =
|
701
|
+
var method = next ? next[methodName] : null ;
|
635
702
|
if (method) ret[idx] = method.apply(next, args) ;
|
636
703
|
last = next ;
|
637
704
|
}
|
@@ -652,23 +719,25 @@ SC.Enumerable = {
|
|
652
719
|
@returns {Array} return values from calling invoke.
|
653
720
|
*/
|
654
721
|
invokeWhile: function(targetValue, methodName) {
|
655
|
-
var len =
|
722
|
+
var len = this.get ? this.get('length') : this.length ;
|
656
723
|
if (len <= 0) return null; // nothing to invoke....
|
657
724
|
|
725
|
+
var idx;
|
726
|
+
|
658
727
|
// collect the arguments
|
659
728
|
var args = [] ;
|
660
729
|
var alen = arguments.length ;
|
661
730
|
if (alen > 2) {
|
662
|
-
for(
|
731
|
+
for(idx=2;idx<alen;idx++) args.push(arguments[idx]) ;
|
663
732
|
}
|
664
733
|
|
665
734
|
// call invoke
|
666
735
|
var ret = targetValue ;
|
667
736
|
var last = null ;
|
668
737
|
var context = SC.Enumerator._popContext();
|
669
|
-
for(
|
738
|
+
for(idx=0;(ret === targetValue) && (idx<len);idx++) {
|
670
739
|
var next = this.nextObject(idx, last, context) ;
|
671
|
-
var method =
|
740
|
+
var method = next ? next[methodName] : null ;
|
672
741
|
if (method) ret = method.apply(next, args) ;
|
673
742
|
last = next ;
|
674
743
|
}
|
@@ -685,22 +754,11 @@ SC.Enumerable = {
|
|
685
754
|
@returns {Array} the enumerable as an array.
|
686
755
|
*/
|
687
756
|
toArray: function() {
|
688
|
-
var
|
689
|
-
|
690
|
-
|
691
|
-
// call invoke
|
692
|
-
var ret = [] ;
|
693
|
-
var last = null ;
|
694
|
-
var context = SC.Enumerator._popContext();
|
695
|
-
for(var idx=0;idx<len;idx++) {
|
696
|
-
var next = this.nextObject(idx, last, context) ;
|
697
|
-
ret.push(next) ;
|
698
|
-
last = next ;
|
699
|
-
}
|
700
|
-
last = null ;
|
701
|
-
context = SC.Enumerator._pushContext(context);
|
757
|
+
var ret = [];
|
758
|
+
this.forEach(function(o) { ret.push(o); }, this);
|
702
759
|
return ret ;
|
703
760
|
}
|
761
|
+
|
704
762
|
} ;
|
705
763
|
|
706
764
|
// Build in a separate function to avoid unintential leaks through closures...
|
@@ -708,7 +766,7 @@ SC._buildReducerFor = function(reducerKey, reducerProperty) {
|
|
708
766
|
return function(key, value) {
|
709
767
|
var reducer = this[reducerKey] ;
|
710
768
|
if (SC.typeOf(reducer) !== SC.T_FUNCTION) {
|
711
|
-
return
|
769
|
+
return this.unknownProperty ? this.unknownProperty(key, value) : null;
|
712
770
|
} else {
|
713
771
|
// Invoke the reduce method defined in enumerable instead of using the
|
714
772
|
// one implemented in the receiver. The receiver might be a native
|
@@ -784,7 +842,7 @@ SC.Reducers = {
|
|
784
842
|
|
785
843
|
var reducerKey = matches[1]; // = 'max' if key = '@max(balance)'
|
786
844
|
var reducerProperty = matches[3] ; // = 'balance' if key = '@max(balance)'
|
787
|
-
|
845
|
+
reducerKey = "reduce" + reducerKey.slice(0,1).toUpperCase() + reducerKey.slice(1);
|
788
846
|
var reducer = this[reducerKey] ;
|
789
847
|
|
790
848
|
// if there is no reduce function defined for this key, then we can't
|
@@ -820,9 +878,9 @@ SC.Reducers = {
|
|
820
878
|
*/
|
821
879
|
reduceMax: function(previousValue, item, index, e, reducerProperty) {
|
822
880
|
if (reducerProperty && item) {
|
823
|
-
item =
|
881
|
+
item = item.get ? item.get(reducerProperty) : item[reducerProperty];
|
824
882
|
}
|
825
|
-
if (previousValue
|
883
|
+
if (previousValue === null) return item ;
|
826
884
|
return (item > previousValue) ? item : previousValue ;
|
827
885
|
},
|
828
886
|
|
@@ -836,14 +894,14 @@ SC.Reducers = {
|
|
836
894
|
var previousValue = previousItem, itemValue = item ;
|
837
895
|
if (reducerProperty) {
|
838
896
|
if (item) {
|
839
|
-
itemValue =
|
897
|
+
itemValue = item.get ? item.get(reducerProperty) : item[reducerProperty] ;
|
840
898
|
}
|
841
899
|
|
842
900
|
if (previousItem) {
|
843
|
-
|
901
|
+
previousValue = previousItem.get ? previousItem.get(reducerProperty) : previousItem[reducerProperty] ;
|
844
902
|
}
|
845
903
|
}
|
846
|
-
if (previousValue
|
904
|
+
if (previousValue === null) return item ;
|
847
905
|
return (itemValue > previousValue) ? item : previousItem ;
|
848
906
|
},
|
849
907
|
|
@@ -852,9 +910,9 @@ SC.Reducers = {
|
|
852
910
|
*/
|
853
911
|
reduceMin: function(previousValue, item, index, e, reducerProperty) {
|
854
912
|
if (reducerProperty && item) {
|
855
|
-
item =
|
913
|
+
item = item.get ? item.get(reducerProperty) : item[reducerProperty];
|
856
914
|
}
|
857
|
-
if (previousValue
|
915
|
+
if (previousValue === null) return item ;
|
858
916
|
return (item < previousValue) ? item : previousValue ;
|
859
917
|
},
|
860
918
|
|
@@ -868,14 +926,14 @@ SC.Reducers = {
|
|
868
926
|
var previousValue = previousItem, itemValue = item ;
|
869
927
|
if (reducerProperty) {
|
870
928
|
if (item) {
|
871
|
-
itemValue =
|
929
|
+
itemValue = item.get ? item.get(reducerProperty) : item[reducerProperty] ;
|
872
930
|
}
|
873
931
|
|
874
932
|
if (previousItem) {
|
875
|
-
|
933
|
+
previousValue = previousItem.get ? previousItem.get(reducerProperty) : previousItem[reducerProperty] ;
|
876
934
|
}
|
877
935
|
}
|
878
|
-
if (previousValue
|
936
|
+
if (previousValue === null) return item ;
|
879
937
|
return (itemValue < previousValue) ? item : previousItem ;
|
880
938
|
},
|
881
939
|
|
@@ -884,10 +942,10 @@ SC.Reducers = {
|
|
884
942
|
*/
|
885
943
|
reduceAverage: function(previousValue, item, index, e, reducerProperty) {
|
886
944
|
if (reducerProperty && item) {
|
887
|
-
item =
|
945
|
+
item = item.get ? item.get(reducerProperty) : item[reducerProperty];
|
888
946
|
}
|
889
947
|
var ret = (previousValue || 0) + item ;
|
890
|
-
var len =
|
948
|
+
var len = e.get ? e.get('length') : e.length;
|
891
949
|
if (index >= len-1) ret = ret / len; //avg after last item.
|
892
950
|
return ret ;
|
893
951
|
},
|
@@ -897,15 +955,16 @@ SC.Reducers = {
|
|
897
955
|
*/
|
898
956
|
reduceSum: function(previousValue, item, index, e, reducerProperty) {
|
899
957
|
if (reducerProperty && item) {
|
900
|
-
item =
|
958
|
+
item = item.get ? item.get(reducerProperty) : item[reducerProperty];
|
901
959
|
}
|
902
|
-
return (previousValue
|
960
|
+
return (previousValue === null) ? item : previousValue + item ;
|
903
961
|
}
|
904
962
|
} ;
|
905
963
|
|
906
964
|
// Apply reducers...
|
907
965
|
SC.mixin(SC.Enumerable, SC.Reducers) ;
|
908
966
|
SC.mixin(Array.prototype, SC.Reducers) ;
|
967
|
+
Array.prototype.isEnumerable = YES ;
|
909
968
|
|
910
969
|
// ......................................................
|
911
970
|
// ARRAY SUPPORT
|
@@ -924,14 +983,16 @@ SC.mixin(Array.prototype, SC.Reducers) ;
|
|
924
983
|
// possible.
|
925
984
|
nextObject: SC.Enumerable.nextObject,
|
926
985
|
enumerator: SC.Enumerable.enumerator,
|
927
|
-
|
986
|
+
firstObject: SC.Enumerable.firstObject,
|
987
|
+
sortProperty: SC.Enumerable.sortProperty,
|
988
|
+
|
928
989
|
// see above...
|
929
990
|
mapProperty: function(key) {
|
930
991
|
var len = this.length ;
|
931
992
|
var ret = [];
|
932
993
|
for(var idx=0;idx<len;idx++) {
|
933
994
|
var next = this[idx] ;
|
934
|
-
ret[idx] =
|
995
|
+
ret[idx] = next ? (next.get ? next.get(key) : next[key]) : null;
|
935
996
|
}
|
936
997
|
return ret ;
|
937
998
|
},
|
@@ -941,7 +1002,7 @@ SC.mixin(Array.prototype, SC.Reducers) ;
|
|
941
1002
|
var ret = [];
|
942
1003
|
for(var idx=0;idx<len;idx++) {
|
943
1004
|
var next = this[idx] ;
|
944
|
-
var cur =
|
1005
|
+
var cur = next ? (next.get ? next.get(key) : next[key]) : null;
|
945
1006
|
var matched = (value === undefined) ? !!cur : SC.isEqual(cur, value);
|
946
1007
|
if (matched) ret.push(next) ;
|
947
1008
|
}
|
@@ -966,7 +1027,7 @@ SC.mixin(Array.prototype, SC.Reducers) ;
|
|
966
1027
|
var len = this.length ;
|
967
1028
|
var next, cur, found=NO, ret=null;
|
968
1029
|
for(var idx=0;idx<len && !found;idx++) {
|
969
|
-
cur = (next=this[idx]) ? (
|
1030
|
+
cur = (next=this[idx]) ? (next.get ? next.get(key): next[key]):null;
|
970
1031
|
found = (value === undefined) ? !!cur : SC.isEqual(cur, value);
|
971
1032
|
if (found) ret = next ;
|
972
1033
|
}
|
@@ -979,7 +1040,7 @@ SC.mixin(Array.prototype, SC.Reducers) ;
|
|
979
1040
|
var ret = YES;
|
980
1041
|
for(var idx=0;ret && (idx<len);idx++) {
|
981
1042
|
var next = this[idx] ;
|
982
|
-
var cur =
|
1043
|
+
var cur = next ? (next.get ? next.get(key) : next[key]) : null;
|
983
1044
|
ret = (value === undefined) ? !!cur : SC.isEqual(cur, value);
|
984
1045
|
}
|
985
1046
|
return ret ;
|
@@ -990,7 +1051,7 @@ SC.mixin(Array.prototype, SC.Reducers) ;
|
|
990
1051
|
var ret = NO;
|
991
1052
|
for(var idx=0; !ret && (idx<len); idx++) {
|
992
1053
|
var next = this[idx] ;
|
993
|
-
var cur =
|
1054
|
+
var cur = next ? (next.get ? next.get(key) : next[key]) : null;
|
994
1055
|
ret = (value === undefined) ? !!cur : SC.isEqual(cur, value);
|
995
1056
|
}
|
996
1057
|
return ret ; // return the invert
|
@@ -1000,18 +1061,20 @@ SC.mixin(Array.prototype, SC.Reducers) ;
|
|
1000
1061
|
var len = this.length ;
|
1001
1062
|
if (len <= 0) return [] ; // nothing to invoke....
|
1002
1063
|
|
1064
|
+
var idx;
|
1065
|
+
|
1003
1066
|
// collect the arguments
|
1004
1067
|
var args = [] ;
|
1005
1068
|
var alen = arguments.length ;
|
1006
1069
|
if (alen > 1) {
|
1007
|
-
for(
|
1070
|
+
for(idx=1;idx<alen;idx++) args.push(arguments[idx]) ;
|
1008
1071
|
}
|
1009
1072
|
|
1010
1073
|
// call invoke
|
1011
1074
|
var ret = [] ;
|
1012
|
-
for(
|
1075
|
+
for(idx=0;idx<len;idx++) {
|
1013
1076
|
var next = this[idx] ;
|
1014
|
-
var method =
|
1077
|
+
var method = next ? next[methodName] : null ;
|
1015
1078
|
if (method) ret[idx] = method.apply(next, args) ;
|
1016
1079
|
}
|
1017
1080
|
return ret ;
|
@@ -1021,18 +1084,20 @@ SC.mixin(Array.prototype, SC.Reducers) ;
|
|
1021
1084
|
var len = this.length ;
|
1022
1085
|
if (len <= 0) return null ; // nothing to invoke....
|
1023
1086
|
|
1087
|
+
var idx;
|
1088
|
+
|
1024
1089
|
// collect the arguments
|
1025
1090
|
var args = [] ;
|
1026
1091
|
var alen = arguments.length ;
|
1027
1092
|
if (alen > 2) {
|
1028
|
-
for(
|
1093
|
+
for(idx=2;idx<alen;idx++) args.push(arguments[idx]) ;
|
1029
1094
|
}
|
1030
1095
|
|
1031
1096
|
// call invoke
|
1032
1097
|
var ret = targetValue ;
|
1033
|
-
for(
|
1098
|
+
for(idx=0;(ret === targetValue) && (idx<len);idx++) {
|
1034
1099
|
var next = this[idx] ;
|
1035
|
-
var method =
|
1100
|
+
var method = next ? next[methodName] : null ;
|
1036
1101
|
if (method) ret = method.apply(next, args) ;
|
1037
1102
|
}
|
1038
1103
|
return ret ;
|
@@ -1056,7 +1121,7 @@ SC.mixin(Array.prototype, SC.Reducers) ;
|
|
1056
1121
|
var len = this.length ;
|
1057
1122
|
for(var idx=0;idx<len;idx++) {
|
1058
1123
|
var obj = this[idx];
|
1059
|
-
ret[idx] =
|
1124
|
+
ret[idx] = obj ? (obj.get ? obj.get(key) : obj[key]) : null;
|
1060
1125
|
}
|
1061
1126
|
return ret ;
|
1062
1127
|
},
|
@@ -1158,7 +1223,7 @@ SC.mixin(Array.prototype, SC.Reducers) ;
|
|
1158
1223
|
// while ret is still undefined, just set the first value we get as
|
1159
1224
|
// ret. this is not the ideal behavior actually but it matches the
|
1160
1225
|
// FireFox implementation... :(
|
1161
|
-
if (next
|
1226
|
+
if (next !== null) {
|
1162
1227
|
if (ret === undefined) {
|
1163
1228
|
ret = next ;
|
1164
1229
|
} else {
|