opal 0.11.4 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (379) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +42 -10
  3. data/.rubocop.yml +398 -0
  4. data/.rubocop_todo.yml +44 -0
  5. data/.travis.yml +28 -34
  6. data/CHANGELOG.md +363 -142
  7. data/CONTRIBUTING.md +3 -5
  8. data/Gemfile +17 -12
  9. data/Guardfile +0 -1
  10. data/HACKING.md +1 -35
  11. data/LICENSE +2 -2
  12. data/README.md +42 -13
  13. data/Rakefile +1 -4
  14. data/UNRELEASED.md +133 -0
  15. data/benchmark-ips/README.md +6 -0
  16. data/benchmark-ips/bm_block_vs_yield.rb +21 -0
  17. data/benchmark-ips/bm_js_symbols_vs_strings.rb +28 -0
  18. data/benchmark-ips/bm_while_true_vs_loop.rb +19 -0
  19. data/bin/console +14 -0
  20. data/bin/opal +0 -1
  21. data/bin/opal-benchmark-ips +8 -0
  22. data/bin/opal-mspec +9 -1
  23. data/bin/opal-repl +2 -1
  24. data/bin/rake +7 -0
  25. data/bin/setup +8 -0
  26. data/docs/compiled_ruby.md +89 -8
  27. data/docs/compiler.md +3 -20
  28. data/docs/jquery.md +44 -11
  29. data/docs/promises.md +1 -1
  30. data/docs/rails.md +16 -12
  31. data/docs/sinatra.md +15 -8
  32. data/docs/using_sprockets.md +16 -11
  33. data/examples/rack/config.ru +1 -0
  34. data/examples/sinatra/Gemfile +1 -0
  35. data/examples/sinatra/config.ru +2 -11
  36. data/exe/opal-repl +3 -11
  37. data/lib/opal.rb +1 -0
  38. data/lib/opal/ast/builder.rb +4 -1
  39. data/lib/opal/ast/node.rb +1 -0
  40. data/lib/opal/builder.rb +84 -63
  41. data/lib/opal/builder_processors.rb +41 -56
  42. data/lib/opal/cli.rb +33 -49
  43. data/lib/opal/cli_options.rb +27 -17
  44. data/lib/opal/cli_runners.rb +73 -16
  45. data/lib/opal/cli_runners/applescript.rb +4 -4
  46. data/lib/opal/cli_runners/chrome.rb +29 -17
  47. data/lib/opal/cli_runners/nashorn.rb +5 -4
  48. data/lib/opal/cli_runners/nodejs.rb +8 -6
  49. data/lib/opal/cli_runners/server.rb +12 -11
  50. data/lib/opal/compiler.rb +85 -103
  51. data/lib/opal/config.rb +3 -3
  52. data/lib/opal/deprecations.rb +2 -1
  53. data/lib/opal/eof_content.rb +2 -2
  54. data/lib/opal/erb.rb +8 -7
  55. data/lib/opal/errors.rb +72 -1
  56. data/lib/opal/fragment.rb +23 -3
  57. data/lib/opal/hike.rb +305 -0
  58. data/lib/opal/nodes.rb +5 -10
  59. data/lib/opal/nodes/arglist.rb +7 -6
  60. data/lib/opal/nodes/args.rb +36 -0
  61. data/lib/opal/nodes/args/arg.rb +22 -0
  62. data/lib/opal/nodes/args/arity_check.rb +151 -0
  63. data/lib/opal/nodes/args/ensure_kwargs_are_kwargs.rb +28 -0
  64. data/lib/opal/nodes/args/extract_block_arg.rb +34 -0
  65. data/lib/opal/nodes/args/extract_kwarg.rb +32 -0
  66. data/lib/opal/nodes/args/extract_kwargs.rb +28 -0
  67. data/lib/opal/nodes/args/extract_kwoptarg.rb +35 -0
  68. data/lib/opal/nodes/args/extract_kwrestarg.rb +35 -0
  69. data/lib/opal/nodes/args/extract_optarg.rb +35 -0
  70. data/lib/opal/nodes/args/extract_post_arg.rb +28 -0
  71. data/lib/opal/nodes/args/extract_post_optarg.rb +41 -0
  72. data/lib/opal/nodes/args/extract_restarg.rb +40 -0
  73. data/lib/opal/nodes/args/fake_arg.rb +26 -0
  74. data/lib/opal/nodes/args/initialize_iterarg.rb +28 -0
  75. data/lib/opal/nodes/args/initialize_shadowarg.rb +24 -0
  76. data/lib/opal/nodes/args/parameters.rb +63 -0
  77. data/lib/opal/nodes/args/prepare_post_args.rb +22 -0
  78. data/lib/opal/nodes/array.rb +9 -8
  79. data/lib/opal/nodes/base.rb +20 -11
  80. data/lib/opal/nodes/call.rb +24 -25
  81. data/lib/opal/nodes/call_special.rb +4 -3
  82. data/lib/opal/nodes/case.rb +24 -26
  83. data/lib/opal/nodes/class.rb +4 -5
  84. data/lib/opal/nodes/constants.rb +8 -7
  85. data/lib/opal/nodes/csend.rb +2 -3
  86. data/lib/opal/nodes/def.rb +28 -74
  87. data/lib/opal/nodes/defined.rb +36 -36
  88. data/lib/opal/nodes/definitions.rb +10 -7
  89. data/lib/opal/nodes/defs.rb +8 -16
  90. data/lib/opal/nodes/hash.rb +5 -4
  91. data/lib/opal/nodes/helpers.rb +8 -8
  92. data/lib/opal/nodes/if.rb +10 -8
  93. data/lib/opal/nodes/iter.rb +16 -103
  94. data/lib/opal/nodes/lambda.rb +18 -0
  95. data/lib/opal/nodes/literal.rb +29 -63
  96. data/lib/opal/nodes/logic.rb +25 -24
  97. data/lib/opal/nodes/masgn.rb +8 -6
  98. data/lib/opal/nodes/module.rb +4 -4
  99. data/lib/opal/nodes/node_with_args.rb +14 -208
  100. data/lib/opal/nodes/rescue.rb +32 -32
  101. data/lib/opal/nodes/runtime_helpers.rb +5 -4
  102. data/lib/opal/nodes/scope.rb +18 -29
  103. data/lib/opal/nodes/singleton_class.rb +3 -3
  104. data/lib/opal/nodes/super.rb +12 -18
  105. data/lib/opal/nodes/top.rb +10 -8
  106. data/lib/opal/nodes/variables.rb +6 -6
  107. data/lib/opal/nodes/while.rb +7 -6
  108. data/lib/opal/nodes/x_string.rb +139 -0
  109. data/lib/opal/nodes/yield.rb +10 -7
  110. data/lib/opal/parser.rb +9 -46
  111. data/lib/opal/parser/default_config.rb +50 -0
  112. data/lib/opal/parser/patch.rb +26 -0
  113. data/lib/opal/parser/source_buffer.rb +11 -0
  114. data/lib/opal/parser/with_c_lexer.rb +14 -0
  115. data/lib/opal/parser/with_ruby_lexer.rb +6 -0
  116. data/lib/opal/path_reader.rb +6 -5
  117. data/lib/opal/paths.rb +9 -6
  118. data/lib/opal/regexp_anchors.rb +6 -5
  119. data/lib/opal/rewriter.rb +7 -0
  120. data/lib/opal/rewriters/arguments.rb +58 -0
  121. data/lib/opal/rewriters/base.rb +32 -12
  122. data/lib/opal/rewriters/binary_operator_assignment.rb +20 -20
  123. data/lib/opal/rewriters/block_to_iter.rb +2 -1
  124. data/lib/opal/rewriters/break_finder.rb +2 -0
  125. data/lib/opal/rewriters/dot_js_syntax.rb +3 -2
  126. data/lib/opal/rewriters/dump_args.rb +28 -0
  127. data/lib/opal/rewriters/explicit_writer_return.rb +4 -3
  128. data/lib/opal/rewriters/for_rewriter.rb +12 -12
  129. data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +2 -1
  130. data/lib/opal/rewriters/inline_args.rb +220 -0
  131. data/lib/opal/rewriters/js_reserved_words.rb +21 -17
  132. data/lib/opal/rewriters/logical_operator_assignment.rb +24 -14
  133. data/lib/opal/rewriters/mlhs_args.rb +128 -0
  134. data/lib/opal/rewriters/opal_engine_check.rb +11 -6
  135. data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +3 -2
  136. data/lib/opal/server.rb +1 -0
  137. data/lib/opal/simple_server.rb +15 -23
  138. data/lib/opal/source_map.rb +7 -70
  139. data/lib/opal/source_map/file.rb +199 -0
  140. data/lib/opal/source_map/index.rb +83 -0
  141. data/lib/opal/source_map/map.rb +26 -0
  142. data/lib/opal/source_map/vlq.rb +98 -0
  143. data/lib/opal/util.rb +7 -5
  144. data/lib/opal/version.rb +2 -1
  145. data/lib/tilt/opal.rb +3 -3
  146. data/opal.gemspec +18 -9
  147. data/opal/corelib/array.rb +135 -117
  148. data/opal/corelib/array/pack.rb +446 -0
  149. data/opal/corelib/basic_object.rb +23 -9
  150. data/opal/corelib/boolean.rb +3 -3
  151. data/opal/corelib/class.rb +4 -10
  152. data/opal/corelib/comparable.rb +36 -23
  153. data/opal/corelib/complex.rb +108 -14
  154. data/opal/corelib/constants.rb +4 -4
  155. data/opal/corelib/enumerable.rb +132 -135
  156. data/opal/corelib/enumerator.rb +47 -50
  157. data/opal/corelib/error.rb +65 -8
  158. data/opal/corelib/file.rb +37 -32
  159. data/opal/corelib/hash.rb +90 -21
  160. data/opal/corelib/helpers.rb +7 -6
  161. data/opal/corelib/kernel.rb +53 -586
  162. data/opal/corelib/kernel/format.rb +544 -0
  163. data/opal/corelib/marshal.rb +1 -13
  164. data/opal/corelib/marshal/read_buffer.rb +20 -23
  165. data/opal/corelib/marshal/write_buffer.rb +23 -15
  166. data/opal/corelib/math.rb +12 -16
  167. data/opal/corelib/method.rb +5 -3
  168. data/opal/corelib/module.rb +80 -109
  169. data/opal/corelib/nil.rb +2 -2
  170. data/opal/corelib/number.rb +177 -43
  171. data/opal/corelib/numeric.rb +22 -16
  172. data/opal/corelib/pack_unpack/format_string_parser.rb +135 -0
  173. data/opal/corelib/proc.rb +3 -4
  174. data/opal/corelib/process.rb +1 -1
  175. data/opal/corelib/random.rb +24 -16
  176. data/opal/corelib/random/MersenneTwister.js +137 -0
  177. data/opal/corelib/random/math_random.js.rb +9 -0
  178. data/opal/corelib/random/mersenne_twister.js.rb +13 -0
  179. data/opal/corelib/random/seedrandom.js.rb +12 -0
  180. data/opal/corelib/range.rb +25 -26
  181. data/opal/corelib/rational.rb +57 -17
  182. data/opal/corelib/regexp.rb +39 -43
  183. data/opal/corelib/runtime.js +806 -683
  184. data/opal/corelib/string.rb +213 -112
  185. data/opal/corelib/string/encoding.rb +14 -17
  186. data/opal/corelib/string/unpack.rb +793 -0
  187. data/opal/corelib/struct.rb +40 -24
  188. data/opal/corelib/time.rb +14 -15
  189. data/opal/corelib/unsupported.rb +26 -4
  190. data/opal/opal.rb +2 -1
  191. data/opal/opal/full.rb +2 -0
  192. data/stdlib/base64.rb +1 -1
  193. data/stdlib/bigdecimal.rb +11 -13
  194. data/stdlib/buffer.rb +9 -8
  195. data/stdlib/buffer/array.rb +46 -48
  196. data/stdlib/buffer/view.rb +85 -47
  197. data/stdlib/console.rb +18 -18
  198. data/stdlib/date.rb +85 -66
  199. data/stdlib/delegate.rb +2 -2
  200. data/stdlib/e2mmap.rb +176 -0
  201. data/stdlib/encoding.rb +1 -1
  202. data/stdlib/erb.rb +1 -1
  203. data/stdlib/forwardable.rb +14 -14
  204. data/stdlib/json.rb +1 -2
  205. data/stdlib/logger.rb +112 -0
  206. data/stdlib/math.rb +1 -1
  207. data/stdlib/matrix.rb +2169 -0
  208. data/stdlib/matrix/eigenvalue_decomposition.rb +883 -0
  209. data/stdlib/matrix/lup_decomposition.rb +219 -0
  210. data/stdlib/nashorn/file.rb +7 -9
  211. data/stdlib/native.rb +69 -63
  212. data/stdlib/nodejs.rb +3 -0
  213. data/stdlib/nodejs/dir.rb +25 -4
  214. data/stdlib/nodejs/env.rb +40 -0
  215. data/stdlib/nodejs/file.rb +184 -34
  216. data/stdlib/nodejs/fileutils.rb +4 -4
  217. data/stdlib/nodejs/io.rb +4 -46
  218. data/stdlib/nodejs/irb.rb +27 -29
  219. data/stdlib/nodejs/kernel.rb +2 -11
  220. data/stdlib/nodejs/node_modules/balanced-match/.npmignore +5 -0
  221. data/stdlib/nodejs/node_modules/balanced-match/LICENSE.md +21 -0
  222. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/README.md +13 -2
  223. data/stdlib/nodejs/node_modules/balanced-match/index.js +59 -0
  224. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/package.json +46 -42
  225. data/stdlib/nodejs/node_modules/brace-expansion/LICENSE +21 -0
  226. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/README.md +9 -1
  227. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/index.js +12 -2
  228. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/package.json +48 -48
  229. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/.travis.yml +0 -0
  230. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/LICENSE +0 -0
  231. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/README.markdown +0 -0
  232. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/example/map.js +0 -0
  233. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/index.js +0 -0
  234. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/package.json +47 -42
  235. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/test/map.js +0 -0
  236. data/stdlib/nodejs/node_modules/fs.realpath/LICENSE +43 -0
  237. data/stdlib/nodejs/node_modules/fs.realpath/README.md +33 -0
  238. data/stdlib/nodejs/node_modules/fs.realpath/index.js +66 -0
  239. data/stdlib/nodejs/node_modules/fs.realpath/old.js +303 -0
  240. data/stdlib/nodejs/node_modules/fs.realpath/package.json +59 -0
  241. data/stdlib/nodejs/node_modules/glob/README.md +57 -46
  242. data/stdlib/nodejs/node_modules/glob/changelog.md +67 -0
  243. data/stdlib/nodejs/node_modules/glob/common.js +91 -28
  244. data/stdlib/nodejs/node_modules/glob/glob.js +196 -55
  245. data/stdlib/nodejs/node_modules/glob/package.json +55 -51
  246. data/stdlib/nodejs/node_modules/glob/sync.js +116 -39
  247. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight → inflight}/LICENSE +0 -0
  248. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight → inflight}/README.md +0 -0
  249. data/stdlib/nodejs/node_modules/inflight/inflight.js +54 -0
  250. data/stdlib/nodejs/node_modules/inflight/package.json +58 -0
  251. data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/LICENSE +0 -0
  252. data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/README.md +0 -0
  253. data/stdlib/nodejs/node_modules/inherits/inherits.js +7 -0
  254. data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/inherits_browser.js +0 -0
  255. data/stdlib/nodejs/node_modules/inherits/package.json +61 -0
  256. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → minimatch}/LICENSE +0 -0
  257. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch → minimatch}/README.md +2 -9
  258. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch → minimatch}/minimatch.js +284 -206
  259. data/stdlib/nodejs/node_modules/minimatch/package.json +63 -0
  260. data/stdlib/nodejs/node_modules/{glob/node_modules/once/node_modules/wrappy → once}/LICENSE +0 -0
  261. data/stdlib/nodejs/node_modules/{glob/node_modules/once → once}/README.md +28 -0
  262. data/stdlib/nodejs/node_modules/once/once.js +42 -0
  263. data/stdlib/nodejs/node_modules/once/package.json +67 -0
  264. data/stdlib/nodejs/node_modules/path-is-absolute/index.js +20 -0
  265. data/stdlib/nodejs/node_modules/path-is-absolute/license +21 -0
  266. data/stdlib/nodejs/node_modules/path-is-absolute/package.json +75 -0
  267. data/stdlib/nodejs/node_modules/path-is-absolute/readme.md +59 -0
  268. data/stdlib/nodejs/node_modules/unxhr/LICENSE +22 -0
  269. data/stdlib/nodejs/node_modules/unxhr/README.md +41 -0
  270. data/stdlib/nodejs/node_modules/unxhr/lib/XMLHttpRequest.js +598 -0
  271. data/stdlib/nodejs/node_modules/unxhr/lib/browser.js +2 -0
  272. data/stdlib/nodejs/node_modules/unxhr/lib/request.js +63 -0
  273. data/stdlib/nodejs/node_modules/unxhr/package.json +75 -0
  274. data/stdlib/nodejs/node_modules/wrappy/LICENSE +15 -0
  275. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → wrappy}/README.md +0 -0
  276. data/stdlib/nodejs/node_modules/wrappy/package.json +59 -0
  277. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → wrappy}/wrappy.js +0 -0
  278. data/stdlib/nodejs/open-uri.rb +26 -0
  279. data/stdlib/nodejs/package-lock.json +88 -0
  280. data/stdlib/nodejs/package.json +2 -1
  281. data/stdlib/nodejs/pathname.rb +20 -0
  282. data/stdlib/nodejs/require.rb +3 -3
  283. data/stdlib/nodejs/stacktrace.rb +1 -1
  284. data/stdlib/nodejs/yaml.rb +1 -1
  285. data/stdlib/opal-builder.rb +1 -0
  286. data/stdlib/opal-parser.rb +4 -1
  287. data/stdlib/opal-platform.rb +8 -10
  288. data/stdlib/opal-source-maps.rb +0 -1
  289. data/stdlib/open-uri.rb +349 -0
  290. data/stdlib/ostruct.rb +19 -17
  291. data/stdlib/pathname.rb +22 -22
  292. data/stdlib/pp.rb +5 -5
  293. data/stdlib/promise.rb +30 -26
  294. data/stdlib/rbconfig/sizeof.rb +50 -0
  295. data/stdlib/securerandom.rb +1 -1
  296. data/stdlib/set.rb +21 -23
  297. data/stdlib/singleton.rb +3 -4
  298. data/stdlib/stringio.rb +33 -0
  299. data/stdlib/strscan.rb +55 -55
  300. data/stdlib/template.rb +1 -2
  301. data/stdlib/thread.rb +6 -7
  302. data/tasks/benchmarking.rake +1 -1
  303. data/tasks/building.rake +4 -12
  304. data/tasks/linting.rake +17 -2
  305. data/tasks/releasing.rake +84 -0
  306. data/tasks/testing.rake +57 -15
  307. data/tasks/testing/mspec_special_calls.rb +23 -4
  308. data/vendored-minitest/minitest.rb +1 -1
  309. metadata +169 -168
  310. data/bin/opal-build +0 -3
  311. data/exe/opal-mspec +0 -10
  312. data/lib/opal/nodes/args/initialize_kwargs.rb +0 -29
  313. data/lib/opal/nodes/args/kwarg.rb +0 -31
  314. data/lib/opal/nodes/args/kwoptarg.rb +0 -34
  315. data/lib/opal/nodes/args/kwrestarg.rb +0 -39
  316. data/lib/opal/nodes/args/mlhsarg.rb +0 -78
  317. data/lib/opal/nodes/args/normarg.rb +0 -29
  318. data/lib/opal/nodes/args/optarg.rb +0 -25
  319. data/lib/opal/nodes/args/post_args.rb +0 -201
  320. data/lib/opal/nodes/args/post_kwargs.rb +0 -32
  321. data/lib/opal/nodes/args/restarg.rb +0 -38
  322. data/lib/opal/nodes/inline_args.rb +0 -60
  323. data/opal/corelib/string/inheritance.rb +0 -123
  324. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +0 -17
  325. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +0 -44
  326. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +0 -52
  327. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +0 -51
  328. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +0 -61
  329. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +0 -97
  330. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +0 -1
  331. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +0 -51
  332. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +0 -25
  333. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +0 -1
  334. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +0 -4
  335. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +0 -23
  336. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +0 -15
  337. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +0 -1181
  338. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +0 -2
  339. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +0 -3
  340. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +0 -8
  341. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +0 -2
  342. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +0 -4
  343. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +0 -6
  344. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +0 -5
  345. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +0 -38
  346. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +0 -56
  347. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +0 -32
  348. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +0 -1075
  349. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +0 -182
  350. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +0 -9
  351. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +0 -10
  352. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +0 -24
  353. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +0 -15
  354. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +0 -16
  355. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +0 -10
  356. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +0 -13
  357. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +0 -7
  358. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +0 -50
  359. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +0 -60
  360. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +0 -399
  361. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +0 -45
  362. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +0 -274
  363. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +0 -8
  364. data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +0 -27
  365. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +0 -36
  366. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +0 -52
  367. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +0 -51
  368. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +0 -33
  369. data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +0 -21
  370. data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +0 -60
  371. data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +0 -23
  372. data/stdlib/nodejs/rubygems.rb +0 -68
  373. data/stdlib/source_map.rb +0 -5
  374. data/stdlib/source_map/map.rb +0 -220
  375. data/stdlib/source_map/mapping.rb +0 -26
  376. data/stdlib/source_map/offset.rb +0 -88
  377. data/stdlib/source_map/version.rb +0 -3
  378. data/stdlib/source_map/vlq.rb +0 -99
  379. data/stdlib/sourcemap.rb +0 -1
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Opal
3
4
  # WHEN RELEASING:
4
5
  # Remember to update RUBY_ENGINE_VERSION in opal/corelib/constants.rb too!
5
- VERSION = '0.11.4'
6
+ VERSION = '1.0.0.beta1'
6
7
  end
@@ -1,11 +1,10 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'tilt'
3
4
  require 'opal/builder'
4
5
  require 'opal/config'
5
6
  require 'opal/version'
6
7
 
7
- $OPAL_SOURCE_MAPS = {}
8
-
9
8
  module Opal
10
9
  class TiltTemplate < Tilt::Template
11
10
  self.default_mime_type = 'application/javascript'
@@ -31,9 +30,10 @@ module Opal
31
30
  end
32
31
 
33
32
  def prepare
33
+ # stub
34
34
  end
35
35
 
36
- def evaluate(_, _, &block)
36
+ def evaluate(_scope, _locals)
37
37
  if builder = @options[:builder]
38
38
  builder.dup.build(file).to_s
39
39
  elsif @options[:build]
@@ -13,6 +13,17 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = 'https://opalrb.com'
14
14
  spec.license = 'MIT'
15
15
 
16
+ spec.metadata = {
17
+ "bug_tracker_uri" => "https://github.com/opal/opal/issues",
18
+ "changelog_uri" => "https://github.com/opal/opal/blob/v#{spec.version}/CHANGELOG.md",
19
+ "readme_uri" => "https://github.com/opal/opal/blob/v#{spec.version}/README.md",
20
+ "api_documentation_uri" => "http://opalrb.com/docs/api/v#{spec.version}/index.html",
21
+ "guides_uri" => "http://opalrb.com/docs/guides/v#{spec.version}/index.html",
22
+ "homepage_uri" => "https://opalrb.com/",
23
+ "chat_uri" => "https://gitter.im/opal/opal",
24
+ "source_code_uri" => "https://github.com/opal/opal",
25
+ }
26
+
16
27
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
17
28
  `git ls-files -z`.split("\x0")
18
29
  .reject { |f| f.match(%r{^(test|spec|features)/}) }
@@ -24,20 +35,18 @@ Gem::Specification.new do |spec|
24
35
 
25
36
  spec.required_ruby_version = '>= 2.0.0'
26
37
 
27
- spec.add_dependency 'sourcemap', '~> 0.1.0'
28
- spec.add_dependency 'hike', '~> 1.2'
29
38
  spec.add_dependency 'ast', '>= 2.3.0'
30
- spec.add_dependency 'parser', '= 2.3.3.1'
39
+ spec.add_dependency 'parser', '= 2.5.3.0'
31
40
 
32
- spec.add_development_dependency 'mspec', '1.5.20'
41
+ spec.add_development_dependency 'sourcemap', '~> 0.1.0'
33
42
  spec.add_development_dependency 'rake', '~> 10.0'
34
- spec.add_development_dependency 'racc'
35
- spec.add_development_dependency 'rspec', '~> 3.6.0'
36
- spec.add_development_dependency 'octokit', '~> 2.4.0'
37
- spec.add_development_dependency 'bundler', '~> 1.5'
38
- spec.add_development_dependency 'yard', '~> 0.8.7'
43
+ spec.add_development_dependency 'rspec', '~> 3.7'
44
+ spec.add_development_dependency 'octokit', '~> 4.9'
45
+ spec.add_development_dependency 'bundler'
39
46
  spec.add_development_dependency 'rack-test'
40
47
  spec.add_development_dependency 'opal-minitest'
41
48
  spec.add_development_dependency 'selenium-webdriver'
42
49
  spec.add_development_dependency 'benchmark-ips'
50
+ spec.add_development_dependency 'sinatra'
51
+ spec.add_development_dependency 'rubocop', '= 0.53.0'
43
52
  end
@@ -5,7 +5,7 @@ class Array < `Array`
5
5
  include Enumerable
6
6
 
7
7
  # Mark all javascript arrays as being valid ruby arrays
8
- `def.$$is_array = true`
8
+ `Opal.defineProperty(self.$$prototype, '$$is_array', true)`
9
9
 
10
10
  %x{
11
11
  function toArraySubclass(obj, klass) {
@@ -28,7 +28,7 @@ class Array < `Array`
28
28
  }
29
29
 
30
30
  if (size > #{Integer::MAX}) {
31
- #{raise ArgumentError, "array size too big"}
31
+ #{raise ArgumentError, 'array size too big'}
32
32
  }
33
33
 
34
34
  if (arguments.length > 2) {
@@ -53,7 +53,7 @@ class Array < `Array`
53
53
  size = #{Opal.coerce_to size, Integer, :to_int}
54
54
 
55
55
  if (size < 0) {
56
- #{raise ArgumentError, "negative array size"}
56
+ #{raise ArgumentError, 'negative array size'}
57
57
  }
58
58
 
59
59
  self.splice(0, self.length);
@@ -80,11 +80,11 @@ class Array < `Array`
80
80
  end
81
81
 
82
82
  def &(other)
83
- if Array === other
84
- other = other.to_a
85
- else
86
- other = Opal.coerce_to(other, Array, :to_ary).to_a
87
- end
83
+ other = if Array === other
84
+ other.to_a
85
+ else
86
+ Opal.coerce_to(other, Array, :to_ary).to_a
87
+ end
88
88
 
89
89
  %x{
90
90
  var result = [], hash = #{{}}, i, length, item;
@@ -105,11 +105,11 @@ class Array < `Array`
105
105
  end
106
106
 
107
107
  def |(other)
108
- if Array === other
109
- other = other.to_a
110
- else
111
- other = Opal.coerce_to(other, Array, :to_ary).to_a
112
- end
108
+ other = if Array === other
109
+ other.to_a
110
+ else
111
+ Opal.coerce_to(other, Array, :to_ary).to_a
112
+ end
113
113
 
114
114
  %x{
115
115
  var hash = #{{}}, i, length, item;
@@ -132,12 +132,12 @@ class Array < `Array`
132
132
  other = Opal.coerce_to other, Integer, :to_int
133
133
 
134
134
  if `other < 0`
135
- raise ArgumentError, "negative argument"
135
+ raise ArgumentError, 'negative argument'
136
136
  end
137
137
 
138
138
  %x{
139
139
  var result = [],
140
- converted = #{self.to_a};
140
+ converted = #{to_a};
141
141
 
142
142
  for (var i = 0; i < other; i++) {
143
143
  result = result.concat(converted);
@@ -148,21 +148,21 @@ class Array < `Array`
148
148
  end
149
149
 
150
150
  def +(other)
151
- if Array === other
152
- other = other.to_a
153
- else
154
- other = Opal.coerce_to(other, Array, :to_ary).to_a
155
- end
151
+ other = if Array === other
152
+ other.to_a
153
+ else
154
+ Opal.coerce_to(other, Array, :to_ary).to_a
155
+ end
156
156
 
157
157
  `self.concat(other)`
158
158
  end
159
159
 
160
160
  def -(other)
161
- if Array === other
162
- other = other.to_a
163
- else
164
- other = Opal.coerce_to(other, Array, :to_ary).to_a
165
- end
161
+ other = if Array === other
162
+ other.to_a
163
+ else
164
+ Opal.coerce_to(other, Array, :to_ary).to_a
165
+ end
166
166
 
167
167
  return [] if `self.length === 0`
168
168
  return `self.slice()` if `other.length === 0`
@@ -186,7 +186,7 @@ class Array < `Array`
186
186
  end
187
187
 
188
188
  def <<(object)
189
- `self.push(object);`
189
+ `self.push(object)`
190
190
 
191
191
  self
192
192
  end
@@ -237,9 +237,9 @@ class Array < `Array`
237
237
  }
238
238
  }
239
239
 
240
- if (array.constructor !== Array)
240
+ if (array.$$constructor !== Array)
241
241
  array = #{`array`.to_a};
242
- if (other.constructor !== Array)
242
+ if (other.$$constructor !== Array)
243
243
  other = #{`other`.to_a};
244
244
 
245
245
  if (array.length !== other.length) {
@@ -362,13 +362,13 @@ class Array < `Array`
362
362
  }
363
363
 
364
364
  if Range === index
365
- if Array === value
366
- data = value.to_a
367
- elsif value.respond_to? :to_ary
368
- data = value.to_ary.to_a
369
- else
370
- data = [value]
371
- end
365
+ data = if Array === value
366
+ value.to_a
367
+ elsif value.respond_to? :to_ary
368
+ value.to_ary.to_a
369
+ else
370
+ [value]
371
+ end
372
372
 
373
373
  %x{
374
374
  var exclude = index.excl,
@@ -413,13 +413,13 @@ class Array < `Array`
413
413
  length = value
414
414
  value = extra
415
415
 
416
- if Array === value
417
- data = value.to_a
418
- elsif value.respond_to? :to_ary
419
- data = value.to_ary.to_a
420
- else
421
- data = [value]
422
- end
416
+ data = if Array === value
417
+ value.to_a
418
+ elsif value.respond_to? :to_ary
419
+ value.to_ary.to_a
420
+ else
421
+ [value]
422
+ end
423
423
  end
424
424
 
425
425
  %x{
@@ -459,8 +459,8 @@ class Array < `Array`
459
459
  end
460
460
  end
461
461
 
462
- def any?
463
- `if (self.length === 0) return false;`
462
+ def any?(pattern = undefined, &block)
463
+ `if (self.length === 0) return false`
464
464
  super
465
465
  end
466
466
 
@@ -546,14 +546,16 @@ class Array < `Array`
546
546
  end
547
547
 
548
548
  def cycle(n = nil, &block)
549
- return enum_for(:cycle, n) {
550
- if n == nil
551
- Float::INFINITY
552
- else
553
- n = Opal.coerce_to!(n, Integer, :to_int)
554
- n > 0 ? self.enumerator_size * n : 0
549
+ unless block_given?
550
+ return enum_for(:cycle, n) do
551
+ if n.nil?
552
+ Float::INFINITY
553
+ else
554
+ n = Opal.coerce_to!(n, Integer, :to_int)
555
+ n > 0 ? enumerator_size * n : 0
556
+ end
555
557
  end
556
- } unless block_given?
558
+ end
557
559
 
558
560
  return if empty? || n == 0
559
561
 
@@ -605,7 +607,7 @@ class Array < `Array`
605
607
  end
606
608
 
607
609
  def collect(&block)
608
- return enum_for(:collect){self.size} unless block_given?
610
+ return enum_for(:collect) { size } unless block_given?
609
611
 
610
612
  %x{
611
613
  var result = [];
@@ -620,7 +622,7 @@ class Array < `Array`
620
622
  end
621
623
 
622
624
  def collect!(&block)
623
- return enum_for(:collect!){self.size} unless block_given?
625
+ return enum_for(:collect!) { size } unless block_given?
624
626
 
625
627
  %x{
626
628
  for (var i = 0, length = self.length; i < length; i++) {
@@ -648,7 +650,7 @@ class Array < `Array`
648
650
 
649
651
  def combination(n)
650
652
  num = Opal.coerce_to! n, Integer, :to_int
651
- return enum_for(:combination, num){ `binomial_coefficient(#{self}.length, num)` } unless block_given?
653
+ return enum_for(:combination, num) { `binomial_coefficient(#{self}.length, num)` } unless block_given?
652
654
 
653
655
  %x{
654
656
  var i, length, stack, chosen, lev, done, next;
@@ -698,7 +700,7 @@ class Array < `Array`
698
700
  num = Opal.coerce_to! n, Integer, :to_int
699
701
 
700
702
  unless block_given?
701
- return enum_for(:repeated_combination, num){ `binomial_coefficient(self.length + num - 1, num)` }
703
+ return enum_for(:repeated_combination, num) { `binomial_coefficient(self.length + num - 1, num)` }
702
704
  end
703
705
 
704
706
  %x{
@@ -755,11 +757,11 @@ class Array < `Array`
755
757
 
756
758
  def concat(*others)
757
759
  others = others.map do |other|
758
- if Array === other
759
- other = other.to_a
760
- else
761
- other = Opal.coerce_to(other, Array, :to_ary).to_a
762
- end
760
+ other = if Array === other
761
+ other.to_a
762
+ else
763
+ Opal.coerce_to(other, Array, :to_ary).to_a
764
+ end
763
765
 
764
766
  if other.equal?(self)
765
767
  other = other.dup
@@ -823,7 +825,7 @@ class Array < `Array`
823
825
  end
824
826
 
825
827
  def delete_if(&block)
826
- return enum_for(:delete_if){self.size} unless block_given?
828
+ return enum_for(:delete_if) { size } unless block_given?
827
829
 
828
830
  %x{
829
831
  for (var i = 0, length = self.length, value; i < length; i++) {
@@ -869,19 +871,19 @@ class Array < `Array`
869
871
 
870
872
  def dup
871
873
  %x{
872
- if (
873
- self.$$class === Opal.Array &&
874
- self.$$class.$allocate.$$pristine &&
875
- self.$copy_instance_variables.$$pristine &&
876
- self.$initialize_dup.$$pristine
877
- ) return self.slice(0);
874
+ if (self.$$class === Opal.Array &&
875
+ self.$$class.$allocate.$$pristine &&
876
+ self.$copy_instance_variables.$$pristine &&
877
+ self.$initialize_dup.$$pristine) {
878
+ return self.slice(0);
879
+ }
878
880
  }
879
881
 
880
882
  super
881
883
  end
882
884
 
883
885
  def each(&block)
884
- return enum_for(:each){self.size} unless block_given?
886
+ return enum_for(:each) { size } unless block_given?
885
887
 
886
888
  %x{
887
889
  for (var i = 0, length = self.length; i < length; i++) {
@@ -893,7 +895,7 @@ class Array < `Array`
893
895
  end
894
896
 
895
897
  def each_index(&block)
896
- return enum_for(:each_index){self.size} unless block_given?
898
+ return enum_for(:each_index) { size } unless block_given?
897
899
 
898
900
  %x{
899
901
  for (var i = 0, length = self.length; i < length; i++) {
@@ -1001,7 +1003,7 @@ class Array < `Array`
1001
1003
  one, two = args
1002
1004
  else
1003
1005
  if `args.length == 0`
1004
- raise ArgumentError, "wrong number of arguments (0 for 1..3)"
1006
+ raise ArgumentError, 'wrong number of arguments (0 for 1..3)'
1005
1007
  elsif `args.length > 3`
1006
1008
  raise ArgumentError, "wrong number of arguments (#{args.length} for 1..3)"
1007
1009
  end
@@ -1010,13 +1012,13 @@ class Array < `Array`
1010
1012
  end
1011
1013
 
1012
1014
  if Range === one
1013
- raise TypeError, "length invalid with range" if two
1015
+ raise TypeError, 'length invalid with range' if two
1014
1016
 
1015
1017
  left = Opal.coerce_to one.begin, Integer, :to_int
1016
1018
  `left += this.length` if `left < 0`
1017
1019
  raise RangeError, "#{one.inspect} out of range" if `left < 0`
1018
1020
 
1019
- right = Opal.coerce_to one.end, Integer, :to_int
1021
+ right = Opal.coerce_to one.end, Integer, :to_int
1020
1022
  `right += this.length` if `right < 0`
1021
1023
  `right += 1` unless one.exclude_end?
1022
1024
 
@@ -1098,7 +1100,7 @@ class Array < `Array`
1098
1100
  for (i = 0, length = array.length; i < length; i++) {
1099
1101
  item = array[i];
1100
1102
 
1101
- if (!#{Opal.respond_to? `item`, :to_ary}) {
1103
+ if (!#{Opal.respond_to? `item`, :to_ary, true}) {
1102
1104
  result.push(item);
1103
1105
  continue;
1104
1106
  }
@@ -1214,7 +1216,7 @@ class Array < `Array`
1214
1216
  }
1215
1217
  end
1216
1218
 
1217
- def index(object=undefined, &block)
1219
+ def index(object = undefined, &block)
1218
1220
  %x{
1219
1221
  var i, length, value;
1220
1222
 
@@ -1292,7 +1294,7 @@ class Array < `Array`
1292
1294
  end
1293
1295
 
1294
1296
  def join(sep = nil)
1295
- return "" if `self.length === 0`
1297
+ return '' if `self.length === 0`
1296
1298
 
1297
1299
  if `sep === nil`
1298
1300
  sep = $,
@@ -1352,7 +1354,7 @@ class Array < `Array`
1352
1354
  end
1353
1355
 
1354
1356
  def keep_if(&block)
1355
- return enum_for(:keep_if){self.size} unless block_given?
1357
+ return enum_for(:keep_if) { size } unless block_given?
1356
1358
 
1357
1359
  %x{
1358
1360
  for (var i = 0, length = self.length, value; i < length; i++) {
@@ -1398,6 +1400,14 @@ class Array < `Array`
1398
1400
 
1399
1401
  alias map! collect!
1400
1402
 
1403
+ def max(n = undefined, &block)
1404
+ each.max(n, &block)
1405
+ end
1406
+
1407
+ def min(&block)
1408
+ each.min(&block)
1409
+ end
1410
+
1401
1411
  %x{
1402
1412
  // Returns the product of from, from-1, ..., from - how_many + 1.
1403
1413
  function descending_factorial(from, how_many) {
@@ -1413,9 +1423,9 @@ class Array < `Array`
1413
1423
 
1414
1424
  def permutation(num = undefined, &block)
1415
1425
  unless block_given?
1416
- return enum_for(:permutation, num) {
1426
+ return enum_for(:permutation, num) do
1417
1427
  `descending_factorial(self.length, num === undefined ? self.length : num)`
1418
- }
1428
+ end
1419
1429
  end
1420
1430
 
1421
1431
  %x{
@@ -1483,7 +1493,7 @@ class Array < `Array`
1483
1493
 
1484
1494
  def repeated_permutation(n)
1485
1495
  num = Opal.coerce_to! n, Integer, :to_int
1486
- return enum_for(:repeated_permutation, num){ num >= 0 ? self.size ** num : 0 } unless block_given?
1496
+ return enum_for(:repeated_permutation, num) { num >= 0 ? size**num : 0 } unless block_given?
1487
1497
 
1488
1498
  %x{
1489
1499
  function iterate(max, buffer, self) {
@@ -1547,7 +1557,7 @@ class Array < `Array`
1547
1557
  }
1548
1558
  resultlen *= len;
1549
1559
  if (resultlen > 2147483647) {
1550
- #{raise RangeError, "too big to product"}
1560
+ #{raise RangeError, 'too big to product'}
1551
1561
  }
1552
1562
  lengths[i] = len;
1553
1563
  counters[i] = 0;
@@ -1586,6 +1596,8 @@ class Array < `Array`
1586
1596
  self
1587
1597
  end
1588
1598
 
1599
+ alias append push
1600
+
1589
1601
  def rassoc(object)
1590
1602
  %x{
1591
1603
  for (var i = 0, length = self.length, item; i < length; i++) {
@@ -1603,7 +1615,7 @@ class Array < `Array`
1603
1615
  end
1604
1616
 
1605
1617
  def reject(&block)
1606
- return enum_for(:reject){self.size} unless block_given?
1618
+ return enum_for(:reject) { size } unless block_given?
1607
1619
 
1608
1620
  %x{
1609
1621
  var result = [];
@@ -1620,7 +1632,7 @@ class Array < `Array`
1620
1632
  end
1621
1633
 
1622
1634
  def reject!(&block)
1623
- return enum_for(:reject!){self.size} unless block_given?
1635
+ return enum_for(:reject!) { size } unless block_given?
1624
1636
 
1625
1637
  original = length
1626
1638
  delete_if(&block)
@@ -1631,11 +1643,11 @@ class Array < `Array`
1631
1643
  end
1632
1644
 
1633
1645
  def replace(other)
1634
- if Array === other
1635
- other = other.to_a
1636
- else
1637
- other = Opal.coerce_to(other, Array, :to_ary).to_a
1638
- end
1646
+ other = if Array === other
1647
+ other.to_a
1648
+ else
1649
+ Opal.coerce_to(other, Array, :to_ary).to_a
1650
+ end
1639
1651
 
1640
1652
  %x{
1641
1653
  self.splice(0, self.length);
@@ -1654,7 +1666,7 @@ class Array < `Array`
1654
1666
  end
1655
1667
 
1656
1668
  def reverse_each(&block)
1657
- return enum_for(:reverse_each){self.size} unless block_given?
1669
+ return enum_for(:reverse_each) { size } unless block_given?
1658
1670
 
1659
1671
  reverse.each(&block)
1660
1672
  self
@@ -1699,7 +1711,7 @@ class Array < `Array`
1699
1711
  }
1700
1712
  end
1701
1713
 
1702
- def rotate(n=1)
1714
+ def rotate(n = 1)
1703
1715
  n = Opal.coerce_to n, Integer, :to_int
1704
1716
  %x{
1705
1717
  var ary, idx, firstPart, lastPart;
@@ -1720,7 +1732,7 @@ class Array < `Array`
1720
1732
  }
1721
1733
  end
1722
1734
 
1723
- def rotate!(cnt=1)
1735
+ def rotate!(cnt = 1)
1724
1736
  %x{
1725
1737
  if (self.length === 0 || self.length === 1) {
1726
1738
  return self;
@@ -1738,8 +1750,8 @@ class Array < `Array`
1738
1750
 
1739
1751
  def rand(size)
1740
1752
  random = Opal.coerce_to @rng.rand(size), Integer, :to_int
1741
- raise RangeError, "random value must be >= 0" if `random < 0`
1742
- raise RangeError, "random value must be less than Array size" unless `random < size`
1753
+ raise RangeError, 'random value must be >= 0' if `random < 0`
1754
+ raise RangeError, 'random value must be less than Array size' unless `random < size`
1743
1755
 
1744
1756
  random
1745
1757
  end
@@ -1761,16 +1773,16 @@ class Array < `Array`
1761
1773
  options = Opal.coerce_to options, Hash, :to_hash
1762
1774
  end
1763
1775
 
1764
- if count and `count < 0`
1765
- raise ArgumentError, "count must be greater than 0"
1776
+ if count && `count < 0`
1777
+ raise ArgumentError, 'count must be greater than 0'
1766
1778
  end
1767
1779
 
1768
1780
  rng = options[:random] if options
1769
- if rng and rng.respond_to? :rand
1770
- rng = SampleRandom.new rng
1771
- else
1772
- rng = Kernel
1773
- end
1781
+ rng = if rng && rng.respond_to?(:rand)
1782
+ SampleRandom.new rng
1783
+ else
1784
+ Kernel
1785
+ end
1774
1786
 
1775
1787
  return `self[#{rng.rand(`self.length`)}]` unless count
1776
1788
 
@@ -1857,7 +1869,7 @@ class Array < `Array`
1857
1869
  end
1858
1870
 
1859
1871
  def select(&block)
1860
- return enum_for(:select){self.size} unless block_given?
1872
+ return enum_for(:select) { size } unless block_given?
1861
1873
 
1862
1874
  %x{
1863
1875
  var result = [];
@@ -1867,7 +1879,7 @@ class Array < `Array`
1867
1879
 
1868
1880
  value = Opal.yield1(block, item);
1869
1881
 
1870
- if (value !== false && value !== nil) {
1882
+ if (Opal.truthy(value)) {
1871
1883
  result.push(item);
1872
1884
  }
1873
1885
  }
@@ -1877,7 +1889,7 @@ class Array < `Array`
1877
1889
  end
1878
1890
 
1879
1891
  def select!(&block)
1880
- return enum_for(:select!){self.size} unless block_given?
1892
+ return enum_for(:select!) { size } unless block_given?
1881
1893
 
1882
1894
  %x{
1883
1895
  var original = self.length;
@@ -2080,7 +2092,7 @@ class Array < `Array`
2080
2092
  end
2081
2093
 
2082
2094
  def sort_by!(&block)
2083
- return enum_for(:sort_by!){self.size} unless block_given?
2095
+ return enum_for(:sort_by!) { size } unless block_given?
2084
2096
 
2085
2097
  replace sort_by(&block)
2086
2098
  end
@@ -2150,12 +2162,12 @@ class Array < `Array`
2150
2162
  result = []
2151
2163
  max = nil
2152
2164
 
2153
- each {|row|
2154
- if Array === row
2155
- row = row.to_a
2156
- else
2157
- row = Opal.coerce_to(row, Array, :to_ary).to_a
2158
- end
2165
+ each do |row|
2166
+ row = if Array === row
2167
+ row.to_a
2168
+ else
2169
+ Opal.coerce_to(row, Array, :to_ary).to_a
2170
+ end
2159
2171
 
2160
2172
  max ||= `row.length`
2161
2173
 
@@ -2163,11 +2175,11 @@ class Array < `Array`
2163
2175
  raise IndexError, "element size differs (#{`row.length`} should be #{max})"
2164
2176
  end
2165
2177
 
2166
- `row.length`.times {|i|
2178
+ `row.length`.times do |i|
2167
2179
  entry = (result[i] ||= [])
2168
2180
  entry << row.at(i)
2169
- }
2170
- }
2181
+ end
2182
+ end
2171
2183
 
2172
2184
  result
2173
2185
  end
@@ -2230,11 +2242,13 @@ class Array < `Array`
2230
2242
  self
2231
2243
  end
2232
2244
 
2245
+ alias prepend unshift
2246
+
2233
2247
  def values_at(*args)
2234
- out = [];
2248
+ out = []
2235
2249
 
2236
2250
  args.each do |elem|
2237
- if elem.kind_of? Range
2251
+ if elem.is_a? Range
2238
2252
  finish = Opal.coerce_to elem.last, Integer, :to_int
2239
2253
  start = Opal.coerce_to elem.first, Integer, :to_int
2240
2254
 
@@ -2320,7 +2334,7 @@ class Array < `Array`
2320
2334
 
2321
2335
  def self.inherited(klass)
2322
2336
  %x{
2323
- klass.$$proto.$to_a = function() {
2337
+ klass.$$prototype.$to_a = function() {
2324
2338
  return this.slice(0, this.length);
2325
2339
  }
2326
2340
  }
@@ -2330,6 +2344,10 @@ class Array < `Array`
2330
2344
  super.reject { |ivar| `/^@\d+$/.test(#{ivar})` || ivar == '@length' }
2331
2345
  end
2332
2346
 
2333
- Opal.pristine self, :allocate, :copy_instance_variables, :initialize_dup
2334
- end
2347
+ Opal.pristine singleton_class, :allocate
2348
+ Opal.pristine self, :copy_instance_variables, :initialize_dup
2335
2349
 
2350
+ def pack(*args)
2351
+ raise "To use Array#pack, you must first require 'corelib/array/pack'."
2352
+ end
2353
+ end