opal 0.1.0 → 0.2.0

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 (255) hide show
  1. data/.gitignore +0 -0
  2. data/.gitmodules +6 -0
  3. data/Opalfile +14 -1
  4. data/README.md +3 -44
  5. data/Rakefile +39 -131
  6. data/VERSION +1 -1
  7. data/extras/compiler.jar +0 -0
  8. data/gen/browser/__PROJECT_NAME__/Rakefile +12 -0
  9. data/gen/browser/__PROJECT_NAME__/index.html +1 -0
  10. data/gen/browser/__PROJECT_NAME__/javascripts/opal.debug.js +4687 -0
  11. data/gen/browser/__PROJECT_NAME__/javascripts/opal.min.js +175 -0
  12. data/lib/opal.rb +1 -0
  13. data/lib/opal/models/project.rb +45 -8
  14. data/lib/opal/opal/build.rb +169 -0
  15. data/lib/opal/opal/env/fs.rb +1 -1
  16. data/lib/opal/opal/environment.rb +2 -2
  17. data/lib/opal/opal/opal.rb +10 -3
  18. data/lib/opal/rake/opal_task.rb +34 -0
  19. data/opal.gemspec +260 -0
  20. data/opals/opal/README.md +37 -0
  21. data/opals/opal/Rakefile +1 -0
  22. data/opals/{browser → opal/browser}/Opalfile +0 -0
  23. data/opals/{browser → opal/browser}/README.md +0 -0
  24. data/opals/{browser → opal/browser}/SIZZLE_LICESNSE.txt +0 -0
  25. data/opals/{browser → opal/browser}/lib/browser.rb +0 -0
  26. data/opals/{browser → opal/browser}/lib/browser/builder.rb +0 -0
  27. data/opals/{browser → opal/browser}/lib/browser/canvas_context.rb +0 -0
  28. data/opals/{browser → opal/browser}/lib/browser/dimensions.rb +0 -0
  29. data/opals/{browser → opal/browser}/lib/browser/document.rb +0 -0
  30. data/opals/{browser → opal/browser}/lib/browser/element.rb +0 -0
  31. data/opals/{browser → opal/browser}/lib/browser/element/attributes.rb +0 -0
  32. data/opals/{browser → opal/browser}/lib/browser/element/css.rb +0 -0
  33. data/opals/{browser → opal/browser}/lib/browser/element/form.rb +0 -0
  34. data/opals/{browser → opal/browser}/lib/browser/event/dom_events.rb +0 -0
  35. data/opals/{browser → opal/browser}/lib/browser/event/event.rb +0 -0
  36. data/opals/{browser → opal/browser}/lib/browser/event/trigger_events.rb +0 -0
  37. data/opals/{browser → opal/browser}/lib/browser/geometry.rb +0 -0
  38. data/opals/{browser → opal/browser}/lib/browser/json.rb +0 -0
  39. data/opals/{browser → opal/browser}/lib/browser/json_parse.js +0 -0
  40. data/opals/{browser → opal/browser}/lib/browser/request/request.rb +0 -0
  41. data/opals/{browser → opal/browser}/lib/browser/sizzle.js +0 -0
  42. data/opals/{browser → opal/browser}/lib/browser/string.rb +0 -0
  43. data/opals/{browser → opal/browser}/lib/browser/touch.rb +0 -0
  44. data/opals/{browser → opal/browser}/lib/browser/vml_context.js +0 -0
  45. data/opals/{browser → opal/browser}/lib/browser/window.rb +0 -0
  46. data/opals/{browser → opal/browser}/spec/browser/browser_detection_spec.rb +0 -0
  47. data/opals/{browser → opal/browser}/spec/document/aref_spec.rb +0 -0
  48. data/opals/{browser → opal/browser}/spec/document/ready_spec.rb +0 -0
  49. data/opals/{browser → opal/browser}/spec/element/body_spec.rb +0 -0
  50. data/opals/{browser → opal/browser}/spec/element/clear_spec.rb +0 -0
  51. data/opals/{browser → opal/browser}/spec/element/empty_spec.rb +0 -0
  52. data/opals/{browser → opal/browser}/spec/element/has_class_spec.rb +0 -0
  53. data/opals/{browser → opal/browser}/spec/element/hidden_spec.rb +0 -0
  54. data/opals/{browser → opal/browser}/spec/element/hide_spec.rb +0 -0
  55. data/opals/{browser → opal/browser}/spec/element/remove_spec.rb +0 -0
  56. data/opals/{browser → opal/browser}/spec/element/show_spec.rb +0 -0
  57. data/opals/{browser → opal/browser}/spec/element/style_spec.rb +0 -0
  58. data/opals/{browser → opal/browser}/spec/element/toggle_spec.rb +0 -0
  59. data/opals/{browser → opal/browser}/spec/element/visible_spec.rb +0 -0
  60. data/opals/{browser → opal/browser}/spec/spec_helper.rb +0 -0
  61. data/opals/opal/{Opalfile → opal/Opalfile} +0 -0
  62. data/opals/opal/{spec → opal/spec}/core/array/append_spec.rb +0 -0
  63. data/opals/opal/{spec → opal/spec}/core/array/assoc_spec.rb +0 -0
  64. data/opals/opal/{spec → opal/spec}/core/array/at_spec.rb +0 -0
  65. data/opals/opal/{spec → opal/spec}/core/array/clear_spec.rb +0 -0
  66. data/opals/opal/{spec → opal/spec}/core/array/collect_bang_spec.rb +0 -0
  67. data/opals/opal/{spec → opal/spec}/core/array/collect_spec.rb +0 -0
  68. data/opals/opal/{spec → opal/spec}/core/array/compact_spec.rb +0 -0
  69. data/opals/opal/{spec → opal/spec}/core/array/concat_spec.rb +0 -0
  70. data/opals/opal/{spec → opal/spec}/core/array/constructor_spec.rb +0 -0
  71. data/opals/opal/{spec → opal/spec}/core/array/each_spec.rb +0 -0
  72. data/opals/opal/{spec → opal/spec}/core/array/element_reference_spec.rb +0 -0
  73. data/opals/opal/{spec → opal/spec}/core/array/first_spec.rb +0 -0
  74. data/opals/opal/{spec → opal/spec}/core/array/include_spec.rb +0 -0
  75. data/opals/opal/{spec → opal/spec}/core/array/map_spec.rb +0 -0
  76. data/opals/opal/{spec → opal/spec}/core/builtin_constants/builtin_constants_spec.rb +0 -0
  77. data/opals/opal/{spec → opal/spec}/core/false/and_spec.rb +0 -0
  78. data/opals/opal/{spec → opal/spec}/core/false/inspect_spec.rb +0 -0
  79. data/opals/opal/{spec → opal/spec}/core/false/or_spec.rb +0 -0
  80. data/opals/opal/{spec → opal/spec}/core/false/to_s_spec.rb +0 -0
  81. data/opals/opal/{spec → opal/spec}/core/false/xor_spec.rb +0 -0
  82. data/opals/opal/{spec → opal/spec}/core/file/join_spec.rb +0 -0
  83. data/opals/opal/{spec → opal/spec}/core/kernel/instance_eval_spec.rb +0 -0
  84. data/opals/opal/{spec → opal/spec}/core/kernel/loop_spec.rb +0 -0
  85. data/opals/opal/{spec → opal/spec}/core/kernel/raise_spec.rb +0 -0
  86. data/opals/opal/{spec → opal/spec}/core/module/attr_accessor_spec.rb +0 -0
  87. data/opals/opal/{spec → opal/spec}/core/number/lt_spec.rb +0 -0
  88. data/opals/opal/{spec → opal/spec}/core/true/and_spec.rb +0 -0
  89. data/opals/opal/{spec → opal/spec}/core/true/inspect_spec.rb +0 -0
  90. data/opals/opal/{spec → opal/spec}/core/true/or_spec.rb +0 -0
  91. data/opals/opal/{spec → opal/spec}/core/true/to_s_spec.rb +0 -0
  92. data/opals/opal/{spec → opal/spec}/core/true/xor_spec.rb +0 -0
  93. data/opals/opal/{spec → opal/spec}/fixtures/super.rb +0 -0
  94. data/opals/opal/{spec → opal/spec}/language/____temp_remove_this.rb +0 -0
  95. data/opals/opal/{spec → opal/spec}/language/and_spec.rb +0 -0
  96. data/opals/opal/{spec → opal/spec}/language/array_spec.rb +0 -0
  97. data/opals/opal/{spec → opal/spec}/language/block_spec.rb +0 -0
  98. data/opals/opal/{spec → opal/spec}/language/break_spec.rb +0 -0
  99. data/opals/opal/{spec → opal/spec}/language/case_spec.rb +0 -0
  100. data/opals/opal/{spec → opal/spec}/language/def_spec.rb +0 -0
  101. data/opals/opal/{spec → opal/spec}/language/eigenclass_spec.rb +0 -0
  102. data/opals/opal/{spec → opal/spec}/language/hash_spec.rb +0 -0
  103. data/opals/opal/{spec → opal/spec}/language/if_spec.rb +0 -0
  104. data/opals/opal/{spec → opal/spec}/language/loop_spec.rb +0 -0
  105. data/opals/opal/{spec → opal/spec}/language/metaclass_spec.rb +0 -0
  106. data/opals/opal/{spec → opal/spec}/language/method_spec.rb +0 -0
  107. data/opals/opal/{spec → opal/spec}/language/next_spec.rb +0 -0
  108. data/opals/opal/{spec → opal/spec}/language/or_spec.rb +0 -0
  109. data/opals/opal/{spec → opal/spec}/language/redo_spec.rb +0 -0
  110. data/opals/opal/{spec → opal/spec}/language/rescue_spec.rb +0 -0
  111. data/opals/opal/{spec → opal/spec}/language/return_spec.rb +0 -0
  112. data/opals/opal/{spec → opal/spec}/language/string_spec.rb +0 -0
  113. data/opals/opal/{spec → opal/spec}/language/super_spec.rb +0 -0
  114. data/opals/opal/{spec → opal/spec}/language/until_spec.rb +0 -0
  115. data/opals/opal/{spec → opal/spec}/language/while_spec.rb +0 -0
  116. data/opals/opal/{spec → opal/spec}/spec_helper.rb +0 -0
  117. data/opals/{runtime → opal/runtime}/Opalfile +10 -0
  118. data/opals/{runtime → opal/runtime}/README.md +0 -0
  119. data/opals/{runtime → opal/runtime}/docs/debugging.md +0 -0
  120. data/opals/{runtime → opal/runtime}/lib/array.rb +0 -0
  121. data/opals/{runtime → opal/runtime}/lib/basic_object.rb +0 -0
  122. data/opals/{runtime → opal/runtime}/lib/class.rb +0 -0
  123. data/opals/{runtime → opal/runtime}/lib/dir.rb +0 -0
  124. data/opals/{runtime → opal/runtime}/lib/error.rb +0 -0
  125. data/opals/{runtime → opal/runtime}/lib/false_class.rb +0 -0
  126. data/opals/{runtime → opal/runtime}/lib/file.rb +0 -0
  127. data/opals/{runtime → opal/runtime}/lib/hash.rb +0 -0
  128. data/opals/{runtime → opal/runtime}/lib/io.rb +0 -0
  129. data/opals/{runtime → opal/runtime}/lib/kernel.rb +0 -0
  130. data/opals/{runtime → opal/runtime}/lib/match_data.rb +0 -0
  131. data/opals/{runtime → opal/runtime}/lib/module.rb +0 -0
  132. data/opals/{runtime → opal/runtime}/lib/nil_class.rb +0 -0
  133. data/opals/{runtime → opal/runtime}/lib/number.rb +0 -0
  134. data/opals/{runtime → opal/runtime}/lib/proc.rb +0 -0
  135. data/opals/{runtime → opal/runtime}/lib/range.rb +0 -0
  136. data/opals/{runtime → opal/runtime}/lib/regexp.rb +0 -0
  137. data/opals/{runtime → opal/runtime}/lib/ruby.rb +0 -0
  138. data/opals/{runtime → opal/runtime}/lib/string.rb +0 -0
  139. data/opals/{runtime → opal/runtime}/lib/symbol.rb +0 -0
  140. data/opals/{runtime → opal/runtime}/lib/top_self.rb +0 -0
  141. data/opals/{runtime → opal/runtime}/lib/true_class.rb +0 -0
  142. data/opals/{runtime → opal/runtime}/runtime/browser.js +0 -0
  143. data/opals/{runtime → opal/runtime}/runtime/debug.js +0 -2
  144. data/opals/{runtime → opal/runtime}/runtime/opal.js +0 -2
  145. data/opals/{runtime → opal/runtime}/runtime/post_opal.js +0 -0
  146. data/opals/{runtime → opal/runtime}/runtime/pre_opal.js +0 -0
  147. data/opals/{runtime → opal/runtime}/runtime/server_side.js +0 -0
  148. data/opals/{spec → opal/spec}/LICENSE.txt +0 -0
  149. data/opals/{spec → opal/spec}/Opalfile +0 -0
  150. data/opals/{spec → opal/spec}/bin/spec.rb +0 -0
  151. data/opals/{spec → opal/spec}/lib/spec.rb +0 -0
  152. data/opals/{spec → opal/spec}/lib/spec/dsl.rb +0 -0
  153. data/opals/{spec → opal/spec}/lib/spec/example.rb +0 -0
  154. data/opals/{spec → opal/spec}/lib/spec/example/before_and_after_hooks.rb +0 -0
  155. data/opals/{spec → opal/spec}/lib/spec/example/errors.rb +0 -0
  156. data/opals/{spec → opal/spec}/lib/spec/example/example_group.rb +0 -0
  157. data/opals/{spec → opal/spec}/lib/spec/example/example_group_factory.rb +0 -0
  158. data/opals/{spec → opal/spec}/lib/spec/example/example_group_hierarchy.rb +0 -0
  159. data/opals/{spec → opal/spec}/lib/spec/example/example_group_methods.rb +0 -0
  160. data/opals/{spec → opal/spec}/lib/spec/example/example_group_proxy.rb +0 -0
  161. data/opals/{spec → opal/spec}/lib/spec/example/example_methods.rb +0 -0
  162. data/opals/{spec → opal/spec}/lib/spec/example/example_proxy.rb +0 -0
  163. data/opals/{spec → opal/spec}/lib/spec/expectations.rb +0 -0
  164. data/opals/{spec → opal/spec}/lib/spec/expectations/errors.rb +0 -0
  165. data/opals/{spec → opal/spec}/lib/spec/expectations/fail_with.rb +0 -0
  166. data/opals/{spec → opal/spec}/lib/spec/expectations/handler.rb +0 -0
  167. data/opals/{spec → opal/spec}/lib/spec/matchers.rb +0 -0
  168. data/opals/{spec → opal/spec}/lib/spec/matchers/be.rb +0 -0
  169. data/opals/{spec → opal/spec}/lib/spec/matchers/generated_descriptions.rb +0 -0
  170. data/opals/{spec → opal/spec}/lib/spec/matchers/operator_matcher.rb +0 -0
  171. data/opals/{spec → opal/spec}/lib/spec/runner.rb +0 -0
  172. data/opals/{spec → opal/spec}/lib/spec/runner/example_group_runner.rb +0 -0
  173. data/opals/{spec → opal/spec}/lib/spec/runner/formatter/html_formatter.rb +0 -0
  174. data/opals/{spec → opal/spec}/lib/spec/runner/formatter/terminal_formatter.rb +0 -0
  175. data/opals/{spec → opal/spec}/lib/spec/runner/options.rb +0 -0
  176. data/opals/{spec → opal/spec}/lib/spec/runner/reporter.rb +0 -0
  177. data/opals/{spec → opal/spec}/resources/index.html +0 -0
  178. data/opals/{spec → opal/spec}/resources/spec.css +0 -0
  179. metadata +170 -238
  180. data/opals/aristo/README.md +0 -16
  181. data/opals/cherry_kit/Opalfile +0 -6
  182. data/opals/cherry_kit/bin/cherry_kit.rb +0 -11
  183. data/opals/cherry_kit/lib/cherry_kit.rb +0 -29
  184. data/opals/foundation/Opalfile +0 -11
  185. data/opals/foundation/bin/foundation.rb +0 -12
  186. data/opals/foundation/lib/foundation.rb +0 -32
  187. data/opals/foundation/lib/foundation/__table_view_desktop/outline_view.rb +0 -57
  188. data/opals/foundation/lib/foundation/__table_view_desktop/table_column.rb +0 -59
  189. data/opals/foundation/lib/foundation/__table_view_desktop/table_header_view.rb +0 -34
  190. data/opals/foundation/lib/foundation/__table_view_desktop/table_view.rb +0 -304
  191. data/opals/foundation/lib/foundation/controllers/array_controller.rb +0 -54
  192. data/opals/foundation/lib/foundation/controllers/controller.rb +0 -74
  193. data/opals/foundation/lib/foundation/controllers/controller_selection_proxy.rb +0 -67
  194. data/opals/foundation/lib/foundation/controllers/object_controller.rb +0 -145
  195. data/opals/foundation/lib/foundation/controllers/view.rb +0 -40
  196. data/opals/foundation/lib/foundation/core/application.rb +0 -476
  197. data/opals/foundation/lib/foundation/core/attributes.rb +0 -146
  198. data/opals/foundation/lib/foundation/core/bindings.rb +0 -125
  199. data/opals/foundation/lib/foundation/core/builder.rb +0 -101
  200. data/opals/foundation/lib/foundation/core/event.rb +0 -112
  201. data/opals/foundation/lib/foundation/core/index_path.rb +0 -49
  202. data/opals/foundation/lib/foundation/core/index_set.rb +0 -97
  203. data/opals/foundation/lib/foundation/core/notification.rb +0 -113
  204. data/opals/foundation/lib/foundation/core/observable.rb +0 -275
  205. data/opals/foundation/lib/foundation/core/observable_array.rb +0 -30
  206. data/opals/foundation/lib/foundation/core/responder.rb +0 -85
  207. data/opals/foundation/lib/foundation/core/run_loop.rb +0 -89
  208. data/opals/foundation/lib/foundation/core/touch.rb +0 -95
  209. data/opals/foundation/lib/foundation/gestures/gesture_recognizer.rb +0 -35
  210. data/opals/foundation/lib/foundation/rendering/render_context.rb +0 -100
  211. data/opals/foundation/lib/foundation/rendering/renderer.rb +0 -137
  212. data/opals/foundation/lib/foundation/rendering/root_theme.rb +0 -77
  213. data/opals/foundation/lib/foundation/rendering/root_theme/button.rb +0 -62
  214. data/opals/foundation/lib/foundation/rendering/root_theme/control.rb +0 -72
  215. data/opals/foundation/lib/foundation/rendering/root_theme/label.rb +0 -54
  216. data/opals/foundation/lib/foundation/rendering/root_theme/scroller.rb +0 -58
  217. data/opals/foundation/lib/foundation/rendering/root_theme/slider.rb +0 -72
  218. data/opals/foundation/lib/foundation/rendering/root_theme/table_view.rb +0 -97
  219. data/opals/foundation/lib/foundation/rendering/root_theme/text_field.rb +0 -55
  220. data/opals/foundation/lib/foundation/rendering/root_theme/view.rb +0 -81
  221. data/opals/foundation/lib/foundation/rendering/theme.rb +0 -38
  222. data/opals/foundation/lib/foundation/table_view/cell.rb +0 -39
  223. data/opals/foundation/lib/foundation/table_view/table.rb +0 -171
  224. data/opals/foundation/lib/foundation/views/button.rb +0 -63
  225. data/opals/foundation/lib/foundation/views/checkbox.rb +0 -28
  226. data/opals/foundation/lib/foundation/views/clip.rb +0 -47
  227. data/opals/foundation/lib/foundation/views/control.rb +0 -199
  228. data/opals/foundation/lib/foundation/views/label.rb +0 -54
  229. data/opals/foundation/lib/foundation/views/scroll.rb +0 -294
  230. data/opals/foundation/lib/foundation/views/scroll_view_desktop.rb +0 -152
  231. data/opals/foundation/lib/foundation/views/scroller.rb +0 -54
  232. data/opals/foundation/lib/foundation/views/slider.rb +0 -93
  233. data/opals/foundation/lib/foundation/views/text_field.rb +0 -83
  234. data/opals/foundation/lib/foundation/views/view.rb +0 -426
  235. data/opals/foundation/lib/foundation/windows/window.rb +0 -191
  236. data/opals/foundation/resources/button/button.css +0 -23
  237. data/opals/foundation/resources/foundation.css +0 -53
  238. data/opals/foundation/resources/scroll/scroll.css +0 -22
  239. data/opals/foundation/resources/scroll_view/scroll_view.css +0 -3
  240. data/opals/foundation/resources/scroll_view/scroller.css +0 -3
  241. data/opals/foundation/resources/slider/regular/slider.css +0 -3
  242. data/opals/foundation/resources/slider/slider.css +0 -27
  243. data/opals/foundation/resources/table_view/outline_view.css +0 -3
  244. data/opals/foundation/resources/table_view/table_view.css +0 -15
  245. data/opals/foundation/resources/text_field/text_field.css +0 -71
  246. data/opals/foundation/spec/spec_helper.rb +0 -1
  247. data/opals/foundation/spec/system/attributes/get_attribute_spec.rb +0 -69
  248. data/opals/foundation/spec/system/attributes/get_path_spec.rb +0 -44
  249. data/opals/foundation/spec/system/attributes/set_path_spec.rb +0 -24
  250. data/opals/foundation/spec/system/attributes/set_spec.rb +0 -58
  251. data/opals/foundation/spec/system/bindings/bindings.rb +0 -85
  252. data/opals/foundation/spec/system/key_value_binding/bind_spec.rb +0 -43
  253. data/opals/foundation/spec/system/observable/dependant_keys_spec.rb +0 -74
  254. data/opals/foundation/spec/system/observable/observe_spec.rb +0 -292
  255. data/opals/foundation/spec/system/observable/remove_observer_spec.rb +0 -60
@@ -1,44 +0,0 @@
1
- class KVCPathTestA
2
- attr_accessor :part_b
3
- end
4
-
5
- class KVCPathTestB
6
- attr_accessor :part_c
7
- end
8
-
9
- class KVCPathTestC
10
- attr_accessor :first_name
11
- end
12
-
13
-
14
- describe "Attributes#get_path" do
15
-
16
- it "should call regular value_for_key when no dot-splitter detected" do
17
- a = KVCPathTestA.new
18
- b = KVCPathTestB.new
19
- a.part_b = b
20
- a.get_path('part_b').should == b
21
- end
22
-
23
- it "should split the path for paths which are dot seperated" do
24
- a = KVCPathTestA.new
25
- b = KVCPathTestB.new
26
- c = KVCPathTestC.new
27
-
28
- a.part_b = b
29
- b.part_c = c
30
- c.first_name = "adam"
31
-
32
- a.get_path('part_b.part_c').should == c
33
- a.get_path('part_b.part_c.first_name').should == "adam"
34
- end
35
-
36
- it "should eventually return nil if nil is encountered anywhere along path" do
37
- nil.get_path('a.b.c.d.e').should == nil
38
-
39
- c = KVCPathTestC.new
40
- c.first_name = nil
41
- c.get_path('first_name.second_name').should == nil
42
-
43
- end
44
- end
@@ -1,24 +0,0 @@
1
-
2
- describe "Attributes#set_path" do
3
-
4
- it "should call regular set_path when no dot used in path" do
5
- a = KVCPathTestA.new
6
- b = KVCPathTestB.new
7
- a.set_path 'part_b', b
8
- a.part_b.should == b
9
- end
10
-
11
- it "should split the path for dot seperated keys, using the last part to set the key" do
12
- a = KVCPathTestA.new
13
- b = KVCPathTestB.new
14
- c = KVCPathTestC.new
15
-
16
- a.set_path 'part_b', b
17
- a.set_path 'part_b.part_c', c
18
- a.set_path 'part_b.part_c.first_name', "adam"
19
-
20
- a.get_path('part_b').should == b
21
- a.get_path('part_b.part_c').should == c
22
- a.get_path('part_b.part_c.first_name').should == "adam"
23
- end
24
- end
@@ -1,58 +0,0 @@
1
-
2
- class KVCSettingTest
3
-
4
- def initialize
5
- @ivar_key = 200
6
- @ivar_key_array = []
7
- end
8
-
9
- def will_change_attribute(key)
10
- @ivar_key_array << :will
11
- @ivar_key_array << key
12
- end
13
-
14
- def did_change_attribute(key)
15
- @ivar_key_array << :did
16
- @ivar_key_array << key
17
- end
18
-
19
- def ivar_key_array
20
- @ivar_key_array
21
- end
22
-
23
- def ivar_key
24
- @ivar_key
25
- end
26
- end
27
-
28
- class KVCSettingTest2
29
-
30
- def first_name=(first_name)
31
- @first_name = "set_kvc_style_#{first_name}"
32
- end
33
-
34
- def first_name
35
- @first_name
36
- end
37
- end
38
-
39
- describe "Attributes#set_attribute" do
40
-
41
- it "should call KVO observer methods when setting an ivar" do
42
- a = KVCSettingTest.new
43
- a.set_attribute 'ivar_key', 100
44
- a.ivar_key_array.should == [:will, 'ivar_key', :did, 'ivar_key']
45
- a.ivar_key.should == 100
46
- end
47
-
48
- it "should use the designated setter when available" do
49
- a = KVCSettingTest2.new
50
- a.set_attribute 'first_name', "adam"
51
- a.first_name.should == "set_kvc_style_adam"
52
- end
53
-
54
- it "should raise an error when trying to set an unknown key" do
55
- a = KVCSettingTest2.new
56
- a.set_attribute 'some_random_key_name', 200
57
- end
58
- end
@@ -1,85 +0,0 @@
1
- class BindingsSpecEmail
2
-
3
- attr_accessor :properties
4
-
5
- def initialize
6
- @properties = {
7
- :address => "test@test.com",
8
- :subject => "Subject",
9
- :date => "Date..",
10
- :body => ""
11
- }
12
- end
13
- end
14
-
15
- class BindingsSpecMailbox
16
-
17
- attr_accessor :properties, :emails
18
-
19
- def initialize
20
- @properties = { :title => "New Mailbox " }
21
- @emails = []
22
- end
23
- end
24
-
25
- class BindingsSpecController
26
-
27
- def initialize
28
- @mailboxes = [1, 2, 3, 4]
29
- end
30
-
31
- attr_accessor :mailboxes
32
-
33
- def add_email(sender)
34
-
35
- end
36
-
37
- def add_mailbox(sender)
38
-
39
- end
40
-
41
- def remove_email(sender)
42
-
43
- end
44
-
45
- def remove_mailbox(sender)
46
-
47
- end
48
- end
49
-
50
- describe "Bindings Spec Coded demo" do
51
-
52
- it "should all be ok" do
53
- controller = BindingsSpecController.new
54
- # puts "making controller alias"
55
- controller_alias = CherryKit::ObjectController.new
56
- puts "going to set content"
57
- # `console.log(#{controller});`
58
- controller_alias.content = controller
59
- puts "did set content"
60
- # setup mailboxes array controller
61
- mailboxes = CherryKit::ArrayController.new
62
- mailboxes.bind :content_array,
63
- :to => controller_alias,
64
- :path => 'selection.mailboxes'
65
-
66
- mailboxes.object_class = BindingsSpecMailbox
67
-
68
- puts "mailboxes array controller:"
69
- `console.log(#{mailboxes.content_array});`
70
-
71
- # `console.log(#{controller_alias});`
72
- puts "setting mailboxes!"
73
- controller.mailboxes = [5, 6, 7, 8]
74
- puts "mailboxes array controller after change:"
75
- `console.log(#{mailboxes.content_array});`
76
-
77
- # setup emails array controller
78
- # emails = CherryKit::ArrayController.new
79
- # emails.bind :content_array,
80
- # :to => mailboxes,
81
- # :path => 'selection.emails'
82
- #
83
- # emails.object_class = BindingsSpecEmail
84
- end
85
- end
@@ -1,43 +0,0 @@
1
-
2
- class KVBTesterA
3
-
4
- attr_accessor :first_name
5
-
6
- end
7
-
8
- class KVBTesterB
9
-
10
- attr_reader :my_name
11
-
12
- def initialize
13
- @my_name = "Jon Stewart"
14
- end
15
-
16
- end
17
-
18
- describe "KeyValueBinding#bind_to" do
19
-
20
- it "show allow bindings to be exposed" do
21
- KVBTesterA.expose_binding :foo_test
22
- KVBTesterA.expose_binding :bar_test
23
-
24
- KVBTesterA.new.respond_to?(:foo_test_binding=).should == true
25
- KVBTesterA.new.respond_to?(:bar_test_binding=).should == true
26
- end
27
-
28
- it "should propogate KVC compliant chnages to bound objects" do
29
- a = KVBTesterA.new
30
- b = KVBTesterB.new
31
-
32
- a.first_name = "Roger"
33
-
34
- b.bind :my_name, :to => a, :path => :first_name
35
-
36
- b.my_name.should == "Roger"
37
-
38
- a.first_name = "Adam Beynon"
39
-
40
- b.my_name.should == "Adam Beynon"
41
- end
42
-
43
- end
@@ -1,74 +0,0 @@
1
-
2
- class DependantKeysTest
3
-
4
- attr_reader :a, :b, :c
5
-
6
- keys_affecting :a => [:b, :c]
7
-
8
- def initialize
9
- @a = "a"
10
- @b = "b"
11
- @c = "c"
12
- end
13
-
14
- def a=(a)
15
- @a = a
16
- end
17
-
18
- def a
19
- "#{@a}_#{b}_#{c}"
20
- end
21
-
22
- def b=(b)
23
- @b = b
24
- end
25
-
26
- def c=(c)
27
- @c = c
28
- end
29
- end
30
-
31
- describe "KeyValueObserving#keys_affecting" do
32
-
33
- it "should notify observer when an affecting key is changed" do
34
- # puts "==================================================================="
35
- obj = DependantKeysTest.new
36
-
37
- capture_a = nil
38
-
39
- notification_count = 0
40
-
41
- notifications = []
42
-
43
- obj.observe :a do |changes|
44
- notifications << :a
45
- capture_a = obj.a
46
- notification_count = notification_count + 1
47
- end
48
-
49
- obj.observe :b do |changes|
50
- notifications << :b
51
- end
52
-
53
- obj.observe :c do |changes|
54
- notifications << :c
55
- end
56
-
57
- obj.a = "adam"
58
- capture_a.should == "adam_b_c"
59
- notification_count.should == 1
60
- notifications.should == [:a]
61
-
62
- notifications = []
63
- obj.b = "tom"
64
- capture_a.should == "adam_tom_c"
65
- notification_count.should == 2
66
- notifications.should == [:b, :a]
67
-
68
- notifications = []
69
- obj.c = "ben"
70
- capture_a.should == "adam_tom_ben"
71
- notification_count.should == 3
72
- notifications.should == [:c, :a]
73
- end
74
- end
@@ -1,292 +0,0 @@
1
- class KVOTestSimple
2
-
3
- attr_reader :first_name
4
-
5
- attr_accessor :second_name
6
-
7
- def initialize
8
- @some_ivar_we_can_set = nil
9
- end
10
-
11
- def first_name=(first_name)
12
- @first_name = "setting_#{first_name}"
13
- end
14
-
15
- end
16
-
17
-
18
- class KVOMultipartClass
19
- attr_accessor :teacher, :students
20
- end
21
-
22
- class KVOMultipartPerson
23
- attr_accessor :name, :car
24
- end
25
-
26
- class KVOMultipartCar
27
- attr_accessor :model
28
- end
29
-
30
-
31
- class KVOTestRepeaterA
32
- attr_accessor :b
33
- end
34
-
35
- class KVOTestRepeaterB
36
- attr_accessor :c
37
- end
38
-
39
- class KVOTestRepeaterC
40
- attr_accessor :d
41
- end
42
-
43
- class KVOTestRepeaterD
44
- attr_accessor :e
45
- end
46
-
47
- class KVOTestRepeaterE
48
- attr_accessor :f
49
- end
50
-
51
- class KVOTestRepeaterF
52
- attr_accessor :g
53
- end
54
-
55
- describe "Observable#observe" do
56
-
57
- it "should allow a simple observer to be added" do
58
- a = KVOTestSimple.new
59
-
60
- old_value = nil
61
- new_value = nil
62
- did_see_notification = false
63
-
64
- a.observe :first_name do |changes|
65
- did_see_notification = true
66
- old_value = changes[:old]
67
- new_value = changes[:new]
68
- end
69
-
70
- a.first_name = 'adam'
71
- a.first_name.should == 'setting_adam'
72
-
73
- did_see_notification.should == true
74
-
75
- old_value.should == nil
76
- new_value.should == 'setting_adam'
77
- end
78
-
79
-
80
-
81
- it "should only observe and post notifications for observed keys" do
82
- b = KVOTestSimple.new
83
-
84
- did_see_notification = false
85
-
86
- b.observe :first_name do |changes|
87
- did_see_notification = true
88
- end
89
-
90
- b.second_name = "adam"
91
- b.second_name.should == "adam"
92
- did_see_notification.should == false
93
-
94
- end
95
-
96
-
97
-
98
- it "should allow multiple observers for a single key" do
99
- c = KVOTestSimple.new
100
- d = KVOTestSimple.new
101
-
102
- first_saw = false
103
- second_saw = false
104
-
105
- c.observe :first_name do |changes|
106
- first_saw = true
107
- end
108
-
109
- c.observe :first_name do |changes|
110
- second_saw = true
111
- end
112
-
113
- c.first_name = "some_name"
114
- c.first_name.should == "setting_some_name"
115
-
116
- first_saw.should == true
117
- second_saw.should == true
118
-
119
- end
120
-
121
-
122
-
123
- it "should be possible to observe instance variables" do
124
- e = KVOTestSimple.new
125
-
126
- old_value = nil
127
- new_value = nil
128
- did_see_notification = false
129
-
130
- e.observe :some_ivar_we_can_set do |changes|
131
- did_see_notification = true
132
- old_value = changes[:old]
133
- new_value = changes[:new]
134
- end
135
-
136
- e.set_attribute :some_ivar_we_can_set, 200
137
-
138
- did_see_notification.should == true
139
- e.get_attribute(:some_ivar_we_can_set).should == 200
140
-
141
- old_value.should == nil
142
- new_value.should == 200
143
-
144
- end
145
-
146
-
147
-
148
- it "should allow observers for multipart keys" do
149
- the_class = KVOMultipartClass.new
150
- fred = KVOMultipartPerson.new
151
-
152
- the_class.teacher = fred
153
- did_see_observation = false
154
-
155
- the_class.observe 'teacher.name' do |change|
156
- did_see_observation = true
157
- end
158
-
159
- fred.name = "Fred"
160
-
161
- the_class.get_path('teacher.name').should == "Fred"
162
- did_see_observation.should == true
163
- end
164
-
165
-
166
-
167
- it "should allow a three part key" do
168
- cls = KVOMultipartClass.new
169
- fred = KVOMultipartPerson.new
170
- car = KVOMultipartCar.new
171
-
172
- did_see_observation = false
173
-
174
- cls.teacher = fred
175
- fred.car = car
176
-
177
- cls.observe('teacher.car.model') do |info|
178
- info[:path].should == "teacher.car.model"
179
- did_see_observation = true
180
- end
181
-
182
- car.model = "Jaguar"
183
-
184
- did_see_observation.should == true
185
- cls.teacher.car.model.should == "Jaguar"
186
- end
187
-
188
-
189
-
190
- it "should allow long observer paths" do
191
- a = KVOTestRepeaterA.new
192
- a.set_path 'b', KVOTestRepeaterB.new
193
- a.set_path 'b.c', KVOTestRepeaterC.new
194
- a.set_path 'b.c.d', KVOTestRepeaterD.new
195
- a.set_path 'b.c.d.e', KVOTestRepeaterE.new
196
- a.set_path 'b.c.d.e.f', KVOTestRepeaterF.new
197
- a.set_path 'b.c.d.e.f.g', "Hey G"
198
-
199
- a.b.c.d.e.f.g.should == "Hey G"
200
- did_see_observation = false
201
-
202
- a.observe('b.c.d.e.f.g') do |info|
203
- did_see_observation = true
204
-
205
- info[:path].should == 'b.c'
206
- info[:object].class.should == KVOTestRepeaterA
207
- end
208
-
209
- a.b.c = nil
210
- did_see_observation.should == true
211
-
212
- end
213
-
214
-
215
-
216
- it "should allow long observer paths, part2" do
217
- a = KVOTestRepeaterA.new
218
- a.set_path 'b', KVOTestRepeaterB.new
219
- a.set_path 'b.c', KVOTestRepeaterC.new
220
- a.set_path 'b.c.d', KVOTestRepeaterD.new
221
- a.set_path 'b.c.d.e', KVOTestRepeaterE.new
222
- a.set_path 'b.c.d.e.f', KVOTestRepeaterF.new
223
- a.set_path 'b.c.d.e.f.g', "Hey G"
224
-
225
- did_see_observation = false
226
-
227
- a.observe('b.c.d.e.f.g') do |info|
228
- did_see_observation = true
229
-
230
- info[:path].should == 'b.c.d'
231
- info[:object].class.should == KVOTestRepeaterA
232
- info[:new].should == nil
233
- end
234
-
235
- a.b.c.d = nil
236
- did_see_observation.should == true
237
-
238
- end
239
-
240
-
241
-
242
- it "should allow long observer paths, part3" do
243
- a = KVOTestRepeaterA.new
244
- a.set_path 'b', KVOTestRepeaterB.new
245
- a.set_path 'b.c', KVOTestRepeaterC.new
246
- a.set_path 'b.c.d', KVOTestRepeaterD.new
247
- a.set_path 'b.c.d.e', KVOTestRepeaterE.new
248
- a.set_path 'b.c.d.e.f', KVOTestRepeaterF.new
249
- a.set_path 'b.c.d.e.f.g', "Hey G"
250
-
251
- did_see_observation = false
252
-
253
- a.observe('b.c.d.e.f.g') do |info|
254
- did_see_observation = true
255
-
256
- info[:path].should == 'b.c.d.e.f.g'
257
- info[:object].class.should == KVOTestRepeaterA
258
- info[:new].should == 100
259
- end
260
-
261
- a.b.c.d.e.f.g = 100
262
- did_see_observation.should == true
263
-
264
- end
265
-
266
-
267
-
268
- it "should allow long observer paths, part3" do
269
- a = KVOTestRepeaterA.new
270
- a.set_path 'b', KVOTestRepeaterB.new
271
- a.set_path 'b.c', KVOTestRepeaterC.new
272
- a.set_path 'b.c.d', KVOTestRepeaterD.new
273
- a.set_path 'b.c.d.e', KVOTestRepeaterE.new
274
- a.set_path 'b.c.d.e.f', KVOTestRepeaterF.new
275
- a.set_path 'b.c.d.e.f.g', "Hey G"
276
-
277
- did_see_observation = false
278
-
279
- a.observe('b.c.d.e.f.g') do |info|
280
- did_see_observation = true
281
-
282
- info[:path].should == 'b'
283
- info[:object].class.should == KVOTestRepeaterA
284
- info[:new].should == 200
285
- end
286
-
287
- a.b = 200
288
- did_see_observation.should == true
289
-
290
- end
291
-
292
- end