opal 0.11.4 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (379) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +42 -10
  3. data/.rubocop.yml +398 -0
  4. data/.rubocop_todo.yml +44 -0
  5. data/.travis.yml +28 -34
  6. data/CHANGELOG.md +363 -142
  7. data/CONTRIBUTING.md +3 -5
  8. data/Gemfile +17 -12
  9. data/Guardfile +0 -1
  10. data/HACKING.md +1 -35
  11. data/LICENSE +2 -2
  12. data/README.md +42 -13
  13. data/Rakefile +1 -4
  14. data/UNRELEASED.md +133 -0
  15. data/benchmark-ips/README.md +6 -0
  16. data/benchmark-ips/bm_block_vs_yield.rb +21 -0
  17. data/benchmark-ips/bm_js_symbols_vs_strings.rb +28 -0
  18. data/benchmark-ips/bm_while_true_vs_loop.rb +19 -0
  19. data/bin/console +14 -0
  20. data/bin/opal +0 -1
  21. data/bin/opal-benchmark-ips +8 -0
  22. data/bin/opal-mspec +9 -1
  23. data/bin/opal-repl +2 -1
  24. data/bin/rake +7 -0
  25. data/bin/setup +8 -0
  26. data/docs/compiled_ruby.md +89 -8
  27. data/docs/compiler.md +3 -20
  28. data/docs/jquery.md +44 -11
  29. data/docs/promises.md +1 -1
  30. data/docs/rails.md +16 -12
  31. data/docs/sinatra.md +15 -8
  32. data/docs/using_sprockets.md +16 -11
  33. data/examples/rack/config.ru +1 -0
  34. data/examples/sinatra/Gemfile +1 -0
  35. data/examples/sinatra/config.ru +2 -11
  36. data/exe/opal-repl +3 -11
  37. data/lib/opal.rb +1 -0
  38. data/lib/opal/ast/builder.rb +4 -1
  39. data/lib/opal/ast/node.rb +1 -0
  40. data/lib/opal/builder.rb +84 -63
  41. data/lib/opal/builder_processors.rb +41 -56
  42. data/lib/opal/cli.rb +33 -49
  43. data/lib/opal/cli_options.rb +27 -17
  44. data/lib/opal/cli_runners.rb +73 -16
  45. data/lib/opal/cli_runners/applescript.rb +4 -4
  46. data/lib/opal/cli_runners/chrome.rb +29 -17
  47. data/lib/opal/cli_runners/nashorn.rb +5 -4
  48. data/lib/opal/cli_runners/nodejs.rb +8 -6
  49. data/lib/opal/cli_runners/server.rb +12 -11
  50. data/lib/opal/compiler.rb +85 -103
  51. data/lib/opal/config.rb +3 -3
  52. data/lib/opal/deprecations.rb +2 -1
  53. data/lib/opal/eof_content.rb +2 -2
  54. data/lib/opal/erb.rb +8 -7
  55. data/lib/opal/errors.rb +72 -1
  56. data/lib/opal/fragment.rb +23 -3
  57. data/lib/opal/hike.rb +305 -0
  58. data/lib/opal/nodes.rb +5 -10
  59. data/lib/opal/nodes/arglist.rb +7 -6
  60. data/lib/opal/nodes/args.rb +36 -0
  61. data/lib/opal/nodes/args/arg.rb +22 -0
  62. data/lib/opal/nodes/args/arity_check.rb +151 -0
  63. data/lib/opal/nodes/args/ensure_kwargs_are_kwargs.rb +28 -0
  64. data/lib/opal/nodes/args/extract_block_arg.rb +34 -0
  65. data/lib/opal/nodes/args/extract_kwarg.rb +32 -0
  66. data/lib/opal/nodes/args/extract_kwargs.rb +28 -0
  67. data/lib/opal/nodes/args/extract_kwoptarg.rb +35 -0
  68. data/lib/opal/nodes/args/extract_kwrestarg.rb +35 -0
  69. data/lib/opal/nodes/args/extract_optarg.rb +35 -0
  70. data/lib/opal/nodes/args/extract_post_arg.rb +28 -0
  71. data/lib/opal/nodes/args/extract_post_optarg.rb +41 -0
  72. data/lib/opal/nodes/args/extract_restarg.rb +40 -0
  73. data/lib/opal/nodes/args/fake_arg.rb +26 -0
  74. data/lib/opal/nodes/args/initialize_iterarg.rb +28 -0
  75. data/lib/opal/nodes/args/initialize_shadowarg.rb +24 -0
  76. data/lib/opal/nodes/args/parameters.rb +63 -0
  77. data/lib/opal/nodes/args/prepare_post_args.rb +22 -0
  78. data/lib/opal/nodes/array.rb +9 -8
  79. data/lib/opal/nodes/base.rb +20 -11
  80. data/lib/opal/nodes/call.rb +24 -25
  81. data/lib/opal/nodes/call_special.rb +4 -3
  82. data/lib/opal/nodes/case.rb +24 -26
  83. data/lib/opal/nodes/class.rb +4 -5
  84. data/lib/opal/nodes/constants.rb +8 -7
  85. data/lib/opal/nodes/csend.rb +2 -3
  86. data/lib/opal/nodes/def.rb +28 -74
  87. data/lib/opal/nodes/defined.rb +36 -36
  88. data/lib/opal/nodes/definitions.rb +10 -7
  89. data/lib/opal/nodes/defs.rb +8 -16
  90. data/lib/opal/nodes/hash.rb +5 -4
  91. data/lib/opal/nodes/helpers.rb +8 -8
  92. data/lib/opal/nodes/if.rb +10 -8
  93. data/lib/opal/nodes/iter.rb +16 -103
  94. data/lib/opal/nodes/lambda.rb +18 -0
  95. data/lib/opal/nodes/literal.rb +29 -63
  96. data/lib/opal/nodes/logic.rb +25 -24
  97. data/lib/opal/nodes/masgn.rb +8 -6
  98. data/lib/opal/nodes/module.rb +4 -4
  99. data/lib/opal/nodes/node_with_args.rb +14 -208
  100. data/lib/opal/nodes/rescue.rb +32 -32
  101. data/lib/opal/nodes/runtime_helpers.rb +5 -4
  102. data/lib/opal/nodes/scope.rb +18 -29
  103. data/lib/opal/nodes/singleton_class.rb +3 -3
  104. data/lib/opal/nodes/super.rb +12 -18
  105. data/lib/opal/nodes/top.rb +10 -8
  106. data/lib/opal/nodes/variables.rb +6 -6
  107. data/lib/opal/nodes/while.rb +7 -6
  108. data/lib/opal/nodes/x_string.rb +139 -0
  109. data/lib/opal/nodes/yield.rb +10 -7
  110. data/lib/opal/parser.rb +9 -46
  111. data/lib/opal/parser/default_config.rb +50 -0
  112. data/lib/opal/parser/patch.rb +26 -0
  113. data/lib/opal/parser/source_buffer.rb +11 -0
  114. data/lib/opal/parser/with_c_lexer.rb +14 -0
  115. data/lib/opal/parser/with_ruby_lexer.rb +6 -0
  116. data/lib/opal/path_reader.rb +6 -5
  117. data/lib/opal/paths.rb +9 -6
  118. data/lib/opal/regexp_anchors.rb +6 -5
  119. data/lib/opal/rewriter.rb +7 -0
  120. data/lib/opal/rewriters/arguments.rb +58 -0
  121. data/lib/opal/rewriters/base.rb +32 -12
  122. data/lib/opal/rewriters/binary_operator_assignment.rb +20 -20
  123. data/lib/opal/rewriters/block_to_iter.rb +2 -1
  124. data/lib/opal/rewriters/break_finder.rb +2 -0
  125. data/lib/opal/rewriters/dot_js_syntax.rb +3 -2
  126. data/lib/opal/rewriters/dump_args.rb +28 -0
  127. data/lib/opal/rewriters/explicit_writer_return.rb +4 -3
  128. data/lib/opal/rewriters/for_rewriter.rb +12 -12
  129. data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +2 -1
  130. data/lib/opal/rewriters/inline_args.rb +220 -0
  131. data/lib/opal/rewriters/js_reserved_words.rb +21 -17
  132. data/lib/opal/rewriters/logical_operator_assignment.rb +24 -14
  133. data/lib/opal/rewriters/mlhs_args.rb +128 -0
  134. data/lib/opal/rewriters/opal_engine_check.rb +11 -6
  135. data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +3 -2
  136. data/lib/opal/server.rb +1 -0
  137. data/lib/opal/simple_server.rb +15 -23
  138. data/lib/opal/source_map.rb +7 -70
  139. data/lib/opal/source_map/file.rb +199 -0
  140. data/lib/opal/source_map/index.rb +83 -0
  141. data/lib/opal/source_map/map.rb +26 -0
  142. data/lib/opal/source_map/vlq.rb +98 -0
  143. data/lib/opal/util.rb +7 -5
  144. data/lib/opal/version.rb +2 -1
  145. data/lib/tilt/opal.rb +3 -3
  146. data/opal.gemspec +18 -9
  147. data/opal/corelib/array.rb +135 -117
  148. data/opal/corelib/array/pack.rb +446 -0
  149. data/opal/corelib/basic_object.rb +23 -9
  150. data/opal/corelib/boolean.rb +3 -3
  151. data/opal/corelib/class.rb +4 -10
  152. data/opal/corelib/comparable.rb +36 -23
  153. data/opal/corelib/complex.rb +108 -14
  154. data/opal/corelib/constants.rb +4 -4
  155. data/opal/corelib/enumerable.rb +132 -135
  156. data/opal/corelib/enumerator.rb +47 -50
  157. data/opal/corelib/error.rb +65 -8
  158. data/opal/corelib/file.rb +37 -32
  159. data/opal/corelib/hash.rb +90 -21
  160. data/opal/corelib/helpers.rb +7 -6
  161. data/opal/corelib/kernel.rb +53 -586
  162. data/opal/corelib/kernel/format.rb +544 -0
  163. data/opal/corelib/marshal.rb +1 -13
  164. data/opal/corelib/marshal/read_buffer.rb +20 -23
  165. data/opal/corelib/marshal/write_buffer.rb +23 -15
  166. data/opal/corelib/math.rb +12 -16
  167. data/opal/corelib/method.rb +5 -3
  168. data/opal/corelib/module.rb +80 -109
  169. data/opal/corelib/nil.rb +2 -2
  170. data/opal/corelib/number.rb +177 -43
  171. data/opal/corelib/numeric.rb +22 -16
  172. data/opal/corelib/pack_unpack/format_string_parser.rb +135 -0
  173. data/opal/corelib/proc.rb +3 -4
  174. data/opal/corelib/process.rb +1 -1
  175. data/opal/corelib/random.rb +24 -16
  176. data/opal/corelib/random/MersenneTwister.js +137 -0
  177. data/opal/corelib/random/math_random.js.rb +9 -0
  178. data/opal/corelib/random/mersenne_twister.js.rb +13 -0
  179. data/opal/corelib/random/seedrandom.js.rb +12 -0
  180. data/opal/corelib/range.rb +25 -26
  181. data/opal/corelib/rational.rb +57 -17
  182. data/opal/corelib/regexp.rb +39 -43
  183. data/opal/corelib/runtime.js +806 -683
  184. data/opal/corelib/string.rb +213 -112
  185. data/opal/corelib/string/encoding.rb +14 -17
  186. data/opal/corelib/string/unpack.rb +793 -0
  187. data/opal/corelib/struct.rb +40 -24
  188. data/opal/corelib/time.rb +14 -15
  189. data/opal/corelib/unsupported.rb +26 -4
  190. data/opal/opal.rb +2 -1
  191. data/opal/opal/full.rb +2 -0
  192. data/stdlib/base64.rb +1 -1
  193. data/stdlib/bigdecimal.rb +11 -13
  194. data/stdlib/buffer.rb +9 -8
  195. data/stdlib/buffer/array.rb +46 -48
  196. data/stdlib/buffer/view.rb +85 -47
  197. data/stdlib/console.rb +18 -18
  198. data/stdlib/date.rb +85 -66
  199. data/stdlib/delegate.rb +2 -2
  200. data/stdlib/e2mmap.rb +176 -0
  201. data/stdlib/encoding.rb +1 -1
  202. data/stdlib/erb.rb +1 -1
  203. data/stdlib/forwardable.rb +14 -14
  204. data/stdlib/json.rb +1 -2
  205. data/stdlib/logger.rb +112 -0
  206. data/stdlib/math.rb +1 -1
  207. data/stdlib/matrix.rb +2169 -0
  208. data/stdlib/matrix/eigenvalue_decomposition.rb +883 -0
  209. data/stdlib/matrix/lup_decomposition.rb +219 -0
  210. data/stdlib/nashorn/file.rb +7 -9
  211. data/stdlib/native.rb +69 -63
  212. data/stdlib/nodejs.rb +3 -0
  213. data/stdlib/nodejs/dir.rb +25 -4
  214. data/stdlib/nodejs/env.rb +40 -0
  215. data/stdlib/nodejs/file.rb +184 -34
  216. data/stdlib/nodejs/fileutils.rb +4 -4
  217. data/stdlib/nodejs/io.rb +4 -46
  218. data/stdlib/nodejs/irb.rb +27 -29
  219. data/stdlib/nodejs/kernel.rb +2 -11
  220. data/stdlib/nodejs/node_modules/balanced-match/.npmignore +5 -0
  221. data/stdlib/nodejs/node_modules/balanced-match/LICENSE.md +21 -0
  222. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/README.md +13 -2
  223. data/stdlib/nodejs/node_modules/balanced-match/index.js +59 -0
  224. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/package.json +46 -42
  225. data/stdlib/nodejs/node_modules/brace-expansion/LICENSE +21 -0
  226. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/README.md +9 -1
  227. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/index.js +12 -2
  228. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/package.json +48 -48
  229. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/.travis.yml +0 -0
  230. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/LICENSE +0 -0
  231. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/README.markdown +0 -0
  232. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/example/map.js +0 -0
  233. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/index.js +0 -0
  234. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/package.json +47 -42
  235. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/test/map.js +0 -0
  236. data/stdlib/nodejs/node_modules/fs.realpath/LICENSE +43 -0
  237. data/stdlib/nodejs/node_modules/fs.realpath/README.md +33 -0
  238. data/stdlib/nodejs/node_modules/fs.realpath/index.js +66 -0
  239. data/stdlib/nodejs/node_modules/fs.realpath/old.js +303 -0
  240. data/stdlib/nodejs/node_modules/fs.realpath/package.json +59 -0
  241. data/stdlib/nodejs/node_modules/glob/README.md +57 -46
  242. data/stdlib/nodejs/node_modules/glob/changelog.md +67 -0
  243. data/stdlib/nodejs/node_modules/glob/common.js +91 -28
  244. data/stdlib/nodejs/node_modules/glob/glob.js +196 -55
  245. data/stdlib/nodejs/node_modules/glob/package.json +55 -51
  246. data/stdlib/nodejs/node_modules/glob/sync.js +116 -39
  247. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight → inflight}/LICENSE +0 -0
  248. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight → inflight}/README.md +0 -0
  249. data/stdlib/nodejs/node_modules/inflight/inflight.js +54 -0
  250. data/stdlib/nodejs/node_modules/inflight/package.json +58 -0
  251. data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/LICENSE +0 -0
  252. data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/README.md +0 -0
  253. data/stdlib/nodejs/node_modules/inherits/inherits.js +7 -0
  254. data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/inherits_browser.js +0 -0
  255. data/stdlib/nodejs/node_modules/inherits/package.json +61 -0
  256. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → minimatch}/LICENSE +0 -0
  257. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch → minimatch}/README.md +2 -9
  258. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch → minimatch}/minimatch.js +284 -206
  259. data/stdlib/nodejs/node_modules/minimatch/package.json +63 -0
  260. data/stdlib/nodejs/node_modules/{glob/node_modules/once/node_modules/wrappy → once}/LICENSE +0 -0
  261. data/stdlib/nodejs/node_modules/{glob/node_modules/once → once}/README.md +28 -0
  262. data/stdlib/nodejs/node_modules/once/once.js +42 -0
  263. data/stdlib/nodejs/node_modules/once/package.json +67 -0
  264. data/stdlib/nodejs/node_modules/path-is-absolute/index.js +20 -0
  265. data/stdlib/nodejs/node_modules/path-is-absolute/license +21 -0
  266. data/stdlib/nodejs/node_modules/path-is-absolute/package.json +75 -0
  267. data/stdlib/nodejs/node_modules/path-is-absolute/readme.md +59 -0
  268. data/stdlib/nodejs/node_modules/unxhr/LICENSE +22 -0
  269. data/stdlib/nodejs/node_modules/unxhr/README.md +41 -0
  270. data/stdlib/nodejs/node_modules/unxhr/lib/XMLHttpRequest.js +598 -0
  271. data/stdlib/nodejs/node_modules/unxhr/lib/browser.js +2 -0
  272. data/stdlib/nodejs/node_modules/unxhr/lib/request.js +63 -0
  273. data/stdlib/nodejs/node_modules/unxhr/package.json +75 -0
  274. data/stdlib/nodejs/node_modules/wrappy/LICENSE +15 -0
  275. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → wrappy}/README.md +0 -0
  276. data/stdlib/nodejs/node_modules/wrappy/package.json +59 -0
  277. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → wrappy}/wrappy.js +0 -0
  278. data/stdlib/nodejs/open-uri.rb +26 -0
  279. data/stdlib/nodejs/package-lock.json +88 -0
  280. data/stdlib/nodejs/package.json +2 -1
  281. data/stdlib/nodejs/pathname.rb +20 -0
  282. data/stdlib/nodejs/require.rb +3 -3
  283. data/stdlib/nodejs/stacktrace.rb +1 -1
  284. data/stdlib/nodejs/yaml.rb +1 -1
  285. data/stdlib/opal-builder.rb +1 -0
  286. data/stdlib/opal-parser.rb +4 -1
  287. data/stdlib/opal-platform.rb +8 -10
  288. data/stdlib/opal-source-maps.rb +0 -1
  289. data/stdlib/open-uri.rb +349 -0
  290. data/stdlib/ostruct.rb +19 -17
  291. data/stdlib/pathname.rb +22 -22
  292. data/stdlib/pp.rb +5 -5
  293. data/stdlib/promise.rb +30 -26
  294. data/stdlib/rbconfig/sizeof.rb +50 -0
  295. data/stdlib/securerandom.rb +1 -1
  296. data/stdlib/set.rb +21 -23
  297. data/stdlib/singleton.rb +3 -4
  298. data/stdlib/stringio.rb +33 -0
  299. data/stdlib/strscan.rb +55 -55
  300. data/stdlib/template.rb +1 -2
  301. data/stdlib/thread.rb +6 -7
  302. data/tasks/benchmarking.rake +1 -1
  303. data/tasks/building.rake +4 -12
  304. data/tasks/linting.rake +17 -2
  305. data/tasks/releasing.rake +84 -0
  306. data/tasks/testing.rake +57 -15
  307. data/tasks/testing/mspec_special_calls.rb +23 -4
  308. data/vendored-minitest/minitest.rb +1 -1
  309. metadata +169 -168
  310. data/bin/opal-build +0 -3
  311. data/exe/opal-mspec +0 -10
  312. data/lib/opal/nodes/args/initialize_kwargs.rb +0 -29
  313. data/lib/opal/nodes/args/kwarg.rb +0 -31
  314. data/lib/opal/nodes/args/kwoptarg.rb +0 -34
  315. data/lib/opal/nodes/args/kwrestarg.rb +0 -39
  316. data/lib/opal/nodes/args/mlhsarg.rb +0 -78
  317. data/lib/opal/nodes/args/normarg.rb +0 -29
  318. data/lib/opal/nodes/args/optarg.rb +0 -25
  319. data/lib/opal/nodes/args/post_args.rb +0 -201
  320. data/lib/opal/nodes/args/post_kwargs.rb +0 -32
  321. data/lib/opal/nodes/args/restarg.rb +0 -38
  322. data/lib/opal/nodes/inline_args.rb +0 -60
  323. data/opal/corelib/string/inheritance.rb +0 -123
  324. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +0 -17
  325. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +0 -44
  326. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +0 -52
  327. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +0 -51
  328. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +0 -61
  329. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +0 -97
  330. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +0 -1
  331. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +0 -51
  332. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +0 -25
  333. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +0 -1
  334. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +0 -4
  335. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +0 -23
  336. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +0 -15
  337. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +0 -1181
  338. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +0 -2
  339. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +0 -3
  340. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +0 -8
  341. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +0 -2
  342. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +0 -4
  343. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +0 -6
  344. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +0 -5
  345. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +0 -38
  346. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +0 -56
  347. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +0 -32
  348. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +0 -1075
  349. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +0 -182
  350. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +0 -9
  351. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +0 -10
  352. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +0 -24
  353. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +0 -15
  354. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +0 -16
  355. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +0 -10
  356. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +0 -13
  357. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +0 -7
  358. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +0 -50
  359. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +0 -60
  360. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +0 -399
  361. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +0 -45
  362. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +0 -274
  363. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +0 -8
  364. data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +0 -27
  365. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +0 -36
  366. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +0 -52
  367. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +0 -51
  368. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +0 -33
  369. data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +0 -21
  370. data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +0 -60
  371. data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +0 -23
  372. data/stdlib/nodejs/rubygems.rb +0 -68
  373. data/stdlib/source_map.rb +0 -5
  374. data/stdlib/source_map/map.rb +0 -220
  375. data/stdlib/source_map/mapping.rb +0 -26
  376. data/stdlib/source_map/offset.rb +0 -88
  377. data/stdlib/source_map/version.rb +0 -3
  378. data/stdlib/source_map/vlq.rb +0 -99
  379. data/stdlib/sourcemap.rb +0 -1
@@ -0,0 +1,446 @@
1
+ require 'corelib/pack_unpack/format_string_parser'
2
+
3
+ class Array
4
+ %x{
5
+ // Format Parser
6
+ var eachDirectiveAndCount = Opal.PackUnpack.eachDirectiveAndCount;
7
+
8
+ function identityFunction(value) { return value; }
9
+
10
+ function utf8BytesToUtf16LEString(bytes) {
11
+ var str = String.fromCharCode.apply(null, bytes), out = "", i = 0, len = str.length, c, char2, char3;
12
+ while (i < len) {
13
+ c = str.charCodeAt(i++);
14
+ switch (c >> 4) {
15
+ case 0:
16
+ case 1:
17
+ case 2:
18
+ case 3:
19
+ case 4:
20
+ case 5:
21
+ case 6:
22
+ case 7:
23
+ // 0xxxxxxx
24
+ out += str.charAt(i - 1);
25
+ break;
26
+ case 12:
27
+ case 13:
28
+ // 110x xxxx 10xx xxxx
29
+ char2 = str.charCodeAt(i++);
30
+ out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
31
+ break;
32
+ case 14:
33
+ // 1110 xxxx10xx xxxx10xx xxxx
34
+ char2 = str.charCodeAt(i++);
35
+ char3 = str.charCodeAt(i++);
36
+ out += String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0));
37
+ break;
38
+ }
39
+ }
40
+ return out;
41
+ }
42
+
43
+ function asciiBytesToUtf16LEString(bytes) {
44
+ return String.fromCharCode.apply(null, bytes);
45
+ }
46
+
47
+ function asciiStringFromUnsignedInt(bytes, callback) {
48
+ return function(data) {
49
+ var buffer = callback(data);
50
+
51
+ return buffer.map(function(item) {
52
+ var result = [];
53
+
54
+ for (var i = 0; i < bytes; i++) {
55
+ var bit = item & 255;
56
+ result.push(bit);
57
+ item = item >> 8;
58
+ };
59
+
60
+ return asciiBytesToUtf16LEString(result);
61
+ });
62
+ }
63
+ }
64
+
65
+ function asciiStringFromSignedInt(bytes, callback) {
66
+ return function(data) {
67
+ var buffer = callback(data),
68
+ bits = bytes * 8,
69
+ limit = Math.pow(2, bits);
70
+
71
+ return buffer.map(function(item) {
72
+ if (item < 0) {
73
+ item += limit;
74
+ }
75
+
76
+ var result = [];
77
+
78
+ for (var i = 0; i < bytes; i++) {
79
+ var bit = item & 255;
80
+ result.push(bit);
81
+ item = item >> 8;
82
+ };
83
+
84
+ return asciiBytesToUtf16LEString(result);
85
+ });
86
+ }
87
+ }
88
+
89
+ function toInt(callback) {
90
+ return function(data) {
91
+ var buffer = callback(data);
92
+
93
+ return buffer.map(function(item) {
94
+ return #{Opal.coerce_to `item`, Integer, :to_int}
95
+ });
96
+ }
97
+ }
98
+
99
+ function ToStr(callback) {
100
+ return function(data) {
101
+ var buffer = callback(data);
102
+
103
+ return buffer.map(function(item) {
104
+ return #{Opal.coerce_to `item`, String, :to_str}
105
+ });
106
+ }
107
+ }
108
+
109
+ function fromCodePoint(callback) {
110
+ return function(data) {
111
+ var buffer = callback(data);
112
+ return buffer.map(function(item) {
113
+ try {
114
+ return String.fromCodePoint(item);
115
+ } catch (error) {
116
+ if (error instanceof RangeError) {
117
+ #{raise RangeError, 'value out of range'};
118
+ }
119
+ throw error;
120
+ }
121
+ });
122
+ }
123
+ }
124
+
125
+ function joinChars(callback) {
126
+ return function(data) {
127
+ var buffer = callback(data);
128
+ return buffer.join('');
129
+ }
130
+ }
131
+
132
+ var handlers = {
133
+ // Integer
134
+ 'C': joinChars(asciiStringFromUnsignedInt(1, toInt(identityFunction))),
135
+ 'S': joinChars(asciiStringFromUnsignedInt(2, toInt(identityFunction))),
136
+ 'L': joinChars(asciiStringFromUnsignedInt(4, toInt(identityFunction))),
137
+ 'Q': joinChars(asciiStringFromUnsignedInt(8, toInt(identityFunction))),
138
+ 'J': null,
139
+
140
+ 'S>': null,
141
+ 'L>': null,
142
+ 'Q>': null,
143
+
144
+ 'c': joinChars(asciiStringFromSignedInt(1, toInt(identityFunction))),
145
+ 's': joinChars(asciiStringFromSignedInt(2, toInt(identityFunction))),
146
+ 'l': joinChars(asciiStringFromSignedInt(4, toInt(identityFunction))),
147
+ 'q': joinChars(asciiStringFromSignedInt(8, toInt(identityFunction))),
148
+ 'j': null,
149
+
150
+ 's>': null,
151
+ 'l>': null,
152
+ 'q>': null,
153
+
154
+ 'n': null,
155
+ 'N': null,
156
+ 'v': null,
157
+ 'V': null,
158
+
159
+ 'U': joinChars(fromCodePoint(toInt(identityFunction))),
160
+ 'w': null,
161
+
162
+ // Float
163
+ 'D': null,
164
+ 'd': null,
165
+ 'F': null,
166
+ 'f': null,
167
+ 'E': null,
168
+ 'e': null,
169
+ 'G': null,
170
+ 'g': null,
171
+
172
+ // String
173
+ 'A': joinChars(identityFunction),
174
+ 'a': joinChars(identityFunction),
175
+ 'Z': null,
176
+ 'B': null,
177
+ 'b': null,
178
+ 'H': null,
179
+ 'h': null,
180
+ 'u': null,
181
+ 'M': null,
182
+ 'm': null,
183
+
184
+ 'P': null,
185
+ 'p': null
186
+ };
187
+
188
+ function readNTimesFromBufferAndMerge(callback) {
189
+ return function(buffer, count) {
190
+ var chunk = [], chunkData;
191
+
192
+ if (count === Infinity) {
193
+ while (buffer.length > 0) {
194
+ chunkData = callback(buffer);
195
+ buffer = chunkData.rest;
196
+ chunk = chunk.concat(chunkData.chunk);
197
+ }
198
+ } else {
199
+ if (buffer.length < count) {
200
+ #{raise ArgumentError, 'too few arguments'};
201
+ }
202
+ for (var i = 0; i < count; i++) {
203
+ chunkData = callback(buffer);
204
+ buffer = chunkData.rest;
205
+ chunk = chunk.concat(chunkData.chunk);
206
+ }
207
+ }
208
+
209
+ return { chunk: chunk, rest: buffer };
210
+ }
211
+ }
212
+
213
+ function readItem(buffer) {
214
+ var chunk = buffer.slice(0, 1);
215
+ buffer = buffer.slice(1, buffer.length);
216
+ return { chunk: chunk, rest: buffer };
217
+ }
218
+
219
+ function readNCharsFromTheFirstItemAndMergeWithFallback(fallback, callback) {
220
+ return function(buffer, count) {
221
+ var chunk = [], source = buffer[0];
222
+
223
+ if (source === nil) {
224
+ source = '';
225
+ } else if (source === undefined) {
226
+ #{raise ArgumentError, 'too few arguments'};
227
+ } else {
228
+ source = #{Opal.coerce_to `source`, String, :to_str};
229
+ }
230
+
231
+ buffer = buffer.slice(1, buffer.length);
232
+
233
+ function infiniteReeder() {
234
+ var chunkData = callback(source);
235
+ source = chunkData.rest;
236
+ var subChunk = chunkData.chunk;
237
+
238
+ if (subChunk.length === 1 && subChunk[0] === nil) {
239
+ subChunk = []
240
+ }
241
+
242
+ chunk = chunk.concat(subChunk);
243
+ }
244
+
245
+ function finiteReeder() {
246
+ var chunkData = callback(source);
247
+ source = chunkData.rest;
248
+ var subChunk = chunkData.chunk;
249
+
250
+ if (subChunk.length === 0) {
251
+ subChunk = [fallback];
252
+ }
253
+
254
+ if (subChunk.length === 1 && subChunk[0] === nil) {
255
+ subChunk = [fallback];
256
+ }
257
+
258
+ chunk = chunk.concat(subChunk);
259
+ }
260
+
261
+ if (count === Infinity) {
262
+ while (source.length > 0) {
263
+ infiniteReeder();
264
+ }
265
+ } else {
266
+ for (var i = 0; i < count; i++) {
267
+ finiteReeder();
268
+ }
269
+ }
270
+
271
+ return { chunk: chunk, rest: buffer };
272
+ }
273
+ }
274
+
275
+ var readChunk = {
276
+ // Integer
277
+ 'C': readNTimesFromBufferAndMerge(readItem),
278
+ 'S': readNTimesFromBufferAndMerge(readItem),
279
+ 'L': readNTimesFromBufferAndMerge(readItem),
280
+ 'Q': readNTimesFromBufferAndMerge(readItem),
281
+ 'J': null,
282
+
283
+ 'S>': null,
284
+ 'L>': null,
285
+ 'Q>': null,
286
+
287
+ 'c': readNTimesFromBufferAndMerge(readItem),
288
+ 's': readNTimesFromBufferAndMerge(readItem),
289
+ 'l': readNTimesFromBufferAndMerge(readItem),
290
+ 'q': readNTimesFromBufferAndMerge(readItem),
291
+ 'j': null,
292
+
293
+ 's>': null,
294
+ 'l>': null,
295
+ 'q>': null,
296
+
297
+ 'n': null,
298
+ 'N': null,
299
+ 'v': null,
300
+ 'V': null,
301
+
302
+ 'U': readNTimesFromBufferAndMerge(readItem),
303
+ 'w': null,
304
+
305
+ // Float
306
+ 'D': null,
307
+ 'd': null,
308
+ 'F': null,
309
+ 'f': null,
310
+ 'E': null,
311
+ 'e': null,
312
+ 'G': null,
313
+ 'g': null,
314
+
315
+ // String
316
+ 'A': readNCharsFromTheFirstItemAndMergeWithFallback(" ", readItem),
317
+ 'a': readNCharsFromTheFirstItemAndMergeWithFallback("\x00", readItem),
318
+ 'Z': null,
319
+ 'B': null,
320
+ 'b': null,
321
+ 'H': null,
322
+ 'h': null,
323
+ 'u': null,
324
+ 'M': null,
325
+ 'm': null,
326
+
327
+ 'P': null,
328
+ 'p': null
329
+ };
330
+
331
+ var autocompletion = {
332
+ // Integer
333
+ 'C': false,
334
+ 'S': false,
335
+ 'L': false,
336
+ 'Q': false,
337
+ 'J': null,
338
+
339
+ 'S>': null,
340
+ 'L>': null,
341
+ 'Q>': null,
342
+
343
+ 'c': false,
344
+ 's': false,
345
+ 'l': false,
346
+ 'q': false,
347
+ 'j': null,
348
+
349
+ 's>': null,
350
+ 'l>': null,
351
+ 'q>': null,
352
+
353
+ 'n': null,
354
+ 'N': null,
355
+ 'v': null,
356
+ 'V': null,
357
+
358
+ 'U': false,
359
+ 'w': null,
360
+
361
+ // Float
362
+ 'D': null,
363
+ 'd': null,
364
+ 'F': null,
365
+ 'f': null,
366
+ 'E': null,
367
+ 'e': null,
368
+ 'G': null,
369
+ 'g': null,
370
+
371
+ // String
372
+ 'A': false,
373
+ 'a': false,
374
+ 'Z': null,
375
+ 'B': null,
376
+ 'b': null,
377
+ 'H': null,
378
+ 'h': null,
379
+ 'u': false,
380
+ 'M': null,
381
+ 'm': null,
382
+
383
+ 'P': null,
384
+ 'p': null
385
+ };
386
+ }
387
+
388
+ def pack(format)
389
+ format = Opal.coerce_to!(format, String, :to_str).gsub(/\s/, '').delete("\000")
390
+
391
+ %x{
392
+ var output = '';
393
+
394
+ var buffer = self.slice();
395
+
396
+ function autocomplete(array, size) {
397
+ while (array.length < size) {
398
+ array.push(nil);
399
+ }
400
+
401
+ return array;
402
+ }
403
+
404
+ function processChunk(directive, count) {
405
+ var chunk,
406
+ chunkReader = readChunk[directive];
407
+
408
+ if (chunkReader == null) {
409
+ #{raise "Unsupported pack directive #{`directive`.inspect} (no chunk reader defined)"}
410
+ }
411
+
412
+ var chunkData = chunkReader(buffer, count);
413
+ chunk = chunkData.chunk;
414
+ buffer = chunkData.rest;
415
+
416
+ var handler = handlers[directive];
417
+
418
+ if (handler == null) {
419
+ #{raise "Unsupported pack directive #{`directive`.inspect} (no handler defined)"}
420
+ }
421
+
422
+ return handler(chunk);
423
+ }
424
+
425
+ eachDirectiveAndCount(format, function(directive, count) {
426
+ var part = processChunk(directive, count);
427
+
428
+ if (count !== Infinity) {
429
+ var shouldAutocomplete = autocompletion[directive]
430
+
431
+ if (shouldAutocomplete == null) {
432
+ #{raise "Unsupported pack directive #{`directive`.inspect} (no autocompletion rule defined)"}
433
+ }
434
+
435
+ if (shouldAutocomplete) {
436
+ autocomplete(part, count);
437
+ }
438
+ }
439
+
440
+ output = output.concat(part);
441
+ });
442
+
443
+ return output;
444
+ }
445
+ end
446
+ end
@@ -13,7 +13,13 @@ class BasicObject
13
13
  alias equal? ==
14
14
 
15
15
  def __id__
16
- `self.$$id || (self.$$id = Opal.uid())`
16
+ %x{
17
+ if (self.$$id != null) {
18
+ return self.$$id;
19
+ }
20
+ Opal.defineProperty(self, '$$id', Opal.uid());
21
+ return self.$$id;
22
+ }
17
23
  end
18
24
 
19
25
  def __send__(symbol, *args, &block)
@@ -46,7 +52,7 @@ class BasicObject
46
52
 
47
53
  def instance_eval(*args, &block)
48
54
  if block.nil? && `!!Opal.compile`
49
- ::Kernel.raise ::ArgumentError, "wrong number of arguments (0 for 1..3)" unless (1..3).cover? args.size
55
+ ::Kernel.raise ::ArgumentError, 'wrong number of arguments (0 for 1..3)' unless (1..3).cover? args.size
50
56
 
51
57
  string, file, _lineno = *args
52
58
  default_eval_options = { file: (file || '(eval)'), eval: true }
@@ -59,7 +65,7 @@ class BasicObject
59
65
  })(self)
60
66
  }
61
67
  end
62
- elsif args.size > 0
68
+ elsif args.any?
63
69
  ::Kernel.raise ::ArgumentError, "wrong number of arguments (#{args.size} for 0)"
64
70
  end
65
71
 
@@ -72,7 +78,7 @@ class BasicObject
72
78
  // Need to pass $$eval so that method definitions know if this is
73
79
  // being done on a class/module. Cannot be compiler driven since
74
80
  // send(:instance_eval) needs to work.
75
- if (self.$$is_class || self.$$is_module) {
81
+ if (self.$$is_a_module) {
76
82
  self.$$eval = true;
77
83
  try {
78
84
  result = block.call(self, self);
@@ -92,7 +98,7 @@ class BasicObject
92
98
  end
93
99
 
94
100
  def instance_exec(*args, &block)
95
- ::Kernel.raise ::ArgumentError, "no block given" unless block
101
+ ::Kernel.raise ::ArgumentError, 'no block given' unless block
96
102
 
97
103
  %x{
98
104
  var block_self = block.$$s,
@@ -100,7 +106,7 @@ class BasicObject
100
106
 
101
107
  block.$$s = null;
102
108
 
103
- if (self.$$is_class || self.$$is_module) {
109
+ if (self.$$is_a_module) {
104
110
  self.$$eval = true;
105
111
  try {
106
112
  result = block.apply(self, args);
@@ -128,9 +134,17 @@ class BasicObject
128
134
  def singleton_method_undefined(*)
129
135
  end
130
136
 
137
+ def class
138
+ `self.$$class`
139
+ end
140
+
131
141
  def method_missing(symbol, *args, &block)
132
- ::Kernel.raise ::NoMethodError.new(`self.$inspect && !self.$inspect.$$stub` ?
133
- "undefined method `#{symbol}' for #{inspect}:#{`self.$$class`}" :
134
- "undefined method `#{symbol}' for #{`self.$$class`}", symbol)
142
+ message = if `self.$inspect && !self.$inspect.$$stub`
143
+ "undefined method `#{symbol}' for #{inspect}:#{`self.$$class`}"
144
+ else
145
+ "undefined method `#{symbol}' for #{`self.$$class`}"
146
+ end
147
+
148
+ ::Kernel.raise ::NoMethodError.new(message, symbol)
135
149
  end
136
150
  end