opal 0.2.2 → 0.3.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 (325) hide show
  1. data/.gitignore +5 -10
  2. data/LICENSE +75 -0
  3. data/README.md +55 -3
  4. data/Rakefile +62 -139
  5. data/bin/opal +7 -10
  6. data/gems/core/README.md +5 -0
  7. data/gems/core/Rakefile +7 -0
  8. data/gems/core/core.gemspec +13 -0
  9. data/gems/core/lib/core.rb +33 -0
  10. data/gems/core/lib/core/array.rb +1470 -0
  11. data/gems/core/lib/core/basic_object.rb +15 -0
  12. data/gems/core/lib/core/class.rb +31 -0
  13. data/gems/core/lib/core/dir.rb +26 -0
  14. data/gems/core/lib/core/error.rb +43 -0
  15. data/gems/core/lib/core/false_class.rb +21 -0
  16. data/gems/core/lib/core/file.rb +54 -0
  17. data/gems/core/lib/core/hash.rb +725 -0
  18. data/gems/core/lib/core/kernel.rb +240 -0
  19. data/gems/core/lib/core/module.rb +98 -0
  20. data/gems/core/lib/core/nil_class.rb +41 -0
  21. data/gems/core/lib/core/numeric.rb +370 -0
  22. data/gems/core/lib/core/proc.rb +11 -0
  23. data/gems/core/lib/core/range.rb +17 -0
  24. data/gems/core/lib/core/regexp.rb +18 -0
  25. data/gems/core/lib/core/string.rb +328 -0
  26. data/gems/core/lib/core/symbol.rb +15 -0
  27. data/gems/core/lib/core/top_self.rb +8 -0
  28. data/gems/core/lib/core/true_class.rb +20 -0
  29. data/gems/core/lib/core/vm.rb +16 -0
  30. data/{opals/opal/opal → gems/core}/spec/core/array/append_spec.rb +0 -0
  31. data/{opals/opal/opal → gems/core}/spec/core/array/assoc_spec.rb +0 -0
  32. data/{opals/opal/opal → gems/core}/spec/core/array/at_spec.rb +0 -0
  33. data/{opals/opal/opal → gems/core}/spec/core/array/clear_spec.rb +1 -1
  34. data/{opals/opal/opal → gems/core}/spec/core/array/collect_bang_spec.rb +0 -0
  35. data/{opals/opal/opal → gems/core}/spec/core/array/collect_spec.rb +0 -0
  36. data/gems/core/spec/core/array/compact_spec.rb +41 -0
  37. data/{opals/opal/opal → gems/core}/spec/core/array/concat_spec.rb +0 -0
  38. data/{opals/opal/opal → gems/core}/spec/core/array/constructor_spec.rb +0 -0
  39. data/{opals/opal/opal → gems/core}/spec/core/array/each_spec.rb +0 -0
  40. data/{opals/opal/opal → gems/core}/spec/core/array/element_reference_spec.rb +0 -0
  41. data/{opals/opal/opal → gems/core}/spec/core/array/first_spec.rb +1 -1
  42. data/{opals/opal/opal → gems/core}/spec/core/array/include_spec.rb +0 -0
  43. data/gems/core/spec/core/array/join_spec.rb +6 -0
  44. data/gems/core/spec/core/array/last_spec.rb +51 -0
  45. data/gems/core/spec/core/array/length_spec.rb +6 -0
  46. data/{opals/opal/opal → gems/core}/spec/core/array/map_spec.rb +2 -0
  47. data/gems/core/spec/core/array/reverse_spec.rb +6 -0
  48. data/{opals/opal/opal → gems/core}/spec/core/builtin_constants/builtin_constants_spec.rb +0 -0
  49. data/{opals/opal/opal → gems/core}/spec/core/false/and_spec.rb +0 -0
  50. data/{opals/opal/opal → gems/core}/spec/core/false/inspect_spec.rb +0 -0
  51. data/{opals/opal/opal → gems/core}/spec/core/false/or_spec.rb +0 -0
  52. data/{opals/opal/opal → gems/core}/spec/core/false/to_s_spec.rb +0 -0
  53. data/{opals/opal/opal → gems/core}/spec/core/false/xor_spec.rb +0 -0
  54. data/{opals/opal/opal → gems/core}/spec/core/file/join_spec.rb +1 -1
  55. data/gems/core/spec/core/hash/assoc_spec.rb +32 -0
  56. data/{opals/opal/opal → gems/core}/spec/core/kernel/instance_eval_spec.rb +0 -0
  57. data/{opals/opal/opal → gems/core}/spec/core/kernel/loop_spec.rb +0 -0
  58. data/{opals/opal/opal → gems/core}/spec/core/kernel/raise_spec.rb +0 -0
  59. data/{opals/opal/opal → gems/core}/spec/core/module/attr_accessor_spec.rb +0 -0
  60. data/{opals/opal/opal → gems/core}/spec/core/number/lt_spec.rb +0 -0
  61. data/gems/core/spec/core/string/sub_spec.rb +24 -0
  62. data/{opals/opal/opal → gems/core}/spec/core/true/and_spec.rb +0 -0
  63. data/{opals/opal/opal → gems/core}/spec/core/true/inspect_spec.rb +0 -0
  64. data/{opals/opal/opal → gems/core}/spec/core/true/or_spec.rb +0 -0
  65. data/{opals/opal/opal → gems/core}/spec/core/true/to_s_spec.rb +0 -0
  66. data/{opals/opal/opal → gems/core}/spec/core/true/xor_spec.rb +0 -0
  67. data/{opals/opal/opal → gems/core}/spec/language/and_spec.rb +2 -3
  68. data/{opals/opal/opal → gems/core}/spec/language/array_spec.rb +21 -5
  69. data/gems/core/spec/language/block_spec.rb +38 -0
  70. data/{opals/opal/opal → gems/core}/spec/language/break_spec.rb +0 -0
  71. data/gems/core/spec/language/case_spec.rb +103 -0
  72. data/{opals/opal/opal → gems/core}/spec/language/def_spec.rb +11 -1
  73. data/{opals/opal/opal → gems/core}/spec/language/eigenclass_spec.rb +0 -0
  74. data/gems/core/spec/language/file_spec.rb +13 -0
  75. data/gems/core/spec/language/fixtures/block.rb +21 -0
  76. data/gems/core/spec/language/fixtures/super.rb +293 -0
  77. data/{opals/opal/opal → gems/core}/spec/language/hash_spec.rb +0 -0
  78. data/{opals/opal/opal → gems/core}/spec/language/if_spec.rb +0 -0
  79. data/{opals/opal/opal → gems/core}/spec/language/loop_spec.rb +0 -0
  80. data/gems/core/spec/language/metaclass_spec.rb +21 -0
  81. data/{opals/opal/opal → gems/core}/spec/language/method_spec.rb +60 -0
  82. data/{opals/opal/opal → gems/core}/spec/language/next_spec.rb +0 -0
  83. data/{opals/opal/opal → gems/core}/spec/language/or_spec.rb +0 -0
  84. data/{opals/opal/opal → gems/core}/spec/language/redo_spec.rb +0 -0
  85. data/gems/core/spec/language/regexp_spec.rb +26 -0
  86. data/{opals/opal/opal → gems/core}/spec/language/rescue_spec.rb +0 -0
  87. data/{opals/opal/opal → gems/core}/spec/language/return_spec.rb +0 -0
  88. data/{opals/opal/opal → gems/core}/spec/language/string_spec.rb +0 -0
  89. data/gems/core/spec/language/super_spec.rb +32 -0
  90. data/{opals/opal/opal → gems/core}/spec/language/until_spec.rb +47 -47
  91. data/gems/core/spec/language/variables_spec.rb +155 -0
  92. data/{opals/opal/opal → gems/core}/spec/language/while_spec.rb +47 -47
  93. data/{opals/opal/opal → gems/core}/spec/spec_helper.rb +1 -1
  94. data/gems/core_fs/README.md +19 -0
  95. data/gems/dev/Rakefile +5 -0
  96. data/gems/dev/lib/dev.js +99 -0
  97. data/gems/dev/lib/dev/generator.js +1264 -0
  98. data/gems/dev/lib/dev/parser.js +979 -0
  99. data/gems/dev/lib/dev/ruby_parser.js +1088 -0
  100. data/gems/dev/lib/dev/ruby_parser.y +1267 -0
  101. data/gems/dev/lib/dev/string_scanner.js +38 -0
  102. data/gems/dev/tools/racc2js/README.md +39 -0
  103. data/gems/dev/tools/racc2js/math_parser.js +222 -0
  104. data/gems/dev/tools/racc2js/math_parser.rb +133 -0
  105. data/gems/dev/tools/racc2js/math_parser.y +28 -0
  106. data/gems/dev/tools/racc2js/parser.js +218 -0
  107. data/gems/dev/tools/racc2js/racc2js.rb +153 -0
  108. data/gems/json/README.md +4 -0
  109. data/gems/json/json.gemspec +14 -0
  110. data/gems/json/lib/json.rb +64 -0
  111. data/gems/json/lib/json/ext.rb +51 -0
  112. data/{opals/opal/browser/lib/browser/json_parse.js → gems/json/lib/json/json2.js} +197 -37
  113. data/gems/ospec/README.md +0 -0
  114. data/gems/ospec/lib/ospec.rb +6 -0
  115. data/gems/ospec/lib/ospec/autorun.rb +3 -0
  116. data/gems/ospec/lib/ospec/dsl.rb +15 -0
  117. data/gems/ospec/lib/ospec/example.rb +11 -0
  118. data/gems/ospec/lib/ospec/example/before_and_after_hooks.rb +56 -0
  119. data/gems/ospec/lib/ospec/example/errors.rb +17 -0
  120. data/gems/ospec/lib/ospec/example/example_group.rb +12 -0
  121. data/gems/ospec/lib/ospec/example/example_group_factory.rb +21 -0
  122. data/gems/ospec/lib/ospec/example/example_group_hierarchy.rb +20 -0
  123. data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/example/example_group_methods.rb +26 -68
  124. data/gems/ospec/lib/ospec/example/example_group_proxy.rb +14 -0
  125. data/gems/ospec/lib/ospec/example/example_methods.rb +46 -0
  126. data/gems/ospec/lib/ospec/example/example_proxy.rb +18 -0
  127. data/gems/ospec/lib/ospec/expectations.rb +19 -0
  128. data/gems/ospec/lib/ospec/expectations/errors.rb +8 -0
  129. data/gems/ospec/lib/ospec/expectations/fail_with.rb +8 -0
  130. data/gems/ospec/lib/ospec/expectations/handler.rb +27 -0
  131. data/gems/ospec/lib/ospec/matchers.rb +24 -0
  132. data/{opals/opal/Rakefile → gems/ospec/lib/ospec/matchers/be.rb} +0 -0
  133. data/gems/ospec/lib/ospec/matchers/generated_descriptions.rb +20 -0
  134. data/gems/ospec/lib/ospec/matchers/operator_matcher.rb +52 -0
  135. data/gems/ospec/lib/ospec/runner.rb +40 -0
  136. data/gems/ospec/lib/ospec/runner/example_group_runner.rb +44 -0
  137. data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/runner/formatter/html_formatter.rb +31 -40
  138. data/gems/ospec/lib/ospec/runner/formatter/terminal_formatter.rb +48 -0
  139. data/gems/ospec/lib/ospec/runner/options.rb +36 -0
  140. data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/runner/reporter.rb +23 -55
  141. data/gems/ospec/ospec.gemspec +0 -0
  142. data/gems/rquery/README.md +9 -0
  143. data/gems/rquery/lib/rquery.rb +10 -0
  144. data/gems/rquery/lib/rquery/ajax.rb +4 -0
  145. data/gems/rquery/lib/rquery/css.rb +96 -0
  146. data/gems/rquery/lib/rquery/document.rb +25 -0
  147. data/gems/rquery/lib/rquery/element.rb +292 -0
  148. data/gems/rquery/lib/rquery/event.rb +108 -0
  149. data/gems/rquery/lib/rquery/jquery.js +8177 -0
  150. data/gems/rquery/lib/rquery/request.rb +138 -0
  151. data/gems/rquery/lib/rquery/response.rb +49 -0
  152. data/gems/rquery/rquery.gemspec +16 -0
  153. data/lib/opal.js +1597 -0
  154. data/lib/opal.rb +6 -69
  155. data/lib/opal/builder.rb +115 -0
  156. data/lib/opal/bundle.rb +131 -0
  157. data/lib/opal/command.rb +11 -0
  158. data/lib/opal/context.rb +69 -0
  159. data/lib/opal/context/console.rb +12 -0
  160. data/lib/opal/context/file_system.rb +19 -0
  161. data/lib/opal/context/loader.rb +117 -0
  162. data/lib/opal/gem.rb +153 -0
  163. data/lib/opal/ruby/nodes.rb +1302 -0
  164. data/lib/opal/ruby/parser.rb +780 -0
  165. data/lib/opal/ruby/ruby_parser.rb +5170 -0
  166. data/lib/opal/ruby/ruby_parser.y +1298 -0
  167. data/opal.gemspec +11 -256
  168. metadata +179 -240
  169. data/.gitmodules +0 -6
  170. data/Opalfile +0 -384
  171. data/VERSION +0 -1
  172. data/demos/apps/browser_demo/index.html +0 -11
  173. data/demos/apps/browser_demo/lib/browser_demo.rb +0 -31
  174. data/demos/apps/simple_opal/Opalfile +0 -13
  175. data/demos/apps/simple_opal/index.html +0 -11
  176. data/demos/apps/simple_opal/lib/app_controller.rb +0 -62
  177. data/demos/apps/simple_opal/lib/main_window.rb +0 -146
  178. data/demos/browser/request/index.html +0 -52
  179. data/demos/browser/request/request.rb +0 -48
  180. data/gen/browser/__PROJECT_NAME__/Rakefile +0 -12
  181. data/gen/browser/__PROJECT_NAME__/index.html +0 -11
  182. data/gen/browser/__PROJECT_NAME__/javascripts/opal.debug.js +0 -4687
  183. data/gen/browser/__PROJECT_NAME__/javascripts/opal.min.js +0 -175
  184. data/gen/browser/__PROJECT_NAME__/lib/__PROJECT_NAME__.rb +0 -1
  185. data/lib/opal/builders/base.rb +0 -50
  186. data/lib/opal/builders/css.rb +0 -46
  187. data/lib/opal/builders/javascript.rb +0 -44
  188. data/lib/opal/builders/opal.rb +0 -79
  189. data/lib/opal/builders/ruby.rb +0 -50
  190. data/lib/opal/builders/ruby/generate.rb +0 -1851
  191. data/lib/opal/builders/ruby/nodes.rb +0 -210
  192. data/lib/opal/builders/ruby/ruby.rb +0 -916
  193. data/lib/opal/builders/ruby/ruby_parser.rb +0 -6008
  194. data/lib/opal/builders/ruby/ruby_parser.rb.y +0 -1451
  195. data/lib/opal/models/build_item.rb +0 -104
  196. data/lib/opal/models/hash_struct.rb +0 -40
  197. data/lib/opal/models/project.rb +0 -252
  198. data/lib/opal/models/struct_accessors.rb +0 -58
  199. data/lib/opal/models/target.rb +0 -176
  200. data/lib/opal/opal/build.rb +0 -169
  201. data/lib/opal/opal/env/console.rb +0 -66
  202. data/lib/opal/opal/env/fs.rb +0 -98
  203. data/lib/opal/opal/env/object.rb +0 -48
  204. data/lib/opal/opal/environment.rb +0 -139
  205. data/lib/opal/opal/gen.rb +0 -62
  206. data/lib/opal/opal/opal.rb +0 -75
  207. data/lib/opal/opal/repl.rb +0 -38
  208. data/lib/opal/opalfile/dsl.rb +0 -62
  209. data/lib/opal/opalfile/opalfile.rb +0 -133
  210. data/lib/opal/opalfile/task.rb +0 -96
  211. data/lib/opal/opalfile/task_manager.rb +0 -63
  212. data/lib/opal/opalfile/task_scope.rb +0 -52
  213. data/lib/opal/rack/app_server.rb +0 -119
  214. data/lib/opal/rake/opal_task.rb +0 -34
  215. data/opals/opal/README.md +0 -37
  216. data/opals/opal/browser/Opalfile +0 -11
  217. data/opals/opal/browser/README.md +0 -146
  218. data/opals/opal/browser/SIZZLE_LICESNSE.txt +0 -148
  219. data/opals/opal/browser/lib/browser.rb +0 -118
  220. data/opals/opal/browser/lib/browser/builder.rb +0 -41
  221. data/opals/opal/browser/lib/browser/canvas_context.rb +0 -115
  222. data/opals/opal/browser/lib/browser/dimensions.rb +0 -50
  223. data/opals/opal/browser/lib/browser/document.rb +0 -146
  224. data/opals/opal/browser/lib/browser/element.rb +0 -487
  225. data/opals/opal/browser/lib/browser/element/attributes.rb +0 -88
  226. data/opals/opal/browser/lib/browser/element/css.rb +0 -290
  227. data/opals/opal/browser/lib/browser/element/form.rb +0 -146
  228. data/opals/opal/browser/lib/browser/event/dom_events.rb +0 -81
  229. data/opals/opal/browser/lib/browser/event/event.rb +0 -177
  230. data/opals/opal/browser/lib/browser/event/trigger_events.rb +0 -53
  231. data/opals/opal/browser/lib/browser/geometry.rb +0 -97
  232. data/opals/opal/browser/lib/browser/json.rb +0 -32
  233. data/opals/opal/browser/lib/browser/request/request.rb +0 -201
  234. data/opals/opal/browser/lib/browser/sizzle.js +0 -1068
  235. data/opals/opal/browser/lib/browser/string.rb +0 -42
  236. data/opals/opal/browser/lib/browser/touch.rb +0 -37
  237. data/opals/opal/browser/lib/browser/vml_context.js +0 -33
  238. data/opals/opal/browser/lib/browser/window.rb +0 -36
  239. data/opals/opal/browser/spec/browser/browser_detection_spec.rb +0 -7
  240. data/opals/opal/browser/spec/document/aref_spec.rb +0 -110
  241. data/opals/opal/browser/spec/document/ready_spec.rb +0 -16
  242. data/opals/opal/browser/spec/element/body_spec.rb +0 -11
  243. data/opals/opal/browser/spec/element/clear_spec.rb +0 -26
  244. data/opals/opal/browser/spec/element/empty_spec.rb +0 -29
  245. data/opals/opal/browser/spec/element/has_class_spec.rb +0 -40
  246. data/opals/opal/browser/spec/element/hidden_spec.rb +0 -23
  247. data/opals/opal/browser/spec/element/hide_spec.rb +0 -31
  248. data/opals/opal/browser/spec/element/remove_spec.rb +0 -25
  249. data/opals/opal/browser/spec/element/show_spec.rb +0 -31
  250. data/opals/opal/browser/spec/element/style_spec.rb +0 -69
  251. data/opals/opal/browser/spec/element/toggle_spec.rb +0 -31
  252. data/opals/opal/browser/spec/element/visible_spec.rb +0 -23
  253. data/opals/opal/browser/spec/spec_helper.rb +0 -1
  254. data/opals/opal/opal/Opalfile +0 -14
  255. data/opals/opal/opal/spec/core/array/compact_spec.rb +0 -15
  256. data/opals/opal/opal/spec/fixtures/super.rb +0 -70
  257. data/opals/opal/opal/spec/language/____temp_remove_this.rb +0 -12
  258. data/opals/opal/opal/spec/language/block_spec.rb +0 -18
  259. data/opals/opal/opal/spec/language/case_spec.rb +0 -103
  260. data/opals/opal/opal/spec/language/metaclass_spec.rb +0 -21
  261. data/opals/opal/opal/spec/language/super_spec.rb +0 -26
  262. data/opals/opal/runtime/Opalfile +0 -78
  263. data/opals/opal/runtime/README.md +0 -12
  264. data/opals/opal/runtime/docs/debugging.md +0 -51
  265. data/opals/opal/runtime/lib/array.rb +0 -1516
  266. data/opals/opal/runtime/lib/basic_object.rb +0 -49
  267. data/opals/opal/runtime/lib/class.rb +0 -54
  268. data/opals/opal/runtime/lib/dir.rb +0 -36
  269. data/opals/opal/runtime/lib/error.rb +0 -49
  270. data/opals/opal/runtime/lib/false_class.rb +0 -52
  271. data/opals/opal/runtime/lib/file.rb +0 -79
  272. data/opals/opal/runtime/lib/hash.rb +0 -791
  273. data/opals/opal/runtime/lib/io.rb +0 -39
  274. data/opals/opal/runtime/lib/kernel.rb +0 -288
  275. data/opals/opal/runtime/lib/match_data.rb +0 -36
  276. data/opals/opal/runtime/lib/module.rb +0 -109
  277. data/opals/opal/runtime/lib/nil_class.rb +0 -69
  278. data/opals/opal/runtime/lib/number.rb +0 -398
  279. data/opals/opal/runtime/lib/proc.rb +0 -77
  280. data/opals/opal/runtime/lib/range.rb +0 -63
  281. data/opals/opal/runtime/lib/regexp.rb +0 -111
  282. data/opals/opal/runtime/lib/ruby.rb +0 -30
  283. data/opals/opal/runtime/lib/string.rb +0 -328
  284. data/opals/opal/runtime/lib/symbol.rb +0 -40
  285. data/opals/opal/runtime/lib/top_self.rb +0 -33
  286. data/opals/opal/runtime/lib/true_class.rb +0 -45
  287. data/opals/opal/runtime/runtime/browser.js +0 -287
  288. data/opals/opal/runtime/runtime/debug.js +0 -180
  289. data/opals/opal/runtime/runtime/opal.js +0 -1008
  290. data/opals/opal/runtime/runtime/post_opal.js +0 -1
  291. data/opals/opal/runtime/runtime/pre_opal.js +0 -2
  292. data/opals/opal/runtime/runtime/server_side.js +0 -50
  293. data/opals/opal/spec/LICENSE.txt +0 -26
  294. data/opals/opal/spec/Opalfile +0 -5
  295. data/opals/opal/spec/bin/spec.rb +0 -43
  296. data/opals/opal/spec/lib/spec.rb +0 -33
  297. data/opals/opal/spec/lib/spec/dsl.rb +0 -41
  298. data/opals/opal/spec/lib/spec/example.rb +0 -35
  299. data/opals/opal/spec/lib/spec/example/before_and_after_hooks.rb +0 -81
  300. data/opals/opal/spec/lib/spec/example/errors.rb +0 -42
  301. data/opals/opal/spec/lib/spec/example/example_group.rb +0 -37
  302. data/opals/opal/spec/lib/spec/example/example_group_factory.rb +0 -43
  303. data/opals/opal/spec/lib/spec/example/example_group_hierarchy.rb +0 -45
  304. data/opals/opal/spec/lib/spec/example/example_group_proxy.rb +0 -41
  305. data/opals/opal/spec/lib/spec/example/example_methods.rb +0 -73
  306. data/opals/opal/spec/lib/spec/example/example_proxy.rb +0 -48
  307. data/opals/opal/spec/lib/spec/expectations.rb +0 -46
  308. data/opals/opal/spec/lib/spec/expectations/errors.rb +0 -35
  309. data/opals/opal/spec/lib/spec/expectations/fail_with.rb +0 -37
  310. data/opals/opal/spec/lib/spec/expectations/handler.rb +0 -48
  311. data/opals/opal/spec/lib/spec/matchers.rb +0 -50
  312. data/opals/opal/spec/lib/spec/matchers/be.rb +0 -26
  313. data/opals/opal/spec/lib/spec/matchers/generated_descriptions.rb +0 -47
  314. data/opals/opal/spec/lib/spec/matchers/operator_matcher.rb +0 -66
  315. data/opals/opal/spec/lib/spec/runner.rb +0 -48
  316. data/opals/opal/spec/lib/spec/runner/example_group_runner.rb +0 -71
  317. data/opals/opal/spec/lib/spec/runner/formatter/terminal_formatter.rb +0 -82
  318. data/opals/opal/spec/lib/spec/runner/options.rb +0 -63
  319. data/opals/opal/spec/resources/index.html +0 -25
  320. data/opals/opal/spec/resources/spec.css +0 -132
  321. data/spec/cherry_kit/iseq_spec.rb +0 -38
  322. data/spec/spec_helper.rb +0 -16
  323. data/spec/vienna_spec.rb +0 -7
  324. data/yard/index.html +0 -43
  325. data/yard/style.css +0 -765
@@ -0,0 +1,26 @@
1
+
2
+ describe "Regexp literals" do
3
+
4
+ # ===========================================================================
5
+ # = Back-refs =
6
+ # ===========================================================================
7
+
8
+ it "saves match data in the $~ pseudo-global variable" do
9
+ "hello" =~ /l+/
10
+ $~.to_a.should == ["ll"]
11
+ end
12
+
13
+ it "saves captures in numbered $[1-9] variables" do
14
+ "1234567890" =~ /(1)(2)(3)(4)(5)(6)(7)(8)(9)(0)/
15
+ $~.to_a.should == ["1234567890", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
16
+ $1.should == "1"
17
+ $2.should == "2"
18
+ $3.should == "3"
19
+ $4.should == "4"
20
+ $5.should == "5"
21
+ $6.should == "6"
22
+ $7.should == "7"
23
+ $8.should == "8"
24
+ $9.should == "9"
25
+ end
26
+ end
@@ -0,0 +1,32 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+ require File.expand_path('../fixtures/super', __FILE__)
3
+
4
+ describe "The super keyword" do
5
+
6
+ it "calls the method on the calling class" do
7
+ Super::S1::A.new.foo([]).should == ["A#foo", "A#bar"]
8
+ Super::S1::A.new.bar([]).should == ["A#bar"]
9
+ Super::S1::B.new.foo([]).should == ["B#foo","A#foo","B#bar","A#bar"]
10
+ Super::S1::B.new.bar([]).should == ["B#bar", "A#bar"]
11
+ end
12
+
13
+ it "searches the full inheritence chain" do
14
+ Super::S2::B.new.foo([]).should == ["B#foo", "A#baz"]
15
+ Super::S2::B.new.baz([]).should == ["A#baz"]
16
+ Super::S2::C.new.foo([]).should == ["B#foo","C#baz","A#baz"]
17
+ Super::S2::C.new.baz([]).should == ["C#baz","A#baz"]
18
+ end
19
+
20
+ it "searches class methods" do
21
+ Super::S3::A.new.foo([]).should == ["A#foo"]
22
+ Super::S3::A.foo([]).should == ["A::foo"]
23
+ Super::S3::A.bar([]).should == ["A::bar","A::foo"]
24
+ Super::S3::B.new.foo([]).should == ["A#foo"]
25
+ Super::S3::B.foo([]).should == ["B::foo","A::foo"]
26
+ Super::S3::B.bar([]).should == ["B::bar","A::bar","B::foo","A::foo"]
27
+ end
28
+
29
+ it "calls the method on the calling class including modules" do
30
+ Super::MS1::A.new.foo([]).should == ["ModA#foo", "ModA#bar"]
31
+ end
32
+ end
@@ -107,51 +107,51 @@ describe "The until expression" do
107
107
  end
108
108
  end
109
109
 
110
- describe "The until modifier" do
111
- it "runs preceding statement while the condition is false" do
112
- i = 0
113
- i = i + 1 until i > 9
114
- i.should == 10
115
- end
116
-
117
- it "evaluates condition before statement execution" do
118
- a = []
119
- i = 0
120
- a << i until (i = i + 1) >= 3
121
- a.should == [1, 2]
122
- end
123
-
124
- it "does not run preceding statement if the condition is true" do
125
- i = 0
126
- i = i + 1 until true
127
- i.should == 0
128
- end
129
-
130
- it "returns nil if ended when condition became true" do
131
- i = 0
132
- (i = i + 1 until i > 9).should == nil
133
- end
134
-
135
- it "returns value passed to break if interrupted by break" do
136
- (break 123 until false).should == 123
137
- end
138
-
139
- it "returns nil if interrupted by break with no arguments" do
140
- (break until false).should == nil
141
- end
142
-
143
- it "skips to end of body with next" do
144
- i = 0
145
- j = 0
146
- (i = i + 1) == 3 ? next : j = j + i until i > 10
147
- j.should == 63
148
- end
149
-
150
- it "restarts the current iteration without reevaluating condition with redo" do
151
- i = 0
152
- j = 0
153
- (i = i + 1) == 4 ? redo : j = j + i until (i = i + 1) > 10
154
- j.should == 34
155
- end
156
- end
110
+ # describe "The until modifier" do
111
+ # it "runs preceding statement while the condition is false" do
112
+ # i = 0
113
+ # i = i + 1 until i > 9
114
+ # i.should == 10
115
+ # end
116
+ #
117
+ # it "evaluates condition before statement execution" do
118
+ # a = []
119
+ # i = 0
120
+ # a << i until (i = i + 1) >= 3
121
+ # a.should == [1, 2]
122
+ # end
123
+ #
124
+ # it "does not run preceding statement if the condition is true" do
125
+ # i = 0
126
+ # i = i + 1 until true
127
+ # i.should == 0
128
+ # end
129
+ #
130
+ # it "returns nil if ended when condition became true" do
131
+ # i = 0
132
+ # (i = i + 1 until i > 9).should == nil
133
+ # end
134
+ #
135
+ # it "returns value passed to break if interrupted by break" do
136
+ # (break 123 until false).should == 123
137
+ # end
138
+ #
139
+ # it "returns nil if interrupted by break with no arguments" do
140
+ # (break until false).should == nil
141
+ # end
142
+ #
143
+ # it "skips to end of body with next" do
144
+ # i = 0
145
+ # j = 0
146
+ # (i = i + 1) == 3 ? next : j = j + i until i > 10
147
+ # j.should == 63
148
+ # end
149
+ #
150
+ # it "restarts the current iteration without reevaluating condition with redo" do
151
+ # i = 0
152
+ # j = 0
153
+ # (i = i + 1) == 4 ? redo : j = j + i until (i = i + 1) > 10
154
+ # j.should == 34
155
+ # end
156
+ # end
157
157
 
@@ -0,0 +1,155 @@
1
+
2
+ describe "Operator assignment 'var op= expr'" do
3
+ it "is equivalent to 'var = var op expr'" do
4
+ x = 13
5
+ (x += 5).should == 18
6
+ x.should == 18
7
+
8
+ x = 17
9
+ (x -= 11).should == 6
10
+ x.should == 6
11
+
12
+ x = 2
13
+ (x *= 5).should == 10
14
+ x.should == 10
15
+
16
+ # x = 36
17
+ # (x /= 9).should == 4
18
+ # x.should == 4
19
+
20
+ # x = 23
21
+ # (x %= 5).should == 3
22
+ # x.should == 3
23
+ # (x %= 3).should == 0
24
+ # x.should == 0
25
+
26
+ # x = 2
27
+ # (x **= 3).should == 8
28
+ # x.should == 8
29
+
30
+ # x = 4
31
+ # (x |= 3).should == 7
32
+ # x.should == 7
33
+ # (x |= 4).should == 7
34
+ # x.should == 7
35
+
36
+ # x = 6
37
+ # (x &= 3).should == 2
38
+ # x.should == 2
39
+ # (x &= 4).should == 0
40
+ # x.should == 0
41
+
42
+ # x = 2
43
+ # (x ^= 3).should == 1
44
+ # x.should == 1
45
+ # (x ^= 4).should == 5
46
+ # x.should == 5
47
+
48
+ # x = 17
49
+ # (x <<= 3).should == 136
50
+ # x.should == 136
51
+
52
+ # x = 5
53
+ # (x >>= 1).should == 2
54
+ # x.should == 2
55
+
56
+ x = nil
57
+ (x ||= 17).should == 17
58
+ x.should == 17
59
+ (x ||= 2).should == 17
60
+ x.should == 17
61
+
62
+ # x = false
63
+ # (x &&= true).should == false
64
+ # x.should == false
65
+ # (x &&= false).should == false
66
+ # x.should == false
67
+ # x = true
68
+ # (x &&= true).should == true
69
+ # x.should == true
70
+ # (x &&= false).should == false
71
+ # x.should == false
72
+ end
73
+ end
74
+
75
+ describe "Operator assignment 'obj[idx] op= expr'" do
76
+ it "is equivalent to 'obj[idx] = obj[idx] op expr'" do
77
+ x = [2, 13, 7]
78
+ (x[1] += 5).should == 18
79
+ x.should == [2, 18, 7]
80
+
81
+ x = [17, 6]
82
+ (x[0] -= 11).should == 6
83
+ x.should == [6, 6]
84
+ end
85
+ end
86
+
87
+ describe "Single assignment" do
88
+ it "Assignment does not modify the lhs, it reassigns its reference" do
89
+ a = 'Foobar'
90
+ b = a
91
+ b = 'Bazquux'
92
+ a.should == 'Foobar'
93
+ b.should == 'Bazquux'
94
+ end
95
+
96
+ it "Assignment does not copy the object being assigned, just creates a new reference to it" do
97
+ a = []
98
+ b = a
99
+ b << 1
100
+ a.should == [1]
101
+ end
102
+
103
+ it "If rhs has multiple arguments, lhs becomes an Array of them" do
104
+ a = 1, 2, 3
105
+ a.should == [1, 2, 3]
106
+
107
+ a = 1, (), 3
108
+ a.should == [1, nil, 3]
109
+ end
110
+ end
111
+
112
+ describe "Multiple assignment without grouping or splatting" do
113
+ it "an equal number of arguments on lhs and rhs assigns positionally" do
114
+ a, b, c, d = 1, 2, 3, 4
115
+ a.should == 1
116
+ b.should == 2
117
+ c.should == 3
118
+ d.should == 4
119
+ end
120
+
121
+ it "If rhs has too few arguments, the missing ones on lhs are assigned nil" do
122
+ a, b, c = 1, 2
123
+ a.should == 1
124
+ b.should == 2
125
+ c.should == nil
126
+ end
127
+
128
+ it "If rhs has too many arguments, the extra ones are silently not assigned anywhere" do
129
+ a, b = 1, 2, 3
130
+ a.should == 1
131
+ b.should == 2
132
+ end
133
+ end
134
+
135
+ describe "Multiple assignments with splats" do
136
+ it "* on the lhs collects all parameters from its position onwards as an Array or an empty array" do
137
+ a, *b = 1, 2
138
+ c, *d = 1
139
+ e, *f = 1, 2, 3
140
+ g, *h = 1, [2, 3]
141
+ # i
142
+ # j
143
+ # k
144
+
145
+ a.should == 1
146
+ b.should == [2]
147
+ c.should == 1
148
+ d.should == []
149
+ e.should == 1
150
+ f.should == [2, 3]
151
+ g.should == 1
152
+ h.should == [[2, 3]]
153
+ end
154
+ end
155
+
@@ -101,7 +101,7 @@ describe "The while expression" do
101
101
  while (i = i + 1) < 3
102
102
  a << i
103
103
  j = j + 1
104
- redo if j < 3
104
+ # redo if j < 3
105
105
  end
106
106
 
107
107
  a.should == [1, 1, 1, 2]
@@ -114,50 +114,50 @@ describe "The while modifier" do
114
114
  i = i + 1 while i < 3
115
115
  i.should == 3
116
116
  end
117
-
118
- it "evaluates condition before statement execution" do
119
- a = []
120
- i = 0
121
- a << i while (i = i + 1) < 3
122
- a.should == [1, 2]
123
- end
124
-
125
- it "does not run preceding statement if the condition is false" do
126
- i = 0
127
- i = i + 1 while false
128
- i.should == 0
129
- end
130
-
131
- it "does not run preceding statement if the condition is empty" do
132
- i = 0
133
- i = i + 1 while ()
134
- i.should == 0
135
- end
136
-
137
- it "returns nil if ended when condition became false" do
138
- i = 0
139
- (i = i + 1 while i < 10).should == nil
140
- end
141
-
142
- it "returns value passed to break if interrupetd by break" do
143
- (break 123 while true).should == 123
144
- end
145
-
146
- it "returns nil if interrupted by break with no arguments" do
147
- (break while true).should == nil
148
- end
149
-
150
- it "skips to end of body with next" do
151
- i = 0
152
- j = 0
153
- (( i = i + 1) == 3 ? next : j = j + i) while i <= 10
154
- j.should == 63
155
- end
156
-
157
- it "restarts the current iteration without reevaluating condition with redo" do
158
- i = 0
159
- j = 0
160
- (i = i + 1) == 4 ? redo : j = j + i while (i = i + 1) <= 10
161
- j.should == 34
162
- end
117
+
118
+ it "evaluates condition before statement execution" do
119
+ a = []
120
+ i = 0
121
+ a << i while (i = i + 1) < 3
122
+ a.should == [1, 2]
123
+ end
124
+
125
+ it "does not run preceding statement if the condition is false" do
126
+ i = 0
127
+ i = i + 1 while false
128
+ i.should == 0
129
+ end
130
+
131
+ it "does not run preceding statement if the condition is empty" do
132
+ i = 0
133
+ i = i + 1 while ()
134
+ i.should == 0
135
+ end
136
+
137
+ it "returns nil if ended when condition became false" do
138
+ i = 0
139
+ (i = i + 1 while i < 10).should == nil
140
+ end
141
+
142
+ it "returns value passed to break if interrupetd by break" do
143
+ (break 123 while true).should == 123
144
+ end
145
+
146
+ it "returns nil if interrupted by break with no arguments" do
147
+ (break while true).should == nil
148
+ end
149
+
150
+ it "skips to end of body with next" do
151
+ i = 0
152
+ j = 0
153
+ (( i = i + 1) == 3 ? next : j = j + i) while i <= 10
154
+ j.should == 63
155
+ end
156
+
157
+ it "restarts the current iteration without reevaluating condition with redo" do
158
+ i = 0
159
+ j = 0
160
+ # (i = i + 1) == 4 ? redo : j = j + i while (i = i + 1) <= 10
161
+ j.should == 34
162
+ end
163
163
  end
@@ -2,4 +2,4 @@
2
2
  # included.
3
3
  # require File.join(File.dirname(__FILE__), '..', 'lib', 'opal.rb')
4
4
 
5
- # puts "in spec helper"
5
+ puts "in spec helper"
@@ -0,0 +1,19 @@
1
+ Opals' Ruby Filesystem
2
+ ======================
3
+
4
+ This gem provides the additional methods for File and Dir to support
5
+ full reading and writing. Core only contains the most basic methods
6
+ from File and Dir because Opal in the browser has no means of actually
7
+ reading or writing to disk. This gem is only meant to be used by the
8
+ gem context, which runs ontop of therubyracer. This gem will
9
+ automatically be loaded by the Context class, so it will be immediately
10
+ available for use.
11
+
12
+ Implementation
13
+ --------------
14
+
15
+ The Context class in the Opal build tools exposes/fixes the `.fs` property
16
+ on the `opal` object in the javascript context to expose a lot of the
17
+ native functionality directly. This is backed by the `FileSystem` class
18
+ in the Opal build tools.
19
+