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
data/.gitignore CHANGED
@@ -1,12 +1,7 @@
1
- announcement.txt
2
- coverage
3
- doc
4
- pkg
5
1
  .DS_Store
6
- cappuccino
7
- opal_spec
8
- opal_docs
2
+ doc
3
+ /pkg
4
+ /tmp
5
+ *.gem
9
6
  .yardoc
10
- tmp
11
- .gem
12
- extras
7
+
data/LICENSE ADDED
@@ -0,0 +1,75 @@
1
+ Copyright (C) 2011 by Adam Beynon
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
20
+
21
+
22
+
23
+
24
+ Opalspec based on RSPEC, original license:
25
+ ==========================================
26
+
27
+ Copyright (c) 2005-2010 The RSpec Development Team
28
+
29
+ Permission is hereby granted, free of charge, to any person obtaining
30
+ a copy of this software and associated documentation files (the
31
+ "Software"), to deal in the Software without restriction, including
32
+ without limitation the rights to use, copy, modify, merge, publish,
33
+ distribute, sublicense, and/or sell copies of the Software, and to
34
+ permit persons to whom the Software is furnished to do so, subject to
35
+ the following conditions:
36
+
37
+ The above copyright notice and this permission notice shall be
38
+ included in all copies or substantial portions of the Software.
39
+
40
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
42
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
43
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
44
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
45
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
46
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
47
+
48
+
49
+ Opalite contains Sizzle, original license:
50
+ ==========================================
51
+
52
+ MIT License
53
+ ----
54
+
55
+ Copyright (c) 2009 John Resig
56
+
57
+ Permission is hereby granted, free of charge, to any person obtaining a copy
58
+ of this software and associated documentation files (the "Software"), to deal
59
+ in the Software without restriction, including without limitation the rights
60
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
61
+ copies of the Software, and to permit persons to whom the Software is
62
+ furnished to do so, subject to the following conditions:
63
+
64
+ The above copyright notice and this permission notice shall be included in
65
+ all copies or substantial portions of the Software.
66
+
67
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
68
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
69
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
70
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
71
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
72
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
73
+ THE SOFTWARE.
74
+
75
+
data/README.md CHANGED
@@ -1,4 +1,56 @@
1
- Vienna: Build tools for opal
2
- ============================
1
+ Opal: Ruby runtime for javascript
2
+ =================================
3
+
4
+ **Homepage**: [http://opalscript.org](http://opalscript.org)
5
+ **Github**: [http://github.com/adambeynon/opal](http://github.com/adambeynon/opal)
6
+
7
+ Description
8
+ -----------
9
+
10
+ Opal is a ruby runtime and set of core libraries designed to run
11
+ directly on top of javascript. It supports the gem packaging system for
12
+ building ruby ready for the browser. It also uses therubyracer to
13
+ provide a command line REPL and environment for running ruby server-side
14
+ inside a javascript context.
15
+
16
+ Installation
17
+ ------------
18
+
19
+ Opal is distributed as a gem, so install with:
20
+
21
+ $ gem install opal
22
+
23
+ Alternativley, you may just clone this git repo. No building is
24
+ neccessary.
25
+
26
+ Usage
27
+ -----
28
+
29
+ The opal build tools can be used in three ways. As a simple repl, the
30
+ bundler tasks and the simple build tasks.
31
+
32
+ **1. opal Command-line tool**
33
+
34
+ In its current form, the `opal` executable is very simple - it provides
35
+ a simple ruby repl that uses therubyracer to provide an embedable
36
+ javascript context. If you have installed the gem, to run the REPL,
37
+ simply type:
38
+
39
+ $ opal
40
+
41
+ or if you have cloned this repository, type:
42
+
43
+ $ bin/opal
44
+
45
+ The REPL can be used like any other repl, and internally each command is
46
+ being compiled into javascript, and run in the context which opal is
47
+ already loaded into.
48
+
49
+ Changelog
50
+ ---------
51
+
52
+ - **30 March 2011**: 0.3.0 Release
53
+ - Major redesign of build tools to use v8 for server side opal
54
+ - Split all opal packages into actual gems
55
+ - File and Dir classes for both browser and v8 gem runtimes
3
56
 
4
- Vienna is the code name for the build tools for opal. This is actually what the gem is, where as opal are the core libraries. See github.com/adambeynon/opal for the core libraries.
data/Rakefile CHANGED
@@ -1,163 +1,86 @@
1
- require 'rubygems'
2
- require 'rake'
3
1
  require 'yard'
4
2
 
5
- begin
6
- require 'jeweler'
7
- Jeweler::Tasks.new do |gemspec|
8
- gemspec.name = "opal"
9
- gemspec.summary = "Ruby compiler and runtime for the browser"
10
- gemspec.description = "Ruby compiler and runtime for the browser."
11
- gemspec.email = "adam@adambeynon.com"
12
- gemspec.homepage = "http://opalscript.org"
13
- gemspec.authors = ["Adam Beynon"]
14
- gemspec.files.include 'opals/opal/**/*'
15
- end
16
- Jeweler::GemcutterTasks.new
17
- rescue LoadError
18
- puts "Jeweler not available. Install it with: sudo gem install jeweler"
3
+ OPAL_DOC_ROOT = "doc"
4
+ OPAL_DOC_GEMS = "doc/gems"
5
+ OPAL_GIT_REPO = "git@github.com:adambeynon/opal.git"
6
+
7
+ desc "Rebuild ruby_parser.rb for opal build tools"
8
+ task :parser do
9
+ %x{racc -E -l lib/opal/ruby/ruby_parser.y -o lib/opal/ruby/ruby_parser.rb}
19
10
  end
20
11
 
12
+ desc "Requires this development version of opal (not installed one)"
13
+ task :opal do
14
+ $:.unshift File.join(__FILE__, '..', 'lib')
15
+ require 'opal'
16
+ end
21
17
 
18
+ desc "Builds standalone opal.js file (opal + core + rquery) for the browser"
19
+ task :browser => :opal do
20
+ gem = Opal::Gem.new File.join(__FILE__, '..', 'gems', 'rquery')
22
21
 
23
- desc "Simple task to require opal gem. Uses local, not installed."
24
- task :opal_gem do
25
- require File.join(File.dirname(__FILE__), 'lib', 'opal')
22
+ content = gem.bundle :to => 'tmp/opal.js'
26
23
  end
27
24
 
25
+ desc "Builds spec runner for core lib"
26
+ task :opal_spec => :opal do
27
+ gem = Opal::Gem.new File.join(__FILE__, '..', 'gems', 'opal')
28
+ content = gem.bundle
29
+ File.open('tmp/opal_spec.js', 'w+') { |out| out.write content }
30
+ end
28
31
 
32
+ desc "Building example for a simple builder"
33
+ task :simple => :opal do
34
+ builder = Opal::Builder.new :project_dir => File.join(Dir.getwd, 'tmp'),
35
+ :files => 'testing.rb',
36
+ :out => 'testing.js'
29
37
 
30
- desc "Rebuild ruby parser (using racc)"
31
- task :ruby_parser do
32
- %x{racc -E lib/vienna/builders/ruby/ruby_parser.rb.y -o lib/vienna/builders/ruby/ruby_parser.rb}
38
+ builder.build
33
39
  end
34
40
 
35
-
41
+ desc "Rebuilds the documentation"
42
+ task :doc => ['doc:clean', 'doc:opal', 'doc:gems']
36
43
 
37
44
  namespace :doc do
38
-
39
- # rebuild demos
40
- desc "Rebuild demos"
41
- task :demos => :opal_gem do
42
- # every demo uses an index.html file inside of the demos folder
43
- base = File.join(File.dirname(__FILE__), 'demos')
44
- demos = File.join(base, '**', 'index.html')
45
- # we build all demos to vienna/doc/demos
46
- Dir.glob(demos).each do |demo|
47
- puts "building demo: #{demo}"
48
- # path will be (demos/)path(/index.html)
49
- path = /^#{Regexp.escape base}\/(.*)\/index\.html$/.match(demo)[1]
50
-
51
- build_root = File.join(File.dirname(__FILE__), 'doc', 'demos', path)
52
-
53
- puts build_root
54
- project = Vienna::Project.new File.dirname(demo),
55
- :build_root => build_root
56
-
57
- # FIXME: maybe only set options if no Opalfile... some of the CherryKit
58
- # apps may want to include some css etc etc, so dont overwrite them?
59
- project.options :lib_directories => [""],
60
- :javascripts_prefix => "",
61
- :copy_html => true
62
- project.build!
63
- project.clean!
64
- # puts project
65
- end
66
- end
67
-
68
- # opal/runtime docs
45
+ # Opal documentation
69
46
  YARD::Rake::YardocTask.new(:opal) do |t|
70
- t.files = ['opals/runtime/**/*.rb']
71
- t.files += ['opals/opal/spec/core/**/*.rb']
72
- t.files += ['-', 'opals/runtime/docs/**/*.md']
73
- t.options = ['-o./doc/opal/']
74
- t.options += ['-r./opals/runtime/README.md']
75
- t.options += ['-mmarkdown']
76
- t.options += ['--title', 'Opal Documentation']
47
+ t.files = ['lib/**/*.rb']
48
+ t.options = ['--title', 'Documentation for Opal', '--markup', 'markdown']
77
49
  end
78
-
79
- # browser docs
80
- YARD::Rake::YardocTask.new(:browser) do |t|
81
- t.files = ['opals/browser/**/*.rb']
82
- t.options = ['-o./doc/browser/']
83
- t.options += ['-r./opals/browser/README.md']
84
- t.options += ['-mmarkdown']
85
- t.options += ['--title', 'Browser Documentation']
50
+
51
+ desc "Clean doc dir ready for rebuilding"
52
+ task :clean do
53
+ rm_rf OPAL_DOC_ROOT
86
54
  end
87
-
88
- # all specs
89
- namespace :spec do
90
-
91
- %w{opal browser}.each do |opal|
92
- desc "rebuild spec for #{opal}"
93
- task opal.to_sym => :opal_gem do
94
- opal_root = File.join(File.dirname(__FILE__), 'opals', opal)
95
- build_root = File.join(File.dirname(__FILE__), 'doc', opal, 'spec')
96
- project = Vienna::Project.new opal_root, :build_root => build_root, :build_mode => :spec
97
-
98
- project.options :javascript_name => "spec.js",
99
- :stylesheet_name => "spec.css",
100
- :build_prefix => ""
101
-
102
- project.build!
103
- project.clean!
104
-
105
- # spec html file
106
- from = File.join(File.dirname(__FILE__), 'opals', 'spec', 'resources', 'index.html')
107
-
108
- FileUtils.copy from, File.join(build_root, 'index.html')
55
+
56
+ desc "Generate documentation for opal and all gems"
57
+ task :gems do
58
+ Dir.mkdir OPAL_DOC_GEMS unless File.exists? OPAL_DOC_GEMS
59
+
60
+ %w[core].each do |gem|
61
+ gem_root = File.join Dir.getwd, 'gems', gem
62
+ doc_root = File.join gem_root, 'doc'
63
+ new_doc_root = File.join OPAL_DOC_GEMS, gem
64
+
65
+ puts " **#{gem}**"
66
+ Dir.chdir(gem_root) do
67
+ system "rake yard"
109
68
  end
69
+
70
+ mv doc_root, new_doc_root
110
71
  end
111
72
  end
112
- end
113
73
 
114
- desc "Rebuild opal.js for deployment"
115
- task :opal => :opal_gem do
116
- opal_root = File.join(File.dirname(__FILE__), 'opals', 'opal', 'browser')
117
- build_root = File.join(File.dirname(__FILE__), 'doc')
118
-
119
- # debug build
120
- project = Vienna::Project.new opal_root, :build_mode => :debug,
121
- :build_root => build_root
122
-
123
- project.options :javascripts_prefix => '',
124
- :javascript_name => 'opal.debug.js',
125
- :bin_file => nil
126
- project.build!
127
- project.clean!
128
-
129
- # release build
130
- project = Vienna::Project.new opal_root, :build_mode => :release,
131
- :build_root => build_root
132
-
133
- project.options :javascripts_prefix => '',
134
- :javascript_name => 'opal.js',
135
- :bin_file => nil
136
- project.build!
137
- project.clean!
138
-
139
- # minify!
140
- %x{java -jar extras/compiler.jar --js=doc/opal.js --js_output_file=doc/opal.min.js}
141
-
142
-
143
- # Also place all three into gen directory
144
- %w{opal.min.js opal.debug.js}.each do |src|
145
- FileUtils.copy "doc/#{src}", "gen/browser/__PROJECT_NAME__/javascripts/#{src}"
74
+ desc "Push changes to gh-pages branch"
75
+ task :pages do
76
+ Dir.chdir(OPAL_DOC_ROOT) do
77
+ system "git init"
78
+ system "git add ."
79
+ system "git commit -a -m 'Update docs for #{Time.now.asctime}'"
80
+ system "git remote add origin #{OPAL_GIT_REPO}"
81
+ system "git checkout -b gh-pages"
82
+ system "git push -f origin gh-pages"
83
+ end
146
84
  end
147
85
  end
148
86
 
149
- task :doc => ['doc:browser', 'doc:opal', 'doc:demos'] do
150
- # go through each set of generated docs, and replace the style.css file
151
- %w{browser opal}.each do |opal|
152
- from = File.join(File.dirname(__FILE__), 'yard', 'style.css')
153
- to = File.join(File.dirname(__FILE__), 'doc', opal, 'css', 'style.css')
154
- FileUtils.copy from, to
155
- end
156
-
157
- # copy our index.html and its necessary css files
158
- %w{index.html style.css}.each do |resource|
159
- from = File.join File.dirname(__FILE__), 'yard', resource
160
- to = File.join(File.dirname(__FILE__), 'doc')
161
- FileUtils.copy from, to
162
- end
163
- end
data/bin/opal CHANGED
@@ -1,13 +1,10 @@
1
- #!/usr/bin/env ruby -wKU
1
+ #!/usr/bin/env ruby
2
2
 
3
- require File.expand_path(
4
- File.join(File.dirname(__FILE__), %w[.. lib opal]))
3
+ lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
- Opal.run
6
+ require 'opal'
7
+ require 'opal/command'
8
+
9
+ Opal::Command.ruby_repl
7
10
 
8
- # begin
9
- # require 'rubygems'
10
- # require 'v8'
11
- # rescue Exception
12
- # abort "therubyracer not available. Install it with: sudo gem install therubyracer"
13
- # end
@@ -0,0 +1,5 @@
1
+ Core Library
2
+ ============
3
+
4
+ Core ruby libraries for opal.
5
+
@@ -0,0 +1,7 @@
1
+ require 'yard'
2
+
3
+ YARD::Rake::YardocTask.new do |t|
4
+ t.files = ['lib/**/*.rb']
5
+ t.options = ['--title', 'Opal Core Library']
6
+ end
7
+
@@ -0,0 +1,13 @@
1
+
2
+ Gem::Specification.new do |s|
3
+ s.name = "core"
4
+ s.version = "0.0.1"
5
+ s.authors = ["Adam Beynon"]
6
+ s.email = ["adam@adambeynon.com"]
7
+ s.homepage = "http://github.com/adambeynon/opal"
8
+ s.summary = "Core libraries for opal"
9
+
10
+ s.files = Dir.glob("{bin,lib}/**/*") + %w[README.md]
11
+ s.require_path = "lib"
12
+ end
13
+
@@ -0,0 +1,33 @@
1
+
2
+ module Kernel
3
+ # Try to load the library or file named `path`. An error is thrown if the
4
+ # path cannot be resolved.
5
+ #
6
+ # @param [String] path The path to load
7
+ # @return [true, false]
8
+ def require(path)
9
+ `VM.require(path);`
10
+ true
11
+ end
12
+ end
13
+
14
+ require 'core/basic_object'
15
+ require 'core/module'
16
+ require 'core/class'
17
+ require 'core/kernel'
18
+ require 'core/top_self'
19
+ require 'core/nil_class'
20
+ require 'core/true_class'
21
+ require 'core/false_class'
22
+ require 'core/array'
23
+ require 'core/numeric'
24
+ require 'core/hash'
25
+ require 'core/error'
26
+ require 'core/string'
27
+ require 'core/symbol'
28
+ require 'core/proc'
29
+ require 'core/range'
30
+ require 'core/file'
31
+ require 'core/dir'
32
+ require 'core/vm'
33
+