opal 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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