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
@@ -0,0 +1,135 @@
1
+ module PackUnpack
2
+ %x{
3
+ var directives = [
4
+ // Integer
5
+ 'C',
6
+ 'S',
7
+ 'L',
8
+ 'Q',
9
+ 'J',
10
+
11
+ 'c',
12
+ 's',
13
+ 'l',
14
+ 'q',
15
+ 'j',
16
+
17
+ 'n',
18
+ 'N',
19
+ 'v',
20
+ 'V',
21
+
22
+ 'U',
23
+ 'w',
24
+
25
+ // Float
26
+ 'D',
27
+ 'd',
28
+ 'F',
29
+ 'f',
30
+ 'E',
31
+ 'e',
32
+ 'G',
33
+ 'g',
34
+
35
+ // String
36
+ 'A',
37
+ 'a',
38
+ 'Z',
39
+ 'B',
40
+ 'b',
41
+ 'H',
42
+ 'h',
43
+ 'u',
44
+ 'M',
45
+ 'm',
46
+
47
+ 'P',
48
+ 'p',
49
+
50
+ // Misc
51
+ '@',
52
+ 'X',
53
+ 'x'
54
+ ];
55
+
56
+ var modifiers = [
57
+ '!', // ignored
58
+ '_', // ignored
59
+ '>', // big endian
60
+ '<' // little endian
61
+ ];
62
+
63
+ self.eachDirectiveAndCount = function(format, callback) {
64
+ var currentDirective,
65
+ currentCount,
66
+ currentModifiers,
67
+ countSpecified;
68
+
69
+ function reset() {
70
+ currentDirective = null;
71
+ currentCount = 0;
72
+ currentModifiers = [];
73
+ countSpecified = false;
74
+ }
75
+
76
+ reset();
77
+
78
+ function yieldAndReset() {
79
+ if (currentDirective == null) {
80
+ reset();
81
+ return;
82
+ }
83
+
84
+ var directiveSupportsModifiers = /[sSiIlLqQjJ]/.test(currentDirective);
85
+
86
+ if (!directiveSupportsModifiers && currentModifiers.length > 0) {
87
+ #{raise ArgumentError, "'#{`currentModifiers[0]`}' allowed only after types sSiIlLqQjJ"}
88
+ }
89
+
90
+ if (currentModifiers.indexOf('<') !== -1 && currentModifiers.indexOf('>') !== -1) {
91
+ #{raise RangeError, "Can't use both '<' and '>'"}
92
+ }
93
+
94
+ if (!countSpecified) {
95
+ currentCount = 1;
96
+ }
97
+
98
+ if (currentModifiers.indexOf('>') !== -1) {
99
+ currentDirective = currentDirective + '>';
100
+ }
101
+
102
+ callback(currentDirective, currentCount);
103
+
104
+ reset();
105
+ }
106
+
107
+ for (var i = 0; i < format.length; i++) {
108
+ var currentChar = format[i];
109
+
110
+ if (directives.indexOf(currentChar) !== -1) {
111
+ // Directive char always resets current state
112
+ yieldAndReset();
113
+ currentDirective = currentChar;
114
+ } else if (currentDirective) {
115
+ if (/\d/.test(currentChar)) {
116
+ // Count can be represented as a sequence of digits
117
+ currentCount = currentCount * 10 + parseInt(currentChar, 10);
118
+ countSpecified = true;
119
+ } else if (currentChar === '*' && countSpecified === false) {
120
+ // Count can be represented by a star character
121
+ currentCount = Infinity;
122
+ countSpecified = true;
123
+ } else if (modifiers.indexOf(currentChar) !== -1 && countSpecified === false) {
124
+ // Directives can be specified only after directive and before count
125
+ currentModifiers.push(currentChar);
126
+ } else {
127
+ yieldAndReset();
128
+ }
129
+ }
130
+ }
131
+
132
+ yieldAndReset();
133
+ }
134
+ }
135
+ end
@@ -1,10 +1,10 @@
1
1
  class Proc < `Function`
2
- `def.$$is_proc = true`
3
- `def.$$is_lambda = false`
2
+ `Opal.defineProperty(self.$$prototype, '$$is_proc', true)`
3
+ `Opal.defineProperty(self.$$prototype, '$$is_lambda', false)`
4
4
 
5
5
  def self.new(&block)
6
6
  unless block
7
- raise ArgumentError, "tried to create a Proc object without a block"
7
+ raise ArgumentError, 'tried to create a Proc object without a block'
8
8
  end
9
9
 
10
10
  block
@@ -170,5 +170,4 @@ class Proc < `Function`
170
170
  end
171
171
 
172
172
  alias clone dup
173
-
174
173
  end
@@ -39,7 +39,7 @@ class Process
39
39
  end
40
40
 
41
41
  def self.clock_gettime(clock_id, unit = :float_second)
42
- clock = @__clocks__[clock_id] or raise Errno::EINVAL, "clock_gettime(#{clock_id}) #{@__clocks__[clock_id]}"
42
+ (clock = @__clocks__[clock_id]) || raise(Errno::EINVAL, "clock_gettime(#{clock_id}) #{@__clocks__[clock_id]}")
43
43
  %x{
44
44
  var ms = clock();
45
45
  switch (unit) {
@@ -1,5 +1,3 @@
1
- require 'corelib/random/seedrandom.js'
2
-
3
1
  class Random
4
2
  attr_reader :seed, :state
5
3
 
@@ -11,22 +9,17 @@ class Random
11
9
 
12
10
  def reseed(seed)
13
11
  @seed = seed
14
- `self.$rng = new Math.seedrandom(seed);`
12
+ `self.$rng = Opal.$$rand.reseed(seed)`
15
13
  end
16
14
 
17
- `var $seed_generator = new Math.seedrandom('opal', { entropy: true });`
18
-
19
15
  def self.new_seed
20
- %x{
21
- return Math.abs($seed_generator.int32());
22
- }
16
+ `Opal.$$rand.new_seed()`
23
17
  end
24
18
 
25
19
  def self.rand(limit = undefined)
26
20
  DEFAULT.rand(limit)
27
21
  end
28
22
 
29
-
30
23
  def self.srand(n = Random.new_seed)
31
24
  n = Opal.coerce_to!(n, Integer, :to_int)
32
25
 
@@ -35,7 +28,15 @@ class Random
35
28
  previous_seed
36
29
  end
37
30
 
38
- DEFAULT = new(new_seed)
31
+ def self.urandom(size)
32
+ size = Opal.coerce_to!(size, Integer, :to_int)
33
+
34
+ if size < 0
35
+ raise ArgumentError, 'negative string size (or size too big)'
36
+ end
37
+
38
+ Array.new(size) { rand(255).chr }.join.encode('ASCII-8BIT')
39
+ end
39
40
 
40
41
  def ==(other)
41
42
  return false unless Random === other
@@ -45,18 +46,15 @@ class Random
45
46
 
46
47
  def bytes(length)
47
48
  length = Opal.coerce_to!(length, Integer, :to_int)
48
- length
49
- .times
50
- .map { rand(255).chr }
51
- .join
52
- .encode(Encoding::ASCII_8BIT)
49
+
50
+ Array.new(length) { rand(255).chr }.join.encode('ASCII-8BIT')
53
51
  end
54
52
 
55
53
  def rand(limit = undefined)
56
54
  %x{
57
55
  function randomFloat() {
58
56
  self.state++;
59
- return self.$rng.quick();
57
+ return Opal.$$rand.rand(self.$rng);
60
58
  }
61
59
 
62
60
  function randomInt() {
@@ -114,4 +112,14 @@ class Random
114
112
  }
115
113
  }
116
114
  end
115
+
116
+ def self.generator=(generator)
117
+ `Opal.$$rand = #{generator}`
118
+
119
+ if const_defined? :DEFAULT
120
+ DEFAULT.reseed
121
+ else
122
+ const_set :DEFAULT, new(new_seed)
123
+ end
124
+ end
117
125
  end
@@ -0,0 +1,137 @@
1
+ /*
2
+ This is based on an adaptation of Makoto Matsumoto and Takuji Nishimura's code
3
+ done by Sean McCullough <banksean@gmail.com> and Dave Heitzman
4
+ <daveheitzman@yahoo.com>, subsequently readapted from an updated version of
5
+ ruby's random.c (rev c38a183032a7826df1adabd8aa0725c713d53e1c).
6
+
7
+ The original copyright notice from random.c follows.
8
+
9
+ This is based on trimmed version of MT19937. To get the original version,
10
+ contact <http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html>.
11
+
12
+ The original copyright notice follows.
13
+
14
+ A C-program for MT19937, with initialization improved 2002/2/10.
15
+ Coded by Takuji Nishimura and Makoto Matsumoto.
16
+ This is a faster version by taking Shawn Cokus's optimization,
17
+ Matthe Bellew's simplification, Isaku Wada's real version.
18
+
19
+ Before using, initialize the state by using init_genrand(mt, seed)
20
+ or init_by_array(mt, init_key, key_length).
21
+
22
+ Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
23
+ All rights reserved.
24
+
25
+ Redistribution and use in source and binary forms, with or without
26
+ modification, are permitted provided that the following conditions
27
+ are met:
28
+
29
+ 1. Redistributions of source code must retain the above copyright
30
+ notice, this list of conditions and the following disclaimer.
31
+
32
+ 2. Redistributions in binary form must reproduce the above copyright
33
+ notice, this list of conditions and the following disclaimer in the
34
+ documentation and/or other materials provided with the distribution.
35
+
36
+ 3. The names of its contributors may not be used to endorse or promote
37
+ products derived from this software without specific prior written
38
+ permission.
39
+
40
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
41
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
42
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
43
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
44
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
45
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
46
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
47
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
48
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
49
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
50
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
51
+
52
+
53
+ Any feedback is very welcome.
54
+ http://www.math.keio.ac.jp/matumoto/emt.html
55
+ email: matumoto@math.keio.ac.jp
56
+ */
57
+ var MersenneTwister = (function() {
58
+ /* Period parameters */
59
+ var N = 624;
60
+ var M = 397;
61
+ var MATRIX_A = 0x9908b0df; /* constant vector a */
62
+ var UMASK = 0x80000000; /* most significant w-r bits */
63
+ var LMASK = 0x7fffffff; /* least significant r bits */
64
+ var MIXBITS = function(u,v) { return ( ((u) & UMASK) | ((v) & LMASK) ); };
65
+ var TWIST = function(u,v) { return (MIXBITS((u),(v)) >>> 1) ^ ((v & 0x1) ? MATRIX_A : 0x0); };
66
+
67
+ function init(s) {
68
+ var mt = {left: 0, next: N, state: new Array(N)};
69
+ init_genrand(mt, s);
70
+ return mt;
71
+ }
72
+
73
+ /* initializes mt[N] with a seed */
74
+ function init_genrand(mt, s) {
75
+ var j, i;
76
+ mt.state[0] = s >>> 0;
77
+ for (j=1; j<N; j++) {
78
+ mt.state[j] = (1812433253 * ((mt.state[j-1] ^ (mt.state[j-1] >> 30) >>> 0)) + j);
79
+ /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */
80
+ /* In the previous versions, MSBs of the seed affect */
81
+ /* only MSBs of the array state[]. */
82
+ /* 2002/01/09 modified by Makoto Matsumoto */
83
+ mt.state[j] &= 0xffffffff; /* for >32 bit machines */
84
+ }
85
+ mt.left = 1;
86
+ mt.next = N;
87
+ }
88
+
89
+ /* generate N words at one time */
90
+ function next_state(mt) {
91
+ var p = 0, _p = mt.state;
92
+ var j;
93
+
94
+ mt.left = N;
95
+ mt.next = 0;
96
+
97
+ for (j=N-M+1; --j; p++)
98
+ _p[p] = _p[p+(M)] ^ TWIST(_p[p+(0)], _p[p+(1)]);
99
+
100
+ for (j=M; --j; p++)
101
+ _p[p] = _p[p+(M-N)] ^ TWIST(_p[p+(0)], _p[p+(1)]);
102
+
103
+ _p[p] = _p[p+(M-N)] ^ TWIST(_p[p+(0)], _p[0]);
104
+ }
105
+
106
+ /* generates a random number on [0,0xffffffff]-interval */
107
+ function genrand_int32(mt) {
108
+ /* mt must be initialized */
109
+ var y;
110
+
111
+ if (--mt.left <= 0) next_state(mt);
112
+ y = mt.state[mt.next++];
113
+
114
+ /* Tempering */
115
+ y ^= (y >>> 11);
116
+ y ^= (y << 7) & 0x9d2c5680;
117
+ y ^= (y << 15) & 0xefc60000;
118
+ y ^= (y >>> 18);
119
+
120
+ return y >>> 0;
121
+ }
122
+
123
+ function int_pair_to_real_exclusive(a, b) {
124
+ a >>>= 5;
125
+ b >>>= 6;
126
+ return(a*67108864.0+b)*(1.0/9007199254740992.0);
127
+ }
128
+
129
+ // generates a random number on [0,1) with 53-bit resolution
130
+ function genrand_real(mt) {
131
+ /* mt must be initialized */
132
+ var a = genrand_int32(mt), b = genrand_int32(mt);
133
+ return int_pair_to_real_exclusive(a, b);
134
+ }
135
+
136
+ return { genrand_real: genrand_real, init: init };
137
+ })();
@@ -0,0 +1,9 @@
1
+ class Random
2
+ MATH_RANDOM_GENERATOR = `{
3
+ new_seed: function() { return 0; },
4
+ reseed: function(seed) { return {}; },
5
+ rand: function($rng) { return Math.random(); }
6
+ }`
7
+
8
+ self.generator = MATH_RANDOM_GENERATOR
9
+ end
@@ -0,0 +1,13 @@
1
+ require 'corelib/random/MersenneTwister'
2
+
3
+ class Random
4
+ `var MAX_INT = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1`
5
+
6
+ MERSENNE_TWISTER_GENERATOR = `{
7
+ new_seed: function() { return Math.round(Math.random() * MAX_INT); },
8
+ reseed: function(seed) { return MersenneTwister.init(seed); },
9
+ rand: function(mt) { return MersenneTwister.genrand_real(mt); }
10
+ }`
11
+
12
+ self.generator = MERSENNE_TWISTER_GENERATOR
13
+ end
@@ -1,5 +1,7 @@
1
1
  class Random
2
2
  %x{
3
+ var module = { exports: {} };
4
+
3
5
  /* jshint ignore:start */
4
6
  /*
5
7
  seedrandom.min.js 2.4.1 (original source: https://github.com/davidbau/seedrandom/blob/2.4.1/seedrandom.min.js)
@@ -11,5 +13,15 @@ class Random
11
13
  */
12
14
  !function(a,b){function c(c,j,k){var n=[];j=1==j?{entropy:!0}:j||{};var s=g(f(j.entropy?[c,i(a)]:null==c?h():c,3),n),t=new d(n),u=function(){for(var a=t.g(m),b=p,c=0;a<q;)a=(a+c)*l,b*=l,c=t.g(1);for(;a>=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u.double=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,"global"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);e<l;)g[e]=e++;for(e=0;e<l;e++)g[e]=g[f=s&f+a[e%c]+(b=g[e])],g[f]=b;(d.g=function(a){for(var b,c=0,e=d.i,f=d.j,g=d.S;a--;)b=g[e=s&e+1],c=c*l+g[s&(g[e]=g[f=s&f+b])+(g[f]=b)];return d.i=e,d.j=f,c})(l)}function e(a,b){return b.i=a.i,b.j=a.j,b.S=a.S.slice(),b}function f(a,b){var c,d=[],e=typeof a;if(b&&"object"==e)for(c in a)if(a.hasOwnProperty(c))try{d.push(f(a[c],b-1))}catch(a){}return d.length?d:"string"==e?a:a+"\0"}function g(a,b){for(var c,d=a+"",e=0;e<d.length;)b[s&e]=s&(c^=19*b[s&e])+d.charCodeAt(e++);return i(b)}function h(){try{if(j)return i(j.randomBytes(l));var b=new Uint8Array(l);return(k.crypto||k.msCrypto).getRandomValues(b),i(b)}catch(b){var c=k.navigator,d=c&&c.plugins;return[+new Date,k,d,k.screen,i(a)]}}function i(a){return String.fromCharCode.apply(0,a)}var j,k=this,l=256,m=6,n=52,o="random",p=b.pow(l,m),q=b.pow(2,n),r=2*q,s=l-1;if(b["seed"+o]=c,g(b.random(),a),"object"==typeof module&&module.exports){module.exports=c;try{j=require("crypto")}catch(a){}}else"function"==typeof define&&define.amd&&define('seekrandom',function(){return c})}([],Math);
13
15
  /* jshint ignore:end */
16
+ var seedrandom = module.exports
17
+ var $seed_generator = new Math.seedrandom('opal', { entropy: true })
14
18
  }
19
+
20
+ SEEDRANDOM_GENERATOR = `{
21
+ new_seed: function() { return Math.abs($seed_generator.int32()); },
22
+ reseed: function(seed) { return new seedrandom(seed); },
23
+ rand: function($rng) { return $rng.quick(); }
24
+ }`
25
+
26
+ self.generator = SEEDRANDOM_GENERATOR
15
27
  end
@@ -3,13 +3,13 @@ require 'corelib/enumerable'
3
3
  class Range
4
4
  include Enumerable
5
5
 
6
- `def.$$is_range = true;`
6
+ `self.$$prototype.$$is_range = true`
7
7
 
8
8
  attr_reader :begin, :end
9
9
 
10
10
  def initialize(first, last, exclude = false)
11
11
  raise NameError, "'initialize' called twice" if @begin
12
- raise ArgumentError, "bad value for range" unless first <=> last
12
+ raise ArgumentError, 'bad value for range' unless first <=> last
13
13
 
14
14
  @begin = first
15
15
  @end = last
@@ -49,19 +49,19 @@ class Range
49
49
  %x{
50
50
  var i, limit;
51
51
 
52
- if (#@begin.$$is_number && #@end.$$is_number) {
53
- if (#@begin % 1 !== 0 || #@end % 1 !== 0) {
52
+ if (#{@begin}.$$is_number && #{@end}.$$is_number) {
53
+ if (#{@begin} % 1 !== 0 || #{@end} % 1 !== 0) {
54
54
  #{raise TypeError, "can't iterate from Float"}
55
55
  }
56
56
 
57
- for (i = #@begin, limit = #@end + #{@excl ? 0 : 1}; i < limit; i++) {
57
+ for (i = #{@begin}, limit = #{@end} + #{@excl ? 0 : 1}; i < limit; i++) {
58
58
  block(i);
59
59
  }
60
60
 
61
61
  return self;
62
62
  }
63
63
 
64
- if (#@begin.$$is_string && #@end.$$is_string) {
64
+ if (#{@begin}.$$is_string && #{@end}.$$is_string) {
65
65
  #{@begin.upto(@end, @excl, &block)}
66
66
  return self;
67
67
  }
@@ -89,8 +89,8 @@ class Range
89
89
  return false unless Range === other
90
90
 
91
91
  @excl === other.exclude_end? &&
92
- @begin.eql?(other.begin) &&
93
- @end.eql?(other.end)
92
+ @begin.eql?(other.begin) &&
93
+ @end.eql?(other.end)
94
94
  end
95
95
 
96
96
  def exclude_end?
@@ -102,7 +102,7 @@ class Range
102
102
  super
103
103
  end
104
104
 
105
- alias :include? :cover?
105
+ alias include? cover?
106
106
 
107
107
  def last(n = undefined)
108
108
  return @end if `n == null`
@@ -118,11 +118,11 @@ class Range
118
118
  elsif @excl && @begin == @end
119
119
  nil
120
120
  else
121
- `#@excl ? #@end - 1 : #@end`
121
+ `#{@excl} ? #{@end} - 1 : #{@end}`
122
122
  end
123
123
  end
124
124
 
125
- alias :member? :cover?
125
+ alias member? cover?
126
126
 
127
127
  def min
128
128
  if block_given?
@@ -137,16 +137,16 @@ class Range
137
137
  end
138
138
 
139
139
  def size
140
- _begin = @begin
141
- _end = @end
142
- _end -= 1 if @excl
140
+ range_begin = @begin
141
+ range_end = @end
142
+ range_end -= 1 if @excl
143
143
 
144
- return nil unless Numeric === _begin && Numeric === _end
145
- return 0 if _end < _begin
144
+ return nil unless Numeric === range_begin && Numeric === range_end
145
+ return 0 if range_end < range_begin
146
146
  infinity = Float::INFINITY
147
- return infinity if infinity == _begin.abs || _end.abs == infinity
147
+ return infinity if [range_begin.abs, range_end.abs].include?(infinity)
148
148
 
149
- (`Math.abs(_end - _begin) + 1`).to_i
149
+ `Math.abs(range_end - range_begin) + 1`.to_i
150
150
  end
151
151
 
152
152
  def step(n = 1)
@@ -199,14 +199,13 @@ class Range
199
199
  }
200
200
  }
201
201
 
202
-
203
202
  unless block_given?
204
- return enum_for(:step, n) {
203
+ return enum_for(:step, n) do
205
204
  %x{
206
205
  coerceStepSize();
207
206
  return enumeratorSize();
208
207
  }
209
- }
208
+ end
210
209
  end
211
210
 
212
211
  `coerceStepSize()`
@@ -217,8 +216,8 @@ class Range
217
216
  current = @begin + i * n
218
217
  if @excl
219
218
  break if current >= @end
220
- else
221
- break if current > @end
219
+ elsif current > @end
220
+ break
222
221
  end
223
222
  yield(current)
224
223
  i += 1
@@ -226,7 +225,7 @@ class Range
226
225
  else
227
226
  %x{
228
227
  if (#{@begin}.$$is_string && #{@end}.$$is_string && n % 1 !== 0) {
229
- #{raise TypeError, "no implicit conversion to float from string"}
228
+ #{raise TypeError, 'no implicit conversion to float from string'}
230
229
  }
231
230
  }
232
231
  each_with_index do |value, idx|
@@ -247,11 +246,11 @@ class Range
247
246
  end
248
247
 
249
248
  def to_s
250
- "#{@begin}#{ @excl ? '...' : '..' }#{@end}"
249
+ "#{@begin}#{@excl ? '...' : '..'}#{@end}"
251
250
  end
252
251
 
253
252
  def inspect
254
- "#{@begin.inspect}#{ @excl ? '...' : '..' }#{@end.inspect}"
253
+ "#{@begin.inspect}#{@excl ? '...' : '..'}#{@end.inspect}"
255
254
  end
256
255
 
257
256
  def marshal_load(args)