opal-cj 0.7.0.beta1

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 (470) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.gitmodules +27 -0
  4. data/.rspec +3 -0
  5. data/.spectator +2 -0
  6. data/.spectator-mspec +3 -0
  7. data/.travis.yml +45 -0
  8. data/CHANGELOG.md +406 -0
  9. data/CONTRIBUTING.md +41 -0
  10. data/Gemfile +27 -0
  11. data/Guardfile +77 -0
  12. data/LICENSE +19 -0
  13. data/README.md +178 -0
  14. data/Rakefile +116 -0
  15. data/benchmarks/operators.rb +11 -0
  16. data/bin/opal +22 -0
  17. data/bin/opal-build +77 -0
  18. data/bin/opal-mspec +10 -0
  19. data/bin/opal-repl +72 -0
  20. data/config.ru +14 -0
  21. data/examples/rack/Gemfile +3 -0
  22. data/examples/rack/app/application.rb +13 -0
  23. data/examples/rack/app/user.rb +21 -0
  24. data/examples/rack/config.ru +7 -0
  25. data/examples/rack/index.html.erb +10 -0
  26. data/examples/sinatra/Gemfile +4 -0
  27. data/examples/sinatra/app/application.rb +7 -0
  28. data/examples/sinatra/config.ru +28 -0
  29. data/lib/mspec/opal/main.rb.erb +9 -0
  30. data/lib/mspec/opal/rake_task.rb +278 -0
  31. data/lib/mspec/opal/runner.rb +206 -0
  32. data/lib/mspec/opal/sprockets.js +57 -0
  33. data/lib/opal.rb +11 -0
  34. data/lib/opal/builder.rb +135 -0
  35. data/lib/opal/builder_processors.rb +165 -0
  36. data/lib/opal/cli.rb +145 -0
  37. data/lib/opal/cli_options.rb +149 -0
  38. data/lib/opal/cli_runners.rb +10 -0
  39. data/lib/opal/cli_runners/nodejs.rb +56 -0
  40. data/lib/opal/cli_runners/phantom.js +35 -0
  41. data/lib/opal/cli_runners/phantomjs.rb +28 -0
  42. data/lib/opal/cli_runners/server.rb +54 -0
  43. data/lib/opal/compiler.rb +307 -0
  44. data/lib/opal/erb.rb +64 -0
  45. data/lib/opal/fragment.rb +41 -0
  46. data/lib/opal/hike_path_finder.rb +18 -0
  47. data/lib/opal/nodes.rb +26 -0
  48. data/lib/opal/nodes/arglist.rb +56 -0
  49. data/lib/opal/nodes/array.rb +54 -0
  50. data/lib/opal/nodes/base.rb +151 -0
  51. data/lib/opal/nodes/call.rb +283 -0
  52. data/lib/opal/nodes/call_special.rb +178 -0
  53. data/lib/opal/nodes/case.rb +96 -0
  54. data/lib/opal/nodes/class.rb +42 -0
  55. data/lib/opal/nodes/constants.rb +78 -0
  56. data/lib/opal/nodes/def.rb +157 -0
  57. data/lib/opal/nodes/defined.rb +113 -0
  58. data/lib/opal/nodes/definitions.rb +168 -0
  59. data/lib/opal/nodes/for.rb +35 -0
  60. data/lib/opal/nodes/hash.rb +67 -0
  61. data/lib/opal/nodes/helpers.rb +114 -0
  62. data/lib/opal/nodes/if.rb +67 -0
  63. data/lib/opal/nodes/iter.rb +131 -0
  64. data/lib/opal/nodes/literal.rb +230 -0
  65. data/lib/opal/nodes/logic.rb +217 -0
  66. data/lib/opal/nodes/masgn.rb +62 -0
  67. data/lib/opal/nodes/module.rb +46 -0
  68. data/lib/opal/nodes/rescue.rb +135 -0
  69. data/lib/opal/nodes/runtime_helpers.rb +45 -0
  70. data/lib/opal/nodes/scope.rb +293 -0
  71. data/lib/opal/nodes/singleton_class.rb +25 -0
  72. data/lib/opal/nodes/super.rb +97 -0
  73. data/lib/opal/nodes/top.rb +101 -0
  74. data/lib/opal/nodes/variables.rb +158 -0
  75. data/lib/opal/nodes/while.rb +65 -0
  76. data/lib/opal/nodes/yield.rb +95 -0
  77. data/lib/opal/parser.rb +658 -0
  78. data/lib/opal/parser/grammar.rb +5452 -0
  79. data/lib/opal/parser/grammar.y +1684 -0
  80. data/lib/opal/parser/keywords.rb +66 -0
  81. data/lib/opal/parser/lexer.rb +1208 -0
  82. data/lib/opal/parser/parser_scope.rb +25 -0
  83. data/lib/opal/parser/sexp.rb +75 -0
  84. data/lib/opal/path_reader.rb +28 -0
  85. data/lib/opal/paths.rb +38 -0
  86. data/lib/opal/source_map.rb +70 -0
  87. data/lib/opal/sprockets.rb +4 -0
  88. data/lib/opal/sprockets/cache_key_fix.rb +17 -0
  89. data/lib/opal/sprockets/environment.rb +37 -0
  90. data/lib/opal/sprockets/erb.rb +37 -0
  91. data/lib/opal/sprockets/path_reader.rb +34 -0
  92. data/lib/opal/sprockets/processor.rb +124 -0
  93. data/lib/opal/sprockets/server.rb +180 -0
  94. data/lib/opal/util.rb +64 -0
  95. data/lib/opal/version.rb +3 -0
  96. data/opal.gemspec +36 -0
  97. data/opal/README.md +6 -0
  98. data/opal/corelib/array.rb +1556 -0
  99. data/opal/corelib/array/inheritance.rb +113 -0
  100. data/opal/corelib/basic_object.rb +73 -0
  101. data/opal/corelib/boolean.rb +41 -0
  102. data/opal/corelib/class.rb +55 -0
  103. data/opal/corelib/comparable.rb +56 -0
  104. data/opal/corelib/complex.rb +3 -0
  105. data/opal/corelib/dir.rb +20 -0
  106. data/opal/corelib/enumerable.rb +1132 -0
  107. data/opal/corelib/enumerator.rb +422 -0
  108. data/opal/corelib/error.rb +63 -0
  109. data/opal/corelib/file.rb +56 -0
  110. data/opal/corelib/hash.rb +728 -0
  111. data/opal/corelib/helpers.rb +102 -0
  112. data/opal/corelib/io.rb +59 -0
  113. data/opal/corelib/kernel.rb +569 -0
  114. data/opal/corelib/main.rb +7 -0
  115. data/opal/corelib/match_data.rb +114 -0
  116. data/opal/corelib/method.rb +58 -0
  117. data/opal/corelib/module.rb +462 -0
  118. data/opal/corelib/nil_class.rb +62 -0
  119. data/opal/corelib/numeric.rb +532 -0
  120. data/opal/corelib/proc.rb +52 -0
  121. data/opal/corelib/range.rb +116 -0
  122. data/opal/corelib/rational.rb +3 -0
  123. data/opal/corelib/regexp.rb +133 -0
  124. data/opal/corelib/runtime.js +1240 -0
  125. data/opal/corelib/string.rb +1212 -0
  126. data/opal/corelib/string/inheritance.rb +78 -0
  127. data/opal/corelib/struct.rb +141 -0
  128. data/opal/corelib/time.rb +584 -0
  129. data/opal/corelib/variables.rb +24 -0
  130. data/opal/opal.rb +32 -0
  131. data/package.json +9 -0
  132. data/spec/filters/bugs/array.rb +232 -0
  133. data/spec/filters/bugs/basic_object.rb +14 -0
  134. data/spec/filters/bugs/class.rb +21 -0
  135. data/spec/filters/bugs/enumerable.rb +69 -0
  136. data/spec/filters/bugs/enumerator.rb +3 -0
  137. data/spec/filters/bugs/hash.rb +128 -0
  138. data/spec/filters/bugs/kernel.rb +10 -0
  139. data/spec/filters/bugs/language.rb +415 -0
  140. data/spec/filters/bugs/math.rb +95 -0
  141. data/spec/filters/bugs/module.rb +14 -0
  142. data/spec/filters/bugs/nil.rb +7 -0
  143. data/spec/filters/bugs/numeric.rb +20 -0
  144. data/spec/filters/bugs/opal.rb +14 -0
  145. data/spec/filters/bugs/regexp.rb +11 -0
  146. data/spec/filters/bugs/set.rb +7 -0
  147. data/spec/filters/bugs/singleton.rb +6 -0
  148. data/spec/filters/bugs/string.rb +360 -0
  149. data/spec/filters/bugs/stringscanner.rb +22 -0
  150. data/spec/filters/bugs/struct.rb +45 -0
  151. data/spec/filters/bugs/time.rb +177 -0
  152. data/spec/filters/bugs/unknown.rb +11 -0
  153. data/spec/filters/unsupported/encoding.rb +95 -0
  154. data/spec/filters/unsupported/enumerator.rb +14 -0
  155. data/spec/filters/unsupported/float.rb +5 -0
  156. data/spec/filters/unsupported/frozen.rb +90 -0
  157. data/spec/filters/unsupported/hash_compare_by_identity.rb +16 -0
  158. data/spec/filters/unsupported/integer_size.rb +7 -0
  159. data/spec/filters/unsupported/method_added.rb +10 -0
  160. data/spec/filters/unsupported/mutable_strings.rb +361 -0
  161. data/spec/filters/unsupported/private_constants.rb +30 -0
  162. data/spec/filters/unsupported/private_methods.rb +44 -0
  163. data/spec/filters/unsupported/random.rb +4 -0
  164. data/spec/filters/unsupported/ruby_exe.rb +5 -0
  165. data/spec/filters/unsupported/tainted.rb +155 -0
  166. data/spec/filters/unsupported/time.rb +21 -0
  167. data/spec/filters/unsupported/trusted.rb +80 -0
  168. data/spec/lib/builder_processors_spec.rb +27 -0
  169. data/spec/lib/builder_spec.rb +66 -0
  170. data/spec/lib/cli_spec.rb +134 -0
  171. data/spec/lib/compiler_spec.rb +197 -0
  172. data/spec/lib/dependency_resolver_spec.rb +40 -0
  173. data/spec/lib/fixtures/no_requires.rb +1 -0
  174. data/spec/lib/fixtures/opal_file.rb +2 -0
  175. data/spec/lib/fixtures/require_tree_test.rb +3 -0
  176. data/spec/lib/fixtures/required_tree_test/required_file1.rb +1 -0
  177. data/spec/lib/fixtures/required_tree_test/required_file2.rb +1 -0
  178. data/spec/lib/fixtures/requires.rb +7 -0
  179. data/spec/lib/fixtures/sprockets_file.js.rb +3 -0
  180. data/spec/lib/fixtures/sprockets_require_tree_test.rb +3 -0
  181. data/spec/lib/hike_path_finder_spec.rb +23 -0
  182. data/spec/lib/lexer_spec.rb +110 -0
  183. data/spec/lib/parser/alias_spec.rb +26 -0
  184. data/spec/lib/parser/and_spec.rb +13 -0
  185. data/spec/lib/parser/attrasgn_spec.rb +28 -0
  186. data/spec/lib/parser/begin_spec.rb +42 -0
  187. data/spec/lib/parser/block_spec.rb +12 -0
  188. data/spec/lib/parser/break_spec.rb +17 -0
  189. data/spec/lib/parser/call_spec.rb +139 -0
  190. data/spec/lib/parser/class_spec.rb +35 -0
  191. data/spec/lib/parser/comments_spec.rb +11 -0
  192. data/spec/lib/parser/def_spec.rb +61 -0
  193. data/spec/lib/parser/if_spec.rb +26 -0
  194. data/spec/lib/parser/iter_spec.rb +59 -0
  195. data/spec/lib/parser/lambda_spec.rb +64 -0
  196. data/spec/lib/parser/literal_spec.rb +118 -0
  197. data/spec/lib/parser/masgn_spec.rb +37 -0
  198. data/spec/lib/parser/module_spec.rb +27 -0
  199. data/spec/lib/parser/not_spec.rb +27 -0
  200. data/spec/lib/parser/op_asgn1_spec.rb +23 -0
  201. data/spec/lib/parser/op_asgn2_spec.rb +23 -0
  202. data/spec/lib/parser/or_spec.rb +13 -0
  203. data/spec/lib/parser/return_spec.rb +17 -0
  204. data/spec/lib/parser/sclass_spec.rb +21 -0
  205. data/spec/lib/parser/string_spec.rb +276 -0
  206. data/spec/lib/parser/super_spec.rb +20 -0
  207. data/spec/lib/parser/unary_spec.rb +48 -0
  208. data/spec/lib/parser/undef_spec.rb +15 -0
  209. data/spec/lib/parser/unless_spec.rb +13 -0
  210. data/spec/lib/parser/variables_spec.rb +92 -0
  211. data/spec/lib/parser/while_spec.rb +15 -0
  212. data/spec/lib/parser/yield_spec.rb +20 -0
  213. data/spec/lib/path_reader_spec.rb +24 -0
  214. data/spec/lib/shared/path_finder_shared.rb +19 -0
  215. data/spec/lib/shared/path_reader_shared.rb +31 -0
  216. data/spec/lib/spec_helper.rb +9 -0
  217. data/spec/lib/sprockets/environment_spec.rb +30 -0
  218. data/spec/lib/sprockets/erb_spec.rb +25 -0
  219. data/spec/lib/sprockets/path_reader_spec.rb +25 -0
  220. data/spec/lib/sprockets/processor_spec.rb +35 -0
  221. data/spec/lib/sprockets/server_spec.rb +20 -0
  222. data/spec/opal/compiler/irb_spec.rb +44 -0
  223. data/spec/opal/core/array/select_spec.rb +14 -0
  224. data/spec/opal/core/array/set_range_to_array_spec.rb +7 -0
  225. data/spec/opal/core/date_spec.rb +122 -0
  226. data/spec/opal/core/enumerable/all_break_spec.rb +5 -0
  227. data/spec/opal/core/enumerable/any_break_spec.rb +5 -0
  228. data/spec/opal/core/enumerable/collect_break_spec.rb +13 -0
  229. data/spec/opal/core/enumerable/count_break_spec.rb +5 -0
  230. data/spec/opal/core/enumerable/detect_break_spec.rb +5 -0
  231. data/spec/opal/core/enumerable/drop_while_break_spec.rb +5 -0
  232. data/spec/opal/core/enumerable/each_slice_break.rb +6 -0
  233. data/spec/opal/core/enumerable/each_with_index_break_spec.rb +5 -0
  234. data/spec/opal/core/enumerable/each_with_object_break_spec.rb +5 -0
  235. data/spec/opal/core/enumerable/find_all_break_spec.rb +5 -0
  236. data/spec/opal/core/enumerable/find_index_break_spec.rb +5 -0
  237. data/spec/opal/core/enumerable/grep_break_spec.rb +5 -0
  238. data/spec/opal/core/enumerable/max_break_spec.rb +5 -0
  239. data/spec/opal/core/enumerable/max_by_break_spec.rb +5 -0
  240. data/spec/opal/core/enumerable/min_break_spec.rb +5 -0
  241. data/spec/opal/core/enumerable/min_by_break_spec.rb +5 -0
  242. data/spec/opal/core/enumerable/none_break_spec.rb +5 -0
  243. data/spec/opal/core/enumerable/one_break_spec.rb +5 -0
  244. data/spec/opal/core/enumerable/reduce_break_spec.rb +5 -0
  245. data/spec/opal/core/enumerable/take_while_break_spec.rb +5 -0
  246. data/spec/opal/core/fixtures/class.rb +124 -0
  247. data/spec/opal/core/fixtures/class_variables.rb +0 -0
  248. data/spec/opal/core/fixtures/constants.rb +33 -0
  249. data/spec/opal/core/fixtures/require_tree_files/file 1.rb +1 -0
  250. data/spec/opal/core/fixtures/require_tree_files/file 2.rb +1 -0
  251. data/spec/opal/core/fixtures/require_tree_files/file 3.rb +1 -0
  252. data/spec/opal/core/fixtures/require_tree_files/file 4.rb +1 -0
  253. data/spec/opal/core/fixtures/require_tree_files/file 5.rb +1 -0
  254. data/spec/opal/core/kernel/Array_spec.rb +10 -0
  255. data/spec/opal/core/kernel/block_given_spec.rb +30 -0
  256. data/spec/opal/core/kernel/class_spec.rb +6 -0
  257. data/spec/opal/core/kernel/define_singleton_method_spec.rb +21 -0
  258. data/spec/opal/core/kernel/equal_value_spec.rb +12 -0
  259. data/spec/opal/core/kernel/extend_spec.rb +21 -0
  260. data/spec/opal/core/kernel/format_spec.rb +122 -0
  261. data/spec/opal/core/kernel/freeze_spec.rb +15 -0
  262. data/spec/opal/core/kernel/instance_eval_spec.rb +28 -0
  263. data/spec/opal/core/kernel/instance_variable_defined_spec.rb +15 -0
  264. data/spec/opal/core/kernel/instance_variable_get_spec.rb +14 -0
  265. data/spec/opal/core/kernel/instance_variable_set_spec.rb +10 -0
  266. data/spec/opal/core/kernel/loop_spec.rb +23 -0
  267. data/spec/opal/core/kernel/match_spec.rb +5 -0
  268. data/spec/opal/core/kernel/method_spec.rb +31 -0
  269. data/spec/opal/core/kernel/methods_spec.rb +25 -0
  270. data/spec/opal/core/kernel/nil_spec.rb +7 -0
  271. data/spec/opal/core/kernel/p_spec.rb +15 -0
  272. data/spec/opal/core/kernel/printf_spec.rb +11 -0
  273. data/spec/opal/core/kernel/proc_spec.rb +13 -0
  274. data/spec/opal/core/kernel/rand_spec.rb +23 -0
  275. data/spec/opal/core/kernel/require_tree_spec.rb +7 -0
  276. data/spec/opal/core/kernel/respond_to_spec.rb +41 -0
  277. data/spec/opal/core/kernel/send_spec.rb +56 -0
  278. data/spec/opal/core/kernel/sprintf_spec.rb +5 -0
  279. data/spec/opal/core/language/block_spec.rb +538 -0
  280. data/spec/opal/core/language/fixtures/array.rb +11 -0
  281. data/spec/opal/core/language/fixtures/block.rb +57 -0
  282. data/spec/opal/core/language/fixtures/break.rb +240 -0
  283. data/spec/opal/core/language/fixtures/ensure.rb +72 -0
  284. data/spec/opal/core/language/fixtures/literal_lambda.rb +7 -0
  285. data/spec/opal/core/language/fixtures/metaclass.rb +33 -0
  286. data/spec/opal/core/language/fixtures/module.rb +24 -0
  287. data/spec/opal/core/language/fixtures/next.rb +128 -0
  288. data/spec/opal/core/language/fixtures/return.rb +118 -0
  289. data/spec/opal/core/language/fixtures/send.rb +110 -0
  290. data/spec/opal/core/language/fixtures/send_1.9.rb +22 -0
  291. data/spec/opal/core/language/fixtures/super.rb +308 -0
  292. data/spec/opal/core/language/fixtures/variables.rb +58 -0
  293. data/spec/opal/core/language/fixtures/yield.rb +28 -0
  294. data/spec/opal/core/language/predefined_spec.rb +85 -0
  295. data/spec/opal/core/language/proc_spec.rb +263 -0
  296. data/spec/opal/core/language/regexp_spec.rb +20 -0
  297. data/spec/opal/core/language/send_spec.rb +225 -0
  298. data/spec/opal/core/language/string_spec.rb +44 -0
  299. data/spec/opal/core/language/symbol_spec.rb +40 -0
  300. data/spec/opal/core/language/variables_spec.rb +1366 -0
  301. data/spec/opal/core/language/versions/array_1.9.rb +39 -0
  302. data/spec/opal/core/language/versions/block_1.9.rb +0 -0
  303. data/spec/opal/core/language/versions/break_1.9.rb +0 -0
  304. data/spec/opal/core/language/versions/case_1.9.rb +20 -0
  305. data/spec/opal/core/language/versions/hash_1.9.rb +18 -0
  306. data/spec/opal/core/language/versions/literal_lambda_1.9.rb +143 -0
  307. data/spec/opal/core/language/versions/not_1.9.rb +22 -0
  308. data/spec/opal/core/language/versions/send_1.9.rb +241 -0
  309. data/spec/opal/core/language/versions/symbol_1.9.rb +15 -0
  310. data/spec/opal/core/language/versions/variables_1.9.rb +8 -0
  311. data/spec/opal/core/module/alias_method_spec.rb +28 -0
  312. data/spec/opal/core/module/ancestors_spec.rb +11 -0
  313. data/spec/opal/core/module/append_features_spec.rb +14 -0
  314. data/spec/opal/core/module/attr_accessor_spec.rb +26 -0
  315. data/spec/opal/core/module/const_defined_spec.rb +85 -0
  316. data/spec/opal/core/module/const_get_spec.rb +85 -0
  317. data/spec/opal/core/module/const_missing_spec.rb +17 -0
  318. data/spec/opal/core/module/const_set_spec.rb +64 -0
  319. data/spec/opal/core/module/constants_spec.rb +49 -0
  320. data/spec/opal/core/module/fixtures/classes.rb +434 -0
  321. data/spec/opal/core/module/method_defined_spec.rb +48 -0
  322. data/spec/opal/core/module/module_function_spec.rb +25 -0
  323. data/spec/opal/core/module/name_spec.rb +52 -0
  324. data/spec/opal/core/module/public_method_defined_spec.rb +18 -0
  325. data/spec/opal/core/module/remove_const_spec.rb +22 -0
  326. data/spec/opal/core/module/undef_method_spec.rb +66 -0
  327. data/spec/opal/core/numeric/bit_and_spec.rb +7 -0
  328. data/spec/opal/core/numeric/bit_or_spec.rb +8 -0
  329. data/spec/opal/core/numeric/bit_xor_spec.rb +6 -0
  330. data/spec/opal/core/numeric/ceil_spec.rb +8 -0
  331. data/spec/opal/core/numeric/chr_spec.rb +8 -0
  332. data/spec/opal/core/numeric/comparison_spec.rb +24 -0
  333. data/spec/opal/core/numeric/complement_spec.rb +8 -0
  334. data/spec/opal/core/numeric/divide_spec.rb +10 -0
  335. data/spec/opal/core/numeric/eql_spec.rb +9 -0
  336. data/spec/opal/core/numeric/exponent_spec.rb +33 -0
  337. data/spec/opal/core/numeric/floor_spec.rb +8 -0
  338. data/spec/opal/core/numeric/gt_spec.rb +11 -0
  339. data/spec/opal/core/numeric/gte_spec.rb +12 -0
  340. data/spec/opal/core/numeric/integer_spec.rb +9 -0
  341. data/spec/opal/core/numeric/left_shift_spec.rb +21 -0
  342. data/spec/opal/core/numeric/lt_spec.rb +11 -0
  343. data/spec/opal/core/numeric/lte_spec.rb +12 -0
  344. data/spec/opal/core/numeric/minus_spec.rb +8 -0
  345. data/spec/opal/core/numeric/modulo_spec.rb +19 -0
  346. data/spec/opal/core/numeric/multiply_spec.rb +9 -0
  347. data/spec/opal/core/numeric/next_spec.rb +9 -0
  348. data/spec/opal/core/numeric/ord_spec.rb +9 -0
  349. data/spec/opal/core/numeric/plus_spec.rb +8 -0
  350. data/spec/opal/core/numeric/pred_spec.rb +7 -0
  351. data/spec/opal/core/numeric/right_shift_spec.rb +25 -0
  352. data/spec/opal/core/numeric/step_spec.rb +11 -0
  353. data/spec/opal/core/numeric/succ_spec.rb +9 -0
  354. data/spec/opal/core/numeric/times_spec.rb +36 -0
  355. data/spec/opal/core/numeric/to_f_spec.rb +7 -0
  356. data/spec/opal/core/numeric/to_i_spec.rb +7 -0
  357. data/spec/opal/core/numeric/to_json_spec.rb +8 -0
  358. data/spec/opal/core/numeric/to_s_spec.rb +26 -0
  359. data/spec/opal/core/numeric/uminus_spec.rb +9 -0
  360. data/spec/opal/core/numeric/upto_spec.rb +19 -0
  361. data/spec/opal/core/numeric/zero_spec.rb +7 -0
  362. data/spec/opal/core/proc/call_spec.rb +21 -0
  363. data/spec/opal/core/proc/element_reference_spec.rb +21 -0
  364. data/spec/opal/core/proc/proc_tricks_spec.rb +7 -0
  365. data/spec/opal/core/runtime/begin_spec.rb +39 -0
  366. data/spec/opal/core/runtime/block_send_spec.rb +28 -0
  367. data/spec/opal/core/runtime/block_spec.rb +23 -0
  368. data/spec/opal/core/runtime/bridged_classes_spec.rb +64 -0
  369. data/spec/opal/core/runtime/constants_spec.rb +13 -0
  370. data/spec/opal/core/runtime/eval_spec.rb +5 -0
  371. data/spec/opal/core/runtime/main_methods_spec.rb +27 -0
  372. data/spec/opal/core/runtime/method_missing_spec.rb +62 -0
  373. data/spec/opal/core/runtime/method_spec.rb +31 -0
  374. data/spec/opal/core/runtime/operator_call_spec.rb +13 -0
  375. data/spec/opal/core/runtime/paren_spec.rb +14 -0
  376. data/spec/opal/core/runtime/rescue_spec.rb +38 -0
  377. data/spec/opal/core/runtime/return_spec.rb +38 -0
  378. data/spec/opal/core/runtime/send_spec.rb +34 -0
  379. data/spec/opal/core/runtime/singleton_class_spec.rb +13 -0
  380. data/spec/opal/core/runtime/super_spec.rb +212 -0
  381. data/spec/opal/core/runtime/truthy_spec.rb +23 -0
  382. data/spec/opal/core/runtime/variables_spec.rb +20 -0
  383. data/spec/opal/core/source_map_spec.rb +15 -0
  384. data/spec/opal/core/string_spec.rb +11 -0
  385. data/spec/opal/stdlib/erb/erb_spec.rb +30 -0
  386. data/spec/opal/stdlib/erb/inline_block.opalerb +3 -0
  387. data/spec/opal/stdlib/erb/quoted.opalerb +1 -0
  388. data/spec/opal/stdlib/erb/simple.opalerb +1 -0
  389. data/spec/opal/stdlib/json/ext_spec.rb +48 -0
  390. data/spec/opal/stdlib/json/parse_spec.rb +33 -0
  391. data/spec/opal/stdlib/native/alias_native_spec.rb +27 -0
  392. data/spec/opal/stdlib/native/each_spec.rb +13 -0
  393. data/spec/opal/stdlib/native/element_reference_spec.rb +16 -0
  394. data/spec/opal/stdlib/native/exposure_spec.rb +33 -0
  395. data/spec/opal/stdlib/native/ext_spec.rb +19 -0
  396. data/spec/opal/stdlib/native/initialize_spec.rb +17 -0
  397. data/spec/opal/stdlib/native/method_missing_spec.rb +51 -0
  398. data/spec/opal/stdlib/native/native_reader_spec.rb +22 -0
  399. data/spec/opal/stdlib/native/native_writer_spec.rb +30 -0
  400. data/spec/opal/stdlib/native/new_spec.rb +8 -0
  401. data/spec/opal/stdlib/promise/error_spec.rb +15 -0
  402. data/spec/opal/stdlib/promise/rescue_spec.rb +35 -0
  403. data/spec/opal/stdlib/promise/then_spec.rb +54 -0
  404. data/spec/opal/stdlib/promise/trace_spec.rb +35 -0
  405. data/spec/opal/stdlib/promise/value_spec.rb +15 -0
  406. data/spec/opal/stdlib/promise/when_spec.rb +34 -0
  407. data/spec/opal/stdlib/template/paths_spec.rb +10 -0
  408. data/spec/opal/stdlib/thread/mutex_spec.rb +40 -0
  409. data/spec/opal/stdlib/thread/thread_queue_spec.rb +32 -0
  410. data/spec/opal/stdlib/thread/thread_spec.rb +60 -0
  411. data/spec/rubyspecs +329 -0
  412. data/spec/spec_helper.rb +42 -0
  413. data/spec/support/mspec_rspec_adapter.rb +33 -0
  414. data/spec/support/parser_helpers.rb +37 -0
  415. data/stdlib/README.md +3 -0
  416. data/stdlib/base64.rb +152 -0
  417. data/stdlib/benchmark.rb +10 -0
  418. data/stdlib/buffer.rb +40 -0
  419. data/stdlib/buffer/array.rb +66 -0
  420. data/stdlib/buffer/view.rb +70 -0
  421. data/stdlib/date.rb +170 -0
  422. data/stdlib/delegate.rb +29 -0
  423. data/stdlib/dir.rb +1 -0
  424. data/stdlib/encoding.rb +166 -0
  425. data/stdlib/enumerator.rb +1 -0
  426. data/stdlib/erb.rb +16 -0
  427. data/stdlib/file.rb +1 -0
  428. data/stdlib/forwardable.rb +71 -0
  429. data/stdlib/json.rb +182 -0
  430. data/stdlib/math.rb +370 -0
  431. data/stdlib/native.rb +530 -0
  432. data/stdlib/nodejs.rb +5 -0
  433. data/stdlib/nodejs/dir.rb +13 -0
  434. data/stdlib/nodejs/file.rb +98 -0
  435. data/stdlib/nodejs/fileutils.rb +26 -0
  436. data/stdlib/nodejs/io.rb +2 -0
  437. data/stdlib/nodejs/irb.rb +45 -0
  438. data/stdlib/nodejs/process.rb +16 -0
  439. data/stdlib/nodejs/require.rb +32 -0
  440. data/stdlib/nodejs/rubygems.rb +68 -0
  441. data/stdlib/nodejs/runtime.rb +25 -0
  442. data/stdlib/nodejs/yaml.rb +11 -0
  443. data/stdlib/observer.rb +202 -0
  444. data/stdlib/opal-parser.rb +53 -0
  445. data/stdlib/opal-source-maps.rb +2 -0
  446. data/stdlib/ostruct.rb +69 -0
  447. data/stdlib/pathname.rb +31 -0
  448. data/stdlib/phantomjs.rb +8 -0
  449. data/stdlib/pp.rb +12 -0
  450. data/stdlib/process.rb +10 -0
  451. data/stdlib/promise.rb +300 -0
  452. data/stdlib/racc/parser.rb +215 -0
  453. data/stdlib/rbconfig.rb +20 -0
  454. data/stdlib/securerandom.rb +12 -0
  455. data/stdlib/set.rb +116 -0
  456. data/stdlib/singleton.rb +40 -0
  457. data/stdlib/source_map.rb +5 -0
  458. data/stdlib/source_map/map.rb +220 -0
  459. data/stdlib/source_map/mapping.rb +26 -0
  460. data/stdlib/source_map/offset.rb +88 -0
  461. data/stdlib/source_map/version.rb +3 -0
  462. data/stdlib/source_map/vlq.rb +98 -0
  463. data/stdlib/sourcemap.rb +1 -0
  464. data/stdlib/stringio.rb +181 -0
  465. data/stdlib/strscan.rb +155 -0
  466. data/stdlib/template.rb +46 -0
  467. data/stdlib/thread.rb +160 -0
  468. data/stdlib/time.rb +9 -0
  469. data/tasks/github.rake +19 -0
  470. metadata +690 -0
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+ require 'native'
3
+
4
+ describe Opal::Compiler do
5
+ describe "irb parser option" do
6
+ it "creates Opal.irb_vars if it does not exist" do
7
+ $global["Opal"].irb_vars = nil
8
+ eval_js compile("nil", :irb => true)
9
+
10
+ ($global["Opal"].irb_vars == nil).should be_false
11
+ end
12
+
13
+ it "does not create Opal.irb_vars if :irb option not passed" do
14
+ $global["Opal"].irb_vars = nil
15
+ eval_js compile("nil")
16
+
17
+ ($global["Opal"].irb_vars == nil).should be_true
18
+ end
19
+
20
+ it "sets each s(:lasgn) in the top level onto irb_vars" do
21
+ eval_js compile("foo = 42", :irb => true)
22
+ $global["Opal"].irb_vars.foo.should == 42
23
+ end
24
+
25
+ it "gets each s(:lvar) in the top level from irb_vars" do
26
+ eval_js compile("foo = 3.142; bar = foo", :irb => true)
27
+ $global["Opal"].irb_vars.bar.should == 3.142
28
+ end
29
+
30
+ it "persists local vars between parses" do
31
+ eval_js compile("foo = 'hello world'", :irb => true)
32
+ eval_js compile("bar = foo.upcase", :irb => true)
33
+ $global["Opal"].irb_vars.bar.should == "HELLO WORLD"
34
+ end
35
+
36
+ it "can still call top level methods" do
37
+ eval_js(compile("to_s", :irb => true)).should == "main"
38
+ end
39
+
40
+ def compile *args
41
+ Opal::Compiler.new(*args).compile
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,14 @@
1
+ describe "Array#select" do
2
+ it "passes an array item into a single default-block parameter" do
3
+ [["ABC", "DEF"]].select do |x|
4
+ x.should == ["ABC", "DEF"]
5
+ end
6
+ end
7
+
8
+ it "splits an array item into a list of default block parameters" do
9
+ [["ABC", "DEF"]].select do |x,y|
10
+ x.should == "ABC"
11
+ y.should == "DEF"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ describe "Array#[]=" do
2
+ it 'expands the array when assigning another array to a range' do
3
+ a = ['a']
4
+ a[3..4] = ['b', 'c']
5
+ a.should == ['a', nil, nil, 'b', 'c']
6
+ end
7
+ end
@@ -0,0 +1,122 @@
1
+ require 'spec_helper'
2
+ require 'date'
3
+
4
+ # rubyspec does not have specs for these listed methods
5
+ describe Date do
6
+ describe ".parse" do
7
+ it "parses a date string into a Date instance" do
8
+ Date.parse('2013-10-4').should == Date.new(2013, 10, 4)
9
+ Date.parse('2013-06-02').should == Date.new(2013, 6, 2)
10
+ end
11
+ end
12
+
13
+ describe "#<" do
14
+ it "is true when self is before other" do
15
+ (Date.new(2013, 2, 4) < Date.new(2013, 2, 5)).should == true
16
+ (Date.new(2013, 2, 4) < Date.new(2014, 7, 6)).should == true
17
+ end
18
+
19
+ it "is false when self is not before other" do
20
+ (Date.new(2013, 2, 4) < Date.new(2013, 2, 4)).should == false
21
+ (Date.new(2014, 2, 4) < Date.new(2013, 7, 6)).should == false
22
+ end
23
+ end
24
+
25
+ describe '#<=' do
26
+ it "is true when self is before or the same day as other" do
27
+ (Date.new(2013, 4, 5) <= Date.new(2013, 4, 5)).should == true
28
+ (Date.new(2013, 4, 5) <= Date.new(2013, 4, 9)).should == true
29
+ end
30
+
31
+ it "is false when self is after other" do
32
+ (Date.new(2013, 4, 5) <= Date.new(2013, 4, 2)).should == false
33
+ (Date.new(2013, 4, 5) <= Date.new(2013, 2, 5)).should == false
34
+ end
35
+ end
36
+
37
+ describe "#==" do
38
+ it "returns true if self is equal to other date" do
39
+ (Date.new(2013, 9, 13) == Date.new(2013, 9, 13)).should == true
40
+ end
41
+
42
+ it "returns false if self is not equal to other date" do
43
+ (Date.new(2013, 10, 2) == Date.new(2013, 10, 11)).should == false
44
+ end
45
+ end
46
+
47
+ describe "#clone" do
48
+ it "creates a copy of the current date" do
49
+ orig = Date.new(2013, 10, 15)
50
+ copy = orig.clone
51
+
52
+ orig.should == copy
53
+ orig.object_id.should_not == copy.object_id
54
+ end
55
+ end
56
+
57
+ describe "#day" do
58
+ it "returns the day of the date" do
59
+ Date.new(2013, 2, 10).day.should == 10
60
+ Date.new(2013, 2, 1).day.should == 1
61
+ end
62
+ end
63
+
64
+ describe "#month" do
65
+ it "returns the month of the date" do
66
+ Date.new(2013, 1, 23).month.should == 1
67
+ Date.new(2013, 12, 2).month.should == 12
68
+ end
69
+ end
70
+
71
+ describe "#next" do
72
+ it "returns the next date from self" do
73
+ Date.new(2013, 4, 6).next.should == Date.new(2013, 4, 7)
74
+ Date.new(2013, 6, 30).next.should == Date.new(2013, 7, 1)
75
+ Date.new(2013, 12, 31).next.should == Date.new(2014, 1, 1)
76
+ end
77
+ end
78
+
79
+ describe "#next_month" do
80
+ it "returns the date with the next calendar month to self" do
81
+ Date.new(2013, 2, 5).next_month.should == Date.new(2013, 3, 5)
82
+ Date.new(2013, 5, 31).next_month.should == Date.new(2013, 6, 30)
83
+ Date.new(2013, 12, 5).next_month.should == Date.new(2014, 1, 5)
84
+ end
85
+ end
86
+
87
+ describe "#prev" do
88
+ it "returns the previous date from self" do
89
+ Date.new(2013, 3, 5).prev.should == Date.new(2013, 3, 4)
90
+ Date.new(2013, 6, 1).prev.should == Date.new(2013, 5, 31)
91
+ Date.new(2014, 1, 1).prev.should == Date.new(2013, 12, 31)
92
+ end
93
+ end
94
+
95
+ describe "#prev_month" do
96
+ it "returns the date with the previous calendar month" do
97
+ Date.new(2013, 2, 9).prev_month.should == Date.new(2013, 1, 9)
98
+ Date.new(2013, 7, 31).prev_month.should == Date.new(2013, 6, 30)
99
+ Date.new(2013, 1, 3).prev_month.should == Date.new(2012, 12, 3)
100
+ end
101
+ end
102
+
103
+ describe "#to_s" do
104
+ it "returns an ISO 8601 representation" do
105
+ Date.new(2013, 10, 15).to_s.should == "2013-10-15"
106
+ Date.new(2013, 4, 9).to_s.should == "2013-04-09"
107
+ end
108
+ end
109
+
110
+ describe "#wday" do
111
+ it "returns the day of the week" do
112
+ Date.new(2001, 2, 3).wday.should == 6
113
+ Date.new(2001, 2, 4).wday.should == 0
114
+ end
115
+ end
116
+
117
+ describe "#year" do
118
+ it "returns the year as an integer" do
119
+ Date.new(2013, 2, 9).year.should == 2013
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#all?" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].all? { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#any?" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].any? { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ describe "Enumerable#collect" do
2
+ class Test
3
+ include Enumerable
4
+
5
+ def each(&block)
6
+ [1, 2, 3].each(&block)
7
+ end
8
+ end
9
+
10
+ it "breaks out with the proper value" do
11
+ Test.new.collect { break 42 }.should == 42
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#count" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].count { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#detect" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].detect { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#drop_while" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].drop_while { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ describe "Enumerable#each_slice" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].each_slice(1) { break 42 }.should == 42
4
+ [1, 2, 3].each_slice(2) { break 42 }.should == 42
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#each_with_index" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].each_with_index { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#each_with_object" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].each_with_object(23) { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#find_all" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].find_all { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#find_index" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].find_index { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#grep" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].grep(1) { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#max" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].max { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#max_by" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].max_by { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#min" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].min { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#min_by" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].min_by { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#none?" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].none? { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#one?" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].one? { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#reduce" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].reduce { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ describe "Enumerable#take_while" do
2
+ it "breaks out with the proper value" do
3
+ [1, 2, 3].take_while { break 42 }.should == 42
4
+ end
5
+ end
@@ -0,0 +1,124 @@
1
+ module ClassSpecs
2
+
3
+ def self.sclass_with_block
4
+ class << self
5
+ yield
6
+ end
7
+ end
8
+
9
+ def self.sclass_with_return
10
+ class << self
11
+ return :inner
12
+ end
13
+ return :outer
14
+ end
15
+
16
+ class A; end
17
+
18
+ def self.string_class_variables(obj)
19
+ obj.class_variables.map { |x| x.to_s }
20
+ end
21
+
22
+ def self.string_instance_variables(obj)
23
+ obj.instance_variables.map { |x| x.to_s }
24
+ end
25
+
26
+ class B
27
+ @@cvar = :cvar
28
+ @ivar = :ivar
29
+
30
+ end
31
+
32
+ class C
33
+ def self.make_class_variable
34
+ @@cvar = :cvar
35
+ end
36
+
37
+ def self.make_class_instance_variable
38
+ @civ = :civ
39
+ end
40
+ end
41
+
42
+ class D
43
+ def make_class_variable
44
+ @@cvar = :cvar
45
+ end
46
+ end
47
+
48
+ class E
49
+ def self.cmeth() :cmeth end
50
+ def meth() :meth end
51
+
52
+ class << self
53
+ def smeth() :smeth end
54
+ end
55
+
56
+ CONSTANT = :constant!
57
+ end
58
+
59
+ class F; end
60
+ class F
61
+ def meth() :meth end
62
+ end
63
+ class F
64
+ def another() :another end
65
+ end
66
+
67
+ class G
68
+ def override() :nothing end
69
+ def override() :override end
70
+ end
71
+
72
+ class Container
73
+ class A; end
74
+ class B; end
75
+ end
76
+
77
+ O = Object.new
78
+ class << O
79
+ def smeth
80
+ :smeth
81
+ end
82
+ end
83
+
84
+ class H
85
+ def self.inherited(sub)
86
+ track_inherited << sub
87
+ end
88
+
89
+ def self.track_inherited
90
+ @inherited_modules ||= []
91
+ end
92
+ end
93
+
94
+ class K < H; end
95
+
96
+ class I
97
+ class J < self
98
+ end
99
+ end
100
+
101
+ class K
102
+ def example_instance_method
103
+ end
104
+ def self.example_class_method
105
+ end
106
+ end
107
+
108
+ class L; end
109
+
110
+ class M < L; end
111
+ end
112
+
113
+ class Class
114
+ def example_instance_method_of_class; end
115
+ def self.example_class_method_of_class; end
116
+ end
117
+ class << Class
118
+ def example_instance_method_of_singleton_class; end
119
+ def self.example_class_method_of_singleton_class; end
120
+ end
121
+ class Object
122
+ def example_instance_method_of_object; end
123
+ def self.example_class_method_of_object; end
124
+ end