sproutcore 1.6.0.beta.3-java → 1.6.0-java
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 +70 -0
- data/{History.txt → History.rdoc} +0 -0
- data/{README.txt → README.rdoc} +3 -2
- data/Rakefile +213 -10
- data/{Todo.txt → Todo.rdoc} +0 -0
- data/VERSION.yml +1 -1
- data/bin/sc-docs +6 -1
- data/lib/Buildfile +5 -1
- data/lib/buildtasks/manifest.rake +14 -1
- data/lib/buildtasks/target.rake +20 -23
- data/lib/frameworks/sproutcore/Buildfile +8 -3
- data/lib/frameworks/sproutcore/CHANGELOG.md +364 -1
- data/lib/frameworks/sproutcore/README.md +1 -1
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/select.js +12 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/select_page.js +19 -5
- data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.css +9 -0
- data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +243 -199
- data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +250 -172
- data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +29 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +5 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +21 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controls/button.js +6 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/core.js +2 -42
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/bind.js +38 -15
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/collection.js +6 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/checkbox_support.js +11 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/text_field_support.js +55 -20
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +26 -20
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +37 -21
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/application.js +2 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +157 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +7 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +29 -15
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +8 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +162 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/theme.js +3 -56
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +24 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +42 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +59 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controls/button.js +39 -57
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +41 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/template_helpers/text_field_support.js +19 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/panes/template.js +16 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +32 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/collection.js +135 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/handlebars.js +29 -18
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +11 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +18 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +10 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +414 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/{system → views}/bindable_span.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template_collection.js +112 -40
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +13 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +245 -67
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +17 -9
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +8 -18
- data/lib/frameworks/sproutcore/frameworks/core_tools/core.js +8 -2
- data/lib/frameworks/sproutcore/frameworks/core_tools/data_source.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +15 -8
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +12 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +296 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +330 -326
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +23 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +26 -5
- data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +69 -58
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +614 -614
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/data_source.js +203 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +3 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +44 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +20 -13
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +76 -47
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +30 -30
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +74 -53
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +0 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/connectDataSource.js +31 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +1177 -0
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +212 -182
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +6 -67
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +13 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +41 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +9 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +6 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/master_detail.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/menu.js +12 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/picker.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio_group.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/toolbar.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/workspace.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/alert.css +49 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/a_sample_image.jpg +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/apple-logo1.jpeg +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/iframe.html +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/disclosure.css +20 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/drag.css +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/icons.css +214 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/cap.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/downbutton.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-16.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-48.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-bookmark-16.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-bookmark-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-cancel-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-document-16.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-document-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-down-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-favorite-16.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-favorite-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-folder-16.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-folder-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-group-16.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-group-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-help-16.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-help-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-16.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-48.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-left-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-options-16.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-options-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-redo-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-right-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-tools-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-trash-16.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-trash-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-undo-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-up-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-user-16.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-user-24.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-bottom.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-center.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-top.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/track.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/upbutton.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/list_item.css +145 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/menu.css +10 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/menu_item_view.css +88 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/modal.css +3 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/panel.css +91 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/picker.css +37 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/progress.css +29 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/radio.css +11 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/segmented.css +122 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/separator.css +20 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +34 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/split.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/split_divider.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/tab.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/toolbar.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/touch-scroller.css +13 -13
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/well.css +65 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +58 -23
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +20 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +121 -103
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +34 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/static_content.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +1 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +20 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +14 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +43 -16
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +717 -700
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +11 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +16 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +4 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +0 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +49 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +9 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/{panes → views}/select_button.js +52 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +7 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +4 -26
- data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +46 -49
- data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +20 -19
- data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +249 -249
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/mixins/edit_mode.js +13 -5
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/mixins/emptiness.js +53 -37
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/render_delegates/form.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/render_delegates/form_row.js +3 -11
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/mixins/edit_mode.js +53 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/mixins/emptiness.js +114 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form.js +174 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_row.js +86 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +98 -126
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form_row.js +96 -97
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +2 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +20 -36
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +121 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +90 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/mixins/select_view_menu.js +139 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/render_delegates/select_button.js +14 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/ext/menu_resizing.js +25 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/bindings.js +43 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/check_selected.js +32 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/popup_button/menu_setup.js +40 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/popup_button/show_menu.js +45 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/select/menu_width.js +49 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/select/selected_item.js +191 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +264 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +450 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +14 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split_divider.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +9 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/thumb.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/core.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +16 -19
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +4 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +85 -16
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/image.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +13 -13
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/benchmark.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/blank.gif +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/bootstrap.rhtml +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +36 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/checkbox_view.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/debug/control-test-pane.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/favicon.ico +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-logo.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-landscape.jpg +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-landscape.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-portrait.jpg +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-portrait.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/inline_editor.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +47 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/radio_view.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/static_layout.css +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +125 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/exception_handler.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/system/math.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +13 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/string.js +0 -43
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +912 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +23 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +36 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +58 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +1 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +17 -6
- data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +0 -15
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +30 -19
- data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +2 -76
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +3348 -1591
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +6 -3
- data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +11 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +38 -12
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/flatten.js +24 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +21 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +14 -14
- data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +4 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +0 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/system/set.js +15 -16
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +6 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +10 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/requiredObjectForPropertyPath.js +29 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue.js +98 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +30 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/debug/monitor.js +4 -73
- data/lib/frameworks/sproutcore/frameworks/statechart/debug/sequence_matcher.js +189 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/ext/function.js +122 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +88 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/empty_state.js +34 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/history_state.js +97 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +16 -191
- data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +17 -79
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/debug/sequence_matcher.js +464 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +31 -11
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/async/with_concurrent_states.js +6 -4
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/advanced.js +40 -6
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/basic.js +22 -2
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/intermediate.js +44 -3
- data/lib/frameworks/sproutcore/frameworks/testing/core.js +61 -9
- data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/additions.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/runner.css +10 -2
- data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/testsuite.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +66 -27
- data/lib/frameworks/sproutcore/frameworks/testing/tests/spy_on.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/testing/tests/stub_method.js +9 -0
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +80 -0
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/core.css +20 -0
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/fonts.css +39 -0
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +126 -0
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +57 -0
- data/lib/frameworks/sproutcore/lib/index.rhtml +8 -4
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/menu_item.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +13 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list_item.css +16 -14
- data/lib/frameworks/sproutcore/themes/ace/resources/form/form.css +9 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +3 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu_item.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/picker.js +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/workspace.js +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/split/split.css +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/button.js +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/panel.js +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/progress.js +2 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/slider.js +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/well.js +1 -1
- data/lib/gen/app/templates/apps/@target_name@/Buildfile +1 -4
- data/lib/gen/app/templates/apps/@target_name@/core.js +1 -4
- data/lib/gen/app/templates/apps/@target_name@/main.js +1 -4
- data/lib/gen/app/templates/apps/@target_name@/resources/main_page.js +1 -4
- data/lib/gen/app/templates/apps/@target_name@/theme.js +1 -4
- data/lib/gen/controller/templates/controllers/{@filename@.js → @filename@_controller.js} +1 -4
- data/lib/gen/controller/templates/tests/controllers/{@filename@.js → @filename@_test.js} +1 -4
- data/lib/gen/data-source/templates/data_sources/{@filename@.js → @filename@_data_source.js} +1 -4
- data/lib/gen/design/templates/resources/@filename@.js +1 -4
- data/lib/gen/framework/templates/frameworks/@target_name@/core.js +1 -4
- data/lib/gen/framework/templates/frameworks/@target_name@/english.lproj/strings.js +1 -4
- data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +1 -4
- data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +2 -0
- data/lib/gen/html_project/templates/@filename@/Buildfile +1 -4
- data/lib/gen/html_project/templates/@filename@/README +1 -4
- data/lib/gen/language/Buildfile +1 -1
- data/lib/gen/language/templates/@filename@/strings.js +1 -4
- data/lib/gen/model/templates/fixtures/{@filename@.js → @filename@_fixtures.js} +2 -5
- data/lib/gen/model/templates/models/{@filename@.js → @filename@_model.js} +1 -4
- data/lib/gen/model/templates/tests/models/{@filename@.js → @filename@_test.js} +1 -4
- data/lib/gen/page/templates/pages/@target_name@/Buildfile +1 -4
- data/lib/gen/page/templates/pages/@target_name@/core.js +1 -4
- data/lib/gen/page/templates/pages/@target_name@/en.lproj/strings.js +1 -4
- data/lib/gen/page/templates/pages/@target_name@/resources/body.css +3 -1
- data/lib/gen/project/templates/@filename@/Buildfile +1 -4
- data/lib/gen/project/templates/@filename@/README +1 -5
- data/lib/gen/responder/templates/states/{@filename@.js → @filename@_state.js} +1 -4
- data/lib/gen/test/templates/tests/{@filename@.js → @filename@_test.js} +1 -4
- data/lib/gen/theme/templates/themes/@target_name@/resources/theme_styles.css +1 -5
- data/lib/gen/theme/templates/themes/@target_name@/theme.js +1 -4
- data/lib/gen/view/templates/tests/views/{@filename@.js → @filename@_test.js} +1 -4
- data/lib/gen/view/templates/views/{@filename@.js → @filename@_view.js} +1 -4
- data/lib/sproutcore.rb +5 -15
- data/lib/sproutcore/builders/base.rb +5 -1
- data/lib/sproutcore/builders/handlebars.rb +12 -1
- data/lib/sproutcore/builders/module.rb +2 -2
- data/lib/sproutcore/buildfile/string_ext.rb +0 -4
- data/lib/sproutcore/helpers/cssmin.rb +44 -59
- data/lib/sproutcore/helpers/static_helper.rb +4 -2
- data/lib/sproutcore/helpers/text_helper.rb +11 -13
- data/lib/sproutcore/models/generator.rb +22 -0
- data/lib/sproutcore/models/manifest.rb +4 -4
- data/lib/sproutcore/models/manifest_entry.rb +1 -0
- data/lib/sproutcore/models/target.rb +3 -107
- data/lib/sproutcore/rack.rb +0 -1
- data/lib/sproutcore/rack/builder.rb +3 -0
- data/lib/sproutcore/rack/dev.rb +0 -1
- data/lib/sproutcore/rack/proxy.rb +240 -93
- data/lib/sproutcore/rack/service.rb +1 -1
- data/lib/sproutcore/render_engines/haml.rb +2 -5
- data/lib/sproutcore/tools.rb +11 -11
- data/lib/sproutcore/tools/build.rb +2 -0
- data/lib/sproutcore/tools/docs.rb +2 -37
- data/lib/sproutcore/tools/init.rb +10 -22
- data/lib/sproutcore/tools/manifest.rb +21 -22
- data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +21 -1
- data/spec/buildtasks/target_spec.rb +9 -0
- data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -0
- data/spec/fixtures/builder_tests/apps/handlebars_test/{template.handlebars → templates/template.handlebars} +2 -0
- data/{lib/doc_templates/sproutcore/allclasses.tmpl → spec/fixtures/ordered_entries/apps/template_style/a.js} +0 -0
- data/spec/fixtures/{real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER → ordered_entries/apps/template_style/template_style.js} +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +1 -1
- data/spec/lib/builders/handlebars_spec.rb +10 -4
- data/spec/lib/buildfile_commands/build_task_spec.rb +1 -1
- data/spec/lib/tools/manifest_spec.rb +11 -0
- data/sproutcore.gemspec +8 -7
- data/vendor/chance/lib/chance/instance.rb +8 -9
- metadata +167 -266
- data/lib/doc_templates/jsdoc/allclasses.tmpl +0 -17
- data/lib/doc_templates/jsdoc/allfiles.tmpl +0 -56
- data/lib/doc_templates/jsdoc/class.tmpl +0 -487
- data/lib/doc_templates/jsdoc/index.tmpl +0 -38
- data/lib/doc_templates/jsdoc/publish.js +0 -170
- data/lib/doc_templates/jsdoc/static/default.css +0 -162
- data/lib/doc_templates/jsdoc/static/header.html +0 -2
- data/lib/doc_templates/jsdoc/static/index.html +0 -19
- data/lib/doc_templates/jsdoc/symbol.tmpl +0 -35
- data/lib/doc_templates/sproutcore/allfiles.tmpl +0 -56
- data/lib/doc_templates/sproutcore/class.tmpl +0 -674
- data/lib/doc_templates/sproutcore/classes-json.tmpl +0 -55
- data/lib/doc_templates/sproutcore/index.tmpl +0 -62
- data/lib/doc_templates/sproutcore/publish.js +0 -346
- data/lib/doc_templates/sproutcore/static/default.css +0 -258
- data/lib/doc_templates/sproutcore/static/header.html +0 -2
- data/lib/doc_templates/sproutcore/static/index.html +0 -19
- data/lib/doc_templates/sproutcore/symbol.tmpl +0 -35
- data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/core.css +0 -378
- data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/view.css +0 -57
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +0 -56
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +0 -73
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +0 -916
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/shared.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +0 -185
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +0 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +0 -101
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +0 -91
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/picker.css +0 -35
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/progress.css +0 -33
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/radio.css +0 -10
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +0 -132
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/separator.css +0 -19
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +0 -69
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/strings.js +0 -14
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/well.css +0 -71
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/english.lproj/default_styles.css +0 -5
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/english.lproj/strings.js +0 -15
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_checkbox_field.js +0 -17
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_field.js +0 -17
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_label.js +0 -17
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_radio_field.js +0 -17
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_text_field.js +0 -17
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/button_view.css +0 -40
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/images/favicon.ico +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +0 -47
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/text_field.css +0 -146
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +0 -55
- data/lib/frameworks/sproutcore/themes/empty_theme/tests/mini_icons.rhtml +0 -69
- data/lib/sproutcore/rack/docs.rb +0 -24
- data/vendor/jsdoc/README.txt +0 -151
- data/vendor/jsdoc/app/frame.js +0 -33
- data/vendor/jsdoc/app/frame/Chain.js +0 -102
- data/vendor/jsdoc/app/frame/Dumper.js +0 -144
- data/vendor/jsdoc/app/frame/Hash.js +0 -47
- data/vendor/jsdoc/app/frame/Link.js +0 -142
- data/vendor/jsdoc/app/frame/Namespace.js +0 -10
- data/vendor/jsdoc/app/frame/Opt.js +0 -134
- data/vendor/jsdoc/app/frame/Reflection.js +0 -26
- data/vendor/jsdoc/app/frame/String.js +0 -93
- data/vendor/jsdoc/app/frame/Testrun.js +0 -129
- data/vendor/jsdoc/app/handlers/FOODOC.js +0 -26
- data/vendor/jsdoc/app/handlers/XMLDOC.js +0 -26
- data/vendor/jsdoc/app/handlers/XMLDOC/DomReader.js +0 -159
- data/vendor/jsdoc/app/handlers/XMLDOC/XMLDoc.js +0 -16
- data/vendor/jsdoc/app/handlers/XMLDOC/XMLParse.js +0 -292
- data/vendor/jsdoc/app/lib/JSDOC.js +0 -98
- data/vendor/jsdoc/app/lib/JSDOC/DocComment.js +0 -200
- data/vendor/jsdoc/app/lib/JSDOC/DocTag.js +0 -294
- data/vendor/jsdoc/app/lib/JSDOC/JsDoc.js +0 -162
- data/vendor/jsdoc/app/lib/JSDOC/JsPlate.js +0 -100
- data/vendor/jsdoc/app/lib/JSDOC/Lang.js +0 -144
- data/vendor/jsdoc/app/lib/JSDOC/Parser.js +0 -109
- data/vendor/jsdoc/app/lib/JSDOC/PluginManager.js +0 -33
- data/vendor/jsdoc/app/lib/JSDOC/Symbol.js +0 -681
- data/vendor/jsdoc/app/lib/JSDOC/SymbolSet.js +0 -226
- data/vendor/jsdoc/app/lib/JSDOC/TextStream.js +0 -41
- data/vendor/jsdoc/app/lib/JSDOC/Token.js +0 -18
- data/vendor/jsdoc/app/lib/JSDOC/TokenReader.js +0 -332
- data/vendor/jsdoc/app/lib/JSDOC/TokenStream.js +0 -133
- data/vendor/jsdoc/app/lib/JSDOC/Util.js +0 -32
- data/vendor/jsdoc/app/lib/JSDOC/Walker.js +0 -453
- data/vendor/jsdoc/app/main.js +0 -74
- data/vendor/jsdoc/app/plugins/commentSrcJson.js +0 -19
- data/vendor/jsdoc/app/plugins/frameworkPrototype.js +0 -16
- data/vendor/jsdoc/app/plugins/functionCall.js +0 -10
- data/vendor/jsdoc/app/plugins/publishSrcHilite.js +0 -62
- data/vendor/jsdoc/app/plugins/sproutcoreTags.js +0 -26
- data/vendor/jsdoc/app/plugins/symbolLink.js +0 -9
- data/vendor/jsdoc/app/plugins/tagParamConfig.js +0 -31
- data/vendor/jsdoc/app/plugins/tagSynonyms.js +0 -43
- data/vendor/jsdoc/app/run.js +0 -346
- data/vendor/jsdoc/app/t/TestDoc.js +0 -144
- data/vendor/jsdoc/app/t/runner.js +0 -13
- data/vendor/jsdoc/app/test.js +0 -304
- data/vendor/jsdoc/app/test/addon.js +0 -24
- data/vendor/jsdoc/app/test/anon_inner.js +0 -14
- data/vendor/jsdoc/app/test/augments.js +0 -31
- data/vendor/jsdoc/app/test/augments2.js +0 -26
- data/vendor/jsdoc/app/test/borrows.js +0 -41
- data/vendor/jsdoc/app/test/borrows2.js +0 -23
- data/vendor/jsdoc/app/test/config.js +0 -22
- data/vendor/jsdoc/app/test/constructs.js +0 -18
- data/vendor/jsdoc/app/test/encoding.js +0 -10
- data/vendor/jsdoc/app/test/encoding_other.js +0 -12
- data/vendor/jsdoc/app/test/functions_anon.js +0 -39
- data/vendor/jsdoc/app/test/functions_nested.js +0 -33
- data/vendor/jsdoc/app/test/global.js +0 -13
- data/vendor/jsdoc/app/test/globals.js +0 -25
- data/vendor/jsdoc/app/test/ignore.js +0 -10
- data/vendor/jsdoc/app/test/inner.js +0 -16
- data/vendor/jsdoc/app/test/jsdoc_test.js +0 -477
- data/vendor/jsdoc/app/test/lend.js +0 -33
- data/vendor/jsdoc/app/test/memberof.js +0 -20
- data/vendor/jsdoc/app/test/memberof_constructor.js +0 -15
- data/vendor/jsdoc/app/test/name.js +0 -19
- data/vendor/jsdoc/app/test/namespace_nested.js +0 -23
- data/vendor/jsdoc/app/test/nocode.js +0 -13
- data/vendor/jsdoc/app/test/oblit_anon.js +0 -20
- data/vendor/jsdoc/app/test/overview.js +0 -20
- data/vendor/jsdoc/app/test/param_inline.js +0 -37
- data/vendor/jsdoc/app/test/params_optional.js +0 -8
- data/vendor/jsdoc/app/test/prototype.js +0 -17
- data/vendor/jsdoc/app/test/prototype_nested.js +0 -9
- data/vendor/jsdoc/app/test/prototype_oblit.js +0 -13
- data/vendor/jsdoc/app/test/prototype_oblit_constructor.js +0 -24
- data/vendor/jsdoc/app/test/public.js +0 -10
- data/vendor/jsdoc/app/test/shared.js +0 -42
- data/vendor/jsdoc/app/test/shared2.js +0 -2
- data/vendor/jsdoc/app/test/shortcuts.js +0 -22
- data/vendor/jsdoc/app/test/static_this.js +0 -13
- data/vendor/jsdoc/app/test/synonyms.js +0 -23
- data/vendor/jsdoc/app/test/tosource.js +0 -23
- data/vendor/jsdoc/app/test/variable_redefine.js +0 -14
- data/vendor/jsdoc/changes.txt +0 -47
- data/vendor/jsdoc/conf/sample.conf +0 -31
- data/vendor/jsdoc/java/build.xml +0 -36
- data/vendor/jsdoc/java/build_1.4.xml +0 -36
- data/vendor/jsdoc/java/classes/js.jar +0 -0
- data/vendor/jsdoc/java/src/JsDebugRun.java +0 -21
- data/vendor/jsdoc/java/src/JsRun.java +0 -21
- data/vendor/jsdoc/jsdebug.jar +0 -0
- data/vendor/jsdoc/jsrun.jar +0 -0
- data/vendor/jsdoc/t/TestDoc.js +0 -144
- data/vendor/jsdoc/t/runner.js +0 -13
- data/vendor/jsdoc/test.js +0 -304
- data/vendor/jsdoc/test/addon.js +0 -24
- data/vendor/jsdoc/test/anon_inner.js +0 -14
- data/vendor/jsdoc/test/augments.js +0 -31
- data/vendor/jsdoc/test/augments2.js +0 -26
- data/vendor/jsdoc/test/borrows.js +0 -41
- data/vendor/jsdoc/test/borrows2.js +0 -23
- data/vendor/jsdoc/test/config.js +0 -22
- data/vendor/jsdoc/test/constructs.js +0 -18
- data/vendor/jsdoc/test/encoding.js +0 -10
- data/vendor/jsdoc/test/encoding_other.js +0 -12
- data/vendor/jsdoc/test/functions_anon.js +0 -39
- data/vendor/jsdoc/test/functions_nested.js +0 -33
- data/vendor/jsdoc/test/global.js +0 -13
- data/vendor/jsdoc/test/globals.js +0 -25
- data/vendor/jsdoc/test/ignore.js +0 -10
- data/vendor/jsdoc/test/inner.js +0 -16
- data/vendor/jsdoc/test/jsdoc_test.js +0 -477
- data/vendor/jsdoc/test/lend.js +0 -33
- data/vendor/jsdoc/test/memberof.js +0 -20
- data/vendor/jsdoc/test/memberof_constructor.js +0 -15
- data/vendor/jsdoc/test/name.js +0 -19
- data/vendor/jsdoc/test/namespace_nested.js +0 -23
- data/vendor/jsdoc/test/nocode.js +0 -13
- data/vendor/jsdoc/test/oblit_anon.js +0 -20
- data/vendor/jsdoc/test/overview.js +0 -20
- data/vendor/jsdoc/test/param_inline.js +0 -37
- data/vendor/jsdoc/test/params_optional.js +0 -8
- data/vendor/jsdoc/test/prototype.js +0 -17
- data/vendor/jsdoc/test/prototype_nested.js +0 -9
- data/vendor/jsdoc/test/prototype_oblit.js +0 -13
- data/vendor/jsdoc/test/prototype_oblit_constructor.js +0 -24
- data/vendor/jsdoc/test/public.js +0 -10
- data/vendor/jsdoc/test/shared.js +0 -42
- data/vendor/jsdoc/test/shared2.js +0 -2
- data/vendor/jsdoc/test/shortcuts.js +0 -22
- data/vendor/jsdoc/test/static_this.js +0 -13
- data/vendor/jsdoc/test/synonyms.js +0 -23
- data/vendor/jsdoc/test/tosource.js +0 -23
- data/vendor/jsdoc/test/variable_redefine.js +0 -14
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
/*globals SC */
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
+
@class
|
|
11
12
|
|
|
12
13
|
Represents a state within a statechart.
|
|
13
14
|
|
|
@@ -17,11 +18,14 @@
|
|
|
17
18
|
You do not create an instance of a state itself. The statechart manager will go through its
|
|
18
19
|
state heirarchy and create the states itself.
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
For more information on using statecharts, see SC.StatechartManager.
|
|
21
22
|
|
|
23
|
+
@author Michael Cohen
|
|
24
|
+
@extends SC.Object
|
|
22
25
|
*/
|
|
23
|
-
SC.State = SC.Object.extend(
|
|
24
|
-
|
|
26
|
+
SC.State = SC.Object.extend(
|
|
27
|
+
/** @lends SC.State.prototype */ {
|
|
28
|
+
|
|
25
29
|
/**
|
|
26
30
|
The name of the state
|
|
27
31
|
|
|
@@ -1025,7 +1029,7 @@ SC.State = SC.Object.extend({
|
|
|
1025
1029
|
var sc = this.get('statechart');
|
|
1026
1030
|
sc.statechartLogError(msg);
|
|
1027
1031
|
}
|
|
1028
|
-
|
|
1032
|
+
|
|
1029
1033
|
});
|
|
1030
1034
|
|
|
1031
1035
|
/**
|
|
@@ -1057,6 +1061,14 @@ SC.State.plugin = function(value) {
|
|
|
1057
1061
|
var args = SC.A(arguments); args.shift();
|
|
1058
1062
|
var func = function() {
|
|
1059
1063
|
var klass = SC.objectForPropertyPath(value);
|
|
1064
|
+
if (!klass) {
|
|
1065
|
+
console.error('SC.State.plugin: Unable to determine path %@'.fmt(value));
|
|
1066
|
+
return undefined;
|
|
1067
|
+
}
|
|
1068
|
+
if (!klass.isClass || !klass.kindOf(SC.State)) {
|
|
1069
|
+
console.error('SC.State.plugin: Unable to extend. %@ must be a class extending from SC.State'.fmt(value));
|
|
1070
|
+
return undefined;
|
|
1071
|
+
}
|
|
1060
1072
|
return klass.extend.apply(klass, args);
|
|
1061
1073
|
};
|
|
1062
1074
|
func.statePlugin = YES;
|
|
@@ -1064,190 +1076,3 @@ SC.State.plugin = function(value) {
|
|
|
1064
1076
|
};
|
|
1065
1077
|
|
|
1066
1078
|
SC.State.design = SC.State.extend;
|
|
1067
|
-
|
|
1068
|
-
/**
|
|
1069
|
-
Extends the JS Function object with the handleEvents method that
|
|
1070
|
-
will provide more advanced event handling capabilities when constructing
|
|
1071
|
-
your statechart's states.
|
|
1072
|
-
|
|
1073
|
-
By default, when you add a method to a state, the state will react to
|
|
1074
|
-
events that matches a method's name, like so:
|
|
1075
|
-
|
|
1076
|
-
state = SC.State.extend({
|
|
1077
|
-
// Will be invoked when a event named "foo" is sent to this state
|
|
1078
|
-
foo: function(event, sender, context) { ... }
|
|
1079
|
-
});
|
|
1080
|
-
|
|
1081
|
-
In some situations, it may be advantageous to use one method that can react to
|
|
1082
|
-
multiple events instead of having multiple methods that essentially all do the
|
|
1083
|
-
same thing. In order to set a method to handle more than one event you use
|
|
1084
|
-
the handleEvents method which can be supplied a list of string and/or regular
|
|
1085
|
-
expressions. The following example demonstrates the use of handleEvents:
|
|
1086
|
-
|
|
1087
|
-
state = SC.State.extend({
|
|
1088
|
-
eventHandlerA: function(event, sender, context) {
|
|
1089
|
-
}.handleEvents('foo', 'bar'),
|
|
1090
|
-
|
|
1091
|
-
eventHandlerB: function(event, sender, context) {
|
|
1092
|
-
}.handleEvents(/num\d/, 'decimal')
|
|
1093
|
-
});
|
|
1094
|
-
|
|
1095
|
-
Whenever events 'foo' and 'bar' are sent to the state, the method eventHandlerA
|
|
1096
|
-
will be invoked. When there is an event that matches the regular expression
|
|
1097
|
-
/num\d/ or the event is 'decimal' then eventHandlerB is invoked. In both
|
|
1098
|
-
cases, the name of the event will be supplied to the event handler.
|
|
1099
|
-
|
|
1100
|
-
It should be noted that the use of regular expressions may impact performance
|
|
1101
|
-
since that statechart will not be able to fully optimize the event handling logic based
|
|
1102
|
-
on its use. Therefore the use of regular expression should be used sparingly.
|
|
1103
|
-
|
|
1104
|
-
@param {(String|RegExp)...} args
|
|
1105
|
-
*/
|
|
1106
|
-
Function.prototype.handleEvents = function() {
|
|
1107
|
-
this.isEventHandler = YES;
|
|
1108
|
-
this.events = arguments;
|
|
1109
|
-
return this;
|
|
1110
|
-
};
|
|
1111
|
-
|
|
1112
|
-
/**
|
|
1113
|
-
Extends the JS Function object with the stateObserves method that will
|
|
1114
|
-
create a state observe handler on a given state object.
|
|
1115
|
-
|
|
1116
|
-
Use a stateObserves() instead of the common observes() method when you want a
|
|
1117
|
-
state to observer changes to some property on the state itself or some other
|
|
1118
|
-
object.
|
|
1119
|
-
|
|
1120
|
-
Any method on the state that has stateObserves is considered a state observe
|
|
1121
|
-
handler and behaves just like when you use observes() on a method, but with an
|
|
1122
|
-
important difference. When you apply stateObserves to a method on a state, those
|
|
1123
|
-
methods will be active *only* when the state is entered, otherwise those methods
|
|
1124
|
-
will be inactive. This removes the need for you having to explicitly call
|
|
1125
|
-
addObserver and removeObserver. As an example:
|
|
1126
|
-
|
|
1127
|
-
state = SC.State.extend({
|
|
1128
|
-
foo: null,
|
|
1129
|
-
user: null,
|
|
1130
|
-
observeHandlerA: function(target, key) {
|
|
1131
|
-
}.stateObserves('MyApp.someController.status'),
|
|
1132
|
-
|
|
1133
|
-
observeHandlerB: function(target, key) {
|
|
1134
|
-
}.stateObserves('foo'),
|
|
1135
|
-
|
|
1136
|
-
observeHandlerC: function(target, key) {
|
|
1137
|
-
}.stateObserves('.user.name', '.user.salary')
|
|
1138
|
-
});
|
|
1139
|
-
|
|
1140
|
-
Above, state has three state observe handlers: observeHandlerA, observeHandlerB, and
|
|
1141
|
-
observeHandlerC. When state is entered, the state will automatically add itself as
|
|
1142
|
-
an observer for all of its registered state observe handlers. Therefore when
|
|
1143
|
-
foo changes, observeHandlerB will be invoked, and when MyApp.someController's status
|
|
1144
|
-
changes then observeHandlerA will be invoked. The moment that state is exited then
|
|
1145
|
-
the state will automatically remove itself as an observer for all of its registered
|
|
1146
|
-
state observe handlers. Therefore none of the state observe handlers will be
|
|
1147
|
-
invoked until the next time the state is entered.
|
|
1148
|
-
|
|
1149
|
-
@param {String...} args
|
|
1150
|
-
*/
|
|
1151
|
-
Function.prototype.stateObserves = function() {
|
|
1152
|
-
this.isStateObserveHandler = YES;
|
|
1153
|
-
this.args = SC.A(arguments);
|
|
1154
|
-
return this;
|
|
1155
|
-
};
|
|
1156
|
-
|
|
1157
|
-
/**
|
|
1158
|
-
Represents a history state that can be assigned to a SC.State object's
|
|
1159
|
-
initialSubstate property.
|
|
1160
|
-
|
|
1161
|
-
If a SC.HistoryState object is assigned to a state's initial substate,
|
|
1162
|
-
then after a state is entered the statechart will refer to the history
|
|
1163
|
-
state object to determine the next course of action. If the state has
|
|
1164
|
-
its historyState property assigned then the that state will be entered,
|
|
1165
|
-
otherwise the default state assigned to history state object will be entered.
|
|
1166
|
-
|
|
1167
|
-
An example of how to use:
|
|
1168
|
-
|
|
1169
|
-
stateA: SC.State.design({
|
|
1170
|
-
initialSubstate: SC.HistoryState({
|
|
1171
|
-
defaultState: 'stateB'
|
|
1172
|
-
}),
|
|
1173
|
-
|
|
1174
|
-
stateB: SC.State.design({ ... }),
|
|
1175
|
-
|
|
1176
|
-
stateC: SC.State.design({ ... })
|
|
1177
|
-
})
|
|
1178
|
-
*/
|
|
1179
|
-
SC.HistoryState = SC.Object.extend({
|
|
1180
|
-
|
|
1181
|
-
/**
|
|
1182
|
-
Used to indicate if the statechart should recurse the
|
|
1183
|
-
history states after entering the this object's parent state
|
|
1184
|
-
|
|
1185
|
-
@property {Boolean}
|
|
1186
|
-
*/
|
|
1187
|
-
isRecursive: NO,
|
|
1188
|
-
|
|
1189
|
-
/**
|
|
1190
|
-
The default state to enter if the parent state does not
|
|
1191
|
-
yet have its historyState property assigned to something
|
|
1192
|
-
other than null.
|
|
1193
|
-
|
|
1194
|
-
The value assigned to this property must be the name of an
|
|
1195
|
-
immediate substate that belongs to the parent state. The
|
|
1196
|
-
statechart will manage the property upon initialization.
|
|
1197
|
-
|
|
1198
|
-
@property {String}
|
|
1199
|
-
*/
|
|
1200
|
-
defaultState: null,
|
|
1201
|
-
|
|
1202
|
-
/** @private
|
|
1203
|
-
Managed by the statechart
|
|
1204
|
-
|
|
1205
|
-
The statechart that owns this object.
|
|
1206
|
-
*/
|
|
1207
|
-
statechart: null,
|
|
1208
|
-
|
|
1209
|
-
/** @private
|
|
1210
|
-
Managed by the statechart
|
|
1211
|
-
|
|
1212
|
-
The state that owns this object
|
|
1213
|
-
*/
|
|
1214
|
-
parentState: null,
|
|
1215
|
-
|
|
1216
|
-
/**
|
|
1217
|
-
Used by the statechart during a state transition process.
|
|
1218
|
-
|
|
1219
|
-
Returns a state to enter based on whether the parent state has
|
|
1220
|
-
its historyState property assigned. If not then this object's
|
|
1221
|
-
assigned default state is returned.
|
|
1222
|
-
*/
|
|
1223
|
-
state: function() {
|
|
1224
|
-
var defaultState = this.get('defaultState'),
|
|
1225
|
-
historyState = this.getPath('parentState.historyState');
|
|
1226
|
-
return !!historyState ? historyState : defaultState;
|
|
1227
|
-
}.property().cacheable(),
|
|
1228
|
-
|
|
1229
|
-
/** @private */
|
|
1230
|
-
parentHistoryStateDidChange: function() {
|
|
1231
|
-
this.notifyPropertyChange('state');
|
|
1232
|
-
}.observes('*parentState.historyState')
|
|
1233
|
-
|
|
1234
|
-
});
|
|
1235
|
-
|
|
1236
|
-
/**
|
|
1237
|
-
The default name given to an empty state
|
|
1238
|
-
*/
|
|
1239
|
-
SC.EMPTY_STATE_NAME = "__EMPTY_STATE__";
|
|
1240
|
-
|
|
1241
|
-
/**
|
|
1242
|
-
Represents an empty state that gets assigned as a state's initial substate
|
|
1243
|
-
if the state does not have an initial substate defined.
|
|
1244
|
-
*/
|
|
1245
|
-
SC.EmptyState = SC.State.extend({
|
|
1246
|
-
|
|
1247
|
-
name: SC.EMPTY_STATE_NAME,
|
|
1248
|
-
|
|
1249
|
-
enterState: function() {
|
|
1250
|
-
this.stateLogWarning("No initial substate was defined for state %@. Entering default empty state".fmt(this.get('parentState')));
|
|
1251
|
-
}
|
|
1252
|
-
|
|
1253
|
-
});
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
sc_require('system/state');
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
+
@class
|
|
14
|
+
|
|
13
15
|
The startchart manager mixin allows an object to be a statechart. By becoming a statechart, the
|
|
14
16
|
object can then be manage a set of its own states.
|
|
15
17
|
|
|
@@ -60,7 +62,7 @@ sc_require('system/state');
|
|
|
60
62
|
|
|
61
63
|
If you liked to specify a class that should be used as the root state but using the above method to defined
|
|
62
64
|
states, you can set the rootStateExample property with a class that extends from SC.State. If the
|
|
63
|
-
|
|
65
|
+
rootStateExample property is not explicitly assigned the then default class used will be SC.State.
|
|
64
66
|
|
|
65
67
|
To provide your statechart with orthogonality, you use concurrent states. If you use concurrent states,
|
|
66
68
|
then your statechart will have multiple current states. That is because each concurrent state represents an
|
|
@@ -163,10 +165,9 @@ sc_require('system/state');
|
|
|
163
165
|
into as many files as you see fit.
|
|
164
166
|
|
|
165
167
|
@author Michael Cohen
|
|
166
|
-
|
|
167
168
|
*/
|
|
168
169
|
|
|
169
|
-
SC.StatechartManager = {
|
|
170
|
+
SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
170
171
|
|
|
171
172
|
// Walk like a duck
|
|
172
173
|
isResponderContext: YES,
|
|
@@ -547,7 +548,8 @@ SC.StatechartManager = {
|
|
|
547
548
|
trace = this.get('allowStatechartTracing'),
|
|
548
549
|
rootState = this.get('rootState'),
|
|
549
550
|
paramState = state,
|
|
550
|
-
paramFromCurrentState = fromCurrentState
|
|
551
|
+
paramFromCurrentState = fromCurrentState,
|
|
552
|
+
msg;
|
|
551
553
|
|
|
552
554
|
state = rootState.getSubstate(state);
|
|
553
555
|
|
|
@@ -578,7 +580,7 @@ SC.StatechartManager = {
|
|
|
578
580
|
// Check to make sure the current state given is actually a current state of this statechart
|
|
579
581
|
fromCurrentState = rootState.getSubstate(fromCurrentState);
|
|
580
582
|
if (SC.none(fromCurrentState) || !fromCurrentState.get('isCurrentState')) {
|
|
581
|
-
|
|
583
|
+
msg = "Can not to goto state %@. %@ is not a recognized current state in statechart";
|
|
582
584
|
this.statechartLogError(msg.fmt(paramState, paramFromCurrentState));
|
|
583
585
|
this._gotoStateLocked = NO;
|
|
584
586
|
return;
|
|
@@ -588,12 +590,18 @@ SC.StatechartManager = {
|
|
|
588
590
|
// No explicit current state to start from; therefore, just use the first current state as
|
|
589
591
|
// a default, if there is a current state.
|
|
590
592
|
fromCurrentState = this.get('currentStates')[0];
|
|
593
|
+
msg = "gotoState: fromCurrentState not explicitly provided. Using a default current state to transition from: %@";
|
|
594
|
+
this.statechartLogWarning(msg.fmt(fromCurrentState));
|
|
591
595
|
}
|
|
592
596
|
|
|
593
597
|
if (trace) {
|
|
594
598
|
this.statechartLogTrace("BEGIN gotoState: %@".fmt(state));
|
|
595
|
-
|
|
596
|
-
|
|
599
|
+
msg = "starting from current state: %@";
|
|
600
|
+
msg = msg.fmt(fromCurrentState ? fromCurrentState : '---');
|
|
601
|
+
this.statechartLogTrace(msg);
|
|
602
|
+
msg = "current states before: %@";
|
|
603
|
+
msg = msg.fmt(this.getPath('currentStates.length') > 0 ? this.get('currentStates') : '---');
|
|
604
|
+
this.statechartLogTrace(msg);
|
|
597
605
|
}
|
|
598
606
|
|
|
599
607
|
// If there is a current state to start the transition process from, then determine what
|
|
@@ -739,7 +747,7 @@ SC.StatechartManager = {
|
|
|
739
747
|
parentState = parentState.get('parentState');
|
|
740
748
|
}
|
|
741
749
|
|
|
742
|
-
if (this.get('allowStatechartTracing')) this.statechartLogTrace("exiting state: %@".fmt(state));
|
|
750
|
+
if (this.get('allowStatechartTracing')) this.statechartLogTrace("<-- exiting state: %@".fmt(state));
|
|
743
751
|
|
|
744
752
|
state.set('currentSubstates', []);
|
|
745
753
|
state.notifyPropertyChange('isCurrentState');
|
|
@@ -787,7 +795,7 @@ SC.StatechartManager = {
|
|
|
787
795
|
parentState = parentState.get('parentState');
|
|
788
796
|
}
|
|
789
797
|
|
|
790
|
-
if (this.get('allowStatechartTracing')) this.statechartLogTrace("entering state: %@".fmt(state));
|
|
798
|
+
if (this.get('allowStatechartTracing')) this.statechartLogTrace("--> entering state: %@".fmt(state));
|
|
791
799
|
|
|
792
800
|
state.notifyPropertyChange('isCurrentState');
|
|
793
801
|
|
|
@@ -1474,73 +1482,3 @@ SC.Statechart = SC.Object.extend(SC.StatechartManager, {
|
|
|
1474
1482
|
});
|
|
1475
1483
|
|
|
1476
1484
|
SC.Statechart.design = SC.Statechart.extend;
|
|
1477
|
-
|
|
1478
|
-
/**
|
|
1479
|
-
Represents a call that is intended to be asynchronous. This is
|
|
1480
|
-
used during a state transition process when either entering or
|
|
1481
|
-
exiting a state.
|
|
1482
|
-
*/
|
|
1483
|
-
SC.Async = SC.Object.extend({
|
|
1484
|
-
|
|
1485
|
-
func: null,
|
|
1486
|
-
|
|
1487
|
-
arg1: null,
|
|
1488
|
-
|
|
1489
|
-
arg2: null,
|
|
1490
|
-
|
|
1491
|
-
/** @private
|
|
1492
|
-
Called by the statechart
|
|
1493
|
-
*/
|
|
1494
|
-
tryToPerform: function(state) {
|
|
1495
|
-
var func = this.get('func'),
|
|
1496
|
-
arg1 = this.get('arg1'),
|
|
1497
|
-
arg2 = this.get('arg2'),
|
|
1498
|
-
funcType = SC.typeOf(func);
|
|
1499
|
-
|
|
1500
|
-
if (funcType === SC.T_STRING) {
|
|
1501
|
-
state.tryToPerform(func, arg1, arg2);
|
|
1502
|
-
}
|
|
1503
|
-
else if (funcType === SC.T_FUNCTION) {
|
|
1504
|
-
func.apply(state, [arg1, arg2]);
|
|
1505
|
-
}
|
|
1506
|
-
}
|
|
1507
|
-
|
|
1508
|
-
});
|
|
1509
|
-
|
|
1510
|
-
/**
|
|
1511
|
-
Singleton
|
|
1512
|
-
*/
|
|
1513
|
-
SC.Async.mixin({
|
|
1514
|
-
|
|
1515
|
-
/**
|
|
1516
|
-
Call in either a state's enterState or exitState method when you
|
|
1517
|
-
want a state to perform an asynchronous action, such as an animation.
|
|
1518
|
-
|
|
1519
|
-
Examples:
|
|
1520
|
-
|
|
1521
|
-
SC.State.extend({
|
|
1522
|
-
|
|
1523
|
-
enterState: function() {
|
|
1524
|
-
return SC.Async.perform('foo');
|
|
1525
|
-
},
|
|
1526
|
-
|
|
1527
|
-
exitState: function() {
|
|
1528
|
-
return SC.Async.perform('bar', 100);
|
|
1529
|
-
}
|
|
1530
|
-
|
|
1531
|
-
foo: function() { ... },
|
|
1532
|
-
|
|
1533
|
-
bar: function(arg) { ... }
|
|
1534
|
-
|
|
1535
|
-
});
|
|
1536
|
-
|
|
1537
|
-
@param func {String|Function} the functio to be invoked on a state
|
|
1538
|
-
@param arg1 Optional. An argument to pass to the given function
|
|
1539
|
-
@param arg2 Optional. An argument to pass to the given function
|
|
1540
|
-
@return {SC.Async} a new instance of a SC.Async
|
|
1541
|
-
*/
|
|
1542
|
-
perform: function(func, arg1, arg2) {
|
|
1543
|
-
return SC.Async.create({ func: func, arg1: arg1, arg2: arg2 });
|
|
1544
|
-
}
|
|
1545
|
-
|
|
1546
|
-
});
|
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
// ==========================================================================
|
|
2
|
+
// SC.Statechart Unit Test
|
|
3
|
+
// ==========================================================================
|
|
4
|
+
/*globals SC */
|
|
5
|
+
|
|
6
|
+
var obj, monitor, rootState, a, b, c, d, e, m, n, o, p, x, y;
|
|
7
|
+
|
|
8
|
+
module("SC.Statechart: Destroy Statechart Tests", {
|
|
9
|
+
setup: function() {
|
|
10
|
+
|
|
11
|
+
obj = SC.Object.create(SC.StatechartManager, {
|
|
12
|
+
|
|
13
|
+
initialState: 'A',
|
|
14
|
+
A: SC.State.design(),
|
|
15
|
+
B: SC.State.design(),
|
|
16
|
+
C: SC.State.design(),
|
|
17
|
+
D: SC.State.design(),
|
|
18
|
+
E: SC.State.design(),
|
|
19
|
+
M: SC.State.design(),
|
|
20
|
+
N: SC.State.design(),
|
|
21
|
+
O: SC.State.design(),
|
|
22
|
+
P: SC.State.design(),
|
|
23
|
+
X: SC.State.design(),
|
|
24
|
+
Y: SC.State.design()
|
|
25
|
+
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
obj.initStatechart();
|
|
29
|
+
rootState = obj.get('rootState');
|
|
30
|
+
a = obj.getState('A');
|
|
31
|
+
b = obj.getState('B');
|
|
32
|
+
c = obj.getState('C');
|
|
33
|
+
d = obj.getState('D');
|
|
34
|
+
e = obj.getState('E');
|
|
35
|
+
m = obj.getState('M');
|
|
36
|
+
n = obj.getState('N');
|
|
37
|
+
o = obj.getState('O');
|
|
38
|
+
p = obj.getState('P');
|
|
39
|
+
x = obj.getState('X');
|
|
40
|
+
y = obj.getState('Y');
|
|
41
|
+
|
|
42
|
+
monitor = SC.StatechartMonitor.create({ statechart: obj });
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
teardown: function() {
|
|
46
|
+
obj = monitor = rootState = null;
|
|
47
|
+
a = b = c = d = e = m = n = o = p = x = y = null;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
test("match against sequence entered A", function() {
|
|
52
|
+
monitor.pushEnteredState(a);
|
|
53
|
+
|
|
54
|
+
var matcher = monitor.matchSequence();
|
|
55
|
+
|
|
56
|
+
ok(matcher.begin().entered(a).end(), "should match entered A");
|
|
57
|
+
ok(matcher.begin().entered('A').end(), "should match entered 'A'");
|
|
58
|
+
ok(!matcher.begin().entered(b).end(), "should not match entered B");
|
|
59
|
+
ok(!matcher.begin().exited(a).end(), "should not match exited A");
|
|
60
|
+
ok(!matcher.begin().exited(b).end(), "should not match exited B");
|
|
61
|
+
ok(!matcher.begin().entered(a, b).end(), "should not match entered [A, B]");
|
|
62
|
+
ok(!matcher.begin().entered(a).entered(b).end(), "should not match entered A, entered B");
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
test("match against sequence exited A", function() {
|
|
66
|
+
monitor.pushExitedState(a);
|
|
67
|
+
|
|
68
|
+
var matcher = monitor.matchSequence();
|
|
69
|
+
|
|
70
|
+
ok(matcher.begin().exited(a).end(), "should match exited A");
|
|
71
|
+
ok(matcher.begin().exited('A').end(), "should match exited 'A'");
|
|
72
|
+
ok(!matcher.begin().exited(b).end(), "should not match exited B");
|
|
73
|
+
ok(!matcher.begin().entered(a).end(), "should not match entered A");
|
|
74
|
+
ok(!matcher.begin().entered(b).end(), "should not match entered B");
|
|
75
|
+
ok(!matcher.begin().exited(a, b).end(), "should not match exited [A, B]");
|
|
76
|
+
ok(!matcher.begin().exited(a).exited(b).end(), "should not match exited A, exited B");
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
test("match against sequence entered A, entered B", function() {
|
|
80
|
+
monitor.pushEnteredState(a);
|
|
81
|
+
monitor.pushEnteredState(b);
|
|
82
|
+
|
|
83
|
+
var matcher = monitor.matchSequence();
|
|
84
|
+
|
|
85
|
+
ok(matcher.begin().entered(a, b).end(), "should match entered [A, B]");
|
|
86
|
+
ok(matcher.begin().entered('A', 'B').end(), "should match entered ['A', 'B']");
|
|
87
|
+
ok(matcher.begin().entered(a).entered(b).end(), "should match entered A, entered B");
|
|
88
|
+
ok(!matcher.begin().entered(a).end(), "should not match entered A");
|
|
89
|
+
ok(!matcher.begin().entered(b).end(), "should not match entered B");
|
|
90
|
+
ok(!matcher.begin().entered(b, a).end(), "should not match entered [B, A]");
|
|
91
|
+
ok(!matcher.begin().entered('B', 'A').end(), "should match entered ['B', 'A']");
|
|
92
|
+
ok(!matcher.begin().entered(b).entered(a).end(), "should not matched entered B, entered A");
|
|
93
|
+
ok(!matcher.begin().entered(a, c).end(), "should not match entered [A, C]");
|
|
94
|
+
ok(!matcher.begin().entered('A', 'C').end(), "should not match entered [A, C]");
|
|
95
|
+
ok(!matcher.begin().entered(a).entered(c).end(), "should not match entered A, entered C");
|
|
96
|
+
ok(!matcher.begin().entered(a, b, c).end(), "should not match entered [A, B, C]");
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
test("match against sequence exited A, exited B", function() {
|
|
100
|
+
monitor.pushExitedState(a);
|
|
101
|
+
monitor.pushExitedState(b);
|
|
102
|
+
|
|
103
|
+
var matcher = monitor.matchSequence();
|
|
104
|
+
|
|
105
|
+
ok(matcher.begin().exited(a, b).end(), "should match exited [A, B]");
|
|
106
|
+
ok(matcher.begin().exited('A', 'B').end(), "should match exited ['A', 'B']");
|
|
107
|
+
ok(matcher.begin().exited(a).exited(b).end(), "should match exited A, entered B");
|
|
108
|
+
ok(!matcher.begin().exited(a).end(), "should not match exited A");
|
|
109
|
+
ok(!matcher.begin().exited(b).end(), "should not match exited B");
|
|
110
|
+
ok(!matcher.begin().exited(b, a).end(), "should not match exited [B, A]");
|
|
111
|
+
ok(!matcher.begin().exited('B', 'A').end(), "should not match exited ['B', 'A']");
|
|
112
|
+
ok(!matcher.begin().exited(b).exited(a).end(), "should not matched exited B, exited A");
|
|
113
|
+
ok(!matcher.begin().exited(a, c).end(), "should not match exited [A, C]");
|
|
114
|
+
ok(!matcher.begin().exited('A', 'C').end(), "should not match exited ['A', 'C']");
|
|
115
|
+
ok(!matcher.begin().exited(a).exited(c).end(), "should not match exited A, exited C");
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
test("match against sequence exited A, entered B", function() {
|
|
119
|
+
monitor.pushExitedState(a);
|
|
120
|
+
monitor.pushEnteredState(b);
|
|
121
|
+
|
|
122
|
+
var matcher = monitor.matchSequence();
|
|
123
|
+
|
|
124
|
+
ok(matcher.begin().exited(a).entered(b).end(), "should match exited A, entered B");
|
|
125
|
+
ok(matcher.begin().exited('A').entered('B').end(), "should match exited 'A', entered 'B'");
|
|
126
|
+
ok(!matcher.begin().entered(a).exited(a).end(), "should not match entered A, exited B");
|
|
127
|
+
ok(!matcher.begin().entered('A').exited('B').end(), "should not match entered 'A', exited 'B'");
|
|
128
|
+
ok(!matcher.begin().exited(a).entered(c).end(), "should not match exited A, entered C");
|
|
129
|
+
ok(!matcher.begin().exited(a).entered(b, c).end(), "should not match exited A, entered [B, C]");
|
|
130
|
+
ok(!matcher.begin().exited(a).entered(b).entered(c).end(), "should not match exited A, entered B, entered C");
|
|
131
|
+
ok(!matcher.begin().exited(a).entered(b).exited(c).end(), "should not match exited A, entered B, exited C");
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
test("match against sequence seq(enter A), seq(enter B)", function() {
|
|
135
|
+
monitor.pushEnteredState(a);
|
|
136
|
+
monitor.pushEnteredState(b);
|
|
137
|
+
|
|
138
|
+
var matcher = monitor.matchSequence();
|
|
139
|
+
|
|
140
|
+
matcher.begin()
|
|
141
|
+
.beginSequence()
|
|
142
|
+
.entered(a)
|
|
143
|
+
.endSequence()
|
|
144
|
+
.beginSequence()
|
|
145
|
+
.entered(b)
|
|
146
|
+
.endSequence()
|
|
147
|
+
.end();
|
|
148
|
+
|
|
149
|
+
ok(matcher.get('match'), "should match seq(entered A), seq(entered B)");
|
|
150
|
+
|
|
151
|
+
matcher.begin()
|
|
152
|
+
.beginSequence()
|
|
153
|
+
.entered(a)
|
|
154
|
+
.entered(b)
|
|
155
|
+
.endSequence()
|
|
156
|
+
.end();
|
|
157
|
+
|
|
158
|
+
ok(matcher.get('match'), "should match seq(entered A, entered B)");
|
|
159
|
+
|
|
160
|
+
matcher.begin()
|
|
161
|
+
.beginSequence()
|
|
162
|
+
.entered(a)
|
|
163
|
+
.entered(b)
|
|
164
|
+
.endSequence()
|
|
165
|
+
.end();
|
|
166
|
+
|
|
167
|
+
ok(matcher.get('match'), "should match seq(entered A, entered B)");
|
|
168
|
+
|
|
169
|
+
matcher.begin()
|
|
170
|
+
.beginSequence()
|
|
171
|
+
.entered(a, b)
|
|
172
|
+
.endSequence()
|
|
173
|
+
.end();
|
|
174
|
+
|
|
175
|
+
ok(matcher.get('match'), "should match seq(entered [A, B]");
|
|
176
|
+
|
|
177
|
+
matcher.begin()
|
|
178
|
+
.beginSequence()
|
|
179
|
+
.entered(a)
|
|
180
|
+
.endSequence()
|
|
181
|
+
.end();
|
|
182
|
+
|
|
183
|
+
ok(!matcher.get('match'), "should not match seq(entered A)");
|
|
184
|
+
|
|
185
|
+
matcher.begin()
|
|
186
|
+
.beginSequence()
|
|
187
|
+
.entered(a)
|
|
188
|
+
.endSequence()
|
|
189
|
+
.beginSequence()
|
|
190
|
+
.entered(c)
|
|
191
|
+
.endSequence()
|
|
192
|
+
.end();
|
|
193
|
+
|
|
194
|
+
ok(!matcher.get('match'), "should not match seq(entered A), seq(entered C)");
|
|
195
|
+
|
|
196
|
+
matcher.begin()
|
|
197
|
+
.beginSequence()
|
|
198
|
+
.entered(a)
|
|
199
|
+
.endSequence()
|
|
200
|
+
.beginSequence()
|
|
201
|
+
.entered(b)
|
|
202
|
+
.endSequence()
|
|
203
|
+
.beginSequence()
|
|
204
|
+
.entered(c)
|
|
205
|
+
.endSequence()
|
|
206
|
+
.end();
|
|
207
|
+
|
|
208
|
+
ok(!matcher.get('match'), "should not match seq(entered A), seq(entered B), seq(entered C)");
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
test("match against sequence con(entered A)", function() {
|
|
212
|
+
monitor.pushEnteredState(a);
|
|
213
|
+
|
|
214
|
+
var matcher = monitor.matchSequence();
|
|
215
|
+
|
|
216
|
+
matcher.begin()
|
|
217
|
+
.beginConcurrent()
|
|
218
|
+
.entered(a)
|
|
219
|
+
.endConcurrent()
|
|
220
|
+
.end();
|
|
221
|
+
|
|
222
|
+
ok(matcher.get('match'), "should match con(entered A)");
|
|
223
|
+
|
|
224
|
+
matcher.begin()
|
|
225
|
+
.beginConcurrent()
|
|
226
|
+
.beginSequence()
|
|
227
|
+
.entered(a)
|
|
228
|
+
.endSequence()
|
|
229
|
+
.endConcurrent()
|
|
230
|
+
.end();
|
|
231
|
+
|
|
232
|
+
ok(matcher.get('match'), "should match con(seq(entered A))");
|
|
233
|
+
|
|
234
|
+
matcher.begin()
|
|
235
|
+
.beginConcurrent()
|
|
236
|
+
.entered(b)
|
|
237
|
+
.endConcurrent()
|
|
238
|
+
.end();
|
|
239
|
+
|
|
240
|
+
ok(!matcher.get('match'), "should match con(entered B)");
|
|
241
|
+
|
|
242
|
+
matcher.begin()
|
|
243
|
+
.beginConcurrent()
|
|
244
|
+
.exited(a)
|
|
245
|
+
.endConcurrent()
|
|
246
|
+
.end();
|
|
247
|
+
|
|
248
|
+
ok(!matcher.get('match'), "should match con(exited B)");
|
|
249
|
+
|
|
250
|
+
matcher.begin()
|
|
251
|
+
.beginConcurrent()
|
|
252
|
+
.entered(a)
|
|
253
|
+
.entered(b)
|
|
254
|
+
.endConcurrent()
|
|
255
|
+
.end();
|
|
256
|
+
|
|
257
|
+
ok(!matcher.get('match'), "should not match con(entered A, entered B)");
|
|
258
|
+
|
|
259
|
+
matcher.begin()
|
|
260
|
+
.beginConcurrent()
|
|
261
|
+
.entered(b)
|
|
262
|
+
.entered(a)
|
|
263
|
+
.endConcurrent()
|
|
264
|
+
.end();
|
|
265
|
+
|
|
266
|
+
ok(!matcher.get('match'), "should not match con(entered B, entered A)");
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
test("match against sequence con(entered A entered B)", function() {
|
|
270
|
+
monitor.pushEnteredState(a);
|
|
271
|
+
monitor.pushEnteredState(b);
|
|
272
|
+
|
|
273
|
+
var matcher = monitor.matchSequence();
|
|
274
|
+
|
|
275
|
+
matcher.begin()
|
|
276
|
+
.beginConcurrent()
|
|
277
|
+
.entered(a)
|
|
278
|
+
.entered(b)
|
|
279
|
+
.endConcurrent()
|
|
280
|
+
.end();
|
|
281
|
+
|
|
282
|
+
ok(matcher.get('match'), "should match con(entered A, entered B)");
|
|
283
|
+
|
|
284
|
+
matcher.begin()
|
|
285
|
+
.beginConcurrent()
|
|
286
|
+
.entered(b)
|
|
287
|
+
.entered(a)
|
|
288
|
+
.endConcurrent()
|
|
289
|
+
.end();
|
|
290
|
+
|
|
291
|
+
ok(matcher.get('match'), "should match con(entered B, entered A)");
|
|
292
|
+
|
|
293
|
+
matcher.begin()
|
|
294
|
+
.beginConcurrent()
|
|
295
|
+
.beginSequence()
|
|
296
|
+
.entered(a)
|
|
297
|
+
.endSequence()
|
|
298
|
+
.entered(b)
|
|
299
|
+
.endConcurrent()
|
|
300
|
+
.end();
|
|
301
|
+
|
|
302
|
+
ok(matcher.get('match'), "should match con(seq(entered A), entered B)");
|
|
303
|
+
|
|
304
|
+
matcher.begin()
|
|
305
|
+
.beginConcurrent()
|
|
306
|
+
.beginSequence()
|
|
307
|
+
.entered(a)
|
|
308
|
+
.endSequence()
|
|
309
|
+
.beginSequence()
|
|
310
|
+
.entered(b)
|
|
311
|
+
.endSequence()
|
|
312
|
+
.endConcurrent()
|
|
313
|
+
.end();
|
|
314
|
+
|
|
315
|
+
ok(matcher.get('match'), "should match con(seq(entered A), seq(entered B))");
|
|
316
|
+
|
|
317
|
+
matcher.begin()
|
|
318
|
+
.beginConcurrent()
|
|
319
|
+
.entered(a, b)
|
|
320
|
+
.endConcurrent()
|
|
321
|
+
.end();
|
|
322
|
+
|
|
323
|
+
ok(matcher.get('match'), "should match con(entered [A, B])");
|
|
324
|
+
|
|
325
|
+
matcher.begin()
|
|
326
|
+
.beginConcurrent()
|
|
327
|
+
.beginSequence()
|
|
328
|
+
.entered(a)
|
|
329
|
+
.entered(b)
|
|
330
|
+
.endSequence()
|
|
331
|
+
.endConcurrent()
|
|
332
|
+
.end();
|
|
333
|
+
|
|
334
|
+
ok(matcher.get('match'), "should match con(entered [A, B])");
|
|
335
|
+
|
|
336
|
+
matcher.begin()
|
|
337
|
+
.beginConcurrent()
|
|
338
|
+
.entered(a)
|
|
339
|
+
.endConcurrent()
|
|
340
|
+
.end();
|
|
341
|
+
|
|
342
|
+
ok(!matcher.get('match'), "should not match con(entered A])");
|
|
343
|
+
|
|
344
|
+
matcher.begin()
|
|
345
|
+
.beginConcurrent()
|
|
346
|
+
.entered(a)
|
|
347
|
+
.entered(c)
|
|
348
|
+
.endConcurrent()
|
|
349
|
+
.end();
|
|
350
|
+
|
|
351
|
+
ok(!matcher.get('match'), "should not match con(entered A, entered C)");
|
|
352
|
+
|
|
353
|
+
matcher.begin()
|
|
354
|
+
.beginConcurrent()
|
|
355
|
+
.entered(a)
|
|
356
|
+
.entered(b)
|
|
357
|
+
.entered(c)
|
|
358
|
+
.endConcurrent()
|
|
359
|
+
.end();
|
|
360
|
+
|
|
361
|
+
ok(!matcher.get('match'), "should not match con(entered A, entered B, entered C)");
|
|
362
|
+
|
|
363
|
+
});
|
|
364
|
+
|
|
365
|
+
test("match against sequence con(entered A entered B)", function() {
|
|
366
|
+
monitor.pushEnteredState(a);
|
|
367
|
+
monitor.pushEnteredState(b);
|
|
368
|
+
monitor.pushEnteredState(x);
|
|
369
|
+
monitor.pushEnteredState(m);
|
|
370
|
+
monitor.pushEnteredState(n);
|
|
371
|
+
monitor.pushEnteredState(y);
|
|
372
|
+
monitor.pushEnteredState(o);
|
|
373
|
+
monitor.pushEnteredState(p);
|
|
374
|
+
monitor.pushEnteredState(c);
|
|
375
|
+
|
|
376
|
+
var matcher = monitor.matchSequence();
|
|
377
|
+
|
|
378
|
+
matcher.begin()
|
|
379
|
+
.entered(a)
|
|
380
|
+
.entered(b)
|
|
381
|
+
.beginConcurrent()
|
|
382
|
+
.beginSequence()
|
|
383
|
+
.entered(x, m, n)
|
|
384
|
+
.endSequence()
|
|
385
|
+
.beginSequence()
|
|
386
|
+
.entered(y, o, p)
|
|
387
|
+
.endSequence()
|
|
388
|
+
.endConcurrent()
|
|
389
|
+
.entered(c)
|
|
390
|
+
.end();
|
|
391
|
+
|
|
392
|
+
ok(matcher.get('match'),
|
|
393
|
+
"should match entered A, entered B, con(seq(entered [X, M, N]), seq(entered [Y, O, P])) entered C)");
|
|
394
|
+
|
|
395
|
+
matcher.begin()
|
|
396
|
+
.entered(a)
|
|
397
|
+
.entered(b)
|
|
398
|
+
.beginConcurrent()
|
|
399
|
+
.beginSequence()
|
|
400
|
+
.entered(y, o, p)
|
|
401
|
+
.endSequence()
|
|
402
|
+
.beginSequence()
|
|
403
|
+
.entered(x, m, n)
|
|
404
|
+
.endSequence()
|
|
405
|
+
.endConcurrent()
|
|
406
|
+
.entered(c)
|
|
407
|
+
.end();
|
|
408
|
+
|
|
409
|
+
ok(matcher.get('match'),
|
|
410
|
+
"should match entered A, entered B, con(seq(entered [Y, O, P]), seq(entered [X, M, N])) entered C)");
|
|
411
|
+
|
|
412
|
+
matcher.begin()
|
|
413
|
+
.entered(a)
|
|
414
|
+
.entered(b)
|
|
415
|
+
.beginConcurrent()
|
|
416
|
+
.beginSequence()
|
|
417
|
+
.entered(x, m)
|
|
418
|
+
.endSequence()
|
|
419
|
+
.beginSequence()
|
|
420
|
+
.entered(y, o, p)
|
|
421
|
+
.endSequence()
|
|
422
|
+
.endConcurrent()
|
|
423
|
+
.entered(c)
|
|
424
|
+
.end();
|
|
425
|
+
|
|
426
|
+
ok(!matcher.get('match'),
|
|
427
|
+
"should not match entered A, entered B, con(seq(entered [X, M]), seq(entered [Y, O, P])) entered C)");
|
|
428
|
+
|
|
429
|
+
matcher.begin()
|
|
430
|
+
.entered(a)
|
|
431
|
+
.entered(b)
|
|
432
|
+
.beginConcurrent()
|
|
433
|
+
.beginSequence()
|
|
434
|
+
.entered(x, m, n)
|
|
435
|
+
.endSequence()
|
|
436
|
+
.beginSequence()
|
|
437
|
+
.entered(y, o)
|
|
438
|
+
.endSequence()
|
|
439
|
+
.endConcurrent()
|
|
440
|
+
.entered(c)
|
|
441
|
+
.end();
|
|
442
|
+
|
|
443
|
+
ok(!matcher.get('match'),
|
|
444
|
+
"should not match entered A, entered B, con(seq(entered [X, M]), seq(entered [Y, O])) entered C)");
|
|
445
|
+
|
|
446
|
+
matcher.begin()
|
|
447
|
+
.entered(a)
|
|
448
|
+
.entered(b)
|
|
449
|
+
.beginConcurrent()
|
|
450
|
+
.beginSequence()
|
|
451
|
+
.entered(x, m, n)
|
|
452
|
+
.endSequence()
|
|
453
|
+
.beginSequence()
|
|
454
|
+
.entered(y, o, p)
|
|
455
|
+
.endSequence()
|
|
456
|
+
.entered(e)
|
|
457
|
+
.endConcurrent()
|
|
458
|
+
.entered(c)
|
|
459
|
+
.end();
|
|
460
|
+
|
|
461
|
+
ok(!matcher.get('match'),
|
|
462
|
+
"should not match entered A, entered B, con(seq(entered [X, M, N]), seq(entered [Y, O, P]), entered E) entered C)");
|
|
463
|
+
|
|
464
|
+
});
|