opal 0.0.1 → 0.1.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 (306) hide show
  1. data/.gitignore +10 -1
  2. data/.gitmodules +0 -0
  3. data/Opalfile +371 -0
  4. data/README.md +45 -0
  5. data/Rakefile +237 -34
  6. data/VERSION +1 -1
  7. data/bin/opal +13 -0
  8. data/demos/apps/browser_demo/index.html +11 -0
  9. data/demos/apps/browser_demo/lib/browser_demo.rb +31 -0
  10. data/demos/apps/simple_opal/Opalfile +13 -0
  11. data/demos/apps/simple_opal/index.html +11 -0
  12. data/demos/apps/simple_opal/lib/app_controller.rb +62 -0
  13. data/demos/apps/simple_opal/lib/main_window.rb +146 -0
  14. data/demos/browser/request/index.html +52 -0
  15. data/demos/browser/request/request.rb +48 -0
  16. data/gen/browser/__PROJECT_NAME__/index.html +10 -0
  17. data/gen/browser/__PROJECT_NAME__/lib/__PROJECT_NAME__.rb +1 -0
  18. data/lib/opal.rb +48 -3
  19. data/lib/opal/builders/base.rb +50 -0
  20. data/lib/opal/builders/css.rb +46 -0
  21. data/lib/opal/builders/javascript.rb +44 -0
  22. data/lib/opal/builders/opal.rb +79 -0
  23. data/lib/opal/builders/ruby.rb +50 -0
  24. data/lib/opal/builders/ruby/generate.rb +1851 -0
  25. data/lib/opal/builders/ruby/nodes.rb +210 -0
  26. data/lib/opal/builders/ruby/ruby.rb +916 -0
  27. data/lib/opal/builders/ruby/ruby_parser.rb +6008 -0
  28. data/lib/opal/builders/ruby/ruby_parser.rb.y +1451 -0
  29. data/lib/opal/models/build_item.rb +104 -0
  30. data/lib/opal/models/hash_struct.rb +40 -0
  31. data/lib/opal/models/project.rb +215 -0
  32. data/lib/opal/models/struct_accessors.rb +58 -0
  33. data/lib/opal/models/target.rb +176 -0
  34. data/lib/opal/opal/env/console.rb +66 -0
  35. data/lib/opal/opal/env/fs.rb +98 -0
  36. data/lib/opal/opal/env/object.rb +48 -0
  37. data/lib/opal/opal/environment.rb +139 -0
  38. data/lib/opal/opal/gen.rb +62 -0
  39. data/lib/opal/opal/opal.rb +68 -0
  40. data/lib/opal/opal/repl.rb +38 -0
  41. data/lib/opal/opalfile/dsl.rb +62 -0
  42. data/lib/opal/opalfile/opalfile.rb +133 -0
  43. data/lib/opal/opalfile/task.rb +96 -0
  44. data/lib/opal/opalfile/task_manager.rb +63 -0
  45. data/lib/opal/opalfile/task_scope.rb +52 -0
  46. data/lib/opal/rack/app_server.rb +119 -0
  47. data/opals/aristo/README.md +16 -0
  48. data/opals/browser/Opalfile +11 -0
  49. data/opals/browser/README.md +146 -0
  50. data/opals/browser/SIZZLE_LICESNSE.txt +148 -0
  51. data/opals/browser/lib/browser.rb +118 -0
  52. data/opals/browser/lib/browser/builder.rb +41 -0
  53. data/opals/browser/lib/browser/canvas_context.rb +115 -0
  54. data/opals/browser/lib/browser/dimensions.rb +50 -0
  55. data/opals/browser/lib/browser/document.rb +146 -0
  56. data/opals/browser/lib/browser/element.rb +487 -0
  57. data/opals/browser/lib/browser/element/attributes.rb +88 -0
  58. data/opals/browser/lib/browser/element/css.rb +290 -0
  59. data/opals/browser/lib/browser/element/form.rb +146 -0
  60. data/opals/browser/lib/browser/event/dom_events.rb +81 -0
  61. data/opals/browser/lib/browser/event/event.rb +177 -0
  62. data/opals/browser/lib/browser/event/trigger_events.rb +53 -0
  63. data/opals/browser/lib/browser/geometry.rb +97 -0
  64. data/opals/browser/lib/browser/json.rb +32 -0
  65. data/opals/browser/lib/browser/json_parse.js +321 -0
  66. data/opals/browser/lib/browser/request/request.rb +201 -0
  67. data/opals/browser/lib/browser/sizzle.js +1068 -0
  68. data/opals/browser/lib/browser/string.rb +42 -0
  69. data/opals/browser/lib/browser/touch.rb +37 -0
  70. data/{runtime/yaml.js → opals/browser/lib/browser/vml_context.js} +8 -8
  71. data/opals/browser/lib/browser/window.rb +36 -0
  72. data/opals/browser/spec/browser/browser_detection_spec.rb +7 -0
  73. data/opals/browser/spec/document/aref_spec.rb +110 -0
  74. data/opals/browser/spec/document/ready_spec.rb +16 -0
  75. data/opals/browser/spec/element/body_spec.rb +11 -0
  76. data/opals/browser/spec/element/clear_spec.rb +26 -0
  77. data/opals/browser/spec/element/empty_spec.rb +29 -0
  78. data/opals/browser/spec/element/has_class_spec.rb +40 -0
  79. data/opals/browser/spec/element/hidden_spec.rb +23 -0
  80. data/opals/browser/spec/element/hide_spec.rb +31 -0
  81. data/opals/browser/spec/element/remove_spec.rb +25 -0
  82. data/opals/browser/spec/element/show_spec.rb +31 -0
  83. data/opals/browser/spec/element/style_spec.rb +69 -0
  84. data/opals/browser/spec/element/toggle_spec.rb +31 -0
  85. data/opals/browser/spec/element/visible_spec.rb +23 -0
  86. data/opals/browser/spec/spec_helper.rb +1 -0
  87. data/opals/cherry_kit/Opalfile +6 -0
  88. data/opals/cherry_kit/bin/cherry_kit.rb +11 -0
  89. data/opals/cherry_kit/lib/cherry_kit.rb +29 -0
  90. data/opals/foundation/Opalfile +11 -0
  91. data/opals/foundation/bin/foundation.rb +12 -0
  92. data/opals/foundation/lib/foundation.rb +32 -0
  93. data/opals/foundation/lib/foundation/__table_view_desktop/outline_view.rb +57 -0
  94. data/opals/foundation/lib/foundation/__table_view_desktop/table_column.rb +59 -0
  95. data/opals/foundation/lib/foundation/__table_view_desktop/table_header_view.rb +34 -0
  96. data/opals/foundation/lib/foundation/__table_view_desktop/table_view.rb +304 -0
  97. data/opals/foundation/lib/foundation/controllers/array_controller.rb +54 -0
  98. data/opals/foundation/lib/foundation/controllers/controller.rb +74 -0
  99. data/opals/foundation/lib/foundation/controllers/controller_selection_proxy.rb +67 -0
  100. data/opals/foundation/lib/foundation/controllers/object_controller.rb +145 -0
  101. data/opals/foundation/lib/foundation/controllers/view.rb +40 -0
  102. data/opals/foundation/lib/foundation/core/application.rb +476 -0
  103. data/opals/foundation/lib/foundation/core/attributes.rb +146 -0
  104. data/opals/foundation/lib/foundation/core/bindings.rb +125 -0
  105. data/opals/foundation/lib/foundation/core/builder.rb +101 -0
  106. data/opals/foundation/lib/foundation/core/event.rb +112 -0
  107. data/opals/foundation/lib/foundation/core/index_path.rb +49 -0
  108. data/opals/foundation/lib/foundation/core/index_set.rb +97 -0
  109. data/opals/foundation/lib/foundation/core/notification.rb +113 -0
  110. data/opals/foundation/lib/foundation/core/observable.rb +275 -0
  111. data/opals/foundation/lib/foundation/core/observable_array.rb +30 -0
  112. data/opals/foundation/lib/foundation/core/responder.rb +85 -0
  113. data/opals/foundation/lib/foundation/core/run_loop.rb +89 -0
  114. data/opals/foundation/lib/foundation/core/touch.rb +95 -0
  115. data/opals/foundation/lib/foundation/gestures/gesture_recognizer.rb +35 -0
  116. data/opals/foundation/lib/foundation/rendering/render_context.rb +100 -0
  117. data/opals/foundation/lib/foundation/rendering/renderer.rb +137 -0
  118. data/opals/foundation/lib/foundation/rendering/root_theme.rb +77 -0
  119. data/opals/foundation/lib/foundation/rendering/root_theme/button.rb +62 -0
  120. data/opals/foundation/lib/foundation/rendering/root_theme/control.rb +72 -0
  121. data/opals/foundation/lib/foundation/rendering/root_theme/label.rb +54 -0
  122. data/opals/foundation/lib/foundation/rendering/root_theme/scroller.rb +58 -0
  123. data/opals/foundation/lib/foundation/rendering/root_theme/slider.rb +72 -0
  124. data/opals/foundation/lib/foundation/rendering/root_theme/table_view.rb +97 -0
  125. data/opals/foundation/lib/foundation/rendering/root_theme/text_field.rb +55 -0
  126. data/opals/foundation/lib/foundation/rendering/root_theme/view.rb +81 -0
  127. data/opals/foundation/lib/foundation/rendering/theme.rb +38 -0
  128. data/opals/foundation/lib/foundation/table_view/cell.rb +39 -0
  129. data/opals/foundation/lib/foundation/table_view/table.rb +171 -0
  130. data/opals/foundation/lib/foundation/views/button.rb +63 -0
  131. data/opals/foundation/lib/foundation/views/checkbox.rb +28 -0
  132. data/opals/foundation/lib/foundation/views/clip.rb +47 -0
  133. data/opals/foundation/lib/foundation/views/control.rb +199 -0
  134. data/opals/foundation/lib/foundation/views/label.rb +54 -0
  135. data/opals/foundation/lib/foundation/views/scroll.rb +294 -0
  136. data/opals/foundation/lib/foundation/views/scroll_view_desktop.rb +152 -0
  137. data/opals/foundation/lib/foundation/views/scroller.rb +54 -0
  138. data/opals/foundation/lib/foundation/views/slider.rb +93 -0
  139. data/opals/foundation/lib/foundation/views/text_field.rb +83 -0
  140. data/opals/foundation/lib/foundation/views/view.rb +426 -0
  141. data/opals/foundation/lib/foundation/windows/window.rb +191 -0
  142. data/opals/foundation/resources/button/button.css +23 -0
  143. data/{runtime/init.js → opals/foundation/resources/foundation.css} +27 -33
  144. data/opals/foundation/resources/scroll/scroll.css +22 -0
  145. data/opals/foundation/resources/scroll_view/scroll_view.css +3 -0
  146. data/opals/foundation/resources/scroll_view/scroller.css +3 -0
  147. data/opals/foundation/resources/slider/regular/slider.css +3 -0
  148. data/opals/foundation/resources/slider/slider.css +27 -0
  149. data/opals/foundation/resources/table_view/outline_view.css +3 -0
  150. data/opals/foundation/resources/table_view/table_view.css +15 -0
  151. data/opals/foundation/resources/text_field/text_field.css +71 -0
  152. data/opals/foundation/spec/spec_helper.rb +1 -0
  153. data/opals/foundation/spec/system/attributes/get_attribute_spec.rb +69 -0
  154. data/opals/foundation/spec/system/attributes/get_path_spec.rb +44 -0
  155. data/opals/foundation/spec/system/attributes/set_path_spec.rb +24 -0
  156. data/opals/foundation/spec/system/attributes/set_spec.rb +58 -0
  157. data/opals/foundation/spec/system/bindings/bindings.rb +85 -0
  158. data/opals/foundation/spec/system/key_value_binding/bind_spec.rb +43 -0
  159. data/opals/foundation/spec/system/observable/dependant_keys_spec.rb +74 -0
  160. data/opals/foundation/spec/system/observable/observe_spec.rb +292 -0
  161. data/opals/foundation/spec/system/observable/remove_observer_spec.rb +60 -0
  162. data/opals/opal/Opalfile +14 -0
  163. data/opals/opal/spec/core/array/append_spec.rb +30 -0
  164. data/opals/opal/spec/core/array/assoc_spec.rb +29 -0
  165. data/opals/opal/spec/core/array/at_spec.rb +37 -0
  166. data/opals/opal/spec/core/array/clear_spec.rb +22 -0
  167. data/opals/opal/spec/core/array/collect_bang_spec.rb +27 -0
  168. data/opals/opal/spec/core/array/collect_spec.rb +27 -0
  169. data/opals/opal/spec/core/array/compact_spec.rb +15 -0
  170. data/opals/opal/spec/core/array/concat_spec.rb +15 -0
  171. data/opals/opal/spec/core/array/constructor_spec.rb +14 -0
  172. data/opals/opal/spec/core/array/each_spec.rb +9 -0
  173. data/opals/opal/spec/core/array/element_reference_spec.rb +4 -0
  174. data/opals/opal/spec/core/array/first_spec.rb +35 -0
  175. data/opals/opal/spec/core/array/include_spec.rb +9 -0
  176. data/opals/opal/spec/core/array/map_spec.rb +31 -0
  177. data/opals/opal/spec/core/builtin_constants/builtin_constants_spec.rb +7 -0
  178. data/opals/opal/spec/core/false/and_spec.rb +10 -0
  179. data/opals/opal/spec/core/false/inspect_spec.rb +6 -0
  180. data/opals/opal/spec/core/false/or_spec.rb +10 -0
  181. data/opals/opal/spec/core/false/to_s_spec.rb +6 -0
  182. data/opals/opal/spec/core/false/xor_spec.rb +10 -0
  183. data/opals/opal/spec/core/file/join_spec.rb +19 -0
  184. data/opals/opal/spec/core/kernel/instance_eval_spec.rb +0 -0
  185. data/opals/opal/spec/core/kernel/loop_spec.rb +24 -0
  186. data/opals/opal/spec/core/kernel/raise_spec.rb +0 -0
  187. data/opals/opal/spec/core/module/attr_accessor_spec.rb +28 -0
  188. data/opals/opal/spec/core/number/lt_spec.rb +12 -0
  189. data/opals/opal/spec/core/true/and_spec.rb +10 -0
  190. data/opals/opal/spec/core/true/inspect_spec.rb +6 -0
  191. data/opals/opal/spec/core/true/or_spec.rb +10 -0
  192. data/opals/opal/spec/core/true/to_s_spec.rb +6 -0
  193. data/opals/opal/spec/core/true/xor_spec.rb +10 -0
  194. data/opals/opal/spec/fixtures/super.rb +70 -0
  195. data/opals/opal/spec/language/____temp_remove_this.rb +12 -0
  196. data/opals/opal/spec/language/and_spec.rb +62 -0
  197. data/opals/opal/spec/language/array_spec.rb +52 -0
  198. data/opals/opal/spec/language/block_spec.rb +18 -0
  199. data/opals/opal/spec/language/break_spec.rb +36 -0
  200. data/opals/opal/spec/language/case_spec.rb +103 -0
  201. data/opals/opal/spec/language/def_spec.rb +11 -0
  202. data/opals/opal/spec/language/eigenclass_spec.rb +60 -0
  203. data/opals/opal/spec/language/hash_spec.rb +29 -0
  204. data/opals/opal/spec/language/if_spec.rb +54 -0
  205. data/opals/opal/spec/language/loop_spec.rb +11 -0
  206. data/opals/opal/spec/language/metaclass_spec.rb +21 -0
  207. data/opals/opal/spec/language/method_spec.rb +64 -0
  208. data/opals/opal/spec/language/next_spec.rb +25 -0
  209. data/opals/opal/spec/language/or_spec.rb +34 -0
  210. data/opals/opal/spec/language/redo_spec.rb +24 -0
  211. data/opals/opal/spec/language/rescue_spec.rb +20 -0
  212. data/opals/opal/spec/language/return_spec.rb +47 -0
  213. data/opals/opal/spec/language/string_spec.rb +25 -0
  214. data/opals/opal/spec/language/super_spec.rb +26 -0
  215. data/opals/opal/spec/language/until_spec.rb +157 -0
  216. data/opals/opal/spec/language/while_spec.rb +163 -0
  217. data/opals/opal/spec/spec_helper.rb +5 -0
  218. data/opals/runtime/Opalfile +68 -0
  219. data/opals/runtime/README.md +12 -0
  220. data/opals/runtime/docs/debugging.md +51 -0
  221. data/opals/runtime/lib/array.rb +1516 -0
  222. data/opals/runtime/lib/basic_object.rb +49 -0
  223. data/opals/runtime/lib/class.rb +54 -0
  224. data/opals/runtime/lib/dir.rb +36 -0
  225. data/opals/runtime/lib/error.rb +49 -0
  226. data/opals/runtime/lib/false_class.rb +52 -0
  227. data/opals/runtime/lib/file.rb +79 -0
  228. data/opals/runtime/lib/hash.rb +791 -0
  229. data/opals/runtime/lib/io.rb +39 -0
  230. data/opals/runtime/lib/kernel.rb +288 -0
  231. data/opals/runtime/lib/match_data.rb +36 -0
  232. data/opals/runtime/lib/module.rb +109 -0
  233. data/opals/runtime/lib/nil_class.rb +69 -0
  234. data/opals/runtime/lib/number.rb +398 -0
  235. data/opals/runtime/lib/proc.rb +77 -0
  236. data/opals/runtime/lib/range.rb +63 -0
  237. data/opals/runtime/lib/regexp.rb +111 -0
  238. data/opals/runtime/lib/ruby.rb +30 -0
  239. data/opals/runtime/lib/string.rb +328 -0
  240. data/opals/runtime/lib/symbol.rb +40 -0
  241. data/opals/runtime/lib/top_self.rb +33 -0
  242. data/opals/runtime/lib/true_class.rb +45 -0
  243. data/opals/runtime/runtime/browser.js +287 -0
  244. data/opals/runtime/runtime/debug.js +182 -0
  245. data/opals/runtime/runtime/opal.js +1010 -0
  246. data/opals/runtime/runtime/post_opal.js +1 -0
  247. data/opals/runtime/runtime/pre_opal.js +2 -0
  248. data/opals/runtime/runtime/server_side.js +50 -0
  249. data/opals/spec/LICENSE.txt +26 -0
  250. data/opals/spec/Opalfile +5 -0
  251. data/opals/spec/bin/spec.rb +43 -0
  252. data/opals/spec/lib/spec.rb +33 -0
  253. data/opals/spec/lib/spec/dsl.rb +41 -0
  254. data/opals/spec/lib/spec/example.rb +35 -0
  255. data/opals/spec/lib/spec/example/before_and_after_hooks.rb +81 -0
  256. data/opals/spec/lib/spec/example/errors.rb +42 -0
  257. data/opals/spec/lib/spec/example/example_group.rb +37 -0
  258. data/opals/spec/lib/spec/example/example_group_factory.rb +43 -0
  259. data/opals/spec/lib/spec/example/example_group_hierarchy.rb +45 -0
  260. data/opals/spec/lib/spec/example/example_group_methods.rb +142 -0
  261. data/opals/spec/lib/spec/example/example_group_proxy.rb +41 -0
  262. data/opals/spec/lib/spec/example/example_methods.rb +73 -0
  263. data/opals/spec/lib/spec/example/example_proxy.rb +48 -0
  264. data/opals/spec/lib/spec/expectations.rb +46 -0
  265. data/opals/spec/lib/spec/expectations/errors.rb +35 -0
  266. data/opals/spec/lib/spec/expectations/fail_with.rb +37 -0
  267. data/opals/spec/lib/spec/expectations/handler.rb +48 -0
  268. data/opals/spec/lib/spec/matchers.rb +50 -0
  269. data/opals/spec/lib/spec/matchers/be.rb +26 -0
  270. data/opals/spec/lib/spec/matchers/generated_descriptions.rb +47 -0
  271. data/opals/spec/lib/spec/matchers/operator_matcher.rb +66 -0
  272. data/opals/spec/lib/spec/runner.rb +48 -0
  273. data/opals/spec/lib/spec/runner/example_group_runner.rb +71 -0
  274. data/opals/spec/lib/spec/runner/formatter/html_formatter.rb +100 -0
  275. data/opals/spec/lib/spec/runner/formatter/terminal_formatter.rb +82 -0
  276. data/opals/spec/lib/spec/runner/options.rb +63 -0
  277. data/opals/spec/lib/spec/runner/reporter.rb +123 -0
  278. data/opals/spec/resources/index.html +25 -0
  279. data/opals/spec/resources/spec.css +132 -0
  280. data/spec/cherry_kit/iseq_spec.rb +38 -0
  281. data/spec/spec_helper.rb +16 -0
  282. data/spec/vienna_spec.rb +7 -0
  283. data/yard/index.html +43 -0
  284. data/yard/style.css +765 -0
  285. metadata +312 -49
  286. data/docs/jarv.rdoc +0 -27
  287. data/runtime/array.js +0 -153
  288. data/runtime/class.js +0 -469
  289. data/runtime/compar.js +0 -73
  290. data/runtime/dir.js +0 -115
  291. data/runtime/enum.js +0 -74
  292. data/runtime/file.js +0 -165
  293. data/runtime/gem.js +0 -241
  294. data/runtime/hash.js +0 -181
  295. data/runtime/load.js +0 -251
  296. data/runtime/module.js +0 -98
  297. data/runtime/number.js +0 -148
  298. data/runtime/object.js +0 -522
  299. data/runtime/opal.js +0 -200
  300. data/runtime/parse.js +0 -2218
  301. data/runtime/range.js +0 -56
  302. data/runtime/re.js +0 -91
  303. data/runtime/string.js +0 -199
  304. data/runtime/variable.js +0 -184
  305. data/runtime/vm.js +0 -1150
  306. data/tasks/build.rb +0 -16
@@ -0,0 +1,6 @@
1
+
2
+ describe "FalseClass#to_s" do
3
+ it "returns the string 'false'" do
4
+ false.to_s.should == "false"
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+
2
+ describe "FalseClass#^" do
3
+ it "returns false if other is nil or false, otherwise true" do
4
+ (false ^ false).should == false
5
+ (false ^ true).should == true
6
+ (false ^ nil).should == false
7
+ (false ^ "").should == true
8
+ (false ^ 'x').should == true
9
+ end
10
+ end
@@ -0,0 +1,19 @@
1
+
2
+ describe "File.join" do
3
+ it "returns an empty string when given no arguments" do
4
+ File.join.should == ""
5
+ end
6
+
7
+ it "when given a single argument returns an equal string" do
8
+ File.join("").should == ""
9
+ File.join("usr").should == "usr"
10
+ end
11
+
12
+ it "joins parts using File::SEPARATOR" do
13
+ File.join('usr', 'bin').should == 'usr/bin'
14
+ end
15
+
16
+ it "supports any number of arguments" do
17
+ File.join("a", "b", "c", "d").should == "a/b/c/d"
18
+ end
19
+ end
File without changes
@@ -0,0 +1,24 @@
1
+
2
+ describe "Kernel.loop" do
3
+ it "calls block until it is terminated by a break" do
4
+ i = 0
5
+ loop do
6
+ i = i + 1
7
+ break if i == 10
8
+ end
9
+
10
+ i.should == 10
11
+ end
12
+
13
+ it "returns value passed to break" do
14
+ loop do
15
+ break 123
16
+ end.should == 123
17
+ end
18
+
19
+ it "returns nil if no value passed to break" do
20
+ loop do
21
+ break
22
+ end.should == nil
23
+ end
24
+ end
File without changes
@@ -0,0 +1,28 @@
1
+
2
+ # describe "Module#attr_accessor" do
3
+ # it "creates a getter and setter for each given attribute name" do
4
+ # class AttrAccessorSpec
5
+ # attr_accessor :a, 'b'
6
+ # end
7
+ #
8
+ # o = AttrAccessorSpec.new
9
+ #
10
+ # ['a', 'b'].each do |x|
11
+ # o.respond_to?(x).should == true
12
+ # o.respond_to?("#{x}=").should == true
13
+ # end
14
+ #
15
+ # o.a = "a"
16
+ # o.a.should == "a"
17
+ #
18
+ # o.b = "b"
19
+ # o.b.should == "b"
20
+ # o.a = o.b = nil
21
+ #
22
+ # o.__send__(:a=, "a")
23
+ # o.__send__(:a).should == "a"
24
+ #
25
+ # o.__send__(:b=, "b")
26
+ # o.__send__(:b).should == "b"
27
+ # end
28
+ # end
@@ -0,0 +1,12 @@
1
+
2
+ describe "Fixnum#<" do
3
+ it "returns true if self is less than the given argument" do
4
+ (2 < 13).should == true
5
+ (-600 < -500).should == true
6
+
7
+ (5 < 1).should == false
8
+ (5 < 5).should == false
9
+
10
+ (5 < 4.999).should == false
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+
2
+ describe "TrueClass#&" do
3
+ it "returns false if other is nil or false, otherwise true" do
4
+ (true & true).should == true
5
+ (true & false).should == false
6
+ (true & nil).should == false
7
+ (true & "").should == true
8
+ (true & 'x').should == true
9
+ end
10
+ end
@@ -0,0 +1,6 @@
1
+
2
+ describe "TrueClass#inspect" do
3
+ it "returns the string 'true'" do
4
+ true.inspect.should == "true"
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+
2
+ describe "TrueClass#|" do
3
+ it "returns true" do
4
+ (true | true).should == true
5
+ (true | false).should == true
6
+ (true | nil).should == true
7
+ (true | '').should == true
8
+ (true | 'x').should == true
9
+ end
10
+ end
@@ -0,0 +1,6 @@
1
+
2
+ describe "TrueClass#to_s" do
3
+ it "returns the string 'true'" do
4
+ true.to_s.should == "true"
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+
2
+ describe "TrueClass#^" do
3
+ it "returns true if other is nil or false, otherwise false" do
4
+ (true ^ true).should == false
5
+ (true ^ false).should == true
6
+ (true ^ nil).should == true
7
+ (true ^ '').should == false
8
+ (true ^ 'x').should == false
9
+ end
10
+ end
@@ -0,0 +1,70 @@
1
+ module Super
2
+ module S1
3
+ class A
4
+ def foo(a)
5
+ a << "A#foo"
6
+ bar(a)
7
+ end
8
+ def bar(a)
9
+ a << "A#bar"
10
+ end
11
+ end
12
+ class B < A
13
+ def foo(a)
14
+ a << "B#foo"
15
+ super(a)
16
+ end
17
+ def bar(a)
18
+ a << "B#bar"
19
+ super(a)
20
+ end
21
+ end
22
+ end
23
+
24
+ module S2
25
+ class A
26
+ def baz(a)
27
+ a << "A#baz"
28
+ end
29
+ end
30
+ class B < A
31
+ def foo(a)
32
+ a << "B#foo"
33
+ baz(a)
34
+ end
35
+ end
36
+ class C < B
37
+ def baz(a)
38
+ a << "C#baz"
39
+ super(a)
40
+ end
41
+ end
42
+ end
43
+
44
+ module S3
45
+ class A
46
+ def foo(a)
47
+ a << "A#foo"
48
+ end
49
+ def self.foo(a)
50
+ a << "A::foo"
51
+ end
52
+ def self.bar(a)
53
+ a << "A::bar"
54
+ foo(a)
55
+ end
56
+ end
57
+ class B < A
58
+ def self.foo(a)
59
+ a << "B::foo"
60
+ super(a)
61
+ end
62
+ def self.bar(a)
63
+ a << "B::bar"
64
+ super(a)
65
+ end
66
+ end
67
+ end
68
+
69
+
70
+ end
@@ -0,0 +1,12 @@
1
+ # testing remove need for mid_to_jsid client side
2
+ # adam = nil
3
+
4
+ # adam.beynon
5
+ # adam.beynon = 10
6
+
7
+ def testing_super(a, b, c)
8
+ super
9
+ super()
10
+ super a, b
11
+ super a
12
+ end
@@ -0,0 +1,62 @@
1
+
2
+ describe "The '&&' statement" do
3
+ it "short circuits evaluation at the first condition to be false" do
4
+ x = nil
5
+ true && false && x = 1
6
+ x.should == nil
7
+ end
8
+
9
+ it "evaluates to the first condition not to be true" do
10
+ ("yes" && 1 && nil && true).should == nil
11
+ ("yes" && 1 && false && true).should == false
12
+ end
13
+
14
+ it "evaluates to the last condition if all are true" do
15
+ ("yes" && 1).should == 1
16
+ (1 && "yes").should == "yes"
17
+ end
18
+
19
+ it "evaluates the full set of chained conditions during assignment" do
20
+ x = nil
21
+ y = nil
22
+ x = 1 && y = 2
23
+ x.should == 2
24
+ end
25
+
26
+ it "treats empty expressions as nil" do
27
+ (() && true).should == nil
28
+ (true && ()).should == nil
29
+ (() && ()).should == nil
30
+ end
31
+ end
32
+
33
+ describe "The 'and' statement" do
34
+ it "short-circuits evaluation at the first condition to be false" do
35
+ x = nil
36
+ true and false and x = 1
37
+ x.should == nil
38
+ end
39
+
40
+ it "evaluates to the first condition not to be true" do
41
+ ("yes" and 1 and nil and true).should == nil
42
+ ("yes" and 1 and false and true).should == false
43
+ end
44
+
45
+ it "evaluates to the last condition if all are true" do
46
+ ("yes" and 1).should == 1
47
+ (1 and "yes").should == "yes"
48
+ end
49
+
50
+ it "when used in assignment, evaluates and assigns the expressions individually" do
51
+ x = nil
52
+ y = nil
53
+ x = 1 and y = 2
54
+ x.should == 1
55
+ end
56
+
57
+ it "treats empty expressions as nil" do
58
+ (() and true).should == nil
59
+ (true and ()).should == nil
60
+ (() and ()).should == nil
61
+ end
62
+ end
@@ -0,0 +1,52 @@
1
+
2
+ describe "Array literals" do
3
+ it "[] should return a new array populated with the given elements" do
4
+ array = [1, 'a', nil]
5
+ array.class.should == Array
6
+ array[0].should == 1
7
+ array[1].should == "a"
8
+ array[2].should == nil
9
+ end
10
+
11
+ it "[] treats empty expressions as nil elements" do
12
+ array = [0, (), 2, (), 4]
13
+ array.class.should == Array
14
+ array[0].should == 0
15
+ array[1].should == nil
16
+ array[2].should == 2
17
+ array[3].should == nil
18
+ array[4].should == 4
19
+ end
20
+
21
+ it "[] accepts a literal hash without curly braces as its only parameter" #do
22
+ # ["foo" => :bar, :baz => 42].should == nil
23
+ # end
24
+ end
25
+
26
+ describe "Bareword array literal" do
27
+ it "%w() transforms unquoted barewords into an array" #do
28
+ # a = 3
29
+ # %w(a #{3+a} 3).should
30
+ # end
31
+
32
+ it "%W() transforms unquoted barewords into an array, supporing interpolation" do
33
+ a = 3
34
+ %W(a #{3+a} 3).should == ["a", "6", "3"]
35
+ end
36
+
37
+ it "%W() always treats interpolated expressions as a single word" do
38
+ a = "hello world"
39
+ %W(a b c #{a} d e).should == ["a", "b", "c", "hello world", "d", "e"]
40
+ end
41
+
42
+ it "treats consecutive whitespace characters the same as one" do
43
+ %W(a b c d).should == ["a", "b", "c", "d"]
44
+ %W(hello
45
+ world).should == ["hello", "world"]
46
+ end
47
+
48
+ it "treats whitespace as literals characters when escaped by a backslash" #do
49
+ # %W(a b\ c d e).should == ["a", "b c", "d", "e"]
50
+ # end
51
+
52
+ end
@@ -0,0 +1,18 @@
1
+
2
+ describe "Block parameters" do
3
+ it "does not override a shodowed variable from the outer scope" do
4
+ i = 0
5
+ a = [1, 2, 3]
6
+ a.each { |i| ;}
7
+ i.should == 0
8
+ end
9
+
10
+ it "captures variables from the outer scope" do
11
+ a = [1, 2, 3]
12
+ sum = 0
13
+ vari = nil
14
+ a.each { |vari| sum = sum + vari }
15
+ sum.should == 6
16
+ vari.should == nil
17
+ end
18
+ end
@@ -0,0 +1,36 @@
1
+
2
+ describe "The break statement" do
3
+ it "ends block execution if used within block" do
4
+ a = []
5
+ lambda {
6
+ a << 1
7
+ break
8
+ a << 2
9
+ }.call
10
+ a.should == [1]
11
+ end
12
+
13
+ it "causes block to return value passed to break" do
14
+ lambda { break 123; 456 }.call.should == 123
15
+ end
16
+
17
+ it "causes block to return nil if an empty expression passed to break" do
18
+ lambda { break (); 456 }.call.should == nil
19
+ end
20
+
21
+ it "causes block to return nil if no value passed to break" do
22
+ lambda { break; 456 }.call.should == nil
23
+ end
24
+ end
25
+
26
+ # describe "Executing break from within a block" do
27
+ #
28
+ # it "returns from the invoking singleton method" do
29
+ # obj = Object.new
30
+ # def obj.meth_with_block
31
+ # yield
32
+ # raise "break didn't break from the singleton method"
33
+ # end
34
+ # obj.meth_with_block { break :value }.should == :value
35
+ # end
36
+ # end
@@ -0,0 +1,103 @@
1
+
2
+ describe "The 'case'-construct" do
3
+ it "evaluates the body of the when clause matching the case target expression" do
4
+ case 1
5
+ when 2; false
6
+ when 1; true
7
+ end.should == true
8
+ end
9
+
10
+ it "evaluates the body of the when clause whose array expression includes the case target expression" do
11
+ case 2
12
+ when 3, 4; false
13
+ when 1, 2; true
14
+ end.should == true
15
+ end
16
+
17
+ it "evaluates the body of the when clause in left-to-right order if it's an array expression" do
18
+ @calls = []
19
+ def foo; @calls << :foo; end
20
+ def bar; @calls << :bar; end
21
+
22
+ case true
23
+ when foo, bar;
24
+ end
25
+
26
+ @calls.should == [:foo, :bar]
27
+ end
28
+
29
+ it "evaluates the body of the when clause whose range expression includes the case target expression" do
30
+ case 5
31
+ when 21..30; false
32
+ when 1..20; true
33
+ end.should == true
34
+ end
35
+
36
+ it "returns nil when no 'then'-bodies are given" do
37
+ case "a"
38
+ when "a"
39
+ when "b"
40
+ end.should == nil
41
+ end
42
+
43
+ it "evaluates the 'else'-body when no other expression matches" do
44
+ case "c"
45
+ when "a"; 'foo'
46
+ when "b"; 'bar'
47
+ else 'zzz'
48
+ end.should == 'zzz'
49
+ end
50
+
51
+ it "returns nil when no expression matches and 'else'-body is empty" do
52
+ case "c"
53
+ when "a"; "a"
54
+ when "b"; "b"
55
+ else
56
+ end.should == nil
57
+ end
58
+
59
+ it "returns 2 when a then body is empty" do
60
+ case Object.new
61
+ when Number then
62
+ 1
63
+ when String then
64
+ # ok
65
+ else
66
+ 2
67
+ end.should == 2
68
+ end
69
+
70
+ it "returns that statement following 'then'" do
71
+ case "a"
72
+ when "a" then 'foo'
73
+ when "b" then 'bar'
74
+ end.should == 'foo'
75
+ end
76
+
77
+ it "tests classes with case equality" do
78
+ case "a"
79
+ when String
80
+ 'foo'
81
+ when Symbol
82
+ 'bar'
83
+ end.should == 'foo'
84
+ end
85
+
86
+ it "tests with matching regexps" do
87
+ case "hello"
88
+ when /abc/; false
89
+ when /^hell/; true
90
+ end.should == true
91
+ end
92
+
93
+ it "takes a list of values" do
94
+ case 'z'
95
+ when 'a', 'b', 'c', 'd'
96
+ "foo"
97
+ when 'x', 'y', 'z'
98
+ "bar"
99
+ end.should == "bar"
100
+ end
101
+
102
+ it "takes an expanded array in addition to a list of values"
103
+ end