sproutit-sproutcore 1.0.0.20090407205609 → 1.0.0.20090408130025
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/frameworks/sproutcore/Buildfile +63 -0
- data/frameworks/sproutcore/HISTORY +682 -0
- data/frameworks/sproutcore/README +22 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/controllers/docs.js +149 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/core.js +16 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.css +17 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.js +99 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/main.js +27 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/models/doc.js +21 -0
- data/frameworks/sproutcore/apps/sc_qunit/controllers/runner.js +209 -0
- data/frameworks/sproutcore/apps/sc_qunit/core.js +16 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.css +17 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.js +107 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/apps/sc_qunit/main.js +18 -0
- data/frameworks/sproutcore/apps/sc_qunit/models/test.js +24 -0
- data/frameworks/sproutcore/apps/sc_qunit/views/test_iframe.js +52 -0
- data/frameworks/sproutcore/apps/tests/controllers/targets.js +47 -0
- data/frameworks/sproutcore/apps/tests/controllers/test.js +20 -0
- data/frameworks/sproutcore/apps/tests/controllers/tests.js +38 -0
- data/frameworks/sproutcore/apps/tests/core.js +35 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/loading.rhtml +9 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +19 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +86 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +17 -0
- data/frameworks/sproutcore/apps/tests/fixtures/target.js +43 -0
- data/frameworks/sproutcore/apps/tests/fixtures/test.js +43 -0
- data/frameworks/sproutcore/apps/tests/main.js +39 -0
- data/frameworks/sproutcore/apps/tests/models/target.js +49 -0
- data/frameworks/sproutcore/apps/tests/models/test.js +20 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/test.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/tests.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/models/target.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/models/test.js +15 -0
- data/frameworks/sproutcore/apps/welcome/core.js +23 -0
- data/frameworks/sproutcore/apps/welcome/english.lproj/loading.rhtml +8 -0
- data/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +43 -0
- data/frameworks/sproutcore/apps/welcome/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/apps/welcome/main.js +36 -0
- data/frameworks/sproutcore/design/Design Charts.graffle +15819 -0
- data/frameworks/sproutcore/design/Record State Table.numbers +0 -0
- data/frameworks/sproutcore/frameworks/datastore/core.js +14 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +113 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +256 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +196 -0
- data/frameworks/sproutcore/frameworks/datastore/debug/json.js +71 -0
- data/frameworks/sproutcore/frameworks/datastore/debug/standard_setup.js +96 -0
- data/frameworks/sproutcore/frameworks/datastore/fixtures/author_fixtures.js +2503 -0
- data/frameworks/sproutcore/frameworks/datastore/fixtures/sample.js +17 -0
- data/frameworks/sproutcore/frameworks/datastore/models/fetched_attribute.js +92 -0
- data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +38 -0
- data/frameworks/sproutcore/frameworks/datastore/models/record.js +430 -0
- data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +361 -0
- data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +305 -0
- data/frameworks/sproutcore/frameworks/datastore/system/query.js +128 -0
- data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +149 -0
- data/frameworks/sproutcore/frameworks/datastore/system/store.js +1689 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +86 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/integration/contact_model.js +114 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/integration/mail_model.js +91 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/integration/test_runner_model.js +56 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +73 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/readAttribute.js +48 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +42 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/storeDidChangeProperties.js +138 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/unknownProperty.js +46 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +71 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +115 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +40 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +116 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +135 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +110 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +99 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +180 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +126 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +163 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +166 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +175 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +54 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +126 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +127 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +57 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataHashDidChange.js +78 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +247 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +106 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/init.js +21 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +61 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +74 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/readEditableDataHash.js +74 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +74 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/removeDataHash.js +144 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +137 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/writeDataHash.js +130 -0
- data/frameworks/sproutcore/frameworks/debug/core.js +1 -0
- data/frameworks/sproutcore/frameworks/deprecated/core.js +61 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/button_views.rb +330 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/collection_view.rb +83 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/core_views.rb +326 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/form_views.rb +253 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/index.rhtml +75 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/menu_views.rb +93 -0
- data/frameworks/sproutcore/frameworks/deprecated/server/rails_server.js +80 -0
- data/frameworks/sproutcore/frameworks/deprecated/server/rest_server.js +178 -0
- data/frameworks/sproutcore/frameworks/deprecated/server/server.js +674 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/animator.js +679 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/binding.js +36 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/browser.js +77 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/classic_responder.js +314 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/event.js +60 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/globals.js +20 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/misc.js +60 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/node_descriptor.js +72 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/object.js +124 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/path_module.js +433 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/string.js +109 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/application/application.rhtml +125 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/clippingFrame.rhtml +401 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/frame.rhtml +357 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/isVisibleInWindow.rhtml +147 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/base.rhtml +298 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/incremental_rendering.rhtml +260 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/source_list_rendering.rhtml +143 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/popup_button.rhtml +128 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/text_field.rhtml +37 -0
- data/frameworks/sproutcore/frameworks/deprecated/views/collection.js +24 -0
- data/frameworks/sproutcore/frameworks/designer/coders/design.js +30 -0
- data/frameworks/sproutcore/frameworks/designer/coders/localization.js +28 -0
- data/frameworks/sproutcore/frameworks/designer/coders/object.js +347 -0
- data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +102 -0
- data/frameworks/sproutcore/frameworks/designer/css/css_rule.js +22 -0
- data/frameworks/sproutcore/frameworks/designer/css/css_style.js +29 -0
- data/frameworks/sproutcore/frameworks/designer/css/css_style_sheet.js +201 -0
- data/frameworks/sproutcore/frameworks/designer/ext/page.js +88 -0
- data/frameworks/sproutcore/frameworks/designer/ext/view.js +40 -0
- data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +18 -0
- data/frameworks/sproutcore/frameworks/designer/views/designer.js +553 -0
- data/frameworks/sproutcore/frameworks/designer/views/label.js +17 -0
- data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +13 -0
- data/frameworks/sproutcore/frameworks/designer/views/tab.js +17 -0
- data/frameworks/sproutcore/frameworks/desktop/core.js +6 -0
- data/frameworks/sproutcore/frameworks/desktop/debug/drag.js +41 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +56 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/a_sample_image.jpg +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/apple-logo1.jpeg +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/iframe.html +23 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +71 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +943 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/blank.gif +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_222222.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_454545.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_888888.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_ffffff.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/shared.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/indicator.gif +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/panels/sprite-x.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/panels/sprite-y.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sc-theme-sprite.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/standard_fade/000000.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/standard_fade/ffffff.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sticky-note.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +156 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +83 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +99 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/palette.css +3 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +94 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/picker.css +39 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/progress.css +31 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/radio.css +10 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/scroller.css +26 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +141 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/separator.css +19 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +57 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/split.css +70 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +8 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/strings.js +14 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +12 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/text_field.css +29 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/toolbar.css +6 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/border.js +53 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_group.js +22 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_item.js +22 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +226 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +247 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +377 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +504 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/modal.js +68 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/palette.js +63 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +184 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +402 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +46 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +39 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +81 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +175 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +280 -0
- data/frameworks/sproutcore/frameworks/desktop/system/drag.js +721 -0
- data/frameworks/sproutcore/frameworks/desktop/system/key_bindings.js +40 -0
- data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +641 -0
- data/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +187 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +43 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +152 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +57 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +36 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +40 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +80 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +38 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +45 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +140 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +145 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +99 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +39 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +64 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/grid/ui.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui.js +110 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +255 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +44 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/methods.js +128 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +240 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +113 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +202 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/methods.js +139 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +111 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +63 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/ui.js +70 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +94 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +206 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +81 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +85 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +37 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/ui.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +50 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +52 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +54 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +88 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/text_field/methods.js +76 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/text_field/ui.js +198 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/web/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +110 -0
- data/frameworks/sproutcore/frameworks/desktop/views/button.js +320 -0
- data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +98 -0
- data/frameworks/sproutcore/frameworks/desktop/views/collection.js +2141 -0
- data/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +44 -0
- data/frameworks/sproutcore/frameworks/desktop/views/form.js +595 -0
- data/frameworks/sproutcore/frameworks/desktop/views/grid.js +199 -0
- data/frameworks/sproutcore/frameworks/desktop/views/list.js +706 -0
- data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +523 -0
- data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +437 -0
- data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +62 -0
- data/frameworks/sproutcore/frameworks/desktop/views/progress.js +207 -0
- data/frameworks/sproutcore/frameworks/desktop/views/radio.js +332 -0
- data/frameworks/sproutcore/frameworks/desktop/views/scene.js +56 -0
- data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +648 -0
- data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +203 -0
- data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +509 -0
- data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +292 -0
- data/frameworks/sproutcore/frameworks/desktop/views/separator.js +37 -0
- data/frameworks/sproutcore/frameworks/desktop/views/slider.js +178 -0
- data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +1117 -0
- data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +169 -0
- data/frameworks/sproutcore/frameworks/desktop/views/split.js +651 -0
- data/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +55 -0
- data/frameworks/sproutcore/frameworks/desktop/views/tab.js +190 -0
- data/frameworks/sproutcore/frameworks/desktop/views/text_field.js +233 -0
- data/frameworks/sproutcore/frameworks/desktop/views/thumb.js +49 -0
- data/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +49 -0
- data/frameworks/sproutcore/frameworks/desktop/views/web.js +86 -0
- data/frameworks/sproutcore/frameworks/foundation/TESTING +46 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +490 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +317 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +421 -0
- data/frameworks/sproutcore/frameworks/foundation/core.js +111 -0
- data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +172 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/blank.gif +0 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +53 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/button_view.css +55 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +5 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +8 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/static_layout.css +5 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +40 -0
- data/frameworks/sproutcore/frameworks/foundation/ext/object.js +81 -0
- data/frameworks/sproutcore/frameworks/foundation/ext/run_loop.js +158 -0
- data/frameworks/sproutcore/frameworks/foundation/fixtures/file_exists.json +1 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +291 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/content_display.js +88 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/control.js +352 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +146 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/responder.js +156 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +154 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +101 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +237 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +176 -0
- data/frameworks/sproutcore/frameworks/foundation/panes/main.js +47 -0
- data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +555 -0
- data/frameworks/sproutcore/frameworks/foundation/protocols/inline_editor_delegate.js +84 -0
- data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +244 -0
- data/frameworks/sproutcore/frameworks/foundation/system/browser.js +64 -0
- data/frameworks/sproutcore/frameworks/foundation/system/builder.js +210 -0
- data/frameworks/sproutcore/frameworks/foundation/system/core_query.js +2015 -0
- data/frameworks/sproutcore/frameworks/foundation/system/cursor.js +129 -0
- data/frameworks/sproutcore/frameworks/foundation/system/error.js +93 -0
- data/frameworks/sproutcore/frameworks/foundation/system/event.js +817 -0
- data/frameworks/sproutcore/frameworks/foundation/system/image_cache.js +433 -0
- data/frameworks/sproutcore/frameworks/foundation/system/json.js +440 -0
- data/frameworks/sproutcore/frameworks/foundation/system/locale.js +288 -0
- data/frameworks/sproutcore/frameworks/foundation/system/page.js +106 -0
- data/frameworks/sproutcore/frameworks/foundation/system/ready.js +189 -0
- data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +865 -0
- data/frameworks/sproutcore/frameworks/foundation/system/request.js +255 -0
- data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +368 -0
- data/frameworks/sproutcore/frameworks/foundation/system/routes.js +446 -0
- data/frameworks/sproutcore/frameworks/foundation/system/time.js +478 -0
- data/frameworks/sproutcore/frameworks/foundation/system/timer.js +549 -0
- data/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +158 -0
- data/frameworks/sproutcore/frameworks/foundation/system/utils.js +330 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array.js +118 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/controller.js +268 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object.js +433 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/ui.js +113 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/integration/creating_views.js +113 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/content.js +195 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/displayProperties.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/content.js +168 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/builder.js +42 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +1323 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_dimensions.js +387 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +405 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/setClass.js +49 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/within.js +66 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/error.js +41 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/json.js +14 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/locale.js +128 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/begin.js +47 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/element.js +44 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/end.js +119 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +51 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +50 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +28 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +179 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +100 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/init.js +55 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/join.js +28 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/push_text.js +74 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/tag.js +45 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/update.js +205 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeKeyPane.js +124 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeMainPane.js +68 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +97 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/targetForAction.js +238 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/routes.js +33 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invalidate.js +38 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invokeLater.js +201 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/isPaused.js +71 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/performAction.js +67 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +170 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/user_defaults.js +27 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/utils/normalizeURL.js +18 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/utils/range.js +62 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/credit_card.js +35 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +21 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/number.js +47 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/password.js +13 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +83 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +39 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/main_pane.js +31 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/firstResponder.js +148 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/keyPane.js +133 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/sendEvent.js +165 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +132 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +246 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +87 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createLayer.js +97 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/destroyLayer.js +85 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +52 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/init.js +50 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/insertBefore.js +200 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +102 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layer.js +150 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutChildViews.js +162 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutDidChange.js +127 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +248 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/parentViewDidChange.js +67 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +166 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/removeChild.js +189 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/render.js +83 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/replaceChild.js +29 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +142 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayerLocation.js +194 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/viewDidResize.js +185 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +125 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/date.js +52 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/email.js +45 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/not_empty.js +33 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/number.js +82 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/password.js +86 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/validator.js +311 -0
- data/frameworks/sproutcore/frameworks/foundation/views/container.js +136 -0
- data/frameworks/sproutcore/frameworks/foundation/views/field.js +276 -0
- data/frameworks/sproutcore/frameworks/foundation/views/image.js +158 -0
- data/frameworks/sproutcore/frameworks/foundation/views/label.js +261 -0
- data/frameworks/sproutcore/frameworks/foundation/views/view.js +2160 -0
- data/frameworks/sproutcore/frameworks/mobile/english.lproj/core.css +12 -0
- data/frameworks/sproutcore/frameworks/mobile/lib/index.rhtml +126 -0
- data/frameworks/sproutcore/frameworks/mobile/system/root_responder.js +109 -0
- data/frameworks/sproutcore/frameworks/mobile/tests/views/button/ui.js +9 -0
- data/frameworks/sproutcore/frameworks/mobile/views/button.js +190 -0
- data/frameworks/sproutcore/frameworks/runtime/README +11 -0
- data/frameworks/sproutcore/frameworks/runtime/core.js +777 -0
- data/frameworks/sproutcore/frameworks/runtime/license.js +28 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/array.js +403 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +70 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +1193 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1149 -0
- data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +135 -0
- data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +108 -0
- data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +128 -0
- data/frameworks/sproutcore/frameworks/runtime/protocols/sparse_array_delegate.js +131 -0
- data/frameworks/sproutcore/frameworks/runtime/system/binding.js +891 -0
- data/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +107 -0
- data/frameworks/sproutcore/frameworks/runtime/system/object.js +783 -0
- data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +99 -0
- data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +214 -0
- data/frameworks/sproutcore/frameworks/runtime/system/set.js +246 -0
- data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +286 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/IsEqual.js +56 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/beget.js +23 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +66 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/guidFor.js +147 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/inspect.js +27 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/isArray.js +25 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +38 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +20 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +30 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +19 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +37 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +592 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +467 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +123 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/registerDependentKeys.js +79 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/propertyChanges.js +80 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/array.js +263 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +190 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +135 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/object/bindings.js +339 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +120 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +313 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +84 -0
- data/frameworks/sproutcore/frameworks/testing/core.js +13 -0
- data/frameworks/sproutcore/frameworks/testing/english.lproj/additions.css +8 -0
- data/frameworks/sproutcore/frameworks/testing/english.lproj/testsuite.css +131 -0
- data/frameworks/sproutcore/frameworks/testing/extras.js +43 -0
- data/frameworks/sproutcore/frameworks/testing/jquery.js +3559 -0
- data/frameworks/sproutcore/frameworks/testing/qunit.js +819 -0
- data/frameworks/sproutcore/frameworks/testing/tests/debug/qunit.js +25 -0
- data/frameworks/sproutcore/frameworks/testing/utils.js +55 -0
- data/frameworks/sproutcore/lib/index.rhtml +118 -0
- data/frameworks/sproutcore/license.js +28 -0
- data/frameworks/sproutcore/themes/empty_theme/tests/mini_icons.rhtml +69 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/button.css +41 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +8 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/backButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/blueButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/cancel.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/grayButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/leftButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listArrow.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listArrowSel.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listGroup.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/loading.gif +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/pinstripes.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/rightButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/selection.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/thumb.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toggle.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toggleOn.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toolButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toolbar.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/whiteButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +333 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +90 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +53 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +47 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/disclosure.css +55 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-sprite.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-ysprite.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-toolbar-view.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/label.css +37 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/pane.css +8 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/background-fat.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/background-thin.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-left-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-right-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/left-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/overlay.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/right-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-left-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-right-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +23 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +113 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +141 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +62 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/split_view.css +27 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +12 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +13 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +4 -0
- data/lib/thor/.autotest +7 -0
- data/lib/thor/CHANGELOG.rdoc +52 -0
- data/lib/thor/LICENSE +20 -0
- data/lib/thor/README.markdown +76 -0
- data/lib/thor/Rakefile +6 -0
- data/lib/thor/Thorfile +45 -0
- data/lib/thor/bin/rake2thor +83 -0
- data/lib/thor/bin/thor +7 -0
- data/lib/thor/lib/thor/error.rb +3 -0
- data/lib/thor/lib/thor/options.rb +267 -0
- data/lib/thor/lib/thor/ordered_hash.rb +64 -0
- data/lib/thor/lib/thor/runner.rb +305 -0
- data/lib/thor/lib/thor/task.rb +83 -0
- data/lib/thor/lib/thor/task_hash.rb +22 -0
- data/lib/thor/lib/thor/tasks/package.rb +18 -0
- data/lib/thor/lib/thor/tasks.rb +77 -0
- data/lib/thor/lib/thor/util.rb +75 -0
- data/lib/thor/lib/thor.rb +170 -0
- data/lib/thor/script/destroy +14 -0
- data/lib/thor/script/generate +14 -0
- data/lib/thor/spec/fixtures/task.thor +10 -0
- data/lib/thor/spec/options_spec.rb +271 -0
- data/lib/thor/spec/ordered_hash_spec.rb +84 -0
- data/lib/thor/spec/spec.opts +1 -0
- data/lib/thor/spec/spec_helper.rb +30 -0
- data/lib/thor/spec/task_spec.rb +11 -0
- data/lib/thor/spec/tasks_spec.rb +28 -0
- data/lib/thor/spec/thor_runner_spec.rb +194 -0
- data/lib/thor/spec/thor_spec.rb +206 -0
- data/lib/thor/spec/util_spec.rb +99 -0
- data/lib/thor/task.thor +15 -0
- data/lib/thor/thor.gemspec +29 -0
- metadata +3 -4
- data/sproutcore.gemspec +0 -47
@@ -0,0 +1,154 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
/**
|
9
|
+
@namespace
|
10
|
+
|
11
|
+
Implements common selection management properties for controllers.
|
12
|
+
|
13
|
+
Selection can be managed by any controller in your applications. This
|
14
|
+
mixin provides some common management features you might want such as
|
15
|
+
disabling selection, or restricting empty or multiple selections.
|
16
|
+
|
17
|
+
To use this mixin, simply add it to any controller you want to manage
|
18
|
+
selection and call updateSelectionAfterContentChange()
|
19
|
+
whenever your source content changes. You can also override the properties
|
20
|
+
defined below to configure how the selection management will treat your
|
21
|
+
content.
|
22
|
+
|
23
|
+
This mixin assumes the arrangedObjects property will return an SC.Array of
|
24
|
+
content you want the selection to reflect.
|
25
|
+
|
26
|
+
Add this mixin to any controller you want to manage selection. It is
|
27
|
+
already applied to the CollectionController and ArrayController.
|
28
|
+
|
29
|
+
@author Charles Jolley
|
30
|
+
@author Erich Ocean
|
31
|
+
@version 1.0
|
32
|
+
@since 0.9
|
33
|
+
*/
|
34
|
+
SC.SelectionSupport = {
|
35
|
+
|
36
|
+
/**
|
37
|
+
Call this method whenever your source content changes to ensure the
|
38
|
+
selection always remains up-to-date and valid.
|
39
|
+
*/
|
40
|
+
updateSelectionAfterContentChange: function() {
|
41
|
+
var objects = SC.makeArray(this.get('arrangedObjects')) ;
|
42
|
+
var currentSelection = SC.makeArray(this.get('selection')) ;
|
43
|
+
var sel = [] ;
|
44
|
+
|
45
|
+
// the new selection is the current selection that exists in
|
46
|
+
// arrangedObjects or an empty selection if selection is not allowed.
|
47
|
+
var max = currentSelection.get('length') ;
|
48
|
+
if (this.get('allowsSelection')) {
|
49
|
+
for(var idx=0;idx<max;idx++) {
|
50
|
+
var obj = currentSelection.objectAt(idx) ;
|
51
|
+
if (objects.indexOf(obj) >= 0) sel.push(obj) ;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
// if the new selection is a multiple selection, get the first object
|
56
|
+
var selectionLength = sel.get('length') ;
|
57
|
+
if ((selectionLength > 1) && !this.get('allowsMultipleSelection')) {
|
58
|
+
sel = [sel.objectAt(0)] ;
|
59
|
+
}
|
60
|
+
|
61
|
+
// if the selection is empty, select the first item.
|
62
|
+
if ((selectionLength == 0) && !this.get('allowsEmptySelection')) {
|
63
|
+
if (objects.get('length') > 0) sel = [objects.objectAt(0)] ;
|
64
|
+
}
|
65
|
+
|
66
|
+
// update the selection.
|
67
|
+
this.set('selection', sel) ;
|
68
|
+
},
|
69
|
+
|
70
|
+
/**
|
71
|
+
@property
|
72
|
+
@type SC.Array
|
73
|
+
|
74
|
+
Returns the set of content objects the selection should be a part of.
|
75
|
+
Selections in general may contain objects outside of this content, but
|
76
|
+
this set will be used when enforcing items such as no empty selection.
|
77
|
+
|
78
|
+
The default version of this property returns the receiver.
|
79
|
+
*/
|
80
|
+
arrangedObjects: function() { return this; }.property(),
|
81
|
+
|
82
|
+
/**
|
83
|
+
@property
|
84
|
+
@type SC.Set
|
85
|
+
|
86
|
+
This is the current selection. You can make this selection and another
|
87
|
+
controller's selection work in concert by binding them together. You
|
88
|
+
generally have a master selection that relays changes TO all the others.
|
89
|
+
*/
|
90
|
+
selection: function(key, value) {
|
91
|
+
if (value !== undefined) {
|
92
|
+
// are we even allowing selection at all? If not, return early...
|
93
|
+
if (!this.get('allowsSelection')) return this._selection ;
|
94
|
+
|
95
|
+
value = SC.makeArray(value) ; // always force to an array
|
96
|
+
|
97
|
+
// ok, new decide if the *type* of seleciton is allowed...
|
98
|
+
switch (value.get('length')) {
|
99
|
+
case 0:
|
100
|
+
// check to see if we're attemting to set an empty array
|
101
|
+
// if that's not allowed, set to the first available item in
|
102
|
+
// arrangedObjects
|
103
|
+
if (!this.get('allowsEmptySelection')) {
|
104
|
+
var objects = this.get('arrangedObjects') ;
|
105
|
+
if (objects.get('length') > 0) value = [objects.objectAt(0)];
|
106
|
+
}
|
107
|
+
this._selection = value ;
|
108
|
+
break;
|
109
|
+
case 1:
|
110
|
+
this._selection = value;
|
111
|
+
break;
|
112
|
+
default:
|
113
|
+
// fall through for >= 2, only allow if configured for multi-select
|
114
|
+
this._selection = this.get('allowsMultipleSelection') ?
|
115
|
+
value :
|
116
|
+
this._selection ;
|
117
|
+
break;
|
118
|
+
}
|
119
|
+
}
|
120
|
+
else return this._selection ;
|
121
|
+
}.property(),
|
122
|
+
|
123
|
+
/**
|
124
|
+
If YES, selection is allowed. Default is YES.
|
125
|
+
|
126
|
+
@type Boolean
|
127
|
+
*/
|
128
|
+
allowsSelection: YES,
|
129
|
+
|
130
|
+
/**
|
131
|
+
If YES, multiple selection is allowed. Default is YES.
|
132
|
+
|
133
|
+
@type Boolean
|
134
|
+
*/
|
135
|
+
allowsMultipleSelection: YES,
|
136
|
+
|
137
|
+
/**
|
138
|
+
If YES, allow empty selection Default is YES.
|
139
|
+
|
140
|
+
@type Boolean
|
141
|
+
*/
|
142
|
+
allowsEmptySelection: YES,
|
143
|
+
|
144
|
+
/**
|
145
|
+
YES if the receiver currently has a non-zero selection.
|
146
|
+
|
147
|
+
@property Boolean
|
148
|
+
*/
|
149
|
+
hasSelection: function() {
|
150
|
+
var sel = this.get('selection') ;
|
151
|
+
return !!sel && (sel.get('length') > 0) ;
|
152
|
+
}.property('selection')
|
153
|
+
|
154
|
+
};
|
@@ -0,0 +1,101 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
/**
|
9
|
+
@namespace
|
10
|
+
|
11
|
+
Normally, SproutCore views use absolute positioning to display themselves
|
12
|
+
on the screen. While this is both the fastest and most efficient way to
|
13
|
+
display content in the web browser, sometimes your user interface might need
|
14
|
+
to take advantage of the more advanced "flow" layout offered by the browser
|
15
|
+
when you use static and relative positioning.
|
16
|
+
|
17
|
+
This mixin can be added to a view class to enable the use of any kind of
|
18
|
+
static and relative browser positionining. In exchange for using static
|
19
|
+
layout, you will lose a few features that are normally available on a view
|
20
|
+
class such as the 'frame' and 'clippingFrame' properties as well as
|
21
|
+
notifications when your view or parentView are resized.
|
22
|
+
|
23
|
+
Normally, if you are allowing the browser to manage the size and positioning
|
24
|
+
of your view, these feature will not be useful to your code anyway.
|
25
|
+
|
26
|
+
h2. Using StaticLayout
|
27
|
+
|
28
|
+
To enable static layout on your view, just include this mixin on the view.
|
29
|
+
SproutCore's builtin views that are capable of being used in static
|
30
|
+
layouts already incorporate this mixin.
|
31
|
+
|
32
|
+
You can then use CSS or the render() method on your view to setup the
|
33
|
+
positioning on your view using any browser layout mechanism you want.
|
34
|
+
|
35
|
+
@since SproutCore 1.0
|
36
|
+
*/
|
37
|
+
SC.StaticLayout = {
|
38
|
+
|
39
|
+
/**
|
40
|
+
Walk like a duck
|
41
|
+
*/
|
42
|
+
hasStaticLayout: YES,
|
43
|
+
|
44
|
+
/**
|
45
|
+
Activates use of brower's static layout. You can apply this mixin and
|
46
|
+
still use absolute positioning. To activate static positioning, set this
|
47
|
+
property to YES.
|
48
|
+
*/
|
49
|
+
useStaticLayout: NO,
|
50
|
+
|
51
|
+
/** @private - add sc-static-layout class if needed. */
|
52
|
+
renderMixin: function(context, firstTime) {
|
53
|
+
context.setClass('sc-static-layout', this.get('useStaticLayout'));
|
54
|
+
},
|
55
|
+
|
56
|
+
/**
|
57
|
+
Not available on views with static layout. Calling this method will raise
|
58
|
+
an exception.
|
59
|
+
*/
|
60
|
+
convertFrameToView: null,
|
61
|
+
|
62
|
+
/**
|
63
|
+
Not available on views with static layout. Calling this method will raise
|
64
|
+
an exception.
|
65
|
+
*/
|
66
|
+
convertFrameFromView: null,
|
67
|
+
|
68
|
+
/**
|
69
|
+
Frame is not available on views with static layout. This property will
|
70
|
+
always return null.
|
71
|
+
*/
|
72
|
+
frame: null,
|
73
|
+
|
74
|
+
|
75
|
+
/**
|
76
|
+
clippingFrame is not available on views with static layout. This
|
77
|
+
property will always return null.
|
78
|
+
*/
|
79
|
+
clippingFrame: null,
|
80
|
+
|
81
|
+
/**
|
82
|
+
This method is not supported on static layout views.
|
83
|
+
*/
|
84
|
+
parentViewDidResize: null,
|
85
|
+
|
86
|
+
/**
|
87
|
+
This method is not supported on static layout views.
|
88
|
+
*/
|
89
|
+
beginLiveResize: null,
|
90
|
+
|
91
|
+
/**
|
92
|
+
This method is not supported on static layout views.
|
93
|
+
*/
|
94
|
+
endLiveResize: null,
|
95
|
+
|
96
|
+
/**
|
97
|
+
This method is not supported on static layout views.
|
98
|
+
*/
|
99
|
+
viewDidResize: null
|
100
|
+
|
101
|
+
};
|
@@ -0,0 +1,237 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
// These are basic enhancements to the string class used throughout
|
9
|
+
// SproutCore.
|
10
|
+
SC.STRING_TITLEIZE_REGEXP = (/([\s|\-|\_|\n])([^\s|\-|\_|\n]?)/g);
|
11
|
+
|
12
|
+
/**
|
13
|
+
@namespace
|
14
|
+
|
15
|
+
SproutCore implements a variety of enhancements to the built-in String
|
16
|
+
object that make it easy to perform common substitutions and conversions.
|
17
|
+
|
18
|
+
Most of the utility methods defined here mirror those found in Prototype
|
19
|
+
1.6.
|
20
|
+
|
21
|
+
@since SproutCore 1.0
|
22
|
+
*/
|
23
|
+
SC.String = {
|
24
|
+
|
25
|
+
/**
|
26
|
+
Localizes the string. This will look up the reciever string as a key
|
27
|
+
in the current Strings hash. If the key matches, the loc'd value will be
|
28
|
+
used. The resulting string will also be passed through fmt() to insert
|
29
|
+
any variables.
|
30
|
+
|
31
|
+
@param args {Object...} optional arguments to interpolate also
|
32
|
+
@returns {String} the localized and formatted string.
|
33
|
+
*/
|
34
|
+
loc: function() {
|
35
|
+
// NB: This could be implemented as a wrapper to locWithDefault() but
|
36
|
+
// it would add some overhead to deal with the arguments and adds stack
|
37
|
+
// frames, so we are keeping the implementation separate.
|
38
|
+
if(!SC.Locale.currentLocale) SC.Locale.createCurrentLocale();
|
39
|
+
var str = SC.Locale.currentLocale.locWithDefault(this) || this;
|
40
|
+
return str.fmt.apply(str,arguments) ;
|
41
|
+
},
|
42
|
+
|
43
|
+
/**
|
44
|
+
Works just like loc() except that it will return the passed default
|
45
|
+
string if a matching key is not found.
|
46
|
+
|
47
|
+
@param {String} def the default to return
|
48
|
+
@param {Object...} args optional formatting arguments
|
49
|
+
@returns {String} localized and formatted string
|
50
|
+
*/
|
51
|
+
locWithDefault: function(def) {
|
52
|
+
if(!SC.Locale.currentLocale) SC.Locale.createCurrentLocale();
|
53
|
+
var str = SC.Locale.currentLocale.locWithDefault(def) || this;
|
54
|
+
var args = SC.$A(arguments); args.shift(); // remove def param
|
55
|
+
return str.fmt.apply(str,args) ;
|
56
|
+
},
|
57
|
+
|
58
|
+
/**
|
59
|
+
Capitalizes a string.
|
60
|
+
|
61
|
+
h2. Examples
|
62
|
+
|
63
|
+
| *Input String* | *Output String* |
|
64
|
+
| my favorite items | My favorite items |
|
65
|
+
| css-class-name | Css-class-name |
|
66
|
+
| action_name | Action_name |
|
67
|
+
| innerHTML | InnerHTML |
|
68
|
+
|
69
|
+
@return {String} capitalized string
|
70
|
+
*/
|
71
|
+
capitalize: function() {
|
72
|
+
return this.charAt(0).toUpperCase() + this.slice(1) ;
|
73
|
+
},
|
74
|
+
|
75
|
+
/**
|
76
|
+
Capitalizes every word in a string. Unlike titleize, spaces or dashes
|
77
|
+
will remain in-tact.
|
78
|
+
|
79
|
+
h2. Examples
|
80
|
+
|
81
|
+
| *Input String* | *Output String* |
|
82
|
+
| my favorite items | My Favorite Items |
|
83
|
+
| css-class-name | Css-Class-Name |
|
84
|
+
| action_name | Action_Name |
|
85
|
+
| innerHTML | InnerHTML |
|
86
|
+
|
87
|
+
@returns {String} capitalized string
|
88
|
+
*/
|
89
|
+
capitalizeEach: function() {
|
90
|
+
return this.replace(SC.STRING_TITLEIZE_REGEXP,
|
91
|
+
function(str,sep,character) {
|
92
|
+
return (character) ? (sep + character.toUpperCase()) : sep;
|
93
|
+
}).capitalize() ;
|
94
|
+
},
|
95
|
+
|
96
|
+
/**
|
97
|
+
Converts a string to a title. This will decamelize the string, convert
|
98
|
+
separators to spaces and capitalize every word.
|
99
|
+
|
100
|
+
h2. Examples
|
101
|
+
|
102
|
+
| *Input String* | *Output String* |
|
103
|
+
| my favorite items | My Favorite Items |
|
104
|
+
| css-class-name | Css Class Name |
|
105
|
+
| action_name | Action Name |
|
106
|
+
| innerHTML | Inner HTML |
|
107
|
+
|
108
|
+
@return {String} titleized string.
|
109
|
+
*/
|
110
|
+
titleize: function() {
|
111
|
+
var ret = this.replace(/([a-z])([A-Z])/g,'$1_$2'); // decamelize
|
112
|
+
return ret.replace(SC.STRING_TITLEIZE_REGEXP,
|
113
|
+
function(str,separater,character) {
|
114
|
+
return (character) ? (' ' + character.toUpperCase()) : ' ';
|
115
|
+
}).capitalize() ;
|
116
|
+
},
|
117
|
+
|
118
|
+
/**
|
119
|
+
Camelizes a string. This will take any words separated by spaces, dashes
|
120
|
+
or underscores and convert them into camelCase.
|
121
|
+
|
122
|
+
h2. Examples
|
123
|
+
|
124
|
+
| *Input String* | *Output String* |
|
125
|
+
| my favorite items | myFavoriteItems |
|
126
|
+
| css-class-name | cssClassName |
|
127
|
+
| action_name | actionName |
|
128
|
+
| innerHTML | innerHTML |
|
129
|
+
|
130
|
+
@returns {String} camelized string
|
131
|
+
*/
|
132
|
+
camelize: function() {
|
133
|
+
var ret = this.replace(SC.STRING_TITLEIZE_REGEXP,
|
134
|
+
function(str,separater,character) {
|
135
|
+
return (character) ? character.toUpperCase() : '' ;
|
136
|
+
}) ;
|
137
|
+
var first = ret.charAt(0), lower = first.toLowerCase() ;
|
138
|
+
return (first !== lower) ? (lower + ret.slice(1)) : ret ;
|
139
|
+
},
|
140
|
+
|
141
|
+
/**
|
142
|
+
Converts the string into a class name. This method will camelize your
|
143
|
+
string and then capitalize the first letter.
|
144
|
+
|
145
|
+
h2. Examples
|
146
|
+
|
147
|
+
| *Input String* | *Output String* |
|
148
|
+
| my favorite items | MyFavoriteItems |
|
149
|
+
| css-class-name | CssClassName |
|
150
|
+
| action_name | ActionName |
|
151
|
+
| innerHTML | InnerHtml |
|
152
|
+
|
153
|
+
@returns {String}
|
154
|
+
*/
|
155
|
+
classify: function() {
|
156
|
+
var ret = this.replace(SC.STRING_TITLEIZE_REGEXP,
|
157
|
+
function(str,separater,character) {
|
158
|
+
return (character) ? character.toUpperCase() : '' ;
|
159
|
+
}) ;
|
160
|
+
var first = ret.charAt(0), upper = first.toUpperCase() ;
|
161
|
+
return (first !== upper) ? (upper + ret.slice(1)) : ret ;
|
162
|
+
},
|
163
|
+
|
164
|
+
/**
|
165
|
+
Converts a camelized string into all lower case separated by underscores.
|
166
|
+
|
167
|
+
h2. Examples
|
168
|
+
|
169
|
+
| *Input String* | *Output String* |
|
170
|
+
| my favorite items | my favorite items |
|
171
|
+
| css-class-name | css-class-name |
|
172
|
+
| action_name | action_name |
|
173
|
+
| innerHTML | inner_html |
|
174
|
+
|
175
|
+
@returns {String} the decamelized string.
|
176
|
+
*/
|
177
|
+
decamelize: function() {
|
178
|
+
return this.replace(/([a-z])([A-Z])/g,'$1_$2').toLowerCase();
|
179
|
+
},
|
180
|
+
|
181
|
+
/**
|
182
|
+
Converts a camelized string or a string with spaces or underscores into
|
183
|
+
a string with components separated by dashes.
|
184
|
+
|
185
|
+
h2. Examples
|
186
|
+
|
187
|
+
| *Input String* | *Output String* |
|
188
|
+
| my favorite items | my-favorite-items |
|
189
|
+
| css-class-name | css-class-name |
|
190
|
+
| action_name | action-name |
|
191
|
+
| innerHTML | inner-html |
|
192
|
+
|
193
|
+
@returns {String} the dasherized string.
|
194
|
+
*/
|
195
|
+
dasherize: function() {
|
196
|
+
return this.decamelize().replace(/[ _]/g,'-') ;
|
197
|
+
},
|
198
|
+
|
199
|
+
/**
|
200
|
+
Converts a camelized string or a string with dashes or underscores into
|
201
|
+
a string with components separated by spaces.
|
202
|
+
|
203
|
+
h2. Examples
|
204
|
+
|
205
|
+
| *Input String* | *Output String* |
|
206
|
+
| my favorite items | my favorite items |
|
207
|
+
| css-class-name | css class name |
|
208
|
+
| action_name | action name |
|
209
|
+
| innerHTML | inner html |
|
210
|
+
|
211
|
+
@returns {String} the humanized string.
|
212
|
+
*/
|
213
|
+
humanize: function() {
|
214
|
+
return this.decamelize().replace(/[\-_]/g,' ') ;
|
215
|
+
},
|
216
|
+
|
217
|
+
/**
|
218
|
+
Removes any extra whitespace from the edges of the strings. This method is
|
219
|
+
also aliased as strip().
|
220
|
+
|
221
|
+
@returns {String} the trimmed string
|
222
|
+
*/
|
223
|
+
trim: function () {
|
224
|
+
return this.replace(/^\s+|\s+$/g,"");
|
225
|
+
},
|
226
|
+
|
227
|
+
/** Splits the string into words, separated by spaces. */
|
228
|
+
w: function() { return this.split(' '); }
|
229
|
+
|
230
|
+
} ;
|
231
|
+
|
232
|
+
SC.String.strip = SC.String.trim; // convenience alias.
|
233
|
+
|
234
|
+
// Apply SC.String mixin to built-in String object
|
235
|
+
SC.mixin(String.prototype, SC.String) ;
|
236
|
+
SC.String.fmt = String.prototype.fmt; // copy from runtime
|
237
|
+
|
@@ -0,0 +1,176 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
/**
|
9
|
+
@namespace
|
10
|
+
|
11
|
+
Views that include the Validatable mixin can be used with validators to
|
12
|
+
ensure their values are valid.
|
13
|
+
|
14
|
+
*/
|
15
|
+
SC.Validatable = {
|
16
|
+
|
17
|
+
initMixin: function() {
|
18
|
+
this._validatable_validatorDidChange() ;
|
19
|
+
},
|
20
|
+
|
21
|
+
/**
|
22
|
+
The validator for this field.
|
23
|
+
|
24
|
+
Set to a validator class or instance. If this points to a class, it will
|
25
|
+
be instantiated when the validator is first used.
|
26
|
+
*/
|
27
|
+
validator: null,
|
28
|
+
|
29
|
+
/**
|
30
|
+
This property must return the human readable name you want used when
|
31
|
+
describing an error condition. For example, if set this property to
|
32
|
+
"Your Email", then the returned error string might be something like
|
33
|
+
"Your Email is not valid".
|
34
|
+
|
35
|
+
You can return a loc string here if you like. It will be localized when
|
36
|
+
it is placed into the error string.
|
37
|
+
*/
|
38
|
+
errorLabel: null,
|
39
|
+
|
40
|
+
/**
|
41
|
+
YES if the receiver is currently valid.
|
42
|
+
|
43
|
+
This property watches the value property by default. You can override
|
44
|
+
this property if you want to use some other method to calculate the
|
45
|
+
current valid state.
|
46
|
+
|
47
|
+
@field
|
48
|
+
*/
|
49
|
+
isValid: function() {
|
50
|
+
return SC.typeOf(this.get('value')) !== SC.T_ERROR;
|
51
|
+
}.property('value'),
|
52
|
+
|
53
|
+
/**
|
54
|
+
The form that the view belongs to. May be null if the view does not
|
55
|
+
belong to a form. This property is usually set automatically by an
|
56
|
+
owner form view.
|
57
|
+
*/
|
58
|
+
ownerForm: null,
|
59
|
+
|
60
|
+
/**
|
61
|
+
Attempts to validate the receiver.
|
62
|
+
|
63
|
+
Runs the validator and returns SC.VALIDATE_OK, SC.VALIDATE_NO_CHANGE,
|
64
|
+
or an error object. If no validator is installed, this method will
|
65
|
+
always return SC.VALIDATE_OK.
|
66
|
+
|
67
|
+
@param {Boolean} partialChange YES if this is a partial edit.
|
68
|
+
@returns SC.VALIDATE_OK, error, or SC.VALIDATE_NO_CHANGE
|
69
|
+
*/
|
70
|
+
performValidate: function(partialChange) {
|
71
|
+
var ret = SC.VALIDATE_OK ;
|
72
|
+
|
73
|
+
if (this._validator) {
|
74
|
+
var form = this.get('ownerForm') ;
|
75
|
+
if (partialChange) {
|
76
|
+
ret = this._validator.validatePartial(form,this) ;
|
77
|
+
|
78
|
+
// if the partial returned NO_CHANGE, then check to see if the
|
79
|
+
// field is valid anyway. If it is not valid, then don't update the
|
80
|
+
// value. This way the user can have partially constructed values
|
81
|
+
// without the validator trying to convert it to an object.
|
82
|
+
if ((ret == SC.VALIDATE_NO_CHANGE) && (this._validator.validateChange(form, this) == SC.VALIDATE_OK)) {
|
83
|
+
ret = SC.VALIDATE_OK;
|
84
|
+
}
|
85
|
+
} else ret = this._validator.validateChange(form, this) ;
|
86
|
+
}
|
87
|
+
return ret ;
|
88
|
+
},
|
89
|
+
|
90
|
+
/**
|
91
|
+
Runs validateSubmit. You should use this in your implementation of
|
92
|
+
validateSubmit. If no validator is installed, this always returns
|
93
|
+
SC.VALIDATE_OK
|
94
|
+
*/
|
95
|
+
performValidateSubmit: function() {
|
96
|
+
return this._validator ? this._validator.validateSubmit(this.get('ownerForm'), this) : SC.VALIDATE_OK;
|
97
|
+
},
|
98
|
+
|
99
|
+
/**
|
100
|
+
Runs a keypress validation. Returns YES if the keypress should be
|
101
|
+
allowed, NO otherwise. If no validator is defined, always returns YES.
|
102
|
+
|
103
|
+
@param {String} charStr the key string
|
104
|
+
@returns {Boolean}
|
105
|
+
*/
|
106
|
+
performValidateKeyDown: function(evt) {
|
107
|
+
// ignore anything with ctrl or meta key press
|
108
|
+
var charStr = evt.getCharString();
|
109
|
+
if (!charStr) return YES ;
|
110
|
+
return this._validator ? this._validator.validateKeyDown(this.get('ownerForm'), this, charStr) : YES;
|
111
|
+
},
|
112
|
+
|
113
|
+
/**
|
114
|
+
Returns the validator object, if one has been created.
|
115
|
+
|
116
|
+
@property {SC.Validator} the object
|
117
|
+
*/
|
118
|
+
validatorObject: function() {
|
119
|
+
return this._validator;
|
120
|
+
}.property(),
|
121
|
+
|
122
|
+
/**
|
123
|
+
Invoked by the owner form just before submission. Override with your
|
124
|
+
own method to commit any final changes after you perform validation.
|
125
|
+
|
126
|
+
The default implementation simply calls performValidateSubmit() and
|
127
|
+
returns that value.
|
128
|
+
*/
|
129
|
+
validateSubmit: function() { return this.performValidateSubmit(); },
|
130
|
+
|
131
|
+
/**
|
132
|
+
Convert the field value string into an object.
|
133
|
+
|
134
|
+
This method will call the validators objectForFieldValue if it exists.
|
135
|
+
|
136
|
+
@param fieldValue the raw value from the field.
|
137
|
+
@returns converted object
|
138
|
+
*/
|
139
|
+
objectForFieldValue: function(fieldValue, partialChange) {
|
140
|
+
return this._validator ? this._validator.objectForFieldValue(fieldValue, this.get('ownerForm'), this) : fieldValue ;
|
141
|
+
},
|
142
|
+
|
143
|
+
/**
|
144
|
+
Convert the object into a field value.
|
145
|
+
|
146
|
+
This method will call the validator's fieldValueForObject if it exists.
|
147
|
+
|
148
|
+
@param object the objec to convert
|
149
|
+
@returns converted field value
|
150
|
+
*/
|
151
|
+
fieldValueForObject: function(object) {
|
152
|
+
return this._validator ? this._validator.fieldValueForObject(object, this.get('ownerForm'), this) : object ;
|
153
|
+
},
|
154
|
+
|
155
|
+
_validatable_displayObserver: function() {
|
156
|
+
this.displayDidChange();
|
157
|
+
}.observes('isValid'),
|
158
|
+
|
159
|
+
updateLayerMixin: function(context) {
|
160
|
+
context.setClass('invalid', !this.get('isValid'));
|
161
|
+
},
|
162
|
+
|
163
|
+
// invoked whenever the attached validator changes.
|
164
|
+
_validatable_validatorDidChange: function() {
|
165
|
+
var form = this.get('ownerForm') ;
|
166
|
+
var val = SC.Validator.findFor(form, this, this.get('validator')) ;
|
167
|
+
if (val != this._validator) {
|
168
|
+
this.propertyWillChange('validatorObject');
|
169
|
+
if (this._validator) this._validator.detachFrom(form, this) ;
|
170
|
+
this._validator = val;
|
171
|
+
if (this._validator) this._validator.attachTo(form, this) ;
|
172
|
+
this.propertyDidChange('validatorObject');
|
173
|
+
}
|
174
|
+
}.observes('validator', 'ownerForm')
|
175
|
+
|
176
|
+
};
|