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
@@ -1,47 +1,11 @@
1
1
  // ==========================================================================
2
- // SC.Logger
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
+ // Portions ©2008-2010 Apple Inc. All rights reserved.
5
+ // License: Licensed under MIT license (see license.js)
3
6
  // ==========================================================================
4
7
 
5
8
 
6
- /**
7
- If {@link SC.Logger.format} is true, this delimiter will be put between arguments.
8
-
9
- @property {String}
10
- */
11
- SC.LOGGER_LOG_DELIMITER = ", ";
12
-
13
- /**
14
- If {@link SC.Logger.error} falls back onto {@link SC.Logger.log}, this will be
15
- prepended to the output.
16
-
17
- @property {String}
18
- */
19
- SC.LOGGER_LOG_ERROR = "ERROR: ";
20
-
21
- /**
22
- If {@link SC.Logger.info} falls back onto {@link SC.Logger.log}, this will be
23
- prepended to the output.
24
-
25
- @property {String}
26
- */
27
- SC.LOGGER_LOG_INFO = "INFO: ";
28
-
29
- /**
30
- If {@link SC.Logger.warn} falls back onto {@link SC.Logger.log}, this will be
31
- prepended to the output.
32
-
33
- @property {String}
34
- */
35
- SC.LOGGER_LOG_WARN = "WARNING: ";
36
-
37
- /**
38
- If {@link SC.Logger.debug} falls back onto {@link SC.Logger.log}, this will be
39
- prepended to the output.
40
-
41
- @property {String}
42
- */
43
- SC.LOGGER_LOG_DEBUG = "DEBUG: ";
44
-
45
9
  /** @class
46
10
 
47
11
  Object to allow for safe logging actions, such as using the browser console.
@@ -56,28 +20,13 @@ SC.LOGGER_LOG_DEBUG = "DEBUG: ";
56
20
  @since Sproutcore 1.0
57
21
  @see <a href="http://getfirebug.com/logging.html">Firebug Logging Reference</a>
58
22
  */
59
- SC.Logger = SC.Object.create({
23
+ SC.Logger = SC.Object.create(
24
+ /** @scope SC.Logger */ {
60
25
 
61
26
  // ..........................................................
62
27
  // PROPERTIES
63
28
  //
64
29
 
65
- /**
66
- Whether or not to enable debug logging.
67
-
68
- @property: {Boolean}
69
- */
70
- debugEnabled: NO,
71
-
72
- /**
73
- Computed property that checks for the existence of the reporter object.
74
-
75
- @property {Boolean}
76
- */
77
- exists: function() {
78
- return typeof(this.get('reporter')) !== 'undefined' && this.get('reporter') != null;
79
- }.property('reporter').cacheable(),
80
-
81
30
  /**
82
31
  If console.log does not exist, SC.Logger will use window.alert instead.
83
32
 
@@ -88,14 +37,6 @@ SC.Logger = SC.Object.create({
88
37
  */
89
38
  fallBackOnAlert: NO,
90
39
 
91
- /**
92
- If some function, such as console.dir, does not exist,
93
- SC.Logger will try console.log if this is true.
94
-
95
- @property {Boolean}
96
- */
97
- fallBackOnLog: YES,
98
-
99
40
  /**
100
41
  Whether or not to format multiple arguments together
101
42
  or let the browser deal with that.
@@ -104,52 +45,81 @@ SC.Logger = SC.Object.create({
104
45
  */
105
46
  format: YES,
106
47
 
48
+ /** @private
49
+ Provide backwards compatibility for developers setting the reporter object.
50
+ */
51
+ reporter: function(key, value) {
52
+ if (value !== undefined) {
53
+ this.set('reporters', [value]);
54
+ }
55
+ return this.get('reporters')[0];
56
+ }.property(),
57
+
107
58
  /**
108
- The reporter is the object which implements the actual logging functions.
59
+ An array of objects which can report messages. This will contain the 'console'
60
+ object, if it exists, by default.
61
+
62
+ @property {Array}
63
+ @default []
64
+ */
65
+ reporters: [],
66
+
67
+ init: function() {
68
+ if (window.console !== undefined) this.get('reporters').push(window.console);
69
+ },
70
+
109
71
 
110
- @default The browser's console
111
- @property {Object}
72
+ // ..........................................................
73
+ // REPORTERS SUPPORT
74
+ //
75
+
76
+ /**
77
+ @since SproutCore 1.5
78
+ @param {Object} reporter The report object to add
79
+ @returns {SC.Logger}
112
80
  */
113
- reporter: console,
81
+ addReporter: function(reporter) {
82
+ this.get('reporters').push(reporter);
83
+ return this;
84
+ },
85
+
86
+ /**
87
+ @since SproutCore 1.5
88
+ @param {Boolean} keepConsole If NO, remove console from reporters as well
89
+ @returns {SC.Logger}
90
+ */
91
+ clearReporters: function(keepConsole) {
92
+ var ret = [];
93
+ if (keepConsole) ret.push(console);
94
+ this.set('reporters', ret);
95
+ return this;
96
+ },
114
97
 
115
98
  // ..........................................................
116
- // METHODS
99
+ // LOGGING SUPPORT
117
100
  //
118
101
 
119
102
  /**
120
103
  Log output to the console, but only if it exists.
121
104
 
122
105
  @param {String|Array|Function|Object}
123
- @returns {Boolean} true if reporter.log exists, false otherwise
106
+ @returns {SC.Logger}
124
107
  */
125
108
  log: function() {
126
- var reporter = this.get('reporter');
109
+ var reporters = this.get('reporters'),
110
+ args = arguments,
111
+ f;
127
112
 
128
113
  // log through the reporter
129
- if (this.get('exists') && typeof(reporter.log) === "function") {
130
- if (this.get('format')) {
131
- reporter.log(this._argumentsToString.apply(this, arguments));
132
- }
133
- else {
134
- reporter.log.apply(reporter, arguments);
135
- }
136
- return true;
137
- }
114
+ reporters.forEach(function(reporter) {
115
+ if (reporter.log !== undefined && reporter.log.apply !== undefined) f = reporter.log;
116
+ else if (this.get('fallBackOnAlert')) f = alert;
138
117
 
139
- // log through alert
140
- else if (this.fallBackOnAlert) {
141
- var s = this.get('format') ? this._argumentsToString.apply(this, arguments) : arguments;
142
- // include support for overriding the alert through the reporter
143
- // if it has come this far, it's likely this will fail
144
- if (this.get('exists') && typeof(reporter.alert) === "function") {
145
- reporter.alert(s);
146
- }
147
- else {
148
- alert(s);
149
- }
150
- return true;
151
- }
152
- return false;
118
+ if (this.get('format')) args = [SC.A(args).join(", ")];
119
+ f.apply(reporter, args);
120
+ }, this);
121
+
122
+ return this;
153
123
  },
154
124
 
155
125
  /**
@@ -159,125 +129,86 @@ SC.Logger = SC.Object.create({
159
129
  {@link SC.Logger.fallBackOnLog} is true.
160
130
 
161
131
  @param {String|Array|Function|Object}
162
- @returns {Boolean} true if logged to reporter, false if not
132
+ @returns {SC.Logger}
163
133
  */
164
134
  debug: function() {
165
- var reporter = this.get('reporter');
135
+ var reporters = this.get('reporters'),
136
+ args = SC.A(arguments),
137
+ f;
138
+
139
+ reporters.forEach(function(reporter) {
140
+ if (reporter.debug !== undefined && reporter.debug.apply !== undefined) {
141
+ f = reporter.debug;
142
+ } else if (reporter.log !== undefined && reporter.log.apply !== undefined) {
143
+ args.unshift('DEBUG');
144
+ f = reporter.log;
145
+ } else if (this.get('fallBackOnAlert')) {
146
+ args.unshift('DEBUG');
147
+ f = alert;
148
+ }
166
149
 
167
- if (this.get('debugEnabled') !== YES) {
168
- return false;
169
- }
150
+ if (this.get('format')) args = [args.join(", ")];
151
+ f.apply(reporter, args);
152
+ }, this);
170
153
 
171
- if (this.get('exists') && (typeof reporter.debug === "function")) {
172
- reporter.debug.apply(reporter, arguments);
173
- return true;
174
- }
175
- else if (this.fallBackOnLog) {
176
- var a = this._argumentsToArray(arguments);
177
- if (typeof(a.unshift) === "function") a.unshift(SC.LOGGER_LOG_DEBUG);
178
- return this.log.apply(this, a);
179
- }
180
- return false;
154
+ return this;
181
155
  },
182
156
 
183
157
  /**
184
158
  Prints the properties of an object.
185
159
 
186
- Logs the object using {@link SC.Logger.log} if the reporter.dir function does not exist and
187
- {@link SC.Logger.fallBackOnLog} is true.
188
-
189
160
  @param {Object}
190
- @returns {Boolean} true if logged to console, false if not
161
+ @returns {SC.Logger}
191
162
  */
192
163
  dir: function() {
193
- var reporter = this.get('reporter');
194
-
195
- if (this.get('exists') && typeof(reporter.dir) === "function") {
196
- // Firebug's console.dir doesn't support multiple objects here
197
- // but maybe custom reporters will
198
- reporter.dir.apply(reporter, arguments);
199
- return true;
200
- }
201
- return (this.fallBackOnLog) ? this.log.apply(this, arguments) : false;
202
- },
203
-
204
- /**
205
- Prints an XML outline for any HTML or XML object.
164
+ var reporters = this.get('reporters'),
165
+ args = SC.A(arguments),
166
+ f;
167
+
168
+ reporters.forEach(function(reporter) {
169
+ if (reporter.dir !== undefined && reporter.dir.apply !== undefined) {
170
+ f = reporter.dir;
171
+ } else if (reporter.log !== undefined && reporter.log.apply !== undefined) {
172
+ f = reporter.log;
173
+ args = args.map(function(obj) { return SC.inspect(obj); });
174
+ } else if (this.get('fallBackOnAlert')) {
175
+ f = alert;
176
+ args = args.map(function(obj) { return SC.inspect(obj); });
177
+ }
206
178
 
207
- Logs the object using {@link SC.Logger.log} if reporter.dirxml function does not exist and
208
- {@lnk SC.Logger.fallBackOnLog} is true.
179
+ f.apply(reporter, args); // we don't want to format these results
180
+ }, this);
209
181
 
210
- @param {Object}
211
- @returns {Boolean} true if logged to reporter, false if not
212
- */
213
- dirxml: function() {
214
- var reporter = this.get('reporter');
215
-
216
- if (this.get('exists') && typeof(reporter.dirxml) === "function") {
217
- // Firebug's console.dirxml doesn't support multiple objects here
218
- // but maybe custom reporters will
219
- reporter.dirxml.apply(reporter, arguments);
220
- return true;
221
- }
222
- return (this.fallBackOnLog) ? this.log.apply(this, arguments) : false;
182
+ return this;
223
183
  },
224
184
 
225
185
  /**
226
186
  Log an error to the console
227
187
 
228
- Logs the error using {@link SC.Logger.log} if reporter.error does not exist and
229
- {@link SC.Logger.fallBackOnLog} is true.
230
-
231
188
  @param {String|Array|Function|Object}
232
- @returns {Boolean} true if logged to reporter, false if not
189
+ @returns {SC.Logger}
233
190
  */
234
191
  error: function() {
235
- var reporter = this.get('reporter');
236
-
237
- if (this.get('exists') && typeof(reporter.error) === "function") {
238
- reporter.error.apply(reporter, arguments);
239
- return true;
240
- }
241
- else if (this.fallBackOnLog) {
242
- var a = this._argumentsToArray(arguments);
243
- if (typeof(a.unshift) === "function") a.unshift(SC.LOGGER_LOG_ERROR);
244
- return this.log.apply(this, a);
245
- }
246
- return false;
247
- },
248
-
249
- /**
250
- Every log after this call until {@link SC.Logger.groupEnd} is called
251
- will be indented for readability. You can create as many levels
252
- as you want.
253
-
254
- @param {String} [title] An optional title to display above the group
255
- @returns {Boolean} true if reporter.group exists, false otherwise
256
- */
257
- group: function(s) {
258
- var reporter = this.get('reporter');
259
-
260
- if (this.get('exists') && typeof(reporter.group) === "function") {
261
- reporter.group(s);
262
- return true;
263
- }
264
- return false;
265
- },
266
-
267
- /**
268
- Ends a group declared with {@link SC.Logger.group}.
192
+ var reporters = this.get('reporters'),
193
+ args = SC.A(arguments),
194
+ f;
195
+
196
+ reporters.forEach(function(reporter) {
197
+ if (reporter.error !== undefined && reporter.error.apply !== undefined) {
198
+ f = reporter.error;
199
+ } else if (reporter.log !== undefined && reporter.log.apply !== undefined) {
200
+ args.unshift('ERROR');
201
+ f = reporter.log;
202
+ } else if (this.get('fallBackOnAlert')) {
203
+ args.unshift('ERROR');
204
+ f = alert;
205
+ }
269
206
 
270
- @returns {Boolean} true if the reporter.groupEnd exists, false otherwise
271
- @see SC.Logger.group
272
- */
273
- groupEnd: function() {
274
- var reporter = this.get('reporter');
207
+ if (this.get('format')) args = [args.join(", ")];
208
+ f.apply(reporter, args);
209
+ }, this);
275
210
 
276
- if (this.get('exists') && typeof(reporter.groupEnd) === "function") {
277
- reporter.groupEnd();
278
- return true;
279
- }
280
- return false;
211
+ return this;
281
212
  },
282
213
 
283
214
  /**
@@ -287,103 +218,29 @@ SC.Logger = SC.Object.create({
287
218
  {@link SC.Logger.fallBackOnLog} is true.
288
219
 
289
220
  @param {String|Array|Function|Object}
290
- @returns {Boolean} true if logged to reporter, false if not
221
+ @returns {SC.Logger}
291
222
  */
292
223
  info: function() {
293
- var reporter = this.get('reporter');
294
-
295
- if (this.get('exists') && typeof(reporter.info) === "function") {
296
- reporter.info.apply(reporter, arguments);
297
- return true;
298
- }
299
- else if (this.fallBackOnLog) {
300
- var a = this._argumentsToArray(arguments);
301
- if (typeof(a.unshift) === "function") a.unshift(SC.LOGGER_LOG_INFO);
302
- return this.log.apply(this, a);
303
- }
304
- return false;
305
- },
306
-
307
- /**
308
- Begins the JavaScript profiler, if it exists. Call {@link SC.Logger.profileEnd}
309
- to end the profiling process and receive a report.
310
-
311
- @returns {Boolean} true if reporter.profile exists, false otherwise
312
- */
313
- profile: function() {
314
- var reporter = this.get('reporter');
315
-
316
- if (this.get('exists') && typeof(reporter.profile) === "function") {
317
- reporter.profile();
318
- return true;
319
- }
320
- return false;
321
- },
322
-
323
- /**
324
- Ends the JavaScript profiler, if it exists.
325
-
326
- @returns {Boolean} true if reporter.profileEnd exists, false otherwise
327
- @see SC.Logger.profile
328
- */
329
- profileEnd: function() {
330
- var reporter = this.get('reporter');
331
-
332
- if (this.get('exists') && typeof(reporter.profileEnd) === "function") {
333
- reporter.profileEnd();
334
- return true;
335
- }
336
- return false;
337
- },
338
-
339
- /**
340
- Measure the time between when this function is called and
341
- {@link SC.Logger.timeEnd} is called.
342
-
343
- @param {String} name The name of the profile to begin
344
- @returns {Boolean} true if reporter.time exists, false otherwise
345
- @see SC.Logger.timeEnd
346
- */
347
- time: function(name) {
348
- var reporter = this.get('reporter');
349
-
350
- if (this.get('exists') && typeof(reporter.time) === "function") {
351
- reporter.time(name);
352
- return true;
353
- }
354
- return false;
355
- },
356
-
357
- /**
358
- Ends the profile specified.
359
-
360
- @param {String} name The name of the profile to end
361
- @returns {Boolean} true if reporter.timeEnd exists, false otherwise
362
- @see SC.Logger.time
363
- */
364
- timeEnd: function(name) {
365
- var reporter = this.get('reporter');
366
-
367
- if (this.get('exists') && typeof(reporter.timeEnd) === "function") {
368
- reporter.timeEnd(name);
369
- return true;
370
- }
371
- return false;
372
- },
373
-
374
- /**
375
- Prints a stack-trace.
224
+ var reporters = this.get('reporters'),
225
+ args = SC.A(arguments),
226
+ f;
227
+
228
+ reporters.forEach(function(reporter) {
229
+ if (reporter.info !== undefined && reporter.info.apply !== undefined) {
230
+ f = reporter.info;
231
+ } else if (reporter.log !== undefined && reporter.log.apply !== undefined) {
232
+ args.unshift('INFO');
233
+ f = reporter.log;
234
+ } else if (this.get('fallBackOnAlert')) {
235
+ args.unshift('INFO');
236
+ f = alert;
237
+ }
376
238
 
377
- @returns {Boolean} true if reporter.trace exists, false otherwise
378
- */
379
- trace: function() {
380
- var reporter = this.get('reporter');
239
+ if (this.get('format')) args = [args.join(", ")];
240
+ f.apply(reporter, args);
241
+ }, this);
381
242
 
382
- if (this.get('exists') && typeof(reporter.trace) === "function") {
383
- reporter.trace();
384
- return true;
385
- }
386
- return false;
243
+ return this;
387
244
  },
388
245
 
389
246
  /**
@@ -393,60 +250,33 @@ SC.Logger = SC.Object.create({
393
250
  {@link SC.Logger.fallBackOnLog} is true.
394
251
 
395
252
  @param {String|Array|Function|Object}
396
- @returns {Boolean} true if logged to reporter, false if not
253
+ @returns {SC.Logger}
397
254
  */
398
255
  warn: function() {
399
- var reporter = this.get('reporter');
400
-
401
- if (this.get('exists') && typeof(reporter.warn) === "function") {
402
- reporter.warn.apply(reporter, arguments);
403
- return true;
404
- }
405
- else if (this.fallBackOnLog) {
406
- var a = this._argumentsToArray(arguments);
407
- if (typeof(a.unshift) === "function") a.unshift(SC.LOGGER_LOG_WARN);
408
- return this.log.apply(this, a);
409
- }
410
- return false;
411
- },
412
-
413
- // ..........................................................
414
- // INTERNAL SUPPORT
415
- //
416
-
417
- /**
418
- @private
419
-
420
- The arguments function property doesn't support Array#unshift. This helper
421
- copies the elements of arguments to a blank array.
422
-
423
- @param {Array} arguments The arguments property of a function
424
- @returns {Array} An array containing the elements of arguments parameter
425
- */
426
- _argumentsToArray: function(args) {
427
- if (!args) return [];
428
- var a = [];
429
- for (var i = 0; i < args.length; i++) {
430
- a[i] = args[i];
431
- }
432
- return a;
433
- },
434
-
435
- /**
436
- @private
256
+ var reporters = this.get('reporters'),
257
+ args = SC.A(arguments),
258
+ f;
259
+
260
+ reporters.forEach(function(reporter) {
261
+ if (reporter.warn !== undefined && reporter.warn.apply !== undefined) {
262
+ f = reporter.warn;
263
+ } else if (reporter.log !== undefined && reporter.log.apply !== undefined) {
264
+ args.unshift('WARN');
265
+ f = reporter.log;
266
+ } else if (this.get('fallBackOnAlert')) {
267
+ args.unshift('WARN');
268
+ f = alert;
269
+ }
437
270
 
438
- Formats the arguments array of a function by creating a string
439
- with SC.LOGGER_LOG_DELIMITER between the elements.
271
+ if (this.get('format')) args = [args.join(", ")];
272
+ f.apply(reporter, args);
273
+ }, this);
440
274
 
441
- @returns {String} A string of formatted arguments
442
- */
443
- _argumentsToString: function() {
444
- var s = "";
445
- for (var i = 0; i<arguments.length - 1; i++) {
446
- s += arguments[i] + SC.LOGGER_LOG_DELIMITER;
447
- }
448
- s += arguments[arguments.length-1];
449
- return s;
275
+ return this;
450
276
  }
451
277
 
452
278
  });
279
+
280
+ SC.log = function() {
281
+ return SC.Logger.log.apply(SC.Logger, arguments);
282
+ };