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,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'set'
3
4
  require 'pathname'
4
5
  require 'opal/nodes/base'
@@ -16,7 +17,7 @@ module Opal
16
17
 
17
18
  # Operators that get optimized by compiler
18
19
  OPERATORS = { :+ => :plus, :- => :minus, :* => :times, :/ => :divide,
19
- :< => :lt, :<= => :le, :> => :gt, :>= => :ge }
20
+ :< => :lt, :<= => :le, :> => :gt, :>= => :ge }.freeze
20
21
 
21
22
  def self.add_special(name, options = {}, &handler)
22
23
  SPECIALS[name] = options
@@ -29,7 +30,7 @@ module Opal
29
30
 
30
31
  *rest, last_arg = *args
31
32
 
32
- if last_arg && [:iter, :block_pass].include?(last_arg.type)
33
+ if last_arg && %i[iter block_pass].include?(last_arg.type)
33
34
  @iter = last_arg
34
35
  args = rest
35
36
  else
@@ -118,7 +119,7 @@ module Opal
118
119
  end
119
120
 
120
121
  def compile_arguments
121
- push ", "
122
+ push ', '
122
123
 
123
124
  if splat?
124
125
  push expr(arglist)
@@ -131,7 +132,7 @@ module Opal
131
132
 
132
133
  def compile_block_pass
133
134
  if iter
134
- push ", ", expr(iter)
135
+ push ', ', expr(iter)
135
136
  end
136
137
  end
137
138
 
@@ -144,7 +145,7 @@ module Opal
144
145
  end
145
146
 
146
147
  def compile_simple_call_chain
147
- push recv(receiver_sexp), method_jsid, "(", expr(arglist), ")"
148
+ push recv(receiver_sexp), method_jsid, '(', expr(arglist), ')'
148
149
  end
149
150
 
150
151
  def splat?
@@ -175,7 +176,7 @@ module Opal
175
176
  # a variable reference in irb mode in top scope might be a var ref,
176
177
  # or it might be a method call
177
178
  def using_irb?
178
- @compiler.irb? and scope.top? and arglist == s(:arglist) and recvr.nil? and iter.nil?
179
+ @compiler.irb? && scope.top? && arglist == s(:arglist) && recvr.nil? && iter.nil?
179
180
  end
180
181
 
181
182
  def sexp_with_arglist
@@ -189,10 +190,10 @@ module Opal
189
190
  if SPECIALS.include? meth
190
191
  method = method("handle_#{meth}")
191
192
  method.arity == 1 ? method[compile_default] : method[]
192
- elsif RuntimeHelpers.compatible?(recvr, meth, arglist)
193
+ elsif RuntimeHelpers.compatible?(recvr, meth)
193
194
  push(RuntimeHelpers.new(sexp_with_arglist, @level, @compiler).compile)
194
195
  else
195
- compile_default.call
196
+ yield # i.e. compile_default.call
196
197
  end
197
198
  end
198
199
 
@@ -205,9 +206,9 @@ module Opal
205
206
 
206
207
  push fragment("$rb_#{name}(")
207
208
  push lhs
208
- push fragment(", ")
209
+ push fragment(', ')
209
210
  push rhs
210
- push fragment(")")
211
+ push fragment(')')
211
212
  else
212
213
  compile_default.call
213
214
  end
@@ -220,7 +221,7 @@ module Opal
220
221
  compile_default.call
221
222
  end
222
223
 
223
- add_special :require_relative do |_compile_default|
224
+ add_special :require_relative do
224
225
  arg = arglist.children[0]
225
226
  file = compiler.file
226
227
  if arg.type == :str
@@ -255,11 +256,11 @@ module Opal
255
256
  compile_default.call
256
257
  end
257
258
 
258
- add_special :block_given? do |compile_default|
259
+ add_special :block_given? do
259
260
  push compiler.handle_block_given_call @sexp
260
261
  end
261
262
 
262
- add_special :__callee__ do |compile_default|
263
+ add_special :__callee__ do
263
264
  if scope.def?
264
265
  push fragment scope.mid.to_s.inspect
265
266
  else
@@ -267,7 +268,7 @@ module Opal
267
268
  end
268
269
  end
269
270
 
270
- add_special :__method__ do |compile_default|
271
+ add_special :__method__ do
271
272
  if scope.def?
272
273
  push fragment scope.mid.to_s.inspect
273
274
  else
@@ -275,29 +276,29 @@ module Opal
275
276
  end
276
277
  end
277
278
 
278
- add_special :debugger do |compile_default|
279
+ add_special :debugger do
279
280
  push fragment 'debugger'
280
281
  end
281
282
 
282
- add_special :__OPAL_COMPILER_CONFIG__ do |compile_default|
283
+ add_special :__OPAL_COMPILER_CONFIG__ do
283
284
  push fragment "Opal.hash({ arity_check: #{compiler.arity_check?} })"
284
285
  end
285
286
 
286
287
  add_special :nesting do |compile_default|
287
- push_nesting = push_nesting?(children)
288
+ push_nesting = push_nesting?
288
289
  push '(Opal.Module.$$nesting = $nesting, ' if push_nesting
289
290
  compile_default.call
290
291
  push ')' if push_nesting
291
292
  end
292
293
 
293
294
  add_special :constants do |compile_default|
294
- push_nesting = push_nesting?(children)
295
+ push_nesting = push_nesting?
295
296
  push '(Opal.Module.$$nesting = $nesting, ' if push_nesting
296
297
  compile_default.call
297
298
  push ')' if push_nesting
298
299
  end
299
300
 
300
- def push_nesting?(recv)
301
+ def push_nesting?
301
302
  recv = children.first
302
303
 
303
304
  children.size == 2 && ( # only receiver and method
@@ -328,7 +329,7 @@ module Opal
328
329
 
329
330
  parts = args.map { |s| handle_part s }
330
331
 
331
- if ::Opal::AST::Node === recv && recv.type == :const && recv.children.last == :File
332
+ if recv.is_a?(::Opal::AST::Node) && recv.type == :const && recv.children.last == :File
332
333
  if meth == :expand_path
333
334
  return expand_path(*parts)
334
335
  elsif meth == :join
@@ -339,7 +340,7 @@ module Opal
339
340
  end
340
341
  end
341
342
 
342
- msg = "Cannot handle dynamic require"
343
+ msg = 'Cannot handle dynamic require'
343
344
  case @compiler.dynamic_require_severity
344
345
  when :error
345
346
  @compiler.error msg, @sexp.line
@@ -349,7 +350,7 @@ module Opal
349
350
  end
350
351
 
351
352
  def expand_path(path, base = '')
352
- "#{base}/#{path}".split("/").inject([]) do |p, part|
353
+ "#{base}/#{path}".split('/').each_with_object([]) do |part, p|
353
354
  if part == ''
354
355
  # we had '//', so ignore
355
356
  elsif part == '..'
@@ -357,9 +358,7 @@ module Opal
357
358
  else
358
359
  p << part
359
360
  end
360
-
361
- p
362
- end.join "/"
361
+ end.join '/'
363
362
  end
364
363
  end
365
364
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'opal/nodes/base'
3
4
  require 'opal/nodes/call'
4
5
 
@@ -50,12 +51,12 @@ module Opal
50
51
  end
51
52
 
52
53
  def compile_using_send
53
- push recv(receiver_sexp), method_jsid, ".apply(null"
54
+ push recv(receiver_sexp), method_jsid, '.apply(null'
54
55
  compile_arguments
55
56
  if iter
56
- push ".concat(", expr(iter), ")"
57
+ push '.concat(', expr(iter), ')'
57
58
  end
58
- push ")"
59
+ push ')'
59
60
  end
60
61
  end
61
62
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'opal/nodes/base'
3
4
 
4
5
  module Opal
@@ -23,29 +24,28 @@ module Opal
23
24
  case_stmt[:cond] = true
24
25
  add_local '$case'
25
26
 
26
- push "$case = ", expr(condition), ";"
27
+ push '$case = ', expr(condition), ';'
27
28
  end
28
29
 
29
30
  case_parts.each_with_index do |wen, idx|
30
- if wen
31
- line
32
- case wen.type
33
- when :when
34
- wen = compiler.returns(wen) if needs_closure?
35
- push "else " unless idx == 0
36
- push stmt(wen)
37
- else # s(:else)
38
- handled_else = true
39
- wen = compiler.returns(wen) if needs_closure?
40
- push "else {", stmt(wen), "}"
41
- end
31
+ next unless wen
32
+ line
33
+ case wen.type
34
+ when :when
35
+ wen = compiler.returns(wen) if needs_closure?
36
+ push 'else ' unless idx == 0
37
+ push stmt(wen)
38
+ else # s(:else)
39
+ handled_else = true
40
+ wen = compiler.returns(wen) if needs_closure?
41
+ push 'else {', stmt(wen), '}'
42
42
  end
43
43
  end
44
44
 
45
45
  # if we are having a closure, we must return a usable value
46
- if needs_closure? and !handled_else
46
+ if needs_closure? && !handled_else
47
47
  line
48
- push "else { return nil }"
48
+ push 'else { return nil }'
49
49
  end
50
50
  end
51
51
 
@@ -68,30 +68,28 @@ module Opal
68
68
  children :whens, :body
69
69
 
70
70
  def compile
71
- push "if ("
71
+ push 'if ('
72
72
 
73
73
  when_checks.each_with_index do |check, idx|
74
74
  push ' || ' unless idx == 0
75
75
 
76
76
  if check.type == :splat
77
- push "(function($splt) { for (var i = 0, ii = $splt.length; i < ii; i++) {"
77
+ push '(function($splt) { for (var i = 0, ii = $splt.length; i < ii; i++) {'
78
78
  if case_stmt[:cond]
79
79
  push "if ($splt[i]['$===']($case)) { return true; }"
80
80
  else
81
- push "if (", js_truthy(check), ")) { return true; }"
81
+ push 'if (', js_truthy(check), ')) { return true; }'
82
82
  end
83
- push "} return false; })(", expr(check.children[0]), ")"
83
+ push '} return false; })(', expr(check.children[0]), ')'
84
+ elsif case_stmt[:cond]
85
+ call = s(:send, check, :===, s(:arglist, s(:js_tmp, '$case')))
86
+ push expr(call)
84
87
  else
85
- if case_stmt[:cond]
86
- call = s(:send, check, :===, s(:arglist, s(:js_tmp, '$case')))
87
- push expr(call)
88
- else
89
- push js_truthy(check)
90
- end
88
+ push js_truthy(check)
91
89
  end
92
90
  end
93
91
 
94
- push ") {", process(body_code, @level), "}"
92
+ push ') {', process(body_code, @level), '}'
95
93
  end
96
94
 
97
95
  def when_checks
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'opal/nodes/module'
3
4
 
4
5
  module Opal
@@ -12,13 +13,11 @@ module Opal
12
13
  name, base = name_and_base
13
14
  helper :klass
14
15
 
15
- push "(function($base, $super, $parent_nesting) {"
16
- line " function $#{name}(){};"
17
- line " var self = $#{name} = $klass($base, $super, '#{name}', $#{name});"
16
+ push '(function($base, $super, $parent_nesting) {'
17
+ line " var self = $klass($base, $super, '#{name}');"
18
18
 
19
19
  in_scope do
20
20
  scope.name = name
21
- add_temp "#{scope.proto} = self.$$proto"
22
21
  add_temp '$nesting = [self].concat($parent_nesting)'
23
22
 
24
23
  body_code = self.body_code
@@ -28,7 +27,7 @@ module Opal
28
27
  line body_code
29
28
  end
30
29
 
31
- line "})(", base, ", ", self.super_code, ", $nesting)"
30
+ line '})(', base, ', ', super_code, ', $nesting)'
32
31
  end
33
32
 
34
33
  def super_code
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'opal/nodes/base'
3
4
 
4
5
  module Opal
@@ -10,13 +11,13 @@ module Opal
10
11
 
11
12
  def compile
12
13
  if magical_data_const?
13
- push("$__END__")
14
+ push('$__END__')
14
15
  elsif const_scope
15
- push "Opal.const_get_qualified(", recv(const_scope), ", '#{name}')"
16
+ push '$$$(', recv(const_scope), ", '#{name}')"
16
17
  elsif compiler.eval?
17
- push "Opal.const_get_relative($nesting, '#{name}')"
18
+ push "$$($nesting, '#{name}')"
18
19
  else
19
- push "Opal.const_get_relative($nesting, '#{name}')"
20
+ push "$$($nesting, '#{name}')"
20
21
  end
21
22
  end
22
23
 
@@ -27,7 +28,7 @@ module Opal
27
28
  # 2. When current file doesn't have __END__ section
28
29
  # DATA const should be resolved to a regular ::DATA constant
29
30
  def magical_data_const?
30
- const_scope.nil? && name == :DATA and compiler.eof_content
31
+ const_scope.nil? && name == :DATA && compiler.eof_content
31
32
  end
32
33
  end
33
34
 
@@ -48,9 +49,9 @@ module Opal
48
49
 
49
50
  def compile
50
51
  if base
51
- push "Opal.const_set(", expr(base), ", '#{name}', ", expr(value), ")"
52
+ push 'Opal.const_set(', expr(base), ", '#{name}', ", expr(value), ')'
52
53
  else
53
- push "Opal.const_set($nesting[0], '#{name}', ", expr(value), ")"
54
+ push "Opal.const_set($nesting[0], '#{name}', ", expr(value), ')'
54
55
  end
55
56
  end
56
57
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'opal/nodes/call'
3
4
 
4
5
  module Opal
5
6
  module Nodes
6
-
7
7
  # Safe navigator recv&.meth(arglist, &block)
8
8
  class CSendNode < CallNode
9
9
  handle :csend
@@ -12,7 +12,7 @@ module Opal
12
12
  helper :send
13
13
 
14
14
  conditional_send(recv(receiver_sexp)) do |receiver_temp|
15
- push "$send(", receiver_temp
15
+ push '$send(', receiver_temp
16
16
  compile_method_name
17
17
  compile_arguments
18
18
  compile_block_pass
@@ -20,6 +20,5 @@ module Opal
20
20
  end
21
21
  end
22
22
  end
23
-
24
23
  end
25
24
  end
@@ -1,78 +1,40 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'opal/nodes/node_with_args'
3
4
 
4
5
  module Opal
5
6
  module Nodes
6
- # FIXME: needs rewrite
7
7
  class DefNode < NodeWithArgs
8
8
  handle :def
9
9
 
10
- children :mid, :args, :stmts
11
-
12
- attr_accessor :block_arg
13
-
14
- def extract_block_arg
15
- *regular_args, last_arg = args.children
16
- if last_arg && last_arg.type == :blockarg
17
- @block_arg = last_arg.children[0]
18
- @sexp = @sexp.updated(nil, [
19
- mid,
20
- s(:args, *regular_args),
21
- stmts
22
- ])
23
- end
24
- end
10
+ children :mid, :inline_args, :stmts
25
11
 
26
12
  def compile
27
- extract_block_arg
28
- split_args
29
-
30
13
  inline_params = nil
31
14
  scope_name = nil
32
15
 
33
- # block name (&block)
34
- if block_arg
35
- block_name = block_arg
36
- end
37
-
38
16
  in_scope do
39
17
  scope.mid = mid
40
18
  scope.defs = true if @sexp.type == :defs
41
19
 
42
- if block_name
43
- scope.uses_block!
44
- scope.add_arg block_name
45
- end
20
+ scope.identify!
21
+ scope_name = scope.identity
46
22
 
47
- scope.block_name = block_name || '$yield'
23
+ # Setting a default block name (later can be overwritten by a blockarg)
24
+ scope.block_name = '$yield'
48
25
 
49
- inline_params = process(inline_args_sexp)
26
+ inline_params = process(inline_args)
50
27
 
51
28
  stmt_code = stmt(compiler.returns(stmts))
52
29
 
53
- add_temp 'self = this'
54
-
55
- compile_inline_args
56
- compile_post_args
57
-
58
- scope.identify!
59
- scope_name = scope.identity
60
-
61
30
  compile_block_arg
62
31
 
63
- if compiler.arity_check?
64
- compile_arity_check
65
- end
32
+ add_temp 'self = this'
33
+
34
+ compile_arity_check
66
35
 
67
36
  if scope.uses_zuper
68
- add_local '$zuper'
69
- add_local '$zuper_i'
70
- add_local '$zuper_ii'
71
-
72
- line "// Prepare super implicit arguments"
73
- line "for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {"
74
- line " $zuper[$zuper_i] = arguments[$zuper_i];"
75
- line "}"
37
+ prepare_super
76
38
  end
77
39
 
78
40
  unshift "\n#{current_indent}", scope.to_vars
@@ -81,8 +43,8 @@ module Opal
81
43
 
82
44
  if scope.catch_return
83
45
  unshift "try {\n"
84
- line "} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"
85
- push " throw $returner; }"
46
+ line '} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }'
47
+ push ' throw $returner; }'
86
48
  end
87
49
  end
88
50
 
@@ -96,11 +58,11 @@ module Opal
96
58
  # For now we're just using $$, to maintain compatibility with older IEs.
97
59
  function_name = valid_name?(mid) ? " $$#{mid}" : ''
98
60
 
99
- unshift ") {"
61
+ unshift ') {'
100
62
  unshift(inline_params)
101
63
  unshift "function#{function_name}("
102
64
  unshift "#{scope_name} = " if scope_name
103
- line "}"
65
+ line '}'
104
66
 
105
67
  push ", #{scope_name}.$$arity = #{arity}"
106
68
 
@@ -120,16 +82,7 @@ module Opal
120
82
  end
121
83
 
122
84
  def wrap_with_definition
123
- if scope.iter? then unshift "Opal.def(self, '$#{mid}', "
124
- elsif scope.module? || scope.class? then unshift "Opal.defn(self, '$#{mid}', "
125
- elsif scope.sclass? then unshift "Opal.defn(self, '$#{mid}', "
126
- elsif compiler.eval? then unshift "Opal.def(self, '$#{mid}', "
127
- elsif scope.top? then unshift "Opal.defn(Opal.Object, '$#{mid}', "
128
- elsif scope.def? then unshift "Opal.def(self, '$#{mid}', "
129
- else raise "Unsupported use of `def`; please file a bug at https://github.com/opal/opal/issues/new reporting this message."
130
- end
131
-
132
- push ')'
85
+ wrap "Opal.def(self, '$#{mid}', ", ')'
133
86
 
134
87
  if expr?
135
88
  wrap '(', ", nil) && '#{mid}'"
@@ -138,25 +91,26 @@ module Opal
138
91
  end
139
92
  end
140
93
 
141
- # Returns code used in debug mode to check arity of method call
142
- def compile_arity_check
143
- if arity_checks.size > 0
144
- meth = scope.mid.to_s.inspect
145
- line "var $arity = arguments.length;"
146
- push " if (#{arity_checks.join(' || ')}) { Opal.ac($arity, #{arity}, this, #{meth}); }"
147
- end
148
- end
149
-
150
94
  def source_location
151
95
  file = @sexp.loc.expression.source_buffer.name
152
96
  line = @sexp.loc.line
153
-
154
- "['#{file}.rb', #{line}]"
97
+ "['#{file}', #{line}]"
155
98
  end
156
99
 
157
100
  def comments_code
158
101
  '[' + comments.map { |comment| comment.text.inspect }.join(', ') + ']'
159
102
  end
103
+
104
+ def prepare_super
105
+ add_local '$zuper'
106
+ add_local '$zuper_i'
107
+ add_local '$zuper_ii'
108
+
109
+ line '// Prepare super implicit arguments'
110
+ line 'for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {'
111
+ line ' $zuper[$zuper_i] = arguments[$zuper_i];'
112
+ line '}'
113
+ end
160
114
  end
161
115
  end
162
116
  end