sproutcore 1.5.0.pre.3 → 1.5.0.pre.4
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/.rspec +1 -0
- data/CHANGELOG +42 -0
- data/README.txt +25 -0
- data/VERSION.yml +1 -1
- data/bin/sc-build +1 -1
- data/bin/sc-build-number +1 -1
- data/bin/sc-docs +1 -1
- data/bin/sc-gen +1 -1
- data/bin/sc-init +1 -1
- data/bin/sc-manifest +1 -1
- data/bin/sc-server +1 -1
- data/bin/sproutcore +1 -1
- data/lib/buildtasks/build.rake +5 -0
- data/lib/buildtasks/manifest.rake +20 -1
- data/lib/frameworks/sproutcore/Buildfile +12 -9
- data/lib/frameworks/sproutcore/CHANGELOG.md +48 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/README +2 -9
- data/lib/frameworks/sproutcore/apps/greenhouse/TODO +11 -27
- data/lib/frameworks/sproutcore/apps/greenhouse/controllers/library.js +3 -10
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/main-page.css +4 -31
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/dialogs.js +5 -4
- data/lib/frameworks/sproutcore/apps/greenhouse/models/dir.js +3 -3
- data/lib/frameworks/sproutcore/apps/greenhouse/models/file.js +2 -2
- data/lib/frameworks/sproutcore/apps/greenhouse/states/main.js +31 -14
- data/lib/frameworks/sproutcore/apps/greenhouse/states/modals.js +2 -1
- data/lib/frameworks/sproutcore/apps/greenhouse/states/ready.js +27 -1
- data/lib/frameworks/sproutcore/apps/greenhouse/tests/views/list_item.js +1 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/tests/views/plist_item.js +20 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/theme.js +25 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/views/plist_item.js +161 -24
- data/lib/frameworks/sproutcore/apps/greenhouse/views/tear_off_picker.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +37 -25
- data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +135 -26
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/array.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/controller.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/object.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/ext/object.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/ext/run_loop.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/delegate_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/responder_context.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/selection_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/string.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +68 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +108 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/panes/main.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/manipulation.js +27 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/panes/pane.js +215 -505
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +24 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +11 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/protocols/observable_protocol.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/protocols/sparse_array_delegate.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/resources/core.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/resources/view.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/application.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/browser.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/builder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/core_query.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/cursor.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +210 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/event.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/json.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/locale.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/page.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/platform.js +31 -5
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/ready.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/render_context.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/responder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/root_responder.js +83 -110
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/selection_set.js +7 -4
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/sparse_array.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/theme.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/timer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/utils/rect.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +151 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/array_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/enum_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/null_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/selection_support.js +26 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/single_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/empty_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/multiple_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/single_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/single_enumerable_case.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/mixins/responder_context.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/mixins/string.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/panes/template.js +14 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/builder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/core_query/within.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/json.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/locale.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/begin.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/element.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/end.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/get.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_attr.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_basic.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_className.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_style.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/init.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/join.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/push_text.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/tag.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/update.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeKeyPane.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeMainPane.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeMenuPane.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/root_responder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/targetForAction.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/add.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/copy.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/indexSetForSource.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/isEqual.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/remove.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/sparse_array.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/theme.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/invalidate.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/invokeLater.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/isPaused.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/performAction.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/schedule.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/utils/normalizeURL.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +268 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/utils/rect.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/main_pane.js +43 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/append_remove.js +107 -18
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/firstResponder.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/keyPane.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/layout.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/sendEvent.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/checkbox_support.js +32 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/text_field_support.js +73 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/collection.js +65 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/core.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/handlebars.js +295 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/animation.js +19 -18
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/build.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/build_children.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/clippingFrame.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/convertFrames.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/convertLayouts.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/createChildViews.js +18 -15
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/createLayer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/destroyLayer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/didAppendToDocument.js +11 -8
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/findLayerInParentLayer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/init.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/insertBefore.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/isVisible.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/isVisibleInWindow.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +22 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/layer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/layoutChildViews.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +180 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +640 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/parentViewDidChange.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/prepareContext.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/removeChild.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render.js +125 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/render_delegate_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/replaceChild.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/static_layout.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/theme.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/updateLayer.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/updateLayerLocation.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/view.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/viewDidResize.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/checkbox_support.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +99 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/text_field_support.js +35 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template.js +77 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +187 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/base.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +57 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +223 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +1150 -0
- data/lib/frameworks/sproutcore/frameworks/{amber/views → core_foundation/views/view}/layout_style.js +93 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +489 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +362 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/touch.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/visibility.js +113 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +1280 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +27 -53
- data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +13 -19
- data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +183 -71
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +1 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +26 -46
- data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +25 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +139 -21
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +6 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/cyclical_relationship.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/{parentless.js → data_store.js} +62 -16
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +51 -17
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +36 -10
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +8 -8
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/{foundation/english.lproj → datetime/resources}/strings.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/{foundation → datetime}/system/datetime.js +5 -37
- data/lib/frameworks/sproutcore/frameworks/{foundation → datetime}/tests/system/datetime.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/debug/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/designer/controllers/designs.js +1 -2
- data/lib/frameworks/sproutcore/frameworks/designer/designers/object_designer.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/designer/designers/view_designer.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/designer/views/designer_drop_target.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +71 -70
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +10 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -19
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +33 -14
- data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +25 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +25 -103
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +102 -92
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +22 -25
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +38 -25
- data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +42 -22
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +513 -230
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/README.md +23 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/README.md +11 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +215 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/platform.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +34 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/polymorphic_single_attribute.js +183 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +23 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphic/single.js +124 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +151 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +27 -17
- data/lib/frameworks/sproutcore/frameworks/foundation/system/image_queue.js +6 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/system/logger.js +163 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +6 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/logger.js +44 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +200 -167
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +52 -137
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +7 -11
- data/lib/frameworks/sproutcore/frameworks/handlebars/extensions.js +138 -0
- data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +1338 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +32 -26
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +162 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +10 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +123 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +12 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +50 -13
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +163 -333
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +58 -8
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +9 -6
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +15 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +31 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +18 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +31 -143
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/concatenated_properties.js +71 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +177 -0
- data/lib/frameworks/sproutcore/frameworks/table/views/table.js +5 -4
- data/lib/frameworks/sproutcore/frameworks/table/views/table_header.js +5 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/button/button.js +8 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +2 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +2 -2
- data/lib/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +62 -62
- data/lib/gen/html_app/Buildfile +36 -0
- data/lib/gen/html_app/README +1 -0
- data/lib/gen/html_app/USAGE +15 -0
- data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +14 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +1 -0
- data/lib/gen/html_project/Buildfile +45 -0
- data/lib/gen/html_project/INIT +3 -0
- data/lib/gen/html_project/README +1 -0
- data/lib/gen/html_project/USAGE +2 -0
- data/lib/gen/html_project/templates/@filename@/Buildfile +8 -0
- data/lib/gen/html_project/templates/@filename@/README +7 -0
- data/lib/sproutcore/builders/handlebars.rb +30 -0
- data/lib/sproutcore/builders.rb +1 -1
- data/lib/sproutcore/helpers/static_helper.rb +3 -3
- data/lib/sproutcore/tools/init.rb +25 -9
- data/spec/buildtasks/manifest/prepare_build_tasks/handlebars_spec.rb +39 -0
- data/spec/fixtures/builder_tests/apps/handlebars_test/template.handlebars +5 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/templates/demo.handlebars +4 -0
- data/spec/lib/builders/handlebars_spec.rb +29 -0
- data/vendor/chance/lib/chance/imagers/data_url.rb +20 -7
- data/vendor/chance/lib/chance/instance.rb +4 -1
- data/vendor/chance/lib/chance/parser.rb +31 -31
- data/vendor/chance/lib/chance/slicing.rb +38 -8
- metadata +195 -225
- data/lib/frameworks/sproutcore/frameworks/amber/system/device.js +0 -143
- data/lib/frameworks/sproutcore/frameworks/amber/system/utils.js +0 -174
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/main_pane.js +0 -31
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/pane/sendTouchEvent.js +0 -267
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/layoutDidChange.js +0 -149
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/layoutStyle.js +0 -602
- data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/render.js +0 -115
- data/lib/frameworks/sproutcore/frameworks/amber/views/base.js +0 -1
- data/lib/frameworks/sproutcore/frameworks/amber/views/view.js +0 -4003
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +0 -105
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
html_app - Create a new HTML-based SproutCore application target.
|
|
2
|
+
|
|
3
|
+
USAGE:
|
|
4
|
+
|
|
5
|
+
sc-gen html_app AppName [--filename=FILENAME] [--target=TARGET_NAME]
|
|
6
|
+
|
|
7
|
+
DISCUSSION:
|
|
8
|
+
|
|
9
|
+
This generator will create a new SproutCore application for a particular project. You should pass as the first parameter your AppName you want to create. For example:
|
|
10
|
+
|
|
11
|
+
sc-gen app Todos
|
|
12
|
+
|
|
13
|
+
defines a new application called Todos in the file apps/todos/.
|
|
14
|
+
|
|
15
|
+
Your application will be setup for using Handlebars to describe the view layer.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// ==========================================================================
|
|
2
|
+
// Project: <%= namespace %>
|
|
3
|
+
// Copyright: ©<%= Time.now.year %> My Company, Inc.
|
|
4
|
+
// ==========================================================================
|
|
5
|
+
/*globals <%= namespace %> */
|
|
6
|
+
|
|
7
|
+
<%= namespace %> = SC.Application.create();
|
|
8
|
+
|
|
9
|
+
jQuery(document).ready(function() {
|
|
10
|
+
<%= namespace %>.mainPane = SC.TemplatePane.append({
|
|
11
|
+
layerId: '<%= target_name %>',
|
|
12
|
+
templateName: '<%= target_name %>'
|
|
13
|
+
});
|
|
14
|
+
});
|
|
File without changes
|
|
File without changes
|
data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<h1>Welcome to SproutCore!</h1>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# ==========================================================================
|
|
2
|
+
# Generator: PROJECT
|
|
3
|
+
# Copyright: ©2006-2011 Strobe Inc. and contributors
|
|
4
|
+
# portions copyright ©2009 Apple Inc.
|
|
5
|
+
# ==========================================================================
|
|
6
|
+
|
|
7
|
+
namespace :generator do
|
|
8
|
+
|
|
9
|
+
# Accept the following types of arguments:
|
|
10
|
+
#
|
|
11
|
+
# project . #=> Make current working directory. like sc-init
|
|
12
|
+
# project project_name #=> Create project_name, namespace: ProjectName
|
|
13
|
+
# project ProjectName #=> Create project_name, namespace: ProjectName
|
|
14
|
+
# project NameSpace path/to/project #=> Create path/to/project, NameSpace
|
|
15
|
+
#
|
|
16
|
+
task :prepare do
|
|
17
|
+
# get arguments & normalize
|
|
18
|
+
gen = GENERATOR
|
|
19
|
+
namespace = gen.arguments[1]
|
|
20
|
+
project_path = gen.arguments[2]
|
|
21
|
+
|
|
22
|
+
if project_path
|
|
23
|
+
project_path = File.expand_path(project_path)
|
|
24
|
+
namespace = File.basename(project_path) if namespace == '.'
|
|
25
|
+
elsif namespace == '.'
|
|
26
|
+
project_path = Dir.pwd
|
|
27
|
+
namespace = File.basename(project_path)
|
|
28
|
+
else
|
|
29
|
+
project_path = Dir.pwd / gen.snake_case(namespace)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Setup standard options for generating a project
|
|
33
|
+
gen.target_name = gen.target = gen.method_name = gen.class_name = nil
|
|
34
|
+
gen.build_root = File.dirname(project_path) # dir where project dir lives
|
|
35
|
+
gen.filename = File.basename(project_path) # project dir name
|
|
36
|
+
gen.namespace = gen.camel_case namespace
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# default behavior for a template is to just copy the contents of the
|
|
42
|
+
# templates directory to the end destination. Add any additional configs here.
|
|
43
|
+
config :templates,
|
|
44
|
+
:root_dir => '_file_path_'
|
|
45
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Your project is now ready to use!
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# ===========================================================================
|
|
2
|
+
# Project: <%= namespace %>
|
|
3
|
+
# Copyright: ©<%= Time.now.year %> My Company, Inc.
|
|
4
|
+
# ===========================================================================
|
|
5
|
+
|
|
6
|
+
# Add initial buildfile information here
|
|
7
|
+
config :all, :required => "sproutcore/core_foundation", :theme => "sproutcore/empty_theme"
|
|
8
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
=============================================================================
|
|
2
|
+
Project: <%= namespace %>
|
|
3
|
+
Copyright: ©<%= Time.now.year %> My Company, Inc.
|
|
4
|
+
=============================================================================
|
|
5
|
+
|
|
6
|
+
TODO: Describe Your Project
|
|
7
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# ===========================================================================
|
|
2
|
+
# Project: Abbot - SproutCore Build Tools
|
|
3
|
+
# Copyright: ©2011 Strobe Inc.
|
|
4
|
+
# and contributors
|
|
5
|
+
# ===========================================================================
|
|
6
|
+
|
|
7
|
+
require "sproutcore/builders/base"
|
|
8
|
+
require "fileutils"
|
|
9
|
+
require "json"
|
|
10
|
+
|
|
11
|
+
module SC
|
|
12
|
+
|
|
13
|
+
class Builder::Handlebars < Builder::Base
|
|
14
|
+
|
|
15
|
+
def readlines(src_path)
|
|
16
|
+
if File.exist?(src_path) && !File.directory?(src_path)
|
|
17
|
+
File.read(src_path)
|
|
18
|
+
else
|
|
19
|
+
""
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def build(dst_path)
|
|
24
|
+
template_name = entry.rootname[/^.*\/([^\/]*)$/, 1]
|
|
25
|
+
writelines dst_path, "SC.TEMPLATES[#{template_name.inspect}] = SC.Handlebars.compile(#{readlines(entry[:source_path]).to_json})"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
data/lib/sproutcore/builders.rb
CHANGED
|
@@ -272,11 +272,11 @@ module SC
|
|
|
272
272
|
# theme framework, if set.
|
|
273
273
|
def theme_name(opts ={})
|
|
274
274
|
ret = opts[:default] || 'sc-theme'
|
|
275
|
-
if target.config[:
|
|
276
|
-
ret = target.config[:
|
|
275
|
+
if target.config[:css_theme]
|
|
276
|
+
ret = target.config[:css_theme]
|
|
277
277
|
elsif target.config[:theme]
|
|
278
278
|
if theme_target = target.target_for(target.config[:theme])
|
|
279
|
-
ret = theme_target.config[:
|
|
279
|
+
ret = theme_target.config[:css_theme] || ret
|
|
280
280
|
end
|
|
281
281
|
end
|
|
282
282
|
return ret
|
|
@@ -10,14 +10,22 @@ module SC
|
|
|
10
10
|
|
|
11
11
|
desc "PROJECT [APP]",
|
|
12
12
|
"Generates a SproutCore project with an initial application"
|
|
13
|
-
method_options('--dry-run' => false, :force => false)
|
|
13
|
+
method_options('--dry-run' => false, :force => false, '--template' => false)
|
|
14
14
|
def init(project_name, app_name=nil)
|
|
15
15
|
|
|
16
16
|
# Generate the project
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
if (options[:template])
|
|
18
|
+
project_gen = SC.builtin_project.generator_for 'html_project',
|
|
19
|
+
:arguments => ['project', project_name],
|
|
20
|
+
:dry_run => options['dry-run'],
|
|
21
|
+
:force => options[:force]
|
|
22
|
+
else
|
|
23
|
+
project_gen = SC.builtin_project.generator_for 'project',
|
|
24
|
+
:arguments => ['project', project_name],
|
|
25
|
+
:dry_run => options['dry-run'],
|
|
26
|
+
:force => options[:force]
|
|
27
|
+
end
|
|
28
|
+
|
|
21
29
|
project_gen.prepare!.build!
|
|
22
30
|
|
|
23
31
|
# Next, get the project root & app name
|
|
@@ -26,10 +34,18 @@ module SC
|
|
|
26
34
|
|
|
27
35
|
# And get the app generator and run it
|
|
28
36
|
project = SC::Project.load project_root, :parent => SC.builtin_project
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
|
|
38
|
+
if (options[:template])
|
|
39
|
+
generator = project.generator_for 'html_app',
|
|
40
|
+
:arguments => ['app', app_name],
|
|
41
|
+
:dry_run => options['dry-run'],
|
|
42
|
+
:force => options[:force]
|
|
43
|
+
else
|
|
44
|
+
generator = project.generator_for 'app',
|
|
45
|
+
:arguments => ['app', app_name],
|
|
46
|
+
:dry_run => options['dry-run'],
|
|
47
|
+
:force => options[:force]
|
|
48
|
+
end
|
|
33
49
|
generator.prepare!.build!
|
|
34
50
|
|
|
35
51
|
project_gen.log_file(project_gen.source_root / 'INIT')
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require "buildtasks/manifest/spec_helper"
|
|
2
|
+
|
|
3
|
+
describe "manifest:prepare_build_tasks:handlebars" do
|
|
4
|
+
|
|
5
|
+
include SC::SpecHelpers
|
|
6
|
+
include SC::ManifestSpecHelpers
|
|
7
|
+
|
|
8
|
+
before do
|
|
9
|
+
std_before
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def run_task
|
|
13
|
+
@manifest.prepare!
|
|
14
|
+
super('manifest:prepare_build_tasks:handlebars')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should run manifest:prepare_build_tasks:setup as a prereq" do
|
|
18
|
+
should_run("manifest:prepare_build_tasks:setup") { run_task }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "creates a transform entry for each handlebars entry" do
|
|
22
|
+
run_task
|
|
23
|
+
|
|
24
|
+
originals = @manifest.entries(:hidden => true).select do |entry|
|
|
25
|
+
entry.original? && entry.ext == 'handlebars'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
originals.size.should > 0
|
|
29
|
+
|
|
30
|
+
entries = @manifest.entries.select { |e| e.entry_type == :javascript }
|
|
31
|
+
entries.size.should == originals.size
|
|
32
|
+
|
|
33
|
+
entries.each do |entry|
|
|
34
|
+
entry.should be_transform
|
|
35
|
+
entry.source_entry.should_not be_nil
|
|
36
|
+
originals.should include(entry.source_entry)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require "lib/builders/spec_helper"
|
|
2
|
+
|
|
3
|
+
describe SC::Builder::Handlebars do
|
|
4
|
+
|
|
5
|
+
include SC::SpecHelpers
|
|
6
|
+
include SC::BuilderSpecHelper
|
|
7
|
+
|
|
8
|
+
before do
|
|
9
|
+
std_before :handlebars_test
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
after do
|
|
13
|
+
std_after
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def run_builder(filename)
|
|
17
|
+
super do |entry, dst_path|
|
|
18
|
+
SC::Builder::Handlebars.build(entry, dst_path)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "converts Handlebars to JavaScript" do
|
|
23
|
+
lines = run_builder 'template.handlebars'
|
|
24
|
+
lines.each do |line|
|
|
25
|
+
line.should =~ /SC\.TEMPLATES/
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
@@ -6,19 +6,32 @@ module Chance
|
|
|
6
6
|
|
|
7
7
|
# The DataURL Imager creates CSS with data urls for each slice.
|
|
8
8
|
class DataURLImager < Chance::Imager
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
def css
|
|
11
11
|
output = ""
|
|
12
12
|
slices = @slices
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
slices.each do |name, slice|
|
|
15
15
|
# so, the path should be the path in the chance instance
|
|
16
16
|
output += "." + slice[:css_name] + " { "
|
|
17
17
|
output += "background: url("
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
|
|
19
|
+
# set the mime type from the extension (while taking care of .jpg extensions)
|
|
20
|
+
mimeType = (slice[:path] =~ /jpg$/) ? "image/jpeg" : "image/" + slice[:path].slice(/(gif|jpeg|png)$/)
|
|
21
|
+
|
|
22
|
+
output += '"data:' + mimeType
|
|
23
|
+
output += ';base64,'
|
|
24
|
+
|
|
25
|
+
# ChunkyPNG & RMagick images respond to to_blob, other images will be encoded from their contents
|
|
26
|
+
if (slice[:image].respond_to? "to_blob")
|
|
27
|
+
method = slice[:image].method(:to_blob)
|
|
28
|
+
|
|
29
|
+
# ChunkyPNG takes an argument to to_blob
|
|
30
|
+
slice[:image] = (method.arity == 1) ? slice[:image].to_blob(:fast_rgba) : slice[:image].to_blob
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
base64Image = Base64.encode64(slice[:image])
|
|
34
|
+
|
|
22
35
|
output += base64Image
|
|
23
36
|
|
|
24
37
|
output += '"'
|
|
@@ -28,7 +41,7 @@ module Chance
|
|
|
28
41
|
|
|
29
42
|
return output
|
|
30
43
|
end
|
|
31
|
-
|
|
44
|
+
|
|
32
45
|
end
|
|
33
46
|
|
|
34
47
|
end
|
|
@@ -8,6 +8,7 @@ require 'chance/sass_extensions'
|
|
|
8
8
|
require 'chance/perf'
|
|
9
9
|
require 'chance/slicing'
|
|
10
10
|
|
|
11
|
+
require 'digest/md5'
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
Compass.discover_extensions!
|
|
@@ -207,7 +208,9 @@ module Chance
|
|
|
207
208
|
#if Chance::SUPPORTS_IMPORTERS
|
|
208
209
|
# css = "@import \"" + file [:path] + ".scss\";"
|
|
209
210
|
#else
|
|
210
|
-
|
|
211
|
+
|
|
212
|
+
path_hash = Digest::MD5.hexdigest(file[:path])
|
|
213
|
+
tmp_path = "./tmp/chance/#{path_hash}.scss"
|
|
211
214
|
FileUtils.mkdir_p(File.dirname(tmp_path))
|
|
212
215
|
|
|
213
216
|
f = File.new(tmp_path, "w")
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
# debugging, and 2) if using Chance in a standalone way and committing
|
|
29
29
|
# the output to a source control system, the output can change dramatically
|
|
30
30
|
# between runs, even if the input CSS is unchanged.
|
|
31
|
-
#
|
|
31
|
+
#
|
|
32
32
|
# As the most common use of Chance is as part of the SC build tools,
|
|
33
33
|
# and this debugging support is usually only required to debug Chance
|
|
34
34
|
# itself, :compress defaults to true
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
# How Slice & Slices work
|
|
37
37
|
# -------------------------------
|
|
38
38
|
# @include slice() and @include slices() are not actually responsible
|
|
39
|
-
# for slicing the image. They do not know the image's
|
|
39
|
+
# for slicing the image. They do not know the image's width or height.
|
|
40
40
|
#
|
|
41
41
|
# All that they do is determine the slice's configuration, including
|
|
42
42
|
# its file name, the rectangle to slice, etc.
|
|
@@ -49,10 +49,10 @@ module Chance
|
|
|
49
49
|
|
|
50
50
|
class Parser
|
|
51
51
|
attr_reader :slices, :css
|
|
52
|
-
|
|
52
|
+
|
|
53
53
|
UNTIL_SINGLE_QUOTE = /(?!\\)'/
|
|
54
54
|
UNTIL_DOUBLE_QUOTE = /(?!\\)"/
|
|
55
|
-
|
|
55
|
+
|
|
56
56
|
BEGIN_SCOPE = /\{/
|
|
57
57
|
END_SCOPE = /\}/
|
|
58
58
|
THEME_DIRECTIVE = /@theme\s*/
|
|
@@ -69,14 +69,14 @@ module Chance
|
|
|
69
69
|
@opts.merge!(opts)
|
|
70
70
|
@path = ""
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
|
|
73
73
|
@input = string
|
|
74
74
|
@css = ""
|
|
75
75
|
|
|
76
76
|
@slices = @opts[:slices] # we update the slices given to us
|
|
77
|
-
|
|
77
|
+
|
|
78
78
|
@theme = @opts[:theme]
|
|
79
|
-
|
|
79
|
+
|
|
80
80
|
@@uid += 1
|
|
81
81
|
@uid = @@uid
|
|
82
82
|
|
|
@@ -102,7 +102,7 @@ module Chance
|
|
|
102
102
|
|
|
103
103
|
# we add a bit to the path: the slice info
|
|
104
104
|
rect_params = [:left, :top, :width, :height, :bottom, :right, :offset_x, :offset_y]
|
|
105
|
-
|
|
105
|
+
|
|
106
106
|
# Generate string-compatible params
|
|
107
107
|
slice_name_params = rect_params.map {|param|
|
|
108
108
|
ret = ""
|
|
@@ -131,7 +131,7 @@ module Chance
|
|
|
131
131
|
slice = @slices[slice_path]
|
|
132
132
|
slice[:min_offset_x] = [slice[:min_offset_x], opts[:offset_x]].min
|
|
133
133
|
slice[:min_offset_y] = [slice[:min_offset_y], opts[:offset_y]].min
|
|
134
|
-
|
|
134
|
+
|
|
135
135
|
slice[:max_offset_x] = [slice[:max_offset_x], opts[:offset_x]].max
|
|
136
136
|
slice[:max_offset_y] = [slice[:max_offset_y], opts[:offset_y]].max
|
|
137
137
|
else
|
|
@@ -159,29 +159,29 @@ module Chance
|
|
|
159
159
|
|
|
160
160
|
return slice
|
|
161
161
|
end
|
|
162
|
-
|
|
162
|
+
|
|
163
163
|
def normalize_rectangle(rect)
|
|
164
164
|
# try to make the rectangle somewhat standard: that is, make it have
|
|
165
165
|
# all units which make sense
|
|
166
|
-
|
|
166
|
+
|
|
167
167
|
# it must have either a left or a right, no matter what
|
|
168
168
|
rect[:left] = 0 if rect[:left].nil? and rect[:right].nil?
|
|
169
|
-
|
|
169
|
+
|
|
170
170
|
# if there is no width, it must have a both left and right
|
|
171
171
|
if rect[:width].nil?
|
|
172
172
|
rect[:left] = 0 if rect[:left].nil?
|
|
173
173
|
rect[:right] = 0 if rect[:right].nil?
|
|
174
174
|
end
|
|
175
|
-
|
|
175
|
+
|
|
176
176
|
# it must have either a top or a bottom, no matter what
|
|
177
177
|
rect[:top] = 0 if rect[:top].nil? and rect[:bottom].nil?
|
|
178
|
-
|
|
178
|
+
|
|
179
179
|
# if there is no height, it must have _both_ top and bottom
|
|
180
180
|
if rect[:height].nil?
|
|
181
181
|
rect[:top] = 0 if rect[:top].nil?
|
|
182
182
|
rect[:bottom] = 0 if rect[:bottom].nil?
|
|
183
183
|
end
|
|
184
|
-
|
|
184
|
+
|
|
185
185
|
return rect
|
|
186
186
|
end
|
|
187
187
|
|
|
@@ -205,7 +205,7 @@ module Chance
|
|
|
205
205
|
# to mean that this is a recursive call.
|
|
206
206
|
def _parse
|
|
207
207
|
scanner = @scanner
|
|
208
|
-
|
|
208
|
+
|
|
209
209
|
output = []
|
|
210
210
|
|
|
211
211
|
while not scanner.eos? do
|
|
@@ -236,7 +236,7 @@ module Chance
|
|
|
236
236
|
output << handle_slice_include
|
|
237
237
|
next
|
|
238
238
|
end
|
|
239
|
-
|
|
239
|
+
|
|
240
240
|
if scanner.match?(CHANCE_FILE_DIRECTIVE)
|
|
241
241
|
handle_file_change
|
|
242
242
|
next
|
|
@@ -251,7 +251,7 @@ module Chance
|
|
|
251
251
|
else
|
|
252
252
|
output << res
|
|
253
253
|
end
|
|
254
|
-
|
|
254
|
+
|
|
255
255
|
end
|
|
256
256
|
|
|
257
257
|
output = output.join
|
|
@@ -267,7 +267,7 @@ module Chance
|
|
|
267
267
|
def parse_string(cssString)
|
|
268
268
|
# I cheat: to parse strings, I use JSON.
|
|
269
269
|
# This will fail with strings quoted with "'", so I'm
|
|
270
|
-
# just not bothering for now. At some point, I should either make
|
|
270
|
+
# just not bothering for now. At some point, I should either make
|
|
271
271
|
# this function more proper or use some other function...
|
|
272
272
|
if not cssString[0..0] == '"'
|
|
273
273
|
return cssString
|
|
@@ -288,7 +288,7 @@ module Chance
|
|
|
288
288
|
def handle_empty
|
|
289
289
|
scanner = @scanner
|
|
290
290
|
output = ""
|
|
291
|
-
|
|
291
|
+
|
|
292
292
|
while true do
|
|
293
293
|
if scanner.match?(/\s+/)
|
|
294
294
|
output += scanner.scan /\s+/
|
|
@@ -338,7 +338,7 @@ module Chance
|
|
|
338
338
|
output = ""
|
|
339
339
|
output += "\n$theme: '" + @theme + "';\n"
|
|
340
340
|
output += _parse
|
|
341
|
-
|
|
341
|
+
|
|
342
342
|
@theme = old_theme
|
|
343
343
|
output += "$theme: '" + @theme + "';\n"
|
|
344
344
|
|
|
@@ -363,7 +363,7 @@ module Chance
|
|
|
363
363
|
def handle_file_change
|
|
364
364
|
scanner = @scanner
|
|
365
365
|
scanner.scan CHANCE_FILE_DIRECTIVE
|
|
366
|
-
|
|
366
|
+
|
|
367
367
|
path = scanner.scan_until /;/
|
|
368
368
|
path = path[0..-1]
|
|
369
369
|
|
|
@@ -383,7 +383,7 @@ module Chance
|
|
|
383
383
|
# this holds the value as we are parsing it
|
|
384
384
|
parsing_value = ""
|
|
385
385
|
|
|
386
|
-
|
|
386
|
+
|
|
387
387
|
# The key MAY be present if we are starting with a $.
|
|
388
388
|
# But remember: it could be $abc: $abc + $def
|
|
389
389
|
key = :NO_KEY
|
|
@@ -407,7 +407,7 @@ module Chance
|
|
|
407
407
|
end
|
|
408
408
|
|
|
409
409
|
value = nil
|
|
410
|
-
|
|
410
|
+
|
|
411
411
|
# we stop when we either a) reach the end of the arglist, or
|
|
412
412
|
# b) reach the end of the argument. Argument ends at ',', list ends
|
|
413
413
|
# at ')'
|
|
@@ -436,7 +436,7 @@ module Chance
|
|
|
436
436
|
scanner = @scanner
|
|
437
437
|
|
|
438
438
|
raise SyntaxError, "Expected ( to begin argument list." unless scanner.scan /\(/
|
|
439
|
-
|
|
439
|
+
|
|
440
440
|
idx = 0
|
|
441
441
|
args = {}
|
|
442
442
|
until scanner.match?(/\)/) or scanner.eos? do
|
|
@@ -527,7 +527,7 @@ module Chance
|
|
|
527
527
|
end
|
|
528
528
|
|
|
529
529
|
layout_properties.each {|prop|
|
|
530
|
-
unless slice[prop].nil?
|
|
530
|
+
unless slice[prop].nil?
|
|
531
531
|
output += prop.to_s + ": " + slice[prop].to_s + "px; \n"
|
|
532
532
|
end
|
|
533
533
|
}
|
|
@@ -546,7 +546,7 @@ module Chance
|
|
|
546
546
|
arguments[key] = Integer(arguments[key]) if not arguments[key].nil?
|
|
547
547
|
arguments[key] = 0 if arguments[key].nil?
|
|
548
548
|
}
|
|
549
|
-
|
|
549
|
+
|
|
550
550
|
values = arguments.values
|
|
551
551
|
|
|
552
552
|
left = arguments[:left]
|
|
@@ -563,11 +563,11 @@ module Chance
|
|
|
563
563
|
skip_top_left = values.include? 'skip-top-left'
|
|
564
564
|
skip_top = values.include? 'skip-top'
|
|
565
565
|
skip_top_right = values.include? 'skip-top-right'
|
|
566
|
-
|
|
566
|
+
|
|
567
567
|
skip_left = values.include? 'skip-left'
|
|
568
568
|
skip_middle = values.include? 'skip-middle'
|
|
569
569
|
skip_right = values.include? 'skip-right'
|
|
570
|
-
|
|
570
|
+
|
|
571
571
|
skip_bottom_left = values.include? 'skip-bottom-left'
|
|
572
572
|
skip_bottom = values.include? 'skip-bottom'
|
|
573
573
|
skip_bottom_right = values.include? 'skip-bottom-right'
|
|
@@ -577,8 +577,8 @@ module Chance
|
|
|
577
577
|
# we are going to form 9 slices. If any are empty we'll skip them
|
|
578
578
|
|
|
579
579
|
# top-left
|
|
580
|
-
top_left_slice = {
|
|
581
|
-
:left => 0,
|
|
580
|
+
top_left_slice = {
|
|
581
|
+
:left => 0,
|
|
582
582
|
:top => 0,
|
|
583
583
|
:width => left,
|
|
584
584
|
:height => top,
|