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.
Files changed (308) hide show
  1. data/.rspec +1 -0
  2. data/CHANGELOG +42 -0
  3. data/README.txt +25 -0
  4. data/VERSION.yml +1 -1
  5. data/bin/sc-build +1 -1
  6. data/bin/sc-build-number +1 -1
  7. data/bin/sc-docs +1 -1
  8. data/bin/sc-gen +1 -1
  9. data/bin/sc-init +1 -1
  10. data/bin/sc-manifest +1 -1
  11. data/bin/sc-server +1 -1
  12. data/bin/sproutcore +1 -1
  13. data/lib/buildtasks/build.rake +5 -0
  14. data/lib/buildtasks/manifest.rake +20 -1
  15. data/lib/frameworks/sproutcore/Buildfile +12 -9
  16. data/lib/frameworks/sproutcore/CHANGELOG.md +48 -0
  17. data/lib/frameworks/sproutcore/apps/greenhouse/README +2 -9
  18. data/lib/frameworks/sproutcore/apps/greenhouse/TODO +11 -27
  19. data/lib/frameworks/sproutcore/apps/greenhouse/controllers/library.js +3 -10
  20. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/main-page.css +4 -31
  21. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/dialogs.js +5 -4
  22. data/lib/frameworks/sproutcore/apps/greenhouse/models/dir.js +3 -3
  23. data/lib/frameworks/sproutcore/apps/greenhouse/models/file.js +2 -2
  24. data/lib/frameworks/sproutcore/apps/greenhouse/states/main.js +31 -14
  25. data/lib/frameworks/sproutcore/apps/greenhouse/states/modals.js +2 -1
  26. data/lib/frameworks/sproutcore/apps/greenhouse/states/ready.js +27 -1
  27. data/lib/frameworks/sproutcore/apps/greenhouse/tests/views/list_item.js +1 -0
  28. data/lib/frameworks/sproutcore/apps/greenhouse/tests/views/plist_item.js +20 -0
  29. data/lib/frameworks/sproutcore/apps/greenhouse/theme.js +25 -0
  30. data/lib/frameworks/sproutcore/apps/greenhouse/views/plist_item.js +161 -24
  31. data/lib/frameworks/sproutcore/apps/greenhouse/views/tear_off_picker.js +1 -1
  32. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +37 -25
  33. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +135 -26
  34. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/array.js +0 -0
  35. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/controller.js +0 -0
  36. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/object.js +1 -1
  37. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/core.js +0 -0
  38. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/ext/object.js +0 -0
  39. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/ext/run_loop.js +1 -0
  40. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/delegate_support.js +0 -0
  41. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/responder_context.js +0 -0
  42. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/selection_support.js +0 -0
  43. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/string.js +0 -0
  44. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +68 -0
  45. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +108 -0
  46. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/panes/main.js +2 -2
  47. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/manipulation.js +27 -0
  48. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/panes/pane.js +215 -505
  49. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +24 -0
  50. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +11 -0
  51. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/protocols/observable_protocol.js +0 -0
  52. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/protocols/sparse_array_delegate.js +0 -0
  53. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/resources/core.css +0 -0
  54. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/resources/view.css +0 -0
  55. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/application.js +0 -0
  56. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/browser.js +1 -0
  57. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/builder.js +0 -0
  58. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/core_query.js +1 -1
  59. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/cursor.js +0 -0
  60. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +210 -0
  61. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/event.js +5 -5
  62. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/json.js +0 -0
  63. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/locale.js +0 -0
  64. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/page.js +0 -0
  65. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/platform.js +31 -5
  66. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/ready.js +1 -1
  67. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/render_context.js +0 -0
  68. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/responder.js +0 -0
  69. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/root_responder.js +83 -110
  70. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/selection_set.js +7 -4
  71. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/sparse_array.js +0 -0
  72. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/theme.js +0 -0
  73. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/timer.js +0 -0
  74. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/utils/rect.js +0 -0
  75. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +151 -0
  76. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/array_case.js +0 -0
  77. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/enum_case.js +0 -0
  78. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/null_case.js +0 -0
  79. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/selection_support.js +26 -0
  80. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/single_case.js +0 -0
  81. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/empty_case.js +0 -0
  82. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/multiple_case.js +0 -0
  83. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/single_case.js +0 -0
  84. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/single_enumerable_case.js +0 -0
  85. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/mixins/responder_context.js +0 -0
  86. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/mixins/string.js +0 -0
  87. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/panes/template.js +14 -0
  88. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/builder.js +0 -0
  89. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/core_query/within.js +0 -0
  90. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/json.js +0 -0
  91. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/locale.js +0 -0
  92. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/begin.js +0 -0
  93. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/element.js +0 -0
  94. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/end.js +0 -0
  95. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/get.js +0 -0
  96. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_attr.js +0 -0
  97. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_basic.js +0 -0
  98. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_className.js +0 -0
  99. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_style.js +0 -0
  100. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/init.js +0 -0
  101. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/join.js +0 -0
  102. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/push_text.js +0 -0
  103. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/tag.js +0 -0
  104. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/update.js +0 -0
  105. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeKeyPane.js +0 -0
  106. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeMainPane.js +0 -0
  107. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeMenuPane.js +0 -0
  108. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/root_responder.js +0 -0
  109. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/targetForAction.js +0 -0
  110. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/add.js +0 -0
  111. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/copy.js +0 -0
  112. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/indexSetForSource.js +0 -0
  113. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/isEqual.js +0 -0
  114. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/remove.js +0 -0
  115. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/sparse_array.js +0 -0
  116. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/theme.js +0 -0
  117. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/invalidate.js +0 -0
  118. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/invokeLater.js +0 -0
  119. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/isPaused.js +0 -0
  120. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/performAction.js +0 -0
  121. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/schedule.js +0 -0
  122. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/utils/normalizeURL.js +0 -0
  123. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +268 -0
  124. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/utils/rect.js +0 -0
  125. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/main_pane.js +43 -0
  126. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/append_remove.js +107 -18
  127. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +20 -0
  128. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/firstResponder.js +0 -0
  129. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/keyPane.js +0 -0
  130. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/layout.js +0 -0
  131. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/sendEvent.js +0 -0
  132. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/checkbox_support.js +32 -0
  133. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/text_field_support.js +73 -0
  134. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/collection.js +65 -0
  135. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/core.js +67 -0
  136. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/handlebars.js +295 -0
  137. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/animation.js +19 -18
  138. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/build.js +0 -0
  139. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/build_children.js +0 -0
  140. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/clippingFrame.js +0 -0
  141. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/convertFrames.js +0 -0
  142. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/convertLayouts.js +0 -0
  143. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/createChildViews.js +18 -15
  144. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/createLayer.js +0 -0
  145. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/destroyLayer.js +0 -0
  146. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/didAppendToDocument.js +11 -8
  147. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/findLayerInParentLayer.js +0 -0
  148. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/init.js +0 -0
  149. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/insertBefore.js +0 -0
  150. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/isVisible.js +28 -0
  151. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/isVisibleInWindow.js +0 -0
  152. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +22 -0
  153. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/layer.js +0 -0
  154. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/layoutChildViews.js +0 -0
  155. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +180 -0
  156. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +640 -0
  157. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/parentViewDidChange.js +0 -0
  158. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/prepareContext.js +0 -0
  159. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/removeChild.js +0 -0
  160. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render.js +125 -0
  161. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/render_delegate_support.js +0 -0
  162. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/replaceChild.js +0 -0
  163. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/static_layout.js +21 -0
  164. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/theme.js +0 -0
  165. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/updateLayer.js +0 -0
  166. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/updateLayerLocation.js +0 -0
  167. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/view.js +0 -0
  168. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/viewDidResize.js +0 -0
  169. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/checkbox_support.js +20 -0
  170. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +99 -0
  171. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/text_field_support.js +35 -0
  172. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template.js +77 -0
  173. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +187 -0
  174. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/base.js +1 -0
  175. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +41 -0
  176. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +57 -0
  177. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +223 -0
  178. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +1150 -0
  179. data/lib/frameworks/sproutcore/frameworks/{amber/views → core_foundation/views/view}/layout_style.js +93 -1
  180. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +489 -0
  181. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +362 -0
  182. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/touch.js +67 -0
  183. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/visibility.js +113 -0
  184. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +1280 -0
  185. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +27 -53
  186. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +13 -19
  187. data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +1 -0
  188. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +183 -71
  189. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +1 -2
  190. data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +26 -46
  191. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +25 -4
  192. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +139 -21
  193. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +6 -1
  194. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/cyclical_relationship.js +1 -1
  195. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/{parentless.js → data_store.js} +62 -16
  196. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +51 -17
  197. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +36 -10
  198. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +11 -11
  199. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +8 -8
  200. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +2 -2
  201. data/lib/frameworks/sproutcore/frameworks/{foundation/english.lproj → datetime/resources}/strings.js +1 -0
  202. data/lib/frameworks/sproutcore/frameworks/{foundation → datetime}/system/datetime.js +5 -37
  203. data/lib/frameworks/sproutcore/frameworks/{foundation → datetime}/tests/system/datetime.js +1 -0
  204. data/lib/frameworks/sproutcore/frameworks/debug/core.js +1 -1
  205. data/lib/frameworks/sproutcore/frameworks/designer/controllers/designs.js +1 -2
  206. data/lib/frameworks/sproutcore/frameworks/designer/designers/object_designer.js +3 -3
  207. data/lib/frameworks/sproutcore/frameworks/designer/designers/view_designer.js +3 -3
  208. data/lib/frameworks/sproutcore/frameworks/designer/views/designer_drop_target.js +9 -3
  209. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +71 -70
  210. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +10 -2
  211. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -19
  212. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +33 -14
  213. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +25 -0
  214. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +1 -1
  215. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +25 -103
  216. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +102 -92
  217. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +22 -25
  218. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +38 -25
  219. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +1 -1
  220. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +1 -1
  221. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +42 -22
  222. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +513 -230
  223. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +0 -2
  224. data/lib/frameworks/sproutcore/frameworks/experimental/README.md +23 -0
  225. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/README.md +11 -0
  226. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +215 -0
  227. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/platform.js +67 -0
  228. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +34 -0
  229. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/polymorphic_single_attribute.js +183 -0
  230. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +23 -0
  231. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphic/single.js +124 -0
  232. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +0 -2
  233. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +151 -0
  234. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +27 -17
  235. data/lib/frameworks/sproutcore/frameworks/foundation/system/image_queue.js +6 -3
  236. data/lib/frameworks/sproutcore/frameworks/foundation/system/logger.js +163 -0
  237. data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +6 -3
  238. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +1 -0
  239. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/logger.js +44 -0
  240. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +200 -167
  241. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +1 -1
  242. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +52 -137
  243. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +7 -11
  244. data/lib/frameworks/sproutcore/frameworks/handlebars/extensions.js +138 -0
  245. data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +1338 -0
  246. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +32 -26
  247. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +162 -3
  248. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +10 -5
  249. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +123 -3
  250. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +12 -5
  251. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +50 -13
  252. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +163 -333
  253. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +58 -8
  254. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +2 -0
  255. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +9 -6
  256. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +15 -1
  257. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +2 -0
  258. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +31 -0
  259. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +18 -0
  260. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +31 -143
  261. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/concatenated_properties.js +71 -0
  262. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +177 -0
  263. data/lib/frameworks/sproutcore/frameworks/table/views/table.js +5 -4
  264. data/lib/frameworks/sproutcore/frameworks/table/views/table_header.js +5 -3
  265. data/lib/frameworks/sproutcore/themes/ace/resources/button/button.js +8 -2
  266. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +2 -3
  267. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +1 -1
  268. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +1 -1
  269. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +1 -1
  270. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +1 -1
  271. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +2 -2
  272. data/lib/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +62 -62
  273. data/lib/gen/html_app/Buildfile +36 -0
  274. data/lib/gen/html_app/README +1 -0
  275. data/lib/gen/html_app/USAGE +15 -0
  276. data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +14 -0
  277. data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
  278. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -0
  279. data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +1 -0
  280. data/lib/gen/html_project/Buildfile +45 -0
  281. data/lib/gen/html_project/INIT +3 -0
  282. data/lib/gen/html_project/README +1 -0
  283. data/lib/gen/html_project/USAGE +2 -0
  284. data/lib/gen/html_project/templates/@filename@/Buildfile +8 -0
  285. data/lib/gen/html_project/templates/@filename@/README +7 -0
  286. data/lib/sproutcore/builders/handlebars.rb +30 -0
  287. data/lib/sproutcore/builders.rb +1 -1
  288. data/lib/sproutcore/helpers/static_helper.rb +3 -3
  289. data/lib/sproutcore/tools/init.rb +25 -9
  290. data/spec/buildtasks/manifest/prepare_build_tasks/handlebars_spec.rb +39 -0
  291. data/spec/fixtures/builder_tests/apps/handlebars_test/template.handlebars +5 -0
  292. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/templates/demo.handlebars +4 -0
  293. data/spec/lib/builders/handlebars_spec.rb +29 -0
  294. data/vendor/chance/lib/chance/imagers/data_url.rb +20 -7
  295. data/vendor/chance/lib/chance/instance.rb +4 -1
  296. data/vendor/chance/lib/chance/parser.rb +31 -31
  297. data/vendor/chance/lib/chance/slicing.rb +38 -8
  298. metadata +195 -225
  299. data/lib/frameworks/sproutcore/frameworks/amber/system/device.js +0 -143
  300. data/lib/frameworks/sproutcore/frameworks/amber/system/utils.js +0 -174
  301. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/main_pane.js +0 -31
  302. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/pane/sendTouchEvent.js +0 -267
  303. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/layoutDidChange.js +0 -149
  304. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/layoutStyle.js +0 -602
  305. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/render.js +0 -115
  306. data/lib/frameworks/sproutcore/frameworks/amber/views/base.js +0 -1
  307. data/lib/frameworks/sproutcore/frameworks/amber/views/view.js +0 -4003
  308. 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
+ });
@@ -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,3 @@
1
+ Your new SproutCore project is ready!
2
+
3
+ To get started, you can find your initial application in the "apps" directory.
@@ -0,0 +1 @@
1
+ Your project is now ready to use!
@@ -0,0 +1,2 @@
1
+ Usage:
2
+ sc-gen project project_name
@@ -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
+
@@ -11,4 +11,4 @@ require "sproutcore/builders/stylesheet"
11
11
  require "sproutcore/builders/test"
12
12
  require "sproutcore/builders/test_index"
13
13
  require "sproutcore/builders/string_wrapper"
14
-
14
+ require "sproutcore/builders/handlebars"
@@ -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[:theme_name]
276
- ret = target.config[:theme_name]
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[:theme_name] || ret
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
- project_gen = SC.builtin_project.generator_for 'project',
18
- :arguments => ['project', project_name],
19
- :dry_run => options['dry-run'],
20
- :force => options[:force]
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
- generator = project.generator_for 'app',
30
- :arguments => ['app', app_name],
31
- :dry_run => options['dry-run'],
32
- :force => options[:force]
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,5 @@
1
+ Pour {{unfortunate}} {{souls}}
2
+
3
+ Yes ma'am
4
+
5
+ INCEPTION ><>
@@ -0,0 +1,4 @@
1
+ We have achieved {{INCEPTION}}
2
+ Yes we have.
3
+ So much 'inception'
4
+ "Inception" has been achieved. ><<>>
@@ -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
- output += '"data:image/png;base64,'
19
-
20
- base64Image = Base64.encode64(slice[:image].to_blob(:fast_rgba))
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
- tmp_path = "./tmp/chance/" + file[:path] + ".scss"
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 with or height.
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,