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
@@ -1,77 +0,0 @@
1
- #
2
- # proc.rb
3
- # vienna
4
- #
5
- # Created by Adam Beynon.
6
- # Copyright 2010 Adam Beynon.
7
- #
8
- # Permission is hereby granted, free of charge, to any person obtaining a copy
9
- # of this software and associated documentation files (the "Software"), to deal
10
- # in the Software without restriction, including without limitation the rights
11
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- # copies of the Software, and to permit persons to whom the Software is
13
- # furnished to do so, subject to the following conditions:
14
- #
15
- # The above copyright notice and this permission notice shall be included in
16
- # all copies or substantial portions of the Software.
17
- #
18
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- # THE SOFTWARE.
25
- #
26
-
27
- class Proc
28
-
29
- def to_proc
30
- self
31
- end
32
-
33
- def call
34
- `if (#{self}.__lambda__) {
35
- try {
36
- return #{self}.apply(#{self}.__self__, []);
37
- }
38
- catch (e) {
39
- // first try and catch a break (from the lambda proc)
40
- if (e.__keyword__ == 'break') {
41
- //console.log("break!");
42
- return e.opal_value;
43
- }
44
-
45
- // look for next statements
46
- if (e.__keyword__ == 'next') {
47
- return e.opal_value;
48
- }
49
-
50
- // next try and catch return error statement (simply return it)
51
- if (e.__keyword__ == 'return') {
52
- return e.opal_value;
53
- }
54
-
55
- // redo - simply recall block?
56
- if (e.__keyword__ == 'redo') {
57
- return arguments.callee.apply(#{self});
58
- }
59
-
60
- // worst case, rethrow error
61
- throw e;
62
- }
63
- }
64
- else {
65
- //throw "cannot .call for non lambda block.. yet"
66
- return #{self}.apply(#{self}.__self__);
67
- }`
68
- end
69
-
70
- def to_s
71
- `return "#<" + #{self}.class_name + ":" + #{self}.id + ">";`
72
- end
73
-
74
- def inspect
75
- to_s
76
- end
77
- end
@@ -1,63 +0,0 @@
1
- #
2
- # range.rb
3
- # vienna
4
- #
5
- # Created by Adam Beynon.
6
- # Copyright 2010 Adam Beynon.
7
- #
8
- # Permission is hereby granted, free of charge, to any person obtaining a copy
9
- # of this software and associated documentation files (the "Software"), to deal
10
- # in the Software without restriction, including without limitation the rights
11
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- # copies of the Software, and to permit persons to whom the Software is
13
- # furnished to do so, subject to the following conditions:
14
- #
15
- # The above copyright notice and this permission notice shall be included in
16
- # all copies or substantial portions of the Software.
17
- #
18
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- # THE SOFTWARE.
25
- #
26
-
27
- class Range
28
-
29
- def self.new(start, ending, exclusive)
30
- `if (!#{exclusive}) {
31
- #{exclusive} = #{false};
32
- }`
33
- `return #{self}.R(#{start}, #{ending}, #{exclusive}.r);`
34
- end
35
-
36
- def length
37
- `return #{self}.__end__ - #{self}.__start__;`
38
- end
39
-
40
- def begin
41
- `return #{self}.__start__;`
42
- end
43
-
44
- def end
45
- `return #{self}.__end__;`
46
- end
47
-
48
- def ===(val)
49
- include? val
50
- end
51
-
52
- def cover?(val)
53
- include? val
54
- end
55
-
56
- def include?(val)
57
- `return (#{self}.__start__ <= #{val} && #{val} <= #{self}.__real_end__) ? #{true} : #{false};`
58
- end
59
-
60
- def exclude_end?
61
- `return #{self}.__exclusive__ ? #{true} : #{false};`
62
- end
63
- end
@@ -1,111 +0,0 @@
1
- #
2
- # regexp.rb
3
- # vienna
4
- #
5
- # Created by Adam Beynon.
6
- # Copyright 2010 Adam Beynon.
7
- #
8
- # Permission is hereby granted, free of charge, to any person obtaining a copy
9
- # of this software and associated documentation files (the "Software"), to deal
10
- # in the Software without restriction, including without limitation the rights
11
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- # copies of the Software, and to permit persons to whom the Software is
13
- # furnished to do so, subject to the following conditions:
14
- #
15
- # The above copyright notice and this permission notice shall be included in
16
- # all copies or substantial portions of the Software.
17
- #
18
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- # THE SOFTWARE.
25
- #
26
-
27
- # A Regexp holds a regular expression, used to match a pattern against strings.
28
- # Regexps are created using the `/.../` and `%r{...}` literals, and by the
29
- # {Regexp.new} constructor.
30
- #
31
- # ## Implementation
32
- #
33
- # Toll free bridged with native regexp object.
34
- #
35
- class Regexp
36
-
37
- # Produce a nicely formatted string-version of `self`.
38
- #
39
- # @example
40
- # /^abc/.inspect
41
- # # => "/^abc/"
42
- #
43
- # @return [String] string
44
- def inspect
45
- `return #{self}.toString();`
46
- end
47
-
48
- # Equality - Two regexps are equal if their patterns are identical, they have
49
- # the same character set code, and their {#casefold?} values are the same.
50
- #
51
- # @example
52
- # /abc/ == /abc/x # => false
53
- # /abc/ == /abc/i # => false
54
- # /abc/ == /abc/n # => false
55
- # /abc/u == /abc/n # => false
56
- #
57
- # @param [Regexp] other_regexp another regexp to comapre
58
- # @return [Boolean]
59
- def ==(other_regexp)
60
- `return #{self}.toString() === #{other_regexp}.toString() ? #{true} : #{false};`
61
- end
62
-
63
- # Case equality - Synonym for {Regexp#=~} used in case statements.
64
- #
65
- # @example
66
- # a = "HELLO"
67
- # case a
68
- # when /^[a-z]*$/; puts "Lower case"
69
- # when /^[A-Z]*$/; puts "Upper case"
70
- # else puts "Mixed case"
71
- # end
72
- #
73
- # # => "Upper case"
74
- #
75
- # @param [String] str string to test
76
- # @return [Boolean]
77
- def ===(str)
78
- `if (#{self}.exec(#{str})) {
79
- return #{true};
80
- } else {
81
- return #{false};
82
- }`
83
- end
84
-
85
- alias_method :eql?, :==
86
-
87
- # Returns a {MatchData} object describing the match, or `nil` if there was no
88
- # match. This is equivalent to retrieving the value of the special variable
89
- # $~ following a normal match. If the second parameter is present, it
90
- # specifies the position in the string to begin the search.
91
- #
92
- # @example
93
- # /(.)(.)(.)/.match("abc")[2]
94
- # # => "b"
95
- # /(.)(.)/.match("abc")[2]
96
- # # => "c"
97
- #
98
- # @todo Passing a block is not yet supported.
99
- #
100
- # @param [Sring] string to match against
101
- # @return [MatchData, nil] result or nil
102
- def match(string)
103
- m = nil
104
- `if (#{m} = #{self}.exec(#{string})) {
105
- return #{MatchData.new m};
106
- } else {
107
- return #{nil};
108
- }`
109
- end
110
-
111
- end
@@ -1,30 +0,0 @@
1
- #
2
- # ruby.rb
3
- # vienna
4
- #
5
- # Created by Adam Beynon.
6
- # Copyright 2010 Adam Beynon.
7
- #
8
- # Permission is hereby granted, free of charge, to any person obtaining a copy
9
- # of this software and associated documentation files (the "Software"), to deal
10
- # in the Software without restriction, including without limitation the rights
11
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- # copies of the Software, and to permit persons to whom the Software is
13
- # furnished to do so, subject to the following conditions:
14
- #
15
- # The above copyright notice and this permission notice shall be included in
16
- # all copies or substantial portions of the Software.
17
- #
18
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- # THE SOFTWARE.
25
- #
26
-
27
- # This file simply maintains "everything" else.. runtime constants etc.
28
-
29
- # This depends on the platform.
30
- RUBY_PLATFORM = `opal.ruby_platform`
@@ -1,328 +0,0 @@
1
- #
2
- # string.rb
3
- # vienna
4
- #
5
- # Created by Adam Beynon.
6
- # Copyright 2010 Adam Beynon.
7
- #
8
- # Permission is hereby granted, free of charge, to any person obtaining a copy
9
- # of this software and associated documentation files (the "Software"), to deal
10
- # in the Software without restriction, including without limitation the rights
11
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- # copies of the Software, and to permit persons to whom the Software is
13
- # furnished to do so, subject to the following conditions:
14
- #
15
- # The above copyright notice and this permission notice shall be included in
16
- # all copies or substantial portions of the Software.
17
- #
18
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- # THE SOFTWARE.
25
- #
26
-
27
- # A {String} object holds a sequence of bytes, typically representing
28
- # characters.
29
- #
30
- # ## Implementation Details.
31
- #
32
- # For performance, strings in Opal are built directly on top of native
33
- # javascript strings, so that they are in fact the same object. This has the
34
- # side effect that all strings are immutable, that is, they cannot be changed.
35
- # Most of the string methods that end in '!' for example are not implemented,
36
- # but their counterparts are: {#upcase} exists, but {#upcase!} does not, for
37
- # example.
38
- class String
39
-
40
- # Returns a new string object containing a copy of `str`.
41
- #
42
- # @param [String] str string to copy
43
- # @return [String] result
44
- def self.new(str = "")
45
- `return new String(#{str});`
46
- end
47
-
48
- # Copy - Returns a new {String} constaining `num` copies of the receiver.
49
- #
50
- # @example
51
- # "Ho! " * 3
52
- # # => "Ho! Ho! Ho! "
53
- #
54
- # @param [Number] num number of copies
55
- # @return [String] result
56
- def *(num)
57
- `var res = [];
58
- for (var i = 0; i < #{num}; i++) {
59
- res.push(#{self});
60
- }
61
- return res.join('');`
62
- end
63
-
64
- # Concatenation - Returns a new {String} containing `other_str` concatenated
65
- # to `self`.
66
- #
67
- # @example
68
- # "Hello from " + self.to_s
69
- # # => "Hello from main"
70
- #
71
- # @param [String] other_str string to concatenate
72
- # @return [String] result
73
- def +(other_str)
74
- `return #{self} + #{other_str};`
75
- end
76
-
77
- # Comparison - returns -1 if `other_str` is greater than, 0 if `other_str` is
78
- # equal to, and 1 if `other_str` is less than `self`.
79
- #
80
- # @example
81
- # "abcdef" <=> "abcde"
82
- # # => 1
83
- # "abcdef" <=> "abcdef"
84
- # # => 0
85
- # "abcdef" <=> "abcdefg"
86
- # # => -1
87
- # "abcdef" <=> "ABCDEF"
88
- # # => 1
89
- #
90
- # @param [String] other_str string to compare
91
- # @return [-1, 0, 1, nil] result
92
- def <=>(other_str)
93
- `if (!(#{other_str}.info & #{self}.TS)) return #{nil};
94
- else if (#{self} > #{other_str}) return 1;
95
- else if (#{self} < #{other_str}) return -1;
96
- return 0;`
97
- end
98
-
99
- # Equality - if `other` is not a {String} return `false`. Otherwise, returns
100
- # `true` if `self` <=> `other` returns zero.
101
- #
102
- # @param [String] other string to compare
103
- # @return [Boolean] result
104
- def ==(other)
105
- `return (#{self}.valueOf() === #{other}.valueOf()) ? #{true} : #{false};`
106
- end
107
-
108
- # Returns a copy of `self` with the first character converted to uppercase and
109
- # the remainder to lowercase.
110
- #
111
- # @example
112
- # "hello".capitalize
113
- # # => "Hello"
114
- # "HELLO".capitalize
115
- # # => "Hello"
116
- # "123ABC".capitalize
117
- # # => "123abc"
118
- #
119
- # @return [String]
120
- def capitalize
121
- `return #{self}[0].toUpperCase() + #{self}.substr(1).toLowerCase();`
122
- end
123
-
124
- # Case-inseneitive version of {String#<=>}.
125
- #
126
- # @example
127
- # "abcdef".casecmp("abcde")
128
- # # => 1
129
- # "aBcDeF".casecmp("abcdef")
130
- # # => 0
131
- # "abcdef".casecmp("abcdefg")
132
- # # => -1
133
- # "abcdef".casecmp("ABCDEF")
134
- # # => 0
135
- #
136
- # @param [String] other_str string to compare
137
- # @return [-1, 0, 1, nil] result
138
- def casecmp(other_str)
139
- `var a = #{self}.toLowerCase(), b = #{other_str}.toLowerCase();
140
- if (!(b.info & a.TS)) return #{nil};
141
- else if (a > b) return 1;
142
- else if (a < b) return -1;
143
- return 0;`
144
- end
145
-
146
- # Returns a copy of `self` with all uppercase letters replaced with their
147
- # lowercase counterparts.
148
- #
149
- # @example
150
- # "hEllO".downcase
151
- # # => "hello"
152
- #
153
- # @return [String] result
154
- def downcase
155
- `return #{self}.toLowerCase();`
156
- end
157
-
158
- # Returns `true` if `self` has a length of zero.
159
- #
160
- # @example
161
- # "hello".empty?
162
- # # => false
163
- # "".empty?
164
- # # => true
165
- #
166
- # @return [Boolean]
167
- def empty?
168
- `return #{self} == '' ? #{true} : #{false};`
169
- end
170
-
171
- # Returns `true` if `self` ends with a `suffix` given.
172
- #
173
- # @example
174
- # "hello".end_with? "lo"
175
- # # => true
176
- #
177
- # @param [String] suffix suffix to check
178
- # @return [Boolean]
179
- def end_with?(suffix = "")
180
- `return (#{suffix} != '' && #{self}.lastIndexOf(#{suffix}) == (#{self}.length - #{suffix}.length)) ? #{true} : #{false};`
181
- end
182
-
183
- # Two strings are equal if they have the same length and content.
184
- #
185
- # @param [String] other string to comapre
186
- # @return [Boolean]
187
- def eql?(other)
188
- `return (#{self} == #{other}) ? #{true} : #{false};`
189
- end
190
-
191
- # Returns true if `self` contains the given `other_str`.
192
- #
193
- # @example
194
- # "hello".include? "lo"
195
- # # => true
196
- # "hello".include? "ol"
197
- # # => false
198
- # "hello".include? "h"
199
- # # => true
200
- #
201
- # @param [String] other_str string to check for
202
- # @return [Boolean]
203
- def include?(other_str)
204
- `var res = #{self}.indexOf(#{other_str});
205
- if (res != -1) {
206
- return #{true};
207
- }
208
- return #{false};`
209
- end
210
-
211
- # Returns the index of the first occurrence of the given `substring` or
212
- # pattern (regexp) in `self`. Returns `nil` if not found. If the second
213
- # parameter is present, it specifies the position in the string to begin the
214
- # search.
215
- #
216
- # @todo Use of Regexp or offsets not yet implemented.
217
- #
218
- # @example
219
- # "hello".index "e"
220
- # # => 1
221
- # "hello".index "lo"
222
- # # => 3
223
- # "hello".index "a"
224
- # # => nil
225
- #
226
- # @param [String] substring string to look for
227
- # @return [Number, nil] result
228
- def index(substring)
229
- `var res = #{self}.indexOf(#{substring});
230
- if (res != -1) {
231
- return res;
232
- }
233
- return #{nil};`
234
- end
235
-
236
- # Returns a printable version of `self`, surrounded by quote marks, with
237
- # special characters escaped.
238
- #
239
- # @todo Does not yet escape special characters
240
- #
241
- # @example
242
- # str = "hello"
243
- # str.inspect
244
- # # => "\"hello\""
245
- #
246
- # @return [String]
247
- def inspect
248
- `return '"' + #{self} + '"';`
249
- end
250
-
251
- # Returns the {Symbol} corresponding to `self`, creating the symbol if it did
252
- # not previously exist.
253
- #
254
- # @example
255
- # "Koala".to_sym
256
- # # => :Koala
257
- # s = 'cat'.to_sym
258
- # # => :cat
259
- # s == :cat
260
- # # => true
261
- # s = '@cat'.to_sym
262
- # # => :@cat
263
- # s == :@cat
264
- # # => true
265
- #
266
- # This can also be used to create symbols that cannot be represented using the
267
- # :xxxx notation.
268
- #
269
- # @example
270
- # 'cat and dog'.to_sym
271
- # # => :"cat and dog"
272
- #
273
- # @return [Symbol]
274
- def intern
275
- `return #{self}.Y(#{self});`
276
- end
277
-
278
- alias_method :to_sym, :intern
279
-
280
- # Returns the character length of `str`.
281
- #
282
- # @return [Number] length of string
283
- def length
284
- `return #{self}.length;`
285
- end
286
-
287
- alias_method :size, :length
288
-
289
- # Returns a copy of `self` with leading whitespace removed. See also
290
- # {String#rstrip} and {String#strip}.
291
- #
292
- # @example
293
- # " hello ".lstrip
294
- # # => "hello "
295
- # "hello".lstrip
296
- # # => "hello"
297
- #
298
- # @return [String]
299
- def lstrip
300
- `return #{self}.replace(/^\s*/, "");`
301
- end
302
-
303
- # Returns a new string with the characters from `self` in reverse order.
304
- #
305
- # @example
306
- # "stressed".reverse
307
- # # => "desserts"
308
- #
309
- # @return [String]
310
- def reverse
311
- `return #{self}.split('').reverse().join('');`
312
- end
313
-
314
-
315
-
316
- def slice(start, finish)
317
- `return #{self}.substr(#{start}, #{finish});`
318
- end
319
-
320
- def to_s
321
- self
322
- end
323
-
324
- def split(str)
325
- `return #{self}.split(#{str});`
326
- end
327
-
328
- end