opal 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (734) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +19 -0
  3. data/.gitmodules +1 -1
  4. data/.jshintrc +1 -2
  5. data/.rspec +1 -2
  6. data/.travis.yml +42 -20
  7. data/.yardopts +3 -1
  8. data/CHANGELOG.md +164 -1
  9. data/Gemfile +16 -9
  10. data/HACKING.md +4 -2
  11. data/README.md +11 -11
  12. data/Rakefile +1 -1
  13. data/appveyor.yml +29 -0
  14. data/benchmark/bm_constant_lookup_big.rb +799 -0
  15. data/benchmark/bm_constant_lookup_small.rb +59 -0
  16. data/benchmark/bm_module_definition_big.rb +400 -0
  17. data/benchmark/bm_module_definition_small.rb +30 -0
  18. data/benchmark-ips/bm_case.rb +33 -0
  19. data/benchmark-ips/bm_constants_lookup.rb +13 -0
  20. data/benchmark-ips/bm_is_number.rb +29 -0
  21. data/benchmark-ips/bm_symbol_to_proc.rb +19 -0
  22. data/bin +1 -0
  23. data/docs/compiled_ruby.md +16 -14
  24. data/docs/faq.md +3 -3
  25. data/docs/headless_chrome.md +105 -0
  26. data/docs/rspec.md +4 -20
  27. data/docs/unsupported_features.md +6 -4
  28. data/examples/rack/Gemfile +1 -0
  29. data/examples/rack/Gemfile.lock +11 -7
  30. data/examples/rack/app/application.rb +14 -3
  31. data/examples/rack/app/user.rb +2 -0
  32. data/examples/rack/config.ru +1 -1
  33. data/examples/rack/index.html.erb +1 -0
  34. data/examples/sinatra/Gemfile +1 -1
  35. data/examples/sinatra/Gemfile.lock +8 -11
  36. data/examples/sinatra/app/application.rb +2 -0
  37. data/{bin → exe}/opal +4 -2
  38. data/{bin → exe}/opal-repl +23 -1
  39. data/lib/opal/ast/builder.rb +13 -0
  40. data/lib/opal/ast/node.rb +30 -0
  41. data/lib/opal/builder.rb +82 -17
  42. data/lib/opal/builder_processors.rb +9 -7
  43. data/lib/opal/cli.rb +45 -59
  44. data/lib/opal/cli_options.rb +19 -12
  45. data/lib/opal/cli_runners/applescript.rb +3 -4
  46. data/lib/opal/cli_runners/chrome.js +135 -0
  47. data/lib/opal/cli_runners/chrome.rb +100 -0
  48. data/lib/opal/cli_runners/nashorn.rb +1 -1
  49. data/lib/opal/cli_runners/node_modules/.bin/chrome-remote-interface +1 -0
  50. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/LICENSE +18 -0
  51. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/README.md +843 -0
  52. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/bin/client.js +326 -0
  53. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/chrome-remote-interface.js +11 -0
  54. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/index.js +39 -0
  55. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/api.js +84 -0
  56. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/chrome.js +289 -0
  57. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/defaults.js +4 -0
  58. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/devtools.js +245 -0
  59. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/external-request.js +23 -0
  60. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/protocol.json +13303 -0
  61. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/websocket-wrapper.js +32 -0
  62. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/package.json +128 -0
  63. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/webpack.config.js +55 -0
  64. data/lib/opal/cli_runners/node_modules/commander/Readme.md +195 -0
  65. data/lib/opal/cli_runners/node_modules/commander/index.js +851 -0
  66. data/lib/opal/cli_runners/node_modules/commander/package.json +92 -0
  67. data/{stdlib/nodejs/node_modules/js-yaml/node_modules/argparse → lib/opal/cli_runners/node_modules/ultron}/LICENSE +7 -6
  68. data/lib/opal/cli_runners/node_modules/ultron/index.js +138 -0
  69. data/lib/opal/cli_runners/node_modules/ultron/package.json +112 -0
  70. data/{stdlib/nodejs/node_modules/js-yaml → lib/opal/cli_runners/node_modules/ws}/LICENSE +6 -6
  71. data/lib/opal/cli_runners/node_modules/ws/README.md +259 -0
  72. data/lib/opal/cli_runners/node_modules/ws/SECURITY.md +33 -0
  73. data/lib/opal/cli_runners/node_modules/ws/index.js +15 -0
  74. data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.fallback.js +56 -0
  75. data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.js +15 -0
  76. data/lib/opal/cli_runners/node_modules/ws/lib/ErrorCodes.js +28 -0
  77. data/lib/opal/cli_runners/node_modules/ws/lib/EventTarget.js +158 -0
  78. data/lib/opal/cli_runners/node_modules/ws/lib/Extensions.js +69 -0
  79. data/lib/opal/cli_runners/node_modules/ws/lib/PerMessageDeflate.js +339 -0
  80. data/lib/opal/cli_runners/node_modules/ws/lib/Receiver.js +520 -0
  81. data/lib/opal/cli_runners/node_modules/ws/lib/Sender.js +438 -0
  82. data/lib/opal/cli_runners/node_modules/ws/lib/Validation.fallback.js +9 -0
  83. data/lib/opal/cli_runners/node_modules/ws/lib/Validation.js +17 -0
  84. data/lib/opal/cli_runners/node_modules/ws/lib/WebSocket.js +705 -0
  85. data/lib/opal/cli_runners/node_modules/ws/lib/WebSocketServer.js +336 -0
  86. data/lib/opal/cli_runners/node_modules/ws/package.json +122 -0
  87. data/lib/opal/cli_runners/nodejs.rb +4 -2
  88. data/lib/opal/cli_runners/package.json +5 -0
  89. data/lib/opal/cli_runners/server.rb +1 -1
  90. data/lib/opal/cli_runners.rb +2 -1
  91. data/lib/opal/compiler.rb +136 -95
  92. data/lib/opal/config.rb +114 -36
  93. data/lib/opal/deprecations.rb +18 -0
  94. data/lib/opal/eof_content.rb +36 -0
  95. data/lib/opal/erb.rb +1 -0
  96. data/lib/opal/errors.rb +1 -0
  97. data/lib/opal/fragment.rb +1 -0
  98. data/lib/opal/nodes/arglist.rb +2 -1
  99. data/lib/opal/nodes/args/initialize_kwargs.rb +1 -0
  100. data/lib/opal/nodes/args/kwarg.rb +9 -7
  101. data/lib/opal/nodes/args/kwoptarg.rb +13 -8
  102. data/lib/opal/nodes/args/kwrestarg.rb +5 -5
  103. data/lib/opal/nodes/args/mlhsarg.rb +3 -2
  104. data/lib/opal/nodes/args/normarg.rb +6 -7
  105. data/lib/opal/nodes/args/optarg.rb +5 -7
  106. data/lib/opal/nodes/args/post_args.rb +6 -5
  107. data/lib/opal/nodes/args/post_kwargs.rb +1 -0
  108. data/lib/opal/nodes/args/restarg.rb +7 -7
  109. data/lib/opal/nodes/array.rb +1 -0
  110. data/lib/opal/nodes/base.rb +24 -3
  111. data/lib/opal/nodes/call.rb +168 -155
  112. data/lib/opal/nodes/call_special.rb +37 -214
  113. data/lib/opal/nodes/case.rb +36 -22
  114. data/lib/opal/nodes/class.rb +4 -3
  115. data/lib/opal/nodes/constants.rb +28 -48
  116. data/lib/opal/nodes/csend.rb +25 -0
  117. data/lib/opal/nodes/def.rb +57 -17
  118. data/lib/opal/nodes/defined.rb +170 -60
  119. data/lib/opal/nodes/definitions.rb +42 -133
  120. data/lib/opal/nodes/defs.rb +29 -0
  121. data/lib/opal/nodes/hash.rb +12 -35
  122. data/lib/opal/nodes/helpers.rb +31 -62
  123. data/lib/opal/nodes/if.rb +21 -32
  124. data/lib/opal/nodes/inline_args.rb +12 -13
  125. data/lib/opal/nodes/iter.rb +61 -36
  126. data/lib/opal/nodes/literal.rb +206 -114
  127. data/lib/opal/nodes/logic.rb +39 -57
  128. data/lib/opal/nodes/masgn.rb +20 -18
  129. data/lib/opal/nodes/module.rb +10 -11
  130. data/lib/opal/nodes/node_with_args.rb +15 -18
  131. data/lib/opal/nodes/rescue.rb +37 -70
  132. data/lib/opal/nodes/runtime_helpers.rb +8 -3
  133. data/lib/opal/nodes/scope.rb +10 -5
  134. data/lib/opal/nodes/singleton_class.rb +4 -3
  135. data/lib/opal/nodes/super.rb +112 -88
  136. data/lib/opal/nodes/top.rb +7 -2
  137. data/lib/opal/nodes/variables.rb +57 -35
  138. data/lib/opal/nodes/while.rb +11 -1
  139. data/lib/opal/nodes/yield.rb +1 -17
  140. data/lib/opal/nodes.rb +3 -1
  141. data/lib/opal/parser.rb +29 -766
  142. data/lib/opal/path_reader.rb +22 -5
  143. data/lib/opal/paths.rb +10 -4
  144. data/lib/opal/regexp_anchors.rb +1 -0
  145. data/lib/opal/rewriter.rb +64 -0
  146. data/lib/opal/rewriters/base.rb +63 -0
  147. data/lib/opal/rewriters/binary_operator_assignment.rb +141 -0
  148. data/lib/opal/rewriters/block_to_iter.rb +17 -0
  149. data/lib/opal/rewriters/break_finder.rb +34 -0
  150. data/lib/opal/rewriters/dot_js_syntax.rb +60 -0
  151. data/lib/opal/rewriters/explicit_writer_return.rb +58 -0
  152. data/lib/opal/rewriters/for_rewriter.rb +93 -0
  153. data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +58 -0
  154. data/lib/opal/rewriters/js_reserved_words.rb +108 -0
  155. data/lib/opal/rewriters/logical_operator_assignment.rb +154 -0
  156. data/lib/opal/rewriters/opal_engine_check.rb +42 -0
  157. data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +67 -0
  158. data/lib/opal/server.rb +4 -0
  159. data/lib/opal/simple_server.rb +101 -0
  160. data/lib/opal/source_map.rb +1 -1
  161. data/lib/opal/util.rb +6 -6
  162. data/lib/opal/version.rb +2 -1
  163. data/lib/opal.rb +7 -1
  164. data/lib/tilt/opal.rb +1 -0
  165. data/opal/README.md +1 -1
  166. data/opal/corelib/array.rb +184 -107
  167. data/opal/corelib/basic_object.rb +6 -6
  168. data/opal/corelib/boolean.rb +11 -3
  169. data/opal/corelib/class.rb +14 -11
  170. data/opal/corelib/comparable.rb +16 -0
  171. data/opal/corelib/complex.rb +5 -1
  172. data/opal/corelib/constants.rb +3 -3
  173. data/opal/corelib/enumerable.rb +176 -11
  174. data/opal/corelib/error.rb +35 -17
  175. data/opal/corelib/file.rb +114 -176
  176. data/opal/corelib/hash.rb +226 -13
  177. data/opal/corelib/helpers.rb +12 -15
  178. data/opal/corelib/io.rb +3 -2
  179. data/opal/corelib/kernel.rb +68 -32
  180. data/opal/corelib/marshal/read_buffer.rb +288 -150
  181. data/opal/corelib/marshal/write_buffer.rb +27 -2
  182. data/opal/corelib/method.rb +33 -13
  183. data/opal/corelib/module.rb +134 -82
  184. data/opal/corelib/nil.rb +11 -3
  185. data/opal/corelib/number.rb +220 -34
  186. data/opal/corelib/numeric.rb +3 -11
  187. data/opal/corelib/process.rb +44 -4
  188. data/opal/corelib/random/seedrandom.js.rb +15 -0
  189. data/opal/corelib/random.rb +117 -0
  190. data/opal/corelib/range.rb +147 -24
  191. data/opal/corelib/regexp.rb +82 -13
  192. data/opal/corelib/runtime.js +623 -397
  193. data/opal/corelib/string/encoding.rb +67 -31
  194. data/opal/corelib/string/inheritance.rb +1 -1
  195. data/opal/corelib/string.rb +40 -9
  196. data/opal/corelib/struct.rb +18 -3
  197. data/opal/corelib/time.rb +3 -3
  198. data/opal/corelib/variables.rb +1 -1
  199. data/opal/opal.rb +1 -0
  200. data/opal.gemspec +32 -29
  201. data/stdlib/base64.rb +4 -2
  202. data/stdlib/bigdecimal/bignumber.js.rb +1 -1
  203. data/stdlib/buffer/array.rb +4 -2
  204. data/stdlib/date.rb +64 -31
  205. data/stdlib/headless_chrome.rb +11 -0
  206. data/stdlib/json.rb +16 -4
  207. data/stdlib/nashorn/file.rb +15 -0
  208. data/stdlib/native.rb +21 -12
  209. data/stdlib/nodejs/dir.rb +1 -1
  210. data/stdlib/nodejs/file.rb +77 -23
  211. data/stdlib/nodejs/io.rb +30 -1
  212. data/stdlib/nodejs/{node_modules/js-yaml/dist/js-yaml.js → js-yaml-3-6-1.js} +815 -626
  213. data/stdlib/nodejs/kernel.rb +3 -1
  214. data/stdlib/nodejs/package.json +0 -1
  215. data/stdlib/nodejs/stacktrace.rb +179 -0
  216. data/stdlib/nodejs/yaml.rb +2 -1
  217. data/stdlib/opal/platform.rb +6 -14
  218. data/stdlib/opal-builder.rb +1 -0
  219. data/stdlib/opal-platform.rb +15 -0
  220. data/stdlib/pathname.rb +1 -1
  221. data/stdlib/rbconfig.rb +1 -1
  222. data/stdlib/securerandom.rb +1 -1
  223. data/stdlib/strscan.rb +15 -1
  224. data/stdlib/yaml.rb +1 -1
  225. data/tasks/benchmarking.rake +9 -0
  226. data/tasks/building.rake +24 -20
  227. data/tasks/linting.rake +24 -13
  228. data/tasks/testing/mspec_special_calls.rb +44 -15
  229. data/tasks/testing/opal_rspec_smoketest.Gemfile +6 -0
  230. data/tasks/testing.rake +351 -202
  231. metadata +135 -915
  232. data/lib/opal/cli_runners/phantom.js +0 -70
  233. data/lib/opal/cli_runners/phantomjs.rb +0 -28
  234. data/lib/opal/hike_path_finder.rb +0 -18
  235. data/lib/opal/nodes/for.rb +0 -48
  236. data/lib/opal/parser/grammar.rb +0 -6157
  237. data/lib/opal/parser/grammar.y +0 -2011
  238. data/lib/opal/parser/keywords.rb +0 -66
  239. data/lib/opal/parser/lexer.rb +0 -1352
  240. data/lib/opal/parser/parser_scope.rb +0 -28
  241. data/lib/opal/parser/sexp.rb +0 -90
  242. data/lib/opal/sprockets/environment.rb +0 -23
  243. data/lib/opal/sprockets/erb.rb +0 -23
  244. data/lib/opal/sprockets/path_reader.rb +0 -36
  245. data/lib/opal/sprockets/processor.rb +0 -145
  246. data/lib/opal/sprockets/server.rb +0 -133
  247. data/lib/opal/sprockets/source_map_header_patch.rb +0 -41
  248. data/lib/opal/sprockets/source_map_server.rb +0 -115
  249. data/lib/opal/sprockets.rb +0 -91
  250. data/spec/README.md +0 -10
  251. data/spec/filters/bugs/array.rb +0 -12
  252. data/spec/filters/bugs/basicobject.rb +0 -16
  253. data/spec/filters/bugs/bigdecimal.rb +0 -160
  254. data/spec/filters/bugs/class.rb +0 -10
  255. data/spec/filters/bugs/compiler_opal.rb +0 -5
  256. data/spec/filters/bugs/complex.rb +0 -3
  257. data/spec/filters/bugs/date.rb +0 -94
  258. data/spec/filters/bugs/enumerable.rb +0 -50
  259. data/spec/filters/bugs/enumerator.rb +0 -42
  260. data/spec/filters/bugs/exception.rb +0 -58
  261. data/spec/filters/bugs/float.rb +0 -33
  262. data/spec/filters/bugs/hash.rb +0 -11
  263. data/spec/filters/bugs/inheritance.rb +0 -5
  264. data/spec/filters/bugs/integer.rb +0 -28
  265. data/spec/filters/bugs/kernel.rb +0 -297
  266. data/spec/filters/bugs/language.rb +0 -275
  267. data/spec/filters/bugs/language_opal.rb +0 -88
  268. data/spec/filters/bugs/marshal.rb +0 -43
  269. data/spec/filters/bugs/method.rb +0 -84
  270. data/spec/filters/bugs/module.rb +0 -196
  271. data/spec/filters/bugs/numeric.rb +0 -127
  272. data/spec/filters/bugs/pathname.rb +0 -5
  273. data/spec/filters/bugs/proc.rb +0 -36
  274. data/spec/filters/bugs/range.rb +0 -144
  275. data/spec/filters/bugs/rational.rb +0 -4
  276. data/spec/filters/bugs/regexp.rb +0 -196
  277. data/spec/filters/bugs/set.rb +0 -42
  278. data/spec/filters/bugs/singleton.rb +0 -6
  279. data/spec/filters/bugs/string.rb +0 -101
  280. data/spec/filters/bugs/stringscanner.rb +0 -79
  281. data/spec/filters/bugs/struct.rb +0 -4
  282. data/spec/filters/bugs/time.rb +0 -29
  283. data/spec/filters/bugs/unboundmethod.rb +0 -27
  284. data/spec/filters/unsupported/array.rb +0 -163
  285. data/spec/filters/unsupported/basicobject.rb +0 -14
  286. data/spec/filters/unsupported/bignum.rb +0 -52
  287. data/spec/filters/unsupported/class.rb +0 -4
  288. data/spec/filters/unsupported/delegator.rb +0 -5
  289. data/spec/filters/unsupported/enumerable.rb +0 -11
  290. data/spec/filters/unsupported/enumerator.rb +0 -13
  291. data/spec/filters/unsupported/fixnum.rb +0 -14
  292. data/spec/filters/unsupported/float.rb +0 -43
  293. data/spec/filters/unsupported/freeze.rb +0 -53
  294. data/spec/filters/unsupported/hash.rb +0 -51
  295. data/spec/filters/unsupported/integer.rb +0 -3
  296. data/spec/filters/unsupported/kernel.rb +0 -31
  297. data/spec/filters/unsupported/language.rb +0 -17
  298. data/spec/filters/unsupported/marshal.rb +0 -46
  299. data/spec/filters/unsupported/matchdata.rb +0 -30
  300. data/spec/filters/unsupported/math.rb +0 -3
  301. data/spec/filters/unsupported/module.rb +0 -8
  302. data/spec/filters/unsupported/pathname.rb +0 -3
  303. data/spec/filters/unsupported/privacy.rb +0 -147
  304. data/spec/filters/unsupported/proc.rb +0 -3
  305. data/spec/filters/unsupported/regexp.rb +0 -59
  306. data/spec/filters/unsupported/set.rb +0 -4
  307. data/spec/filters/unsupported/singleton.rb +0 -6
  308. data/spec/filters/unsupported/string.rb +0 -537
  309. data/spec/filters/unsupported/struct.rb +0 -6
  310. data/spec/filters/unsupported/symbol.rb +0 -19
  311. data/spec/filters/unsupported/taint.rb +0 -15
  312. data/spec/filters/unsupported/thread.rb +0 -7
  313. data/spec/filters/unsupported/time.rb +0 -202
  314. data/spec/lib/builder_processors_spec.rb +0 -27
  315. data/spec/lib/builder_spec.rb +0 -72
  316. data/spec/lib/cli_runners/phantomjs_spec.rb +0 -39
  317. data/spec/lib/cli_spec.rb +0 -211
  318. data/spec/lib/compiler/call_spec.rb +0 -700
  319. data/spec/lib/compiler/pre_processed_conditionals_spec.rb +0 -87
  320. data/spec/lib/compiler_spec.rb +0 -285
  321. data/spec/lib/config_spec.rb +0 -13
  322. data/spec/lib/dependency_resolver_spec.rb +0 -40
  323. data/spec/lib/fixtures/complex_sprockets.js.rb.erb +0 -4
  324. data/spec/lib/fixtures/file_with_directives.js +0 -2
  325. data/spec/lib/fixtures/jst_file.js.jst +0 -1
  326. data/spec/lib/fixtures/no_requires.rb +0 -1
  327. data/spec/lib/fixtures/opal_file.rb +0 -2
  328. data/spec/lib/fixtures/require_tree_test.rb +0 -3
  329. data/spec/lib/fixtures/required_file.js +0 -1
  330. data/spec/lib/fixtures/required_tree_test/required_file1.rb +0 -1
  331. data/spec/lib/fixtures/required_tree_test/required_file2.rb +0 -1
  332. data/spec/lib/fixtures/requires.rb +0 -7
  333. data/spec/lib/fixtures/source_map/subfolder/other_file.rb +0 -1
  334. data/spec/lib/fixtures/source_map.rb +0 -1
  335. data/spec/lib/fixtures/sprockets_file.js.rb +0 -3
  336. data/spec/lib/fixtures/sprockets_require_tree_test.rb +0 -3
  337. data/spec/lib/hike_path_finder_spec.rb +0 -23
  338. data/spec/lib/lexer_spec.rb +0 -110
  339. data/spec/lib/parser/alias_spec.rb +0 -26
  340. data/spec/lib/parser/and_spec.rb +0 -13
  341. data/spec/lib/parser/aref_spec.rb +0 -10
  342. data/spec/lib/parser/attrasgn_spec.rb +0 -28
  343. data/spec/lib/parser/begin_spec.rb +0 -42
  344. data/spec/lib/parser/block_spec.rb +0 -12
  345. data/spec/lib/parser/break_spec.rb +0 -17
  346. data/spec/lib/parser/call_spec.rb +0 -201
  347. data/spec/lib/parser/class_spec.rb +0 -35
  348. data/spec/lib/parser/comments_spec.rb +0 -11
  349. data/spec/lib/parser/def_spec.rb +0 -109
  350. data/spec/lib/parser/if_spec.rb +0 -26
  351. data/spec/lib/parser/iter_spec.rb +0 -59
  352. data/spec/lib/parser/lambda_spec.rb +0 -219
  353. data/spec/lib/parser/literal_spec.rb +0 -118
  354. data/spec/lib/parser/masgn_spec.rb +0 -37
  355. data/spec/lib/parser/module_spec.rb +0 -27
  356. data/spec/lib/parser/not_spec.rb +0 -21
  357. data/spec/lib/parser/op_asgn1_spec.rb +0 -23
  358. data/spec/lib/parser/op_asgn2_spec.rb +0 -23
  359. data/spec/lib/parser/op_asgn_spec.rb +0 -17
  360. data/spec/lib/parser/or_spec.rb +0 -13
  361. data/spec/lib/parser/return_spec.rb +0 -22
  362. data/spec/lib/parser/sclass_spec.rb +0 -21
  363. data/spec/lib/parser/string_spec.rb +0 -286
  364. data/spec/lib/parser/super_spec.rb +0 -20
  365. data/spec/lib/parser/unary_spec.rb +0 -52
  366. data/spec/lib/parser/undef_spec.rb +0 -19
  367. data/spec/lib/parser/unless_spec.rb +0 -13
  368. data/spec/lib/parser/variables_spec.rb +0 -116
  369. data/spec/lib/parser/while_spec.rb +0 -15
  370. data/spec/lib/parser/yield_spec.rb +0 -20
  371. data/spec/lib/path_reader_spec.rb +0 -36
  372. data/spec/lib/paths_spec.rb +0 -18
  373. data/spec/lib/shared/path_finder_shared.rb +0 -19
  374. data/spec/lib/shared/path_reader_shared.rb +0 -31
  375. data/spec/lib/spec_helper.rb +0 -16
  376. data/spec/lib/sprockets/erb_spec.rb +0 -38
  377. data/spec/lib/sprockets/path_reader_spec.rb +0 -41
  378. data/spec/lib/sprockets/processor_spec.rb +0 -79
  379. data/spec/lib/sprockets/server_spec.rb +0 -102
  380. data/spec/lib/sprockets_spec.rb +0 -32
  381. data/spec/lib/tilt/opal_spec.rb +0 -37
  382. data/spec/mspec-opal/formatters.rb +0 -188
  383. data/spec/mspec-opal/runner.rb +0 -193
  384. data/spec/opal/compiler/irb_spec.rb +0 -44
  385. data/spec/opal/core/arity_spec.rb +0 -142
  386. data/spec/opal/core/array/intersection_spec.rb +0 -38
  387. data/spec/opal/core/array/minus_spec.rb +0 -38
  388. data/spec/opal/core/array/select_spec.rb +0 -14
  389. data/spec/opal/core/array/set_range_to_array_spec.rb +0 -7
  390. data/spec/opal/core/array/union_spec.rb +0 -38
  391. data/spec/opal/core/array/uniq_spec.rb +0 -49
  392. data/spec/opal/core/date_spec.rb +0 -177
  393. data/spec/opal/core/enumerable/all_break_spec.rb +0 -5
  394. data/spec/opal/core/enumerable/any_break_spec.rb +0 -5
  395. data/spec/opal/core/enumerable/collect_break_spec.rb +0 -13
  396. data/spec/opal/core/enumerable/count_break_spec.rb +0 -5
  397. data/spec/opal/core/enumerable/detect_break_spec.rb +0 -5
  398. data/spec/opal/core/enumerable/drop_while_break_spec.rb +0 -5
  399. data/spec/opal/core/enumerable/each_slice_break.rb +0 -6
  400. data/spec/opal/core/enumerable/each_with_index_break_spec.rb +0 -5
  401. data/spec/opal/core/enumerable/each_with_object_break_spec.rb +0 -5
  402. data/spec/opal/core/enumerable/find_all_break_spec.rb +0 -5
  403. data/spec/opal/core/enumerable/find_index_break_spec.rb +0 -5
  404. data/spec/opal/core/enumerable/grep_break_spec.rb +0 -5
  405. data/spec/opal/core/enumerable/max_break_spec.rb +0 -5
  406. data/spec/opal/core/enumerable/max_by_break_spec.rb +0 -5
  407. data/spec/opal/core/enumerable/min_break_spec.rb +0 -5
  408. data/spec/opal/core/enumerable/min_by_break_spec.rb +0 -5
  409. data/spec/opal/core/enumerable/none_break_spec.rb +0 -5
  410. data/spec/opal/core/enumerable/one_break_spec.rb +0 -5
  411. data/spec/opal/core/enumerable/reduce_break_spec.rb +0 -5
  412. data/spec/opal/core/enumerable/take_while_break_spec.rb +0 -5
  413. data/spec/opal/core/enumerator/with_index_spec.rb +0 -6
  414. data/spec/opal/core/exception_spec.rb +0 -20
  415. data/spec/opal/core/fixtures/class.rb +0 -124
  416. data/spec/opal/core/fixtures/class_variables.rb +0 -0
  417. data/spec/opal/core/fixtures/constants.rb +0 -33
  418. data/spec/opal/core/fixtures/require_tree_files/file 1.rb +0 -1
  419. data/spec/opal/core/fixtures/require_tree_files/file 2.rb +0 -1
  420. data/spec/opal/core/fixtures/require_tree_files/file 3.rb +0 -1
  421. data/spec/opal/core/fixtures/require_tree_files/file 4.rb +0 -1
  422. data/spec/opal/core/fixtures/require_tree_files/file 5.rb +0 -1
  423. data/spec/opal/core/fixtures/require_tree_files/nested/nested 1.rb +0 -1
  424. data/spec/opal/core/fixtures/require_tree_files/nested/nested 2.rb +0 -1
  425. data/spec/opal/core/fixtures/require_tree_files/other/other 1.rb +0 -1
  426. data/spec/opal/core/fixtures/require_tree_with_dot/file 1.rb +0 -1
  427. data/spec/opal/core/fixtures/require_tree_with_dot/file 2.rb +0 -1
  428. data/spec/opal/core/fixtures/require_tree_with_dot/file 3.rb +0 -1
  429. data/spec/opal/core/fixtures/require_tree_with_dot/index.rb +0 -3
  430. data/spec/opal/core/hash/has_value_spec.rb +0 -13
  431. data/spec/opal/core/hash/internals_spec.rb +0 -332
  432. data/spec/opal/core/helpers_spec.rb +0 -14
  433. data/spec/opal/core/kernel/Array_spec.rb +0 -10
  434. data/spec/opal/core/kernel/at_exit_spec.rb +0 -70
  435. data/spec/opal/core/kernel/block_given_spec.rb +0 -30
  436. data/spec/opal/core/kernel/class_spec.rb +0 -6
  437. data/spec/opal/core/kernel/define_singleton_method_spec.rb +0 -21
  438. data/spec/opal/core/kernel/equal_value_spec.rb +0 -12
  439. data/spec/opal/core/kernel/extend_spec.rb +0 -21
  440. data/spec/opal/core/kernel/format_spec.rb +0 -122
  441. data/spec/opal/core/kernel/freeze_spec.rb +0 -15
  442. data/spec/opal/core/kernel/instance_eval_spec.rb +0 -28
  443. data/spec/opal/core/kernel/instance_variable_defined_spec.rb +0 -15
  444. data/spec/opal/core/kernel/instance_variable_get_spec.rb +0 -14
  445. data/spec/opal/core/kernel/instance_variable_set_spec.rb +0 -10
  446. data/spec/opal/core/kernel/instance_variables_spec.rb +0 -110
  447. data/spec/opal/core/kernel/loop_spec.rb +0 -23
  448. data/spec/opal/core/kernel/match_spec.rb +0 -5
  449. data/spec/opal/core/kernel/method_spec.rb +0 -31
  450. data/spec/opal/core/kernel/methods_spec.rb +0 -25
  451. data/spec/opal/core/kernel/nil_spec.rb +0 -7
  452. data/spec/opal/core/kernel/p_spec.rb +0 -15
  453. data/spec/opal/core/kernel/printf_spec.rb +0 -11
  454. data/spec/opal/core/kernel/proc_spec.rb +0 -13
  455. data/spec/opal/core/kernel/raise_spec.rb +0 -13
  456. data/spec/opal/core/kernel/rand_spec.rb +0 -23
  457. data/spec/opal/core/kernel/require_tree_spec.rb +0 -18
  458. data/spec/opal/core/kernel/respond_to_spec.rb +0 -41
  459. data/spec/opal/core/kernel/send_spec.rb +0 -56
  460. data/spec/opal/core/kernel/sprintf_spec.rb +0 -5
  461. data/spec/opal/core/language/arguments/mlhs_arg_spec.rb +0 -19
  462. data/spec/opal/core/language/block_spec.rb +0 -538
  463. data/spec/opal/core/language/class_spec.rb +0 -55
  464. data/spec/opal/core/language/equal_spec.rb +0 -8
  465. data/spec/opal/core/language/fixtures/array.rb +0 -11
  466. data/spec/opal/core/language/fixtures/block.rb +0 -57
  467. data/spec/opal/core/language/fixtures/break.rb +0 -240
  468. data/spec/opal/core/language/fixtures/ensure.rb +0 -72
  469. data/spec/opal/core/language/fixtures/literal_lambda.rb +0 -7
  470. data/spec/opal/core/language/fixtures/metaclass.rb +0 -33
  471. data/spec/opal/core/language/fixtures/module.rb +0 -24
  472. data/spec/opal/core/language/fixtures/next.rb +0 -128
  473. data/spec/opal/core/language/fixtures/return.rb +0 -118
  474. data/spec/opal/core/language/fixtures/send.rb +0 -111
  475. data/spec/opal/core/language/fixtures/send_1.9.rb +0 -22
  476. data/spec/opal/core/language/fixtures/super.rb +0 -308
  477. data/spec/opal/core/language/fixtures/variables.rb +0 -58
  478. data/spec/opal/core/language/fixtures/yield.rb +0 -28
  479. data/spec/opal/core/language/heredoc_spec.rb +0 -42
  480. data/spec/opal/core/language/keyword_arguments_spec.rb +0 -11
  481. data/spec/opal/core/language/predefined_spec.rb +0 -138
  482. data/spec/opal/core/language/proc_spec.rb +0 -263
  483. data/spec/opal/core/language/regexp_spec.rb +0 -20
  484. data/spec/opal/core/language/rescue_spec.rb +0 -18
  485. data/spec/opal/core/language/send_spec.rb +0 -230
  486. data/spec/opal/core/language/string_spec.rb +0 -44
  487. data/spec/opal/core/language/ternary_operator_spec.rb +0 -20
  488. data/spec/opal/core/language/variables_spec.rb +0 -1366
  489. data/spec/opal/core/language/versions/array_1.9.rb +0 -39
  490. data/spec/opal/core/language/versions/block_1.9.rb +0 -0
  491. data/spec/opal/core/language/versions/break_1.9.rb +0 -0
  492. data/spec/opal/core/language/versions/case_1.9.rb +0 -20
  493. data/spec/opal/core/language/versions/def_2_0_spec.rb +0 -62
  494. data/spec/opal/core/language/versions/hash_1_9_spec.rb +0 -23
  495. data/spec/opal/core/language/versions/literal_lambda_1.9.rb +0 -143
  496. data/spec/opal/core/language/versions/not_1.9.rb +0 -22
  497. data/spec/opal/core/language/versions/send_1.9.rb +0 -241
  498. data/spec/opal/core/language/versions/symbol_1.9.rb +0 -15
  499. data/spec/opal/core/language/versions/variables_1.9.rb +0 -8
  500. data/spec/opal/core/language_spec.rb +0 -45
  501. data/spec/opal/core/marshal/dump_spec.rb +0 -53
  502. data/spec/opal/core/marshal/load_spec.rb +0 -7
  503. data/spec/opal/core/method/to_proc_spec.rb +0 -28
  504. data/spec/opal/core/module/alias_method_spec.rb +0 -28
  505. data/spec/opal/core/module/ancestors_spec.rb +0 -11
  506. data/spec/opal/core/module/append_features_spec.rb +0 -14
  507. data/spec/opal/core/module/attr_accessor_spec.rb +0 -26
  508. data/spec/opal/core/module/const_defined_spec.rb +0 -84
  509. data/spec/opal/core/module/const_get_spec.rb +0 -85
  510. data/spec/opal/core/module/const_missing_spec.rb +0 -17
  511. data/spec/opal/core/module/const_set_spec.rb +0 -64
  512. data/spec/opal/core/module/constants_spec.rb +0 -49
  513. data/spec/opal/core/module/fixtures/classes.rb +0 -444
  514. data/spec/opal/core/module/method_defined_spec.rb +0 -48
  515. data/spec/opal/core/module/method_lookup_spec.rb +0 -13
  516. data/spec/opal/core/module/module_function_spec.rb +0 -25
  517. data/spec/opal/core/module/name_spec.rb +0 -41
  518. data/spec/opal/core/module/public_method_defined_spec.rb +0 -18
  519. data/spec/opal/core/module/remove_const_spec.rb +0 -22
  520. data/spec/opal/core/module/undef_method_spec.rb +0 -66
  521. data/spec/opal/core/numeric/bit_and_spec.rb +0 -7
  522. data/spec/opal/core/numeric/bit_or_spec.rb +0 -8
  523. data/spec/opal/core/numeric/bit_xor_spec.rb +0 -6
  524. data/spec/opal/core/numeric/ceil_spec.rb +0 -8
  525. data/spec/opal/core/numeric/chr_spec.rb +0 -8
  526. data/spec/opal/core/numeric/comparison_spec.rb +0 -24
  527. data/spec/opal/core/numeric/complement_spec.rb +0 -8
  528. data/spec/opal/core/numeric/divide_spec.rb +0 -10
  529. data/spec/opal/core/numeric/eql_spec.rb +0 -9
  530. data/spec/opal/core/numeric/exponent_spec.rb +0 -33
  531. data/spec/opal/core/numeric/floor_spec.rb +0 -8
  532. data/spec/opal/core/numeric/gt_spec.rb +0 -11
  533. data/spec/opal/core/numeric/gte_spec.rb +0 -12
  534. data/spec/opal/core/numeric/integer_spec.rb +0 -9
  535. data/spec/opal/core/numeric/left_shift_spec.rb +0 -21
  536. data/spec/opal/core/numeric/lt_spec.rb +0 -11
  537. data/spec/opal/core/numeric/lte_spec.rb +0 -12
  538. data/spec/opal/core/numeric/minus_spec.rb +0 -8
  539. data/spec/opal/core/numeric/modulo_spec.rb +0 -19
  540. data/spec/opal/core/numeric/multiply_spec.rb +0 -9
  541. data/spec/opal/core/numeric/next_spec.rb +0 -9
  542. data/spec/opal/core/numeric/ord_spec.rb +0 -9
  543. data/spec/opal/core/numeric/plus_spec.rb +0 -8
  544. data/spec/opal/core/numeric/pred_spec.rb +0 -7
  545. data/spec/opal/core/numeric/right_shift_spec.rb +0 -25
  546. data/spec/opal/core/numeric/step_spec.rb +0 -11
  547. data/spec/opal/core/numeric/succ_spec.rb +0 -9
  548. data/spec/opal/core/numeric/times_spec.rb +0 -36
  549. data/spec/opal/core/numeric/to_f_spec.rb +0 -7
  550. data/spec/opal/core/numeric/to_i_spec.rb +0 -7
  551. data/spec/opal/core/numeric/to_json_spec.rb +0 -8
  552. data/spec/opal/core/numeric/to_s_spec.rb +0 -26
  553. data/spec/opal/core/numeric/uminus_spec.rb +0 -9
  554. data/spec/opal/core/numeric/upto_spec.rb +0 -19
  555. data/spec/opal/core/numeric/zero_spec.rb +0 -7
  556. data/spec/opal/core/object_id_spec.rb +0 -56
  557. data/spec/opal/core/proc/call_spec.rb +0 -21
  558. data/spec/opal/core/proc/element_reference_spec.rb +0 -21
  559. data/spec/opal/core/proc/proc_tricks_spec.rb +0 -7
  560. data/spec/opal/core/runtime/begin_spec.rb +0 -39
  561. data/spec/opal/core/runtime/block_send_spec.rb +0 -28
  562. data/spec/opal/core/runtime/block_spec.rb +0 -23
  563. data/spec/opal/core/runtime/bridged_classes_spec.rb +0 -123
  564. data/spec/opal/core/runtime/constants_spec.rb +0 -13
  565. data/spec/opal/core/runtime/donate_spec.rb +0 -53
  566. data/spec/opal/core/runtime/eval_spec.rb +0 -5
  567. data/spec/opal/core/runtime/main_methods_spec.rb +0 -27
  568. data/spec/opal/core/runtime/method_missing_spec.rb +0 -68
  569. data/spec/opal/core/runtime/method_spec.rb +0 -31
  570. data/spec/opal/core/runtime/operator_call_spec.rb +0 -13
  571. data/spec/opal/core/runtime/paren_spec.rb +0 -14
  572. data/spec/opal/core/runtime/rescue_spec.rb +0 -71
  573. data/spec/opal/core/runtime/return_spec.rb +0 -38
  574. data/spec/opal/core/runtime/send_spec.rb +0 -34
  575. data/spec/opal/core/runtime/singleton_class_spec.rb +0 -13
  576. data/spec/opal/core/runtime/super_spec.rb +0 -223
  577. data/spec/opal/core/runtime/truthy_spec.rb +0 -63
  578. data/spec/opal/core/runtime/variables_spec.rb +0 -20
  579. data/spec/opal/core/runtime_spec.rb +0 -58
  580. data/spec/opal/core/source_map_spec.rb +0 -49
  581. data/spec/opal/core/string_spec.rb +0 -32
  582. data/spec/opal/javascript_api_spec.rb +0 -16
  583. data/spec/opal/stdlib/erb/erb_spec.rb +0 -30
  584. data/spec/opal/stdlib/erb/inline_block.opalerb +0 -3
  585. data/spec/opal/stdlib/erb/quoted.opalerb +0 -1
  586. data/spec/opal/stdlib/erb/simple.opalerb +0 -1
  587. data/spec/opal/stdlib/js_spec.rb +0 -66
  588. data/spec/opal/stdlib/json/ext_spec.rb +0 -48
  589. data/spec/opal/stdlib/json/parse_spec.rb +0 -33
  590. data/spec/opal/stdlib/native/alias_native_spec.rb +0 -27
  591. data/spec/opal/stdlib/native/array_spec.rb +0 -11
  592. data/spec/opal/stdlib/native/each_spec.rb +0 -13
  593. data/spec/opal/stdlib/native/element_reference_spec.rb +0 -16
  594. data/spec/opal/stdlib/native/exposure_spec.rb +0 -33
  595. data/spec/opal/stdlib/native/ext_spec.rb +0 -19
  596. data/spec/opal/stdlib/native/hash_spec.rb +0 -51
  597. data/spec/opal/stdlib/native/initialize_spec.rb +0 -17
  598. data/spec/opal/stdlib/native/method_missing_spec.rb +0 -51
  599. data/spec/opal/stdlib/native/native_alias_spec.rb +0 -19
  600. data/spec/opal/stdlib/native/native_class_spec.rb +0 -18
  601. data/spec/opal/stdlib/native/native_module_spec.rb +0 -13
  602. data/spec/opal/stdlib/native/native_reader_spec.rb +0 -22
  603. data/spec/opal/stdlib/native/native_writer_spec.rb +0 -30
  604. data/spec/opal/stdlib/native/new_spec.rb +0 -92
  605. data/spec/opal/stdlib/native/struct_spec.rb +0 -12
  606. data/spec/opal/stdlib/promise/always_spec.rb +0 -49
  607. data/spec/opal/stdlib/promise/error_spec.rb +0 -15
  608. data/spec/opal/stdlib/promise/rescue_spec.rb +0 -53
  609. data/spec/opal/stdlib/promise/then_spec.rb +0 -79
  610. data/spec/opal/stdlib/promise/trace_spec.rb +0 -51
  611. data/spec/opal/stdlib/promise/value_spec.rb +0 -15
  612. data/spec/opal/stdlib/promise/when_spec.rb +0 -34
  613. data/spec/opal/stdlib/source_map_spec.rb +0 -8
  614. data/spec/opal/stdlib/strscan/scan_spec.rb +0 -11
  615. data/spec/opal/stdlib/template/paths_spec.rb +0 -10
  616. data/spec/opal/stdlib/thread/mutex_spec.rb +0 -40
  617. data/spec/opal/stdlib/thread/thread_queue_spec.rb +0 -32
  618. data/spec/opal/stdlib/thread/thread_spec.rb +0 -60
  619. data/spec/ruby_specs +0 -121
  620. data/spec/spec_helper.rb +0 -26
  621. data/spec/support/match_helpers.rb +0 -57
  622. data/spec/support/mspec_rspec_adapter.rb +0 -33
  623. data/spec/support/parser_helpers.rb +0 -37
  624. data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +0 -277
  625. data/stdlib/nodejs/node_modules/js-yaml/README.md +0 -288
  626. data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +0 -140
  627. data/stdlib/nodejs/node_modules/js-yaml/bower.json +0 -23
  628. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +0 -3
  629. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +0 -102
  630. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +0 -18
  631. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +0 -31
  632. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +0 -22
  633. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +0 -18
  634. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +0 -197
  635. data/stdlib/nodejs/node_modules/js-yaml/index.js +0 -7
  636. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +0 -62
  637. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +0 -554
  638. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +0 -25
  639. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +0 -1581
  640. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +0 -78
  641. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +0 -18
  642. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +0 -25
  643. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +0 -28
  644. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +0 -17
  645. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +0 -25
  646. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +0 -103
  647. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +0 -133
  648. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +0 -37
  649. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +0 -110
  650. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +0 -183
  651. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +0 -85
  652. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +0 -84
  653. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +0 -27
  654. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +0 -8
  655. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +0 -12
  656. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +0 -36
  657. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +0 -56
  658. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +0 -61
  659. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +0 -8
  660. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +0 -33
  661. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +0 -8
  662. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +0 -98
  663. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +0 -61
  664. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +0 -39
  665. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +0 -115
  666. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +0 -239
  667. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +0 -36
  668. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +0 -22
  669. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +0 -59
  670. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +0 -13
  671. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +0 -33
  672. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +0 -28
  673. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +0 -23
  674. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +0 -49
  675. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +0 -35
  676. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +0 -270
  677. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +0 -1
  678. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +0 -47
  679. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +0 -55
  680. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +0 -40
  681. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +0 -48
  682. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +0 -43
  683. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +0 -27
  684. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +0 -26
  685. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +0 -50
  686. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +0 -148
  687. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +0 -50
  688. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +0 -146
  689. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +0 -481
  690. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +0 -14
  691. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +0 -50
  692. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +0 -54
  693. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +0 -75
  694. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +0 -1168
  695. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +0 -18
  696. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +0 -88
  697. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +0 -798
  698. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +0 -77
  699. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +0 -23
  700. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +0 -22
  701. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +0 -69
  702. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +0 -6
  703. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +0 -1415
  704. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +0 -2
  705. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +0 -8
  706. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +0 -825
  707. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +0 -33
  708. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +0 -11
  709. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +0 -10
  710. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +0 -26
  711. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +0 -673
  712. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
  713. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +0 -107
  714. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +0 -62
  715. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +0 -73
  716. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +0 -117
  717. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +0 -177
  718. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +0 -3908
  719. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +0 -69
  720. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +0 -239
  721. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +0 -422
  722. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +0 -66
  723. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +0 -387
  724. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +0 -20238
  725. data/stdlib/nodejs/node_modules/js-yaml/package.json +0 -83
  726. data/stdlib/phantomjs.rb +0 -17
  727. data/tasks/testing/sprockets-phantomjs.js +0 -54
  728. data/test/nodejs/test_dir.rb +0 -17
  729. data/test/nodejs/test_file.rb +0 -30
  730. data/test/opal/test_keyword.rb +0 -590
  731. data/test/opal/unsupported_and_bugs.rb +0 -30
  732. /data/{CODE_OF_CONDUCT.md → CONDUCT.md} +0 -0
  733. /data/{bin → exe}/opal-build +0 -0
  734. /data/{bin → exe}/opal-mspec +0 -0
@@ -22,34 +22,40 @@ class Array < `Array`
22
22
  end
23
23
 
24
24
  def initialize(size = nil, obj = nil, &block)
25
- if `arguments.length > 2`
26
- raise ArgumentError, "wrong number of arguments (#{`arguments.length`} for 0..2)"
27
- end
28
-
29
25
  %x{
26
+ if (obj !== nil && block !== nil) {
27
+ #{warn('warning: block supersedes default value argument')}
28
+ }
29
+
30
+ if (size > #{Integer::MAX}) {
31
+ #{raise ArgumentError, "array size too big"}
32
+ }
33
+
34
+ if (arguments.length > 2) {
35
+ #{raise ArgumentError, "wrong number of arguments (#{`arguments.length`} for 0..2)"}
36
+ }
37
+
30
38
  if (arguments.length === 0) {
31
39
  self.splice(0, self.length);
32
40
  return self;
33
41
  }
34
- }
35
42
 
36
- if `arguments.length === 1`
37
- if Array === size
38
- replace(size.to_a)
39
- return self
40
- elsif size.respond_to? :to_ary
41
- replace(size.to_ary)
42
- return self
43
- end
44
- end
43
+ if (arguments.length === 1) {
44
+ if (size.$$is_array) {
45
+ #{replace(size.to_a)}
46
+ return self;
47
+ } else if (#{size.respond_to? :to_ary}) {
48
+ #{replace(size.to_ary)}
49
+ return self;
50
+ }
51
+ }
45
52
 
46
- size = Opal.coerce_to size, Integer, :to_int
53
+ size = #{Opal.coerce_to size, Integer, :to_int}
47
54
 
48
- if `size < 0`
49
- raise ArgumentError, "negative array size"
50
- end
55
+ if (size < 0) {
56
+ #{raise ArgumentError, "negative array size"}
57
+ }
51
58
 
52
- %x{
53
59
  self.splice(0, self.length);
54
60
  var i, value;
55
61
 
@@ -159,7 +165,7 @@ class Array < `Array`
159
165
  end
160
166
 
161
167
  return [] if `self.length === 0`
162
- return clone.to_a if `other.length === 0`
168
+ return `self.slice()` if `other.length === 0`
163
169
 
164
170
  %x{
165
171
  var result = [], hash = #{{}}, i, length, item;
@@ -268,72 +274,85 @@ class Array < `Array`
268
274
  }
269
275
  end
270
276
 
271
- def [](index, length = undefined)
272
- %x{
277
+ %x{
278
+ function $array_slice_range(self, index) {
273
279
  var size = self.length,
274
280
  exclude, from, to, result;
275
281
 
276
- if (index.$$is_range) {
277
- exclude = index.exclude;
278
- from = #{Opal.coerce_to `index.begin`, Integer, :to_int};
279
- to = #{Opal.coerce_to `index.end`, Integer, :to_int};
280
-
281
- if (from < 0) {
282
- from += size;
282
+ exclude = index.excl;
283
+ from = Opal.Opal.$coerce_to(index.begin, Opal.Integer, 'to_int');
284
+ to = Opal.Opal.$coerce_to(index.end, Opal.Integer, 'to_int');
283
285
 
284
- if (from < 0) {
285
- return nil;
286
- }
287
- }
286
+ if (from < 0) {
287
+ from += size;
288
288
 
289
- if (from > size) {
289
+ if (from < 0) {
290
290
  return nil;
291
291
  }
292
+ }
292
293
 
293
- if (to < 0) {
294
- to += size;
294
+ if (from > size) {
295
+ return nil;
296
+ }
295
297
 
296
- if (to < 0) {
297
- return [];
298
- }
299
- }
298
+ if (to < 0) {
299
+ to += size;
300
300
 
301
- if (!exclude) {
302
- to += 1;
301
+ if (to < 0) {
302
+ return [];
303
303
  }
304
+ }
304
305
 
305
- result = self.slice(from, to)
306
+ if (!exclude) {
307
+ to += 1;
306
308
  }
307
- else {
308
- index = #{Opal.coerce_to(index, Integer, :to_int)};
309
309
 
310
- if (index < 0) {
311
- index += size;
310
+ result = self.slice(from, to);
311
+ return toArraySubclass(result, self.$class());
312
+ }
312
313
 
313
- if (index < 0) {
314
- return nil;
315
- }
316
- }
314
+ function $array_slice_index_length(self, index, length) {
315
+ var size = self.length,
316
+ exclude, from, to, result;
317
317
 
318
- if (length === undefined) {
319
- if (index >= size || index < 0) {
320
- return nil;
321
- }
318
+ index = Opal.Opal.$coerce_to(index, Opal.Integer, 'to_int');
322
319
 
323
- return self[index];
320
+ if (index < 0) {
321
+ index += size;
322
+
323
+ if (index < 0) {
324
+ return nil;
324
325
  }
325
- else {
326
- length = #{Opal.coerce_to length, Integer, :to_int};
326
+ }
327
327
 
328
- if (length < 0 || index > size || index < 0) {
329
- return nil;
330
- }
328
+ if (length === undefined) {
329
+ if (index >= size || index < 0) {
330
+ return nil;
331
+ }
332
+
333
+ return self[index];
334
+ }
335
+ else {
336
+ length = Opal.Opal.$coerce_to(length, Opal.Integer, 'to_int');
331
337
 
332
- result = self.slice(index, index + length);
338
+ if (length < 0 || index > size || index < 0) {
339
+ return nil;
333
340
  }
341
+
342
+ result = self.slice(index, index + length);
334
343
  }
344
+ return toArraySubclass(result, self.$class());
345
+ }
346
+ }
335
347
 
336
- return toArraySubclass(result, #{self.class})
348
+ def [](index, length = undefined)
349
+ %x{
350
+ if (index.$$is_range) {
351
+ return $array_slice_range(self, index);
352
+ }
353
+ else {
354
+ return $array_slice_index_length(self, index, length);
355
+ }
337
356
  }
338
357
  end
339
358
 
@@ -352,7 +371,7 @@ class Array < `Array`
352
371
  end
353
372
 
354
373
  %x{
355
- var exclude = index.exclude,
374
+ var exclude = index.excl,
356
375
  from = #{Opal.coerce_to `index.begin`, Integer, :to_int},
357
376
  to = #{Opal.coerce_to `index.end`, Integer, :to_int};
358
377
 
@@ -440,6 +459,11 @@ class Array < `Array`
440
459
  end
441
460
  end
442
461
 
462
+ def any?
463
+ `if (self.length === 0) return false;`
464
+ super
465
+ end
466
+
443
467
  def assoc(object)
444
468
  %x{
445
469
  for (var i = 0, length = self.length, item; i < length; i++) {
@@ -468,8 +492,8 @@ class Array < `Array`
468
492
  }
469
493
  end
470
494
 
471
- def bsearch(&block)
472
- return enum_for :bsearch unless block_given?
495
+ def bsearch_index(&block)
496
+ return enum_for :bsearch_index unless block_given?
473
497
 
474
498
  %x{
475
499
  var min = 0,
@@ -483,17 +507,17 @@ class Array < `Array`
483
507
  while (min < max) {
484
508
  mid = min + Math.floor((max - min) / 2);
485
509
  val = self[mid];
486
- ret = block(val);
510
+ ret = Opal.yield1(block, val);
487
511
 
488
512
  if (ret === true) {
489
- satisfied = val;
513
+ satisfied = mid;
490
514
  smaller = true;
491
515
  }
492
516
  else if (ret === false || ret === nil) {
493
517
  smaller = false;
494
518
  }
495
519
  else if (ret.$$is_number) {
496
- if (ret === 0) { return val; }
520
+ if (ret === 0) { return mid; }
497
521
  smaller = (ret < 0);
498
522
  }
499
523
  else {
@@ -507,6 +531,20 @@ class Array < `Array`
507
531
  }
508
532
  end
509
533
 
534
+ def bsearch(&block)
535
+ return enum_for :bsearch unless block_given?
536
+
537
+ index = bsearch_index(&block)
538
+
539
+ %x{
540
+ if (index != null && index.$$is_number) {
541
+ return self[index];
542
+ } else {
543
+ return index;
544
+ }
545
+ }
546
+ end
547
+
510
548
  def cycle(n = nil, &block)
511
549
  return enum_for(:cycle, n) {
512
550
  if n == nil
@@ -715,18 +753,28 @@ class Array < `Array`
715
753
  }
716
754
  end
717
755
 
718
- def concat(other)
719
- if Array === other
720
- other = other.to_a
721
- else
722
- other = Opal.coerce_to(other, Array, :to_ary).to_a
756
+ def concat(*others)
757
+ 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
763
+
764
+ if other.equal?(self)
765
+ other = other.dup
766
+ end
767
+
768
+ other
723
769
  end
724
770
 
725
- %x{
726
- for (var i = 0, length = other.length; i < length; i++) {
727
- self.push(other[i]);
771
+ others.each do |other|
772
+ %x{
773
+ for (var i = 0, length = other.length; i < length; i++) {
774
+ self.push(other[i]);
775
+ }
728
776
  }
729
- }
777
+ end
730
778
 
731
779
  self
732
780
  end
@@ -793,6 +841,22 @@ class Array < `Array`
793
841
  self
794
842
  end
795
843
 
844
+ def dig(idx, *idxs)
845
+ item = self[idx]
846
+
847
+ %x{
848
+ if (item === nil || idxs.length === 0) {
849
+ return item;
850
+ }
851
+ }
852
+
853
+ unless item.respond_to?(:dig)
854
+ raise TypeError, "#{item.class} does not have #dig method"
855
+ end
856
+
857
+ item.dig(*idxs)
858
+ end
859
+
796
860
  def drop(number)
797
861
  %x{
798
862
  if (number < 0) {
@@ -903,6 +967,10 @@ class Array < `Array`
903
967
  return self[index];
904
968
  }
905
969
 
970
+ if (block !== nil && defaults != null) {
971
+ #{warn('warning: block supersedes default value argument')}
972
+ }
973
+
906
974
  if (block !== nil) {
907
975
  return block(original);
908
976
  }
@@ -945,17 +1013,17 @@ class Array < `Array`
945
1013
  raise TypeError, "length invalid with range" if two
946
1014
 
947
1015
  left = Opal.coerce_to one.begin, Integer, :to_int
948
- `left += #@length` if `left < 0`
1016
+ `left += this.length` if `left < 0`
949
1017
  raise RangeError, "#{one.inspect} out of range" if `left < 0`
950
1018
 
951
1019
  right = Opal.coerce_to one.end, Integer, :to_int
952
- `right += #@length` if `right < 0`
1020
+ `right += this.length` if `right < 0`
953
1021
  `right += 1` unless one.exclude_end?
954
1022
 
955
1023
  return self if `right <= left`
956
1024
  elsif one
957
1025
  left = Opal.coerce_to one, Integer, :to_int
958
- `left += #@length` if `left < 0`
1026
+ `left += this.length` if `left < 0`
959
1027
  left = 0 if `left < 0`
960
1028
 
961
1029
  if two
@@ -965,35 +1033,35 @@ class Array < `Array`
965
1033
 
966
1034
  `right += left`
967
1035
  else
968
- right = @length
1036
+ right = `this.length`
969
1037
  end
970
1038
  else
971
1039
  left = 0
972
- right = @length
1040
+ right = `this.length`
973
1041
  end
974
1042
 
975
- if `left > #@length`
1043
+ if `left > this.length`
976
1044
  %x{
977
- for (i = #@length; i < right; i++) {
1045
+ for (i = this.length; i < right; i++) {
978
1046
  self[i] = nil;
979
1047
  }
980
1048
  }
981
1049
  end
982
1050
 
983
- if `right > #@length`
984
- @length = right
1051
+ if `right > this.length`
1052
+ `this.length = right`
985
1053
  end
986
1054
 
987
1055
  if block
988
1056
  %x{
989
- for (length = #@length; left < right; left++) {
1057
+ for (length = this.length; left < right; left++) {
990
1058
  value = block(left);
991
1059
  self[left] = value;
992
1060
  }
993
1061
  }
994
1062
  else
995
1063
  %x{
996
- for (length = #@length; left < right; left++) {
1064
+ for (length = this.length; left < right; left++) {
997
1065
  self[left] = #{obj};
998
1066
  }
999
1067
  }
@@ -1096,26 +1164,25 @@ class Array < `Array`
1096
1164
 
1097
1165
  def hash
1098
1166
  %x{
1099
- var top = (Opal.hash_ids == undefined),
1167
+ var top = (Opal.hash_ids === undefined),
1100
1168
  result = ['A'],
1101
1169
  hash_id = self.$object_id(),
1102
1170
  item, i, key;
1103
1171
 
1104
1172
  try {
1105
1173
  if (top) {
1106
- Opal.hash_ids = {};
1174
+ Opal.hash_ids = Object.create(null);
1107
1175
  }
1108
1176
 
1109
- if (Opal.hash_ids.hasOwnProperty(hash_id)) {
1177
+ // return early for recursive structures
1178
+ if (Opal.hash_ids[hash_id]) {
1110
1179
  return 'self';
1111
1180
  }
1112
1181
 
1113
1182
  for (key in Opal.hash_ids) {
1114
- if (Opal.hash_ids.hasOwnProperty(key)) {
1115
- item = Opal.hash_ids[key];
1116
- if (#{eql?(`item`)}) {
1117
- return 'self';
1118
- }
1183
+ item = Opal.hash_ids[key];
1184
+ if (#{eql?(`item`)}) {
1185
+ return 'self';
1119
1186
  }
1120
1187
  }
1121
1188
 
@@ -1129,7 +1196,7 @@ class Array < `Array`
1129
1196
  return result.join(',');
1130
1197
  } finally {
1131
1198
  if (top) {
1132
- delete Opal.hash_ids;
1199
+ Opal.hash_ids = undefined;
1133
1200
  }
1134
1201
  }
1135
1202
  }
@@ -1151,6 +1218,10 @@ class Array < `Array`
1151
1218
  %x{
1152
1219
  var i, length, value;
1153
1220
 
1221
+ if (object != null && block !== nil) {
1222
+ #{warn('warning: given block not used')}
1223
+ }
1224
+
1154
1225
  if (object != null) {
1155
1226
  for (i = 0, length = self.length; i < length; i++) {
1156
1227
  if (#{`self[i]` == object}) {
@@ -1268,7 +1339,7 @@ class Array < `Array`
1268
1339
  }
1269
1340
  }
1270
1341
 
1271
- #{raise NoMethodError.new("#{Opal.inspect(`item`)} doesn't respond to #to_str, #to_ary or #to_s", 'to_str')};
1342
+ #{raise NoMethodError.new("#{`Opal.inspect(item)`} doesn't respond to #to_str, #to_ary or #to_s", 'to_str')};
1272
1343
  }
1273
1344
 
1274
1345
  if (sep === nil) {
@@ -1342,7 +1413,9 @@ class Array < `Array`
1342
1413
 
1343
1414
  def permutation(num = undefined, &block)
1344
1415
  unless block_given?
1345
- return enum_for(:permutation, num){ `descending_factorial(self.length, num === undefined ? self.length : num)` }
1416
+ return enum_for(:permutation, num) {
1417
+ `descending_factorial(self.length, num === undefined ? self.length : num)`
1418
+ }
1346
1419
  end
1347
1420
 
1348
1421
  %x{
@@ -1370,8 +1443,8 @@ class Array < `Array`
1370
1443
  }
1371
1444
  else {
1372
1445
  // this is the general case
1373
- #{ perm = Array.new(num) }
1374
- #{ used = Array.new(`self.length`, false) }
1446
+ #{ perm = Array.new(num) };
1447
+ #{ used = Array.new(`self.length`, false) };
1375
1448
 
1376
1449
  permute = function(num, perm, index, used, blk) {
1377
1450
  self = this;
@@ -1583,7 +1656,7 @@ class Array < `Array`
1583
1656
  def reverse_each(&block)
1584
1657
  return enum_for(:reverse_each){self.size} unless block_given?
1585
1658
 
1586
- reverse.each &block
1659
+ reverse.each(&block)
1587
1660
  self
1588
1661
  end
1589
1662
 
@@ -1591,6 +1664,10 @@ class Array < `Array`
1591
1664
  %x{
1592
1665
  var i, value;
1593
1666
 
1667
+ if (object != null && block !== nil) {
1668
+ #{warn('warning: given block not used')}
1669
+ }
1670
+
1594
1671
  if (object != null) {
1595
1672
  for (i = self.length - 1; i >= 0; i--) {
1596
1673
  if (i >= self.length) {
@@ -1804,7 +1881,7 @@ class Array < `Array`
1804
1881
 
1805
1882
  %x{
1806
1883
  var original = self.length;
1807
- #{ keep_if &block };
1884
+ #{ keep_if(&block) };
1808
1885
  return self.length === original ? nil : self;
1809
1886
  }
1810
1887
  end
@@ -1861,7 +1938,7 @@ class Array < `Array`
1861
1938
  }
1862
1939
  }
1863
1940
  else {
1864
- j = Math.floor(Math.random() * i);
1941
+ j = #{rand(`i`)};
1865
1942
  }
1866
1943
 
1867
1944
  tmp = self[--i];
@@ -1895,13 +1972,13 @@ class Array < `Array`
1895
1972
  range_end += self.length;
1896
1973
  } else if (range_end >= self.length) {
1897
1974
  range_end = self.length - 1;
1898
- if (range.exclude) {
1975
+ if (range.excl) {
1899
1976
  range_end += 1;
1900
1977
  }
1901
1978
  }
1902
1979
 
1903
1980
  var range_length = range_end - range_start;
1904
- if (range.exclude) {
1981
+ if (range.excl) {
1905
1982
  range_end -= 1;
1906
1983
  } else {
1907
1984
  range_length += 1;
@@ -48,13 +48,13 @@ class BasicObject
48
48
 
49
49
  def instance_eval(*args, &block)
50
50
  if block.nil? && `!!Opal.compile`
51
- Kernel.raise ArgumentError, "wrong number of arguments (0 for 1..3)" unless (1..3).cover? args.size
51
+ ::Kernel.raise ::ArgumentError, "wrong number of arguments (0 for 1..3)" unless (1..3).cover? args.size
52
52
 
53
53
  string, file, _lineno = *args
54
54
  default_eval_options = { file: (file || '(eval)'), eval: true }
55
55
  compiling_options = __OPAL_COMPILER_CONFIG__.merge(default_eval_options)
56
- compiled = Opal.compile string, compiling_options
57
- block = Kernel.proc do
56
+ compiled = ::Opal.compile string, compiling_options
57
+ block = ::Kernel.proc do
58
58
  %x{
59
59
  return (function(self) {
60
60
  return eval(compiled);
@@ -62,7 +62,7 @@ class BasicObject
62
62
  }
63
63
  end
64
64
  elsif args.size > 0
65
- Kernel.raise ArgumentError, "wrong number of arguments (#{args.size} for 0)"
65
+ ::Kernel.raise ::ArgumentError, "wrong number of arguments (#{args.size} for 0)"
66
66
  end
67
67
 
68
68
  %x{
@@ -94,7 +94,7 @@ class BasicObject
94
94
  end
95
95
 
96
96
  def instance_exec(*args, &block)
97
- Kernel.raise ArgumentError, "no block given" unless block
97
+ ::Kernel.raise ::ArgumentError, "no block given" unless block
98
98
 
99
99
  %x{
100
100
  var block_self = block.$$s,
@@ -131,7 +131,7 @@ class BasicObject
131
131
  end
132
132
 
133
133
  def method_missing(symbol, *args, &block)
134
- Kernel.raise NoMethodError.new(`self.$inspect && !self.$inspect.$$stub` ?
134
+ ::Kernel.raise ::NoMethodError.new(`self.$inspect && !self.$inspect.$$stub` ?
135
135
  "undefined method `#{symbol}' for #{inspect}:#{`self.$$class`}" :
136
136
  "undefined method `#{symbol}' for #{`self.$$class`}", symbol)
137
137
  end
@@ -2,6 +2,14 @@ class Boolean < `Boolean`
2
2
  `def.$$is_boolean = true`
3
3
  `def.$$meta = #{self}`
4
4
 
5
+ class << self
6
+ def allocate
7
+ raise TypeError, "allocator undefined for #{self.name}"
8
+ end
9
+
10
+ undef :new
11
+ end
12
+
5
13
  def __id__
6
14
  `self.valueOf() ? 2 : 0`
7
15
  end
@@ -40,11 +48,11 @@ class Boolean < `Boolean`
40
48
  end
41
49
 
42
50
  def dup
43
- raise TypeError, "can't dup #{self.class}"
51
+ self
44
52
  end
45
53
 
46
- def clone
47
- raise TypeError, "can't clone #{self.class}"
54
+ def clone(freeze: true)
55
+ self
48
56
  end
49
57
  end
50
58
 
@@ -7,15 +7,12 @@ class Class
7
7
  throw Opal.TypeError.$new("superclass must be a Class");
8
8
  }
9
9
 
10
- var alloc = Opal.boot_class_alloc(null, function(){}, superclass)
10
+ var alloc = Opal.boot_class_alloc(null, function(){}, superclass);
11
11
  var klass = Opal.setup_class_object(null, alloc, superclass.$$name, superclass.constructor);
12
12
 
13
- klass.$$super = superclass;
13
+ klass.$$super = superclass;
14
14
  klass.$$parent = superclass;
15
15
 
16
- // inherit scope from parent
17
- Opal.create_scope(superclass.$$scope, klass);
18
-
19
16
  superclass.$inherited(klass);
20
17
  Opal.module_initialize(klass, block);
21
18
 
@@ -34,13 +31,19 @@ class Class
34
31
  def inherited(cls)
35
32
  end
36
33
 
37
- def new(*args, &block)
34
+ def initialize_dup(original)
35
+ initialize_copy(original)
38
36
  %x{
39
- var obj = #{allocate};
37
+ self.$$name = null;
38
+ self.$$full_name = null;
39
+ }
40
+ end
40
41
 
41
- obj.$initialize.$$p = block;
42
- obj.$initialize.apply(obj, args);
43
- return obj;
42
+ def new(*args, &block)
43
+ %x{
44
+ var object = #{allocate};
45
+ Opal.send(object, object.$initialize, args, block);
46
+ return object;
44
47
  }
45
48
  end
46
49
 
@@ -57,7 +60,7 @@ class Class
57
60
  }
58
61
  else if (singleton_of) {
59
62
  // a singleton class created from an object
60
- return #{"#<Class:#<#{`singleton_of.$$class`.name}:0x#{`singleton_of.$$id`.to_s(16)}>>"};
63
+ return #{"#<Class:#<#{`singleton_of.$$class`.name}:0x#{`Opal.id(singleton_of)`.to_s(16)}>>"};
61
64
  }
62
65
  return #{super()};
63
66
  }
@@ -66,4 +66,20 @@ module Comparable
66
66
  return false if self > max
67
67
  return true
68
68
  end
69
+
70
+ def clamp(min, max)
71
+ cmp = min <=> max
72
+
73
+ unless cmp
74
+ raise ArgumentError, "comparison of #{min.class} with #{max.class} failed"
75
+ end
76
+
77
+ if Comparable.normalize(cmp) > 0
78
+ raise ArgumentError, 'min argument must be smaller than max argument'
79
+ end
80
+
81
+ return min if Comparable.normalize(self <=> min) < 0
82
+ return max if Comparable.normalize(self <=> max) > 0
83
+ return self
84
+ end
69
85
  end