sproutcore 1.7.1.beta → 1.8.0
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/CHANGELOG +44 -0
- data/README.rdoc +20 -20
- data/VERSION.yml +3 -3
- data/lib/Buildfile +1 -1
- data/lib/buildtasks/build.rake +5 -0
- data/lib/buildtasks/manifest.rake +19 -1
- data/lib/frameworks/sproutcore/Buildfile +19 -17
- data/lib/frameworks/sproutcore/CHANGELOG.md +163 -29
- data/lib/frameworks/sproutcore/README.md +29 -8
- data/lib/frameworks/sproutcore/apps/statechart_routing/Buildfile +12 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/login_controller.js +11 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/main_controller.js +7 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/statechart_controller.js +17 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +25 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/main.js +15 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/_theme.css +18 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/bar_page.js +14 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/foo_page.js +14 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/loading.rhtml +9 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +61 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/main_page.js +46 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/statechart.js +76 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/theme.js +27 -0
- data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +1 -1
- data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +14 -1
- data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +15 -15
- data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/animation/core.js +8 -5
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +302 -70
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +19 -14
- data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +471 -149
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +42 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +7 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/action_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +63 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +37 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +28 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +10 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +66 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/builder.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +58 -57
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js.orig +445 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +51 -31
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +53 -69
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +98 -72
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +37 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +7 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +23 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/browser.js +66 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/event.js +22 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/locale.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/escape_html.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +8 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +17 -16
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +15 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +50 -30
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +46 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +1 -43
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +8 -34
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +10 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +6 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +22 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +35 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +46 -19
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +23 -9
- data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +2 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +294 -302
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js.orig +1531 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +14 -11
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/many_array.js +63 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +50 -10
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +114 -67
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +54 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +29 -9
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +37 -45
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +127 -127
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +42 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +13 -7
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/debug/core.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +1 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +19 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +30 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +24 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +121 -28
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +15 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +39 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +14 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -51
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +11 -16
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +0 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +9 -9
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/content.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +107 -81
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +68 -60
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +57 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +21 -19
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +5 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +32 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +0 -8
- data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +77 -132
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +5 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +16 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +52 -52
- data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +147 -147
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +11 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +22 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +13 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +462 -441
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +48 -62
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +22 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +150 -32
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +104 -45
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +42 -20
- data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +148 -154
- data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +8 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/files.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/library.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/view_configs.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/mixins/drop_down.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/ready.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/plist_item.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/web.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_design.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style_sheet.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/object_designer.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/snap_lines.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/designer_drop_target.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/drawing.js +21 -21
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/page_item_view.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +59 -53
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +6 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +14 -10
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +17 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +38 -14
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +5 -13
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/children.js +19 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +20 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_thumb.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +35 -12
- data/lib/frameworks/sproutcore/frameworks/formatters/README +6 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/english.lproj/strings.js +174 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +351 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/tests/date_formatter.js +517 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +345 -138
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +176 -42
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +137 -105
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +16 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +47 -47
- data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +28 -6
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +0 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/bootstrap.rhtml +34 -19
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +0 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +1 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +8 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +179 -47
- data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +34 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +26 -12
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +12 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_metric_optimization.js +202 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_value_support/content.js +77 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +0 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +163 -149
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +16 -43
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +67 -54
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +49 -38
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +285 -242
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +13 -13
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +19 -22
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +231 -186
- data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +145 -143
- data/lib/frameworks/sproutcore/frameworks/media/views/video.js +156 -154
- data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js.orig +540 -0
- data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +15 -8
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +98 -32
- data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +7 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +14 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +98 -13
- data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +8 -14
- data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +23 -6
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +69 -18
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +57 -31
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +189 -14
- data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +82 -22
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +125 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +37 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +75 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart_delegate.js +113 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +312 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +18 -22
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +508 -131
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +78 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +265 -44
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/responder_chain.js +11 -3
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/private/state_path_matcher.js +116 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/add_substate.js +108 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/with_concurrent.js +179 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/without_concurrent.js +74 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_state.js +141 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_substate.js +340 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/route_triggered.js +161 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/try_to_handle_event.js +288 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/context.js +5 -33
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +213 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +212 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/core.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/{state/namespacing.js → statechart/methods/get_state.js} +3 -41
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/{invoke_state_method.js → methods/invoke_state_method.js} +1 -1
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/{event_handling/advanced → statechart}/respond_to_event.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/system/state_route_handler_context/methods/retry.js +64 -0
- data/lib/frameworks/sproutcore/frameworks/table/core.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/controls/button.js +0 -1
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars.js +29 -5
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/bind.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/collection.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/localization.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/view.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{handlebars → template_view}/handlebars.js +493 -357
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/checkbox_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/text_field_support.js +13 -2
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/panes/template.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/controls/button.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/checkbox_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/text_field_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/panes/template.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/collection.js +39 -14
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/handlebars.js +57 -6
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/bindable_span.js +21 -6
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template_collection.js +55 -26
- data/lib/frameworks/sproutcore/frameworks/testing/system/equiv.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +122 -122
- data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +1 -1
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +0 -1
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +4 -4
- data/lib/frameworks/sproutcore/lib/index.rhtml +55 -32
- data/lib/frameworks/sproutcore/license.js +2 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/body.css +5 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +21 -13
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +17 -10
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +4 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +20 -12
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +16 -8
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/jumbo/button.css +17 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/small/button.css +17 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +5 -3
- data/lib/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/toolbar.css +1 -1
- data/lib/gen/app/USAGE +17 -4
- data/lib/gen/language/Buildfile +4 -4
- data/lib/gen/language/USAGE +4 -4
- data/lib/gen/page/templates/pages/@target_name@/Buildfile +7 -7
- data/lib/gen/{html_app → statechart_app}/Buildfile +0 -0
- data/lib/gen/{html_app → statechart_app}/README +0 -0
- data/lib/gen/statechart_app/USAGE +21 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/Buildfile +9 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/core.js +24 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/main.js +26 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/_theme.css +18 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/loading.rhtml +9 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/main_page.js +21 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/statechart.js +8 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/states/ready_state.js +12 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/theme.js +24 -0
- data/lib/sproutcore/builders.rb +1 -0
- data/lib/sproutcore/builders/base.rb +19 -1
- data/lib/sproutcore/builders/chance_file.rb +6 -1
- data/lib/sproutcore/builders/handlebars.rb +1 -9
- data/lib/sproutcore/builders/javascript.rb +1 -10
- data/lib/sproutcore/builders/json.rb +25 -0
- data/lib/sproutcore/builders/less.rb +1 -1
- data/lib/sproutcore/builders/sass.rb +1 -1
- data/lib/sproutcore/builders/stylesheet.rb +1 -9
- data/lib/sproutcore/helpers/html5_manifest.rb +1 -1
- data/lib/sproutcore/helpers/static_helper.rb +42 -0
- data/lib/sproutcore/rack/proxy.rb +21 -3
- data/lib/sproutcore/rack/service.rb +3 -2
- data/lib/sproutcore/tools.rb +18 -25
- data/lib/sproutcore/tools/gen.rb +10 -3
- data/lib/sproutcore/tools/init.rb +11 -10
- data/spec/buildtasks/manifest/prepare_build_tasks/json_spec.rb +62 -0
- data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -1
- data/spec/fixtures/builder_tests/apps/json_test/sc_static.json +2 -0
- data/spec/lib/builders/json_spec.rb +53 -0
- data/sproutcore.gemspec +2 -2
- data/vendor/chance/lib/chance/parser.rb +1 -1
- metadata +222 -177
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/datetime.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +0 -259
- data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +0 -69
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +0 -44
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +0 -64
- data/lib/frameworks/sproutcore/frameworks/mini/license.js +0 -30
- data/lib/gen/html_app/USAGE +0 -15
- data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +0 -11
- data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -6
- data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +0 -1
- data/lib/gen/html_project/Buildfile +0 -45
- data/lib/gen/html_project/INIT +0 -3
- data/lib/gen/html_project/README +0 -1
- data/lib/gen/html_project/USAGE +0 -2
- data/lib/gen/html_project/templates/@filename@/Buildfile +0 -5
- data/lib/gen/html_project/templates/@filename@/README +0 -4
|
@@ -71,11 +71,22 @@ SC.Observers = {
|
|
|
71
71
|
tuple[0].removeObserver(tuple[1], target, method) ;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
// tests show that the fastest way is to create a new array. On Safari,
|
|
75
|
+
// it is fastest to set to null then loop over again to collapse, but for all other browsers
|
|
76
|
+
// it is not. Plus, this code shouldn't get hit very often anyway (it may not ever get hit
|
|
77
|
+
// for some apps).
|
|
78
|
+
idx = this.queue.length; queue = this.queue, newQueue = undefined;
|
|
75
79
|
while(--idx >= 0) {
|
|
76
|
-
item = queue[idx]
|
|
77
|
-
|
|
80
|
+
item = queue[idx];
|
|
81
|
+
|
|
82
|
+
if (item[0] !== propertyPath || item[1] !== target || item[2] !== method || item[3] !== pathRoot) {
|
|
83
|
+
if (!newQueue) newQueue = [];
|
|
84
|
+
newQueue.push(item);
|
|
85
|
+
}
|
|
78
86
|
}
|
|
87
|
+
|
|
88
|
+
// even though performance probably won't be a problem, we are defensive about memory alloc.
|
|
89
|
+
this.queue = newQueue || this.queue;
|
|
79
90
|
},
|
|
80
91
|
|
|
81
92
|
/**
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
/**
|
|
13
13
|
@namespace
|
|
14
14
|
|
|
15
|
-
This private class is used to store information about
|
|
15
|
+
This private class is used to store information about observers on a
|
|
16
16
|
particular key. Note that this object is not observable. You create new
|
|
17
17
|
instances by calling SC.beget(SC.ObserverSet) ;
|
|
18
18
|
|
|
@@ -24,23 +24,54 @@ SC.ObserverSet = {
|
|
|
24
24
|
/**
|
|
25
25
|
Adds the named target/method observer to the set. The method must be
|
|
26
26
|
a function, not a string.
|
|
27
|
-
|
|
28
|
-
Note that in debugging mode only, this method is overridden to also record
|
|
29
|
-
the name of the object and function that resulted in the target/method
|
|
30
|
-
being added.
|
|
31
27
|
*/
|
|
32
28
|
add: function(target, method, context) {
|
|
33
|
-
var targetGuid = SC.guidFor(target),
|
|
34
|
-
|
|
29
|
+
var targetGuid = SC.guidFor(target),
|
|
30
|
+
methodGuid = SC.guidFor(method),
|
|
31
|
+
targets = this._members,
|
|
32
|
+
members = this.members,
|
|
33
|
+
indexes = targets[targetGuid], // get the set of methods
|
|
34
|
+
index, member;
|
|
35
35
|
|
|
36
|
-
// get the set of methods
|
|
37
|
-
var indexes = targets[targetGuid];
|
|
38
36
|
if ( !indexes ) indexes = targets[targetGuid] = {};
|
|
39
37
|
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
index = indexes[methodGuid];
|
|
39
|
+
if (index === undefined) {
|
|
40
|
+
indexes[methodGuid] = members.length;
|
|
41
|
+
member = [target, method, context];
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
//@if(debug)
|
|
44
|
+
// If deferred call logging info was specified (i.e., in debug mode when
|
|
45
|
+
// such logging is enabled), we need to add it to the enqueued target/
|
|
46
|
+
// method.
|
|
47
|
+
member[3] = arguments[3];
|
|
48
|
+
//@endif
|
|
49
|
+
|
|
50
|
+
members.push(member);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
//@if(debug)
|
|
54
|
+
// If deferred call logging info was specified (i.e., in debug mode when
|
|
55
|
+
// such logging is enabled), we need to add it to the enqueued target/
|
|
56
|
+
// method.
|
|
57
|
+
var loggingInfo = arguments[3],
|
|
58
|
+
memberLoggingInfo;
|
|
59
|
+
|
|
60
|
+
if (loggingInfo) {
|
|
61
|
+
member = members[index];
|
|
62
|
+
memberLoggingInfo = member[3];
|
|
63
|
+
if (!memberLoggingInfo) {
|
|
64
|
+
member[3] = [loggingInfo];
|
|
65
|
+
}
|
|
66
|
+
else if (!(memberLoggingInfo instanceof Array)) {
|
|
67
|
+
member[3] = [memberLoggingInfo, loggingInfo];
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
memberLoggingInfo.push(loggingInfo);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//@endif
|
|
74
|
+
}
|
|
44
75
|
},
|
|
45
76
|
|
|
46
77
|
/**
|
|
@@ -77,11 +108,60 @@ SC.ObserverSet = {
|
|
|
77
108
|
invokeMethods: function() {
|
|
78
109
|
var members = this.members, member;
|
|
79
110
|
|
|
111
|
+
//@if(debug)
|
|
112
|
+
var shouldLog = SC.LOG_DEFERRED_CALLS,
|
|
113
|
+
target, method, methodName, loggingInfo, loggingInfos,
|
|
114
|
+
originatingTarget, originatingMethod, originatingMethodName,
|
|
115
|
+
originatingStack, j, jLen;
|
|
116
|
+
//@endif
|
|
117
|
+
|
|
80
118
|
for( var i=0, l=members.length; i<l; i++ ) {
|
|
81
119
|
member = members[i];
|
|
82
120
|
|
|
83
121
|
// method.call(target);
|
|
84
122
|
member[1].call(member[0]);
|
|
123
|
+
|
|
124
|
+
//@if(debug)
|
|
125
|
+
// If we have logging info specified for who scheduled the particular
|
|
126
|
+
// invocation, and logging is enabled, then output it.
|
|
127
|
+
if (shouldLog) {
|
|
128
|
+
target = member[0];
|
|
129
|
+
method = member[1];
|
|
130
|
+
methodName = method.displayName || method;
|
|
131
|
+
loggingInfo = member[3];
|
|
132
|
+
if (loggingInfo) {
|
|
133
|
+
// If the logging info is not an array, that means only one place
|
|
134
|
+
// scheduled the invocation.
|
|
135
|
+
if (!(loggingInfo instanceof Array)) {
|
|
136
|
+
// We'll treat single-scheduler cases specially to make the output
|
|
137
|
+
// better for the user, even if it means some essentially-duplicated
|
|
138
|
+
// code.
|
|
139
|
+
originatingTarget = loggingInfo.originatingTarget;
|
|
140
|
+
originatingMethod = loggingInfo.originatingMethod;
|
|
141
|
+
originatingStack = loggingInfo.originatingStack;
|
|
142
|
+
originatingMethodName = (originatingMethod ? originatingMethod.displayName : "(unknown)") || originatingMethod;
|
|
143
|
+
SC.Logger.log("Invoking runloop-scheduled method %@ on %@. Originated by target %@, method %@, stack: ".fmt(methodName, target, originatingTarget, originatingMethodName), originatingStack);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
SC.Logger.log("Invoking runloop-scheduled method %@ on %@, which was scheduled by multiple target/method pairs:".fmt(methodName, target));
|
|
147
|
+
loggingInfos = loggingInfo;
|
|
148
|
+
for (j = 0, jLen = loggingInfos.length; j < jLen; ++j) {
|
|
149
|
+
loggingInfo = loggingInfos[j];
|
|
150
|
+
originatingTarget = loggingInfo.originatingTarget;
|
|
151
|
+
originatingMethod = loggingInfo.originatingMethod;
|
|
152
|
+
originatingStack = loggingInfo.originatingStack;
|
|
153
|
+
originatingMethodName = (originatingMethod ? originatingMethod.displayName : "(unknown)") || originatingMethod;
|
|
154
|
+
SC.Logger.log(" [%@] originated by target %@, method %@, stack:".fmt(j, originatingTarget, originatingMethodName), originatingStack);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// If we didn't capture information for this invocation, just report
|
|
160
|
+
// what we can.
|
|
161
|
+
SC.Logger.log("Invoking runloop-scheduled method %@ on %@, but we didn’t capture information about who scheduled it…".fmt(methodName, target));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//@endif
|
|
85
165
|
}
|
|
86
166
|
},
|
|
87
167
|
|
|
@@ -97,6 +177,9 @@ SC.ObserverSet = {
|
|
|
97
177
|
for( var i=0, l=memberArray.length; i<l; i++ ) {
|
|
98
178
|
newMembers[i] = SC.clone(memberArray[i]);
|
|
99
179
|
newMembers[i].length = 3;
|
|
180
|
+
//@if(debug)
|
|
181
|
+
newMembers[i].length = 4;
|
|
182
|
+
//@endif
|
|
100
183
|
}
|
|
101
184
|
|
|
102
185
|
return newSet;
|
|
@@ -119,6 +202,8 @@ SC.ObserverSet = {
|
|
|
119
202
|
}
|
|
120
203
|
|
|
121
204
|
} ;
|
|
205
|
+
|
|
122
206
|
SC.ObserverSet.constructor.prototype = SC.ObserverSet;
|
|
123
|
-
SC.ObserverSet.slice = SC.ObserverSet.clone
|
|
207
|
+
SC.ObserverSet.slice = SC.ObserverSet.clone;
|
|
208
|
+
SC.ObserverSet.copy = SC.ObserverSet.clone;
|
|
124
209
|
|
|
@@ -18,7 +18,7 @@ sc_require('system/object');
|
|
|
18
18
|
SC.LOG_BINDINGS = NO ;
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
|
-
Performance
|
|
21
|
+
Performance parameter. This will benchmark the time spent firing each
|
|
22
22
|
binding.
|
|
23
23
|
|
|
24
24
|
@property {Boolean}
|
|
@@ -285,7 +285,7 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
|
285
285
|
until you connect the binding.
|
|
286
286
|
|
|
287
287
|
The binding will search for the property path starting at the root level
|
|
288
|
-
unless you specify an alternate root object as the second
|
|
288
|
+
unless you specify an alternate root object as the second parameter to this
|
|
289
289
|
method. Alternatively, you can begin your property path with either "." or
|
|
290
290
|
"*", which will use the root object of the to side be default. This special
|
|
291
291
|
behavior is used to support the high-level API provided by SC.Object.
|
|
@@ -488,12 +488,9 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
|
488
488
|
},
|
|
489
489
|
|
|
490
490
|
_scheduleSync: function() {
|
|
491
|
-
if (SC.RunLoop.isRunLoopInProgress() ||
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
var self = this;
|
|
495
|
-
|
|
496
|
-
setTimeout(function() { SC.run(); self._syncScheduled = NO; }, 1);
|
|
491
|
+
if (SC.RunLoop.isRunLoopInProgress() || SC.Binding._syncScheduled) { return; }
|
|
492
|
+
SC.Binding._syncScheduled = YES;
|
|
493
|
+
setTimeout(function() { SC.run(); SC.Binding._syncScheduled = NO; }, 1);
|
|
497
494
|
},
|
|
498
495
|
|
|
499
496
|
/** @private
|
|
@@ -650,17 +647,14 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
|
650
647
|
key = this._fromPropertyKey ;
|
|
651
648
|
if (!target || !key) return this ; // nothing to do
|
|
652
649
|
|
|
653
|
-
//
|
|
650
|
+
// Let's check for whether target is a valid observable with getPath.
|
|
654
651
|
// Common cases might have it be a Window or a DOM object.
|
|
655
652
|
//
|
|
656
653
|
// If we have a target, it is ready, but if it is invalid, that is WRONG.
|
|
657
|
-
//
|
|
658
|
-
// @if (debug)
|
|
659
654
|
if (!target.isObservable) {
|
|
660
655
|
SC.Logger.warn("Cannot bind '%@' to property '%@' on non-observable '%@'".fmt(this._toPropertyPath, key, target));
|
|
661
656
|
return this;
|
|
662
657
|
}
|
|
663
|
-
// @endif
|
|
664
658
|
|
|
665
659
|
// get the new value
|
|
666
660
|
var v = target.getPath(key) ;
|
|
@@ -855,7 +849,7 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
|
855
849
|
notEmpty: function(fromPath, placeholder) {
|
|
856
850
|
if (placeholder === undefined) placeholder = SC.EMPTY_PLACEHOLDER ;
|
|
857
851
|
return this.from(fromPath).transform(function(value, isForward) {
|
|
858
|
-
if (SC.none(value) || (value === '') || (SC.isArray(value) && value.length === 0)) {
|
|
852
|
+
if (SC.none(value) || (value === '') || (SC.isArray(value) && (value.get ? value.get('length') : value.length)=== 0)) {
|
|
859
853
|
value = placeholder ;
|
|
860
854
|
}
|
|
861
855
|
return value ;
|
|
@@ -864,7 +858,7 @@ SC.Binding = /** @scope SC.Binding.prototype */{
|
|
|
864
858
|
|
|
865
859
|
/**
|
|
866
860
|
Adds a transform that will return the placeholder value if the value is
|
|
867
|
-
null or undefined. Otherwise it will
|
|
861
|
+
null or undefined. Otherwise it will pass through untouched. See also notEmpty().
|
|
868
862
|
|
|
869
863
|
@param {String} fromPath from path or null
|
|
870
864
|
@param {Object} [placeholder]
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
An object that iterates over all of the values in an object.
|
|
12
12
|
|
|
13
|
-
An instance of this object is returned
|
|
13
|
+
An instance of this object is returned every time you call the
|
|
14
14
|
enumerator() method on an object that implements the SC.Enumerable mixin.
|
|
15
15
|
|
|
16
16
|
Once you create an enumerator instance, you can call nextObject() on it
|
|
@@ -67,8 +67,8 @@ SC.Error = SC.Object.extend(
|
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
69
|
The original error object. Normally this will return the receiver.
|
|
70
|
-
However, sometimes another object will
|
|
71
|
-
you a way to get at the
|
|
70
|
+
However, sometimes another object will masquerade as an error; this gives
|
|
71
|
+
you a way to get at the underlying error.
|
|
72
72
|
|
|
73
73
|
@type SC.Error
|
|
74
74
|
*/
|
|
@@ -15,7 +15,7 @@ sc_require('mixins/copyable');
|
|
|
15
15
|
|
|
16
16
|
A collection of ranges. You can use an IndexSet to keep track of non-
|
|
17
17
|
continuous ranges of items in a parent array. IndexSet's are used for
|
|
18
|
-
selection, for managing invalidation ranges and other data-
|
|
18
|
+
selection, for managing invalidation ranges and other data-propagation.
|
|
19
19
|
|
|
20
20
|
Examples
|
|
21
21
|
---
|
|
@@ -69,8 +69,8 @@ SC.IndexSet = SC.mixin({},
|
|
|
69
69
|
/**
|
|
70
70
|
To create a set, pass either a start and index or another IndexSet.
|
|
71
71
|
|
|
72
|
-
@param {Number} start
|
|
73
|
-
@param {Number} length
|
|
72
|
+
@param {Number|SC.IndexSet} start The start of the range or an index set.
|
|
73
|
+
@param {Number} [length] The length of the range (by default set to 1 if start is a Number)
|
|
74
74
|
@returns {SC.IndexSet}
|
|
75
75
|
*/
|
|
76
76
|
create: function(start, length) {
|
|
@@ -78,6 +78,16 @@ SC.IndexSet = SC.mixin({},
|
|
|
78
78
|
ret.initObservable();
|
|
79
79
|
ret.registerDependentKey('min', '[]');
|
|
80
80
|
|
|
81
|
+
// @if (debug)
|
|
82
|
+
// Validate the input to ensure that the parameters
|
|
83
|
+
// match the function definition.
|
|
84
|
+
// This is here because `create` doesn't follow the
|
|
85
|
+
// idiomatic SC convention of passing in an object literal to `create`.
|
|
86
|
+
if (start && !(SC.typeOf(start) === SC.T_NUMBER || start.isIndexSet)) {
|
|
87
|
+
throw "SC.IndexSet does not accept `%@` as a parameter to `create`. Take a look at the function signature for proper usage.".fmt(start);
|
|
88
|
+
}
|
|
89
|
+
// @endif
|
|
90
|
+
|
|
81
91
|
// optimized method to clone an index set.
|
|
82
92
|
if (start && start.isIndexSet) {
|
|
83
93
|
ret._content = this._sc_sliceContent(start._content);
|
|
@@ -164,7 +174,14 @@ SC.IndexSet = SC.mixin({},
|
|
|
164
174
|
accel = index - (index % SC.IndexSet.HINT_SIZE);
|
|
165
175
|
ret = content[accel];
|
|
166
176
|
if (ret<0 || ret>index) ret = accel;
|
|
167
|
-
next =
|
|
177
|
+
next = content[ret];
|
|
178
|
+
|
|
179
|
+
// the accelerator pointed to the middle of a range
|
|
180
|
+
if (next === undefined) {
|
|
181
|
+
next = this.rangeStartForIndex(ret);
|
|
182
|
+
} else {
|
|
183
|
+
next = Math.abs(next);
|
|
184
|
+
}
|
|
168
185
|
|
|
169
186
|
// now step forward through ranges until we find one that includes the
|
|
170
187
|
// index.
|
|
@@ -817,7 +834,7 @@ SC.IndexSet = SC.mixin({},
|
|
|
817
834
|
},
|
|
818
835
|
|
|
819
836
|
/**
|
|
820
|
-
Invoke the callback, passing each
|
|
837
|
+
Invoke the callback, passing each occupied range instead of each
|
|
821
838
|
index. This can be a more efficient way to iterate in some cases. The
|
|
822
839
|
callback should have the signature:
|
|
823
840
|
|
|
@@ -1137,7 +1154,7 @@ SC.IndexSet = SC.mixin({},
|
|
|
1137
1154
|
|
|
1138
1155
|
/**
|
|
1139
1156
|
Usually observing notifications from IndexSet are not useful, so
|
|
1140
|
-
|
|
1157
|
+
suppress them by default.
|
|
1141
1158
|
|
|
1142
1159
|
@type Boolean
|
|
1143
1160
|
*/
|
|
@@ -149,6 +149,37 @@ SC.Logger = SC.Object.create(
|
|
|
149
149
|
// PROPERTIES
|
|
150
150
|
//
|
|
151
151
|
|
|
152
|
+
/**
|
|
153
|
+
An optional prefix that will be prepended to all log messages, but not any
|
|
154
|
+
group titles.
|
|
155
|
+
|
|
156
|
+
@property {String}
|
|
157
|
+
*/
|
|
158
|
+
messagePrefix: null,
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
An optional prefix that will be prepended to all log messages that are
|
|
163
|
+
output to the browser console, but not those that are recorded. If you
|
|
164
|
+
specify both this and a 'messagePrefix', both will be output, and only the
|
|
165
|
+
'messagePrefix' will be recorded.
|
|
166
|
+
|
|
167
|
+
@property {String}
|
|
168
|
+
*/
|
|
169
|
+
outputMessagePrefix: null,
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
An optional prefix that will be prepended to all log messages that are
|
|
174
|
+
recorded, but not those that are output to the browser console. If you
|
|
175
|
+
specify both this and a 'messagePrefix', both will be recorded, and only the
|
|
176
|
+
'messagePrefix' will be output to the browser console.
|
|
177
|
+
|
|
178
|
+
@property {String}
|
|
179
|
+
*/
|
|
180
|
+
recordedMessagePrefix: null,
|
|
181
|
+
|
|
182
|
+
|
|
152
183
|
/**
|
|
153
184
|
The current log level determining what is output to the reporter object
|
|
154
185
|
(usually your browser’s console). Valid values are:
|
|
@@ -169,8 +200,8 @@ SC.Logger = SC.Object.create(
|
|
|
169
200
|
|
|
170
201
|
|
|
171
202
|
/**
|
|
172
|
-
The current log level determining what is
|
|
173
|
-
|
|
203
|
+
The current log level determining what is recorded to the
|
|
204
|
+
'recordedLogMessages' buffer. Valid values are the same as with
|
|
174
205
|
'logOutputLevel':
|
|
175
206
|
|
|
176
207
|
- SC.LOGGER_LEVEL_DEBUG
|
|
@@ -181,7 +212,7 @@ SC.Logger = SC.Object.create(
|
|
|
181
212
|
|
|
182
213
|
If you do not specify this value, it will default to SC.LOGGER_LEVEL_NONE.
|
|
183
214
|
|
|
184
|
-
@property
|
|
215
|
+
@property {Constant}
|
|
185
216
|
*/
|
|
186
217
|
logRecordingLevel: SC.LOGGER_LEVEL_NONE,
|
|
187
218
|
|
|
@@ -350,7 +381,7 @@ SC.Logger = SC.Object.create(
|
|
|
350
381
|
|
|
351
382
|
/**
|
|
352
383
|
Begins a new group in the console and/or in the recorded array provided
|
|
353
|
-
the respective log levels are set to
|
|
384
|
+
the respective log levels are set to output/record 'debug' messages.
|
|
354
385
|
Every message after this call (at any log level) will be indented for
|
|
355
386
|
readability until a matching {@link SC.Logger.debugGroupEnd} is invoked,
|
|
356
387
|
and you can create as many levels as you want.
|
|
@@ -445,7 +476,7 @@ SC.Logger = SC.Object.create(
|
|
|
445
476
|
|
|
446
477
|
/**
|
|
447
478
|
Begins a new group in the console and/or in the recorded array provided
|
|
448
|
-
the respective log levels are set to
|
|
479
|
+
the respective log levels are set to output/record 'info' messages.
|
|
449
480
|
Every message after this call (at any log level) will be indented for
|
|
450
481
|
readability until a matching {@link SC.Logger.infoGroupEnd} is invoked,
|
|
451
482
|
and you can create as many levels as you want.
|
|
@@ -541,7 +572,7 @@ SC.Logger = SC.Object.create(
|
|
|
541
572
|
|
|
542
573
|
/**
|
|
543
574
|
Begins a new group in the console and/or in the recorded array provided
|
|
544
|
-
the respective log levels are set to
|
|
575
|
+
the respective log levels are set to output/record 'warn' messages.
|
|
545
576
|
Every message after this call (at any log level) will be indented for
|
|
546
577
|
readability until a matching {@link SC.Logger.warnGroupEnd} is invoked,
|
|
547
578
|
and you can create as many levels as you want.
|
|
@@ -635,7 +666,7 @@ SC.Logger = SC.Object.create(
|
|
|
635
666
|
|
|
636
667
|
/**
|
|
637
668
|
Begins a new group in the console and/or in the recorded array provided
|
|
638
|
-
the respective log levels are set to
|
|
669
|
+
the respective log levels are set to output/record 'error' messages.
|
|
639
670
|
Every message after this call (at any log level) will be indented for
|
|
640
671
|
readability until a matching {@link SC.Logger.errorGroupEnd} is invoked,
|
|
641
672
|
and you can create as many levels as you want.
|
|
@@ -804,7 +835,7 @@ SC.Logger = SC.Object.create(
|
|
|
804
835
|
message = entry.message;
|
|
805
836
|
if (message) {
|
|
806
837
|
// It's a message entry. Were arguments used, or did we format a
|
|
807
|
-
// message? If arguments were used, we need to
|
|
838
|
+
// message? If arguments were used, we need to stringify those
|
|
808
839
|
// instead of using the message.
|
|
809
840
|
originalArguments = entry.originalArguments;
|
|
810
841
|
line = prefix + this._indentation(indentation);
|
|
@@ -851,8 +882,20 @@ SC.Logger = SC.Object.create(
|
|
|
851
882
|
@returns {Boolean} Whether or not anything was logged
|
|
852
883
|
*/
|
|
853
884
|
log: function() {
|
|
854
|
-
var reporter
|
|
855
|
-
|
|
885
|
+
var reporter = this.get('reporter'),
|
|
886
|
+
message = arguments[0],
|
|
887
|
+
prefix = this.get('messagePrefix'),
|
|
888
|
+
outputPrefix = this.get('outputMessagePrefix'),
|
|
889
|
+
ret = NO;
|
|
890
|
+
|
|
891
|
+
// If the first argument is a string and a prefix was specified, use it.
|
|
892
|
+
if (message && SC.typeOf(message) === SC.T_STRING) {
|
|
893
|
+
if (prefix || outputPrefix) {
|
|
894
|
+
if (prefix) message = prefix + message;
|
|
895
|
+
if (outputPrefix) message = outputPrefix + message;
|
|
896
|
+
arguments[0] = message;
|
|
897
|
+
}
|
|
898
|
+
}
|
|
856
899
|
|
|
857
900
|
// Log through the reporter.
|
|
858
901
|
if (this.get('exists')) {
|
|
@@ -1106,7 +1149,8 @@ SC.Logger = SC.Object.create(
|
|
|
1106
1149
|
// Are we configured to show this type?
|
|
1107
1150
|
var shouldOutput = this._shouldOutputType(type),
|
|
1108
1151
|
shouldRecord = this._shouldRecordType(type),
|
|
1109
|
-
hasOtherArguments, i, len, args, output, entry
|
|
1152
|
+
hasOtherArguments, i, len, args, output, entry, prefix,
|
|
1153
|
+
outputPrefix, recordedPrefix;
|
|
1110
1154
|
|
|
1111
1155
|
// If we're neither going to output nor record the message, then stop now.
|
|
1112
1156
|
if (!(shouldOutput || shouldRecord)) return;
|
|
@@ -1134,18 +1178,26 @@ SC.Logger = SC.Object.create(
|
|
|
1134
1178
|
}
|
|
1135
1179
|
}
|
|
1136
1180
|
|
|
1181
|
+
// If a message prefix was specified, use it.
|
|
1182
|
+
prefix = this.get('messagePrefix');
|
|
1183
|
+
if (prefix) message = prefix + message;
|
|
1184
|
+
|
|
1137
1185
|
if (shouldOutput) {
|
|
1186
|
+
outputPrefix = this.get('outputMessagePrefix');
|
|
1187
|
+
|
|
1138
1188
|
// We only want to pass the original arguments to _outputMessage() if we
|
|
1139
1189
|
// didn't format the message ourselves.
|
|
1140
1190
|
args = automaticallyFormat ? null : originalArguments;
|
|
1141
|
-
this._outputMessage(type, null, this._outputIndentationLevel, message, args);
|
|
1191
|
+
this._outputMessage(type, null, this._outputIndentationLevel, (outputPrefix ? outputPrefix + message : message), args);
|
|
1142
1192
|
}
|
|
1143
1193
|
|
|
1144
1194
|
// If we're recording the log, append the message now.
|
|
1145
1195
|
if (shouldRecord) {
|
|
1196
|
+
recordedPrefix = this.get('recordedMessagePrefix');
|
|
1197
|
+
|
|
1146
1198
|
entry = {
|
|
1147
1199
|
type: type,
|
|
1148
|
-
message: message ? message : YES,
|
|
1200
|
+
message: message ? (recordedPrefix ? recordedPrefix + message : message) : YES,
|
|
1149
1201
|
timestamp: new Date()
|
|
1150
1202
|
};
|
|
1151
1203
|
|
|
@@ -1346,9 +1398,8 @@ SC.Logger = SC.Object.create(
|
|
|
1346
1398
|
// If we formatted, just include the message. Otherwise, include all
|
|
1347
1399
|
// the original arguments.
|
|
1348
1400
|
if (!originalArguments) {
|
|
1349
|
-
output = "";
|
|
1350
|
-
if (
|
|
1351
|
-
if (shouldIndent) output =+ this._indentation(indentation);
|
|
1401
|
+
output = timestampStr ? timestampStr : "";
|
|
1402
|
+
if (shouldIndent) output += this._indentation(indentation);
|
|
1352
1403
|
output += message;
|
|
1353
1404
|
reporter[type](output);
|
|
1354
1405
|
}
|
|
@@ -1493,11 +1544,11 @@ SC.Logger = SC.Object.create(
|
|
|
1493
1544
|
*/
|
|
1494
1545
|
_argumentsToString: function() {
|
|
1495
1546
|
var ret = "",
|
|
1496
|
-
|
|
1547
|
+
delimiter = SC.LOGGER_LOG_DELIMITER,
|
|
1497
1548
|
i, len;
|
|
1498
1549
|
|
|
1499
1550
|
for (i = 0, len = (arguments.length - 1); i < len; ++i) {
|
|
1500
|
-
ret += arguments[i] +
|
|
1551
|
+
ret += arguments[i] + delimiter;
|
|
1501
1552
|
}
|
|
1502
1553
|
ret += arguments[len];
|
|
1503
1554
|
return ret;
|