opal 0.11.4 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (379) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +42 -10
  3. data/.rubocop.yml +398 -0
  4. data/.rubocop_todo.yml +44 -0
  5. data/.travis.yml +28 -34
  6. data/CHANGELOG.md +363 -142
  7. data/CONTRIBUTING.md +3 -5
  8. data/Gemfile +17 -12
  9. data/Guardfile +0 -1
  10. data/HACKING.md +1 -35
  11. data/LICENSE +2 -2
  12. data/README.md +42 -13
  13. data/Rakefile +1 -4
  14. data/UNRELEASED.md +133 -0
  15. data/benchmark-ips/README.md +6 -0
  16. data/benchmark-ips/bm_block_vs_yield.rb +21 -0
  17. data/benchmark-ips/bm_js_symbols_vs_strings.rb +28 -0
  18. data/benchmark-ips/bm_while_true_vs_loop.rb +19 -0
  19. data/bin/console +14 -0
  20. data/bin/opal +0 -1
  21. data/bin/opal-benchmark-ips +8 -0
  22. data/bin/opal-mspec +9 -1
  23. data/bin/opal-repl +2 -1
  24. data/bin/rake +7 -0
  25. data/bin/setup +8 -0
  26. data/docs/compiled_ruby.md +89 -8
  27. data/docs/compiler.md +3 -20
  28. data/docs/jquery.md +44 -11
  29. data/docs/promises.md +1 -1
  30. data/docs/rails.md +16 -12
  31. data/docs/sinatra.md +15 -8
  32. data/docs/using_sprockets.md +16 -11
  33. data/examples/rack/config.ru +1 -0
  34. data/examples/sinatra/Gemfile +1 -0
  35. data/examples/sinatra/config.ru +2 -11
  36. data/exe/opal-repl +3 -11
  37. data/lib/opal.rb +1 -0
  38. data/lib/opal/ast/builder.rb +4 -1
  39. data/lib/opal/ast/node.rb +1 -0
  40. data/lib/opal/builder.rb +84 -63
  41. data/lib/opal/builder_processors.rb +41 -56
  42. data/lib/opal/cli.rb +33 -49
  43. data/lib/opal/cli_options.rb +27 -17
  44. data/lib/opal/cli_runners.rb +73 -16
  45. data/lib/opal/cli_runners/applescript.rb +4 -4
  46. data/lib/opal/cli_runners/chrome.rb +29 -17
  47. data/lib/opal/cli_runners/nashorn.rb +5 -4
  48. data/lib/opal/cli_runners/nodejs.rb +8 -6
  49. data/lib/opal/cli_runners/server.rb +12 -11
  50. data/lib/opal/compiler.rb +85 -103
  51. data/lib/opal/config.rb +3 -3
  52. data/lib/opal/deprecations.rb +2 -1
  53. data/lib/opal/eof_content.rb +2 -2
  54. data/lib/opal/erb.rb +8 -7
  55. data/lib/opal/errors.rb +72 -1
  56. data/lib/opal/fragment.rb +23 -3
  57. data/lib/opal/hike.rb +305 -0
  58. data/lib/opal/nodes.rb +5 -10
  59. data/lib/opal/nodes/arglist.rb +7 -6
  60. data/lib/opal/nodes/args.rb +36 -0
  61. data/lib/opal/nodes/args/arg.rb +22 -0
  62. data/lib/opal/nodes/args/arity_check.rb +151 -0
  63. data/lib/opal/nodes/args/ensure_kwargs_are_kwargs.rb +28 -0
  64. data/lib/opal/nodes/args/extract_block_arg.rb +34 -0
  65. data/lib/opal/nodes/args/extract_kwarg.rb +32 -0
  66. data/lib/opal/nodes/args/extract_kwargs.rb +28 -0
  67. data/lib/opal/nodes/args/extract_kwoptarg.rb +35 -0
  68. data/lib/opal/nodes/args/extract_kwrestarg.rb +35 -0
  69. data/lib/opal/nodes/args/extract_optarg.rb +35 -0
  70. data/lib/opal/nodes/args/extract_post_arg.rb +28 -0
  71. data/lib/opal/nodes/args/extract_post_optarg.rb +41 -0
  72. data/lib/opal/nodes/args/extract_restarg.rb +40 -0
  73. data/lib/opal/nodes/args/fake_arg.rb +26 -0
  74. data/lib/opal/nodes/args/initialize_iterarg.rb +28 -0
  75. data/lib/opal/nodes/args/initialize_shadowarg.rb +24 -0
  76. data/lib/opal/nodes/args/parameters.rb +63 -0
  77. data/lib/opal/nodes/args/prepare_post_args.rb +22 -0
  78. data/lib/opal/nodes/array.rb +9 -8
  79. data/lib/opal/nodes/base.rb +20 -11
  80. data/lib/opal/nodes/call.rb +24 -25
  81. data/lib/opal/nodes/call_special.rb +4 -3
  82. data/lib/opal/nodes/case.rb +24 -26
  83. data/lib/opal/nodes/class.rb +4 -5
  84. data/lib/opal/nodes/constants.rb +8 -7
  85. data/lib/opal/nodes/csend.rb +2 -3
  86. data/lib/opal/nodes/def.rb +28 -74
  87. data/lib/opal/nodes/defined.rb +36 -36
  88. data/lib/opal/nodes/definitions.rb +10 -7
  89. data/lib/opal/nodes/defs.rb +8 -16
  90. data/lib/opal/nodes/hash.rb +5 -4
  91. data/lib/opal/nodes/helpers.rb +8 -8
  92. data/lib/opal/nodes/if.rb +10 -8
  93. data/lib/opal/nodes/iter.rb +16 -103
  94. data/lib/opal/nodes/lambda.rb +18 -0
  95. data/lib/opal/nodes/literal.rb +29 -63
  96. data/lib/opal/nodes/logic.rb +25 -24
  97. data/lib/opal/nodes/masgn.rb +8 -6
  98. data/lib/opal/nodes/module.rb +4 -4
  99. data/lib/opal/nodes/node_with_args.rb +14 -208
  100. data/lib/opal/nodes/rescue.rb +32 -32
  101. data/lib/opal/nodes/runtime_helpers.rb +5 -4
  102. data/lib/opal/nodes/scope.rb +18 -29
  103. data/lib/opal/nodes/singleton_class.rb +3 -3
  104. data/lib/opal/nodes/super.rb +12 -18
  105. data/lib/opal/nodes/top.rb +10 -8
  106. data/lib/opal/nodes/variables.rb +6 -6
  107. data/lib/opal/nodes/while.rb +7 -6
  108. data/lib/opal/nodes/x_string.rb +139 -0
  109. data/lib/opal/nodes/yield.rb +10 -7
  110. data/lib/opal/parser.rb +9 -46
  111. data/lib/opal/parser/default_config.rb +50 -0
  112. data/lib/opal/parser/patch.rb +26 -0
  113. data/lib/opal/parser/source_buffer.rb +11 -0
  114. data/lib/opal/parser/with_c_lexer.rb +14 -0
  115. data/lib/opal/parser/with_ruby_lexer.rb +6 -0
  116. data/lib/opal/path_reader.rb +6 -5
  117. data/lib/opal/paths.rb +9 -6
  118. data/lib/opal/regexp_anchors.rb +6 -5
  119. data/lib/opal/rewriter.rb +7 -0
  120. data/lib/opal/rewriters/arguments.rb +58 -0
  121. data/lib/opal/rewriters/base.rb +32 -12
  122. data/lib/opal/rewriters/binary_operator_assignment.rb +20 -20
  123. data/lib/opal/rewriters/block_to_iter.rb +2 -1
  124. data/lib/opal/rewriters/break_finder.rb +2 -0
  125. data/lib/opal/rewriters/dot_js_syntax.rb +3 -2
  126. data/lib/opal/rewriters/dump_args.rb +28 -0
  127. data/lib/opal/rewriters/explicit_writer_return.rb +4 -3
  128. data/lib/opal/rewriters/for_rewriter.rb +12 -12
  129. data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +2 -1
  130. data/lib/opal/rewriters/inline_args.rb +220 -0
  131. data/lib/opal/rewriters/js_reserved_words.rb +21 -17
  132. data/lib/opal/rewriters/logical_operator_assignment.rb +24 -14
  133. data/lib/opal/rewriters/mlhs_args.rb +128 -0
  134. data/lib/opal/rewriters/opal_engine_check.rb +11 -6
  135. data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +3 -2
  136. data/lib/opal/server.rb +1 -0
  137. data/lib/opal/simple_server.rb +15 -23
  138. data/lib/opal/source_map.rb +7 -70
  139. data/lib/opal/source_map/file.rb +199 -0
  140. data/lib/opal/source_map/index.rb +83 -0
  141. data/lib/opal/source_map/map.rb +26 -0
  142. data/lib/opal/source_map/vlq.rb +98 -0
  143. data/lib/opal/util.rb +7 -5
  144. data/lib/opal/version.rb +2 -1
  145. data/lib/tilt/opal.rb +3 -3
  146. data/opal.gemspec +18 -9
  147. data/opal/corelib/array.rb +135 -117
  148. data/opal/corelib/array/pack.rb +446 -0
  149. data/opal/corelib/basic_object.rb +23 -9
  150. data/opal/corelib/boolean.rb +3 -3
  151. data/opal/corelib/class.rb +4 -10
  152. data/opal/corelib/comparable.rb +36 -23
  153. data/opal/corelib/complex.rb +108 -14
  154. data/opal/corelib/constants.rb +4 -4
  155. data/opal/corelib/enumerable.rb +132 -135
  156. data/opal/corelib/enumerator.rb +47 -50
  157. data/opal/corelib/error.rb +65 -8
  158. data/opal/corelib/file.rb +37 -32
  159. data/opal/corelib/hash.rb +90 -21
  160. data/opal/corelib/helpers.rb +7 -6
  161. data/opal/corelib/kernel.rb +53 -586
  162. data/opal/corelib/kernel/format.rb +544 -0
  163. data/opal/corelib/marshal.rb +1 -13
  164. data/opal/corelib/marshal/read_buffer.rb +20 -23
  165. data/opal/corelib/marshal/write_buffer.rb +23 -15
  166. data/opal/corelib/math.rb +12 -16
  167. data/opal/corelib/method.rb +5 -3
  168. data/opal/corelib/module.rb +80 -109
  169. data/opal/corelib/nil.rb +2 -2
  170. data/opal/corelib/number.rb +177 -43
  171. data/opal/corelib/numeric.rb +22 -16
  172. data/opal/corelib/pack_unpack/format_string_parser.rb +135 -0
  173. data/opal/corelib/proc.rb +3 -4
  174. data/opal/corelib/process.rb +1 -1
  175. data/opal/corelib/random.rb +24 -16
  176. data/opal/corelib/random/MersenneTwister.js +137 -0
  177. data/opal/corelib/random/math_random.js.rb +9 -0
  178. data/opal/corelib/random/mersenne_twister.js.rb +13 -0
  179. data/opal/corelib/random/seedrandom.js.rb +12 -0
  180. data/opal/corelib/range.rb +25 -26
  181. data/opal/corelib/rational.rb +57 -17
  182. data/opal/corelib/regexp.rb +39 -43
  183. data/opal/corelib/runtime.js +806 -683
  184. data/opal/corelib/string.rb +213 -112
  185. data/opal/corelib/string/encoding.rb +14 -17
  186. data/opal/corelib/string/unpack.rb +793 -0
  187. data/opal/corelib/struct.rb +40 -24
  188. data/opal/corelib/time.rb +14 -15
  189. data/opal/corelib/unsupported.rb +26 -4
  190. data/opal/opal.rb +2 -1
  191. data/opal/opal/full.rb +2 -0
  192. data/stdlib/base64.rb +1 -1
  193. data/stdlib/bigdecimal.rb +11 -13
  194. data/stdlib/buffer.rb +9 -8
  195. data/stdlib/buffer/array.rb +46 -48
  196. data/stdlib/buffer/view.rb +85 -47
  197. data/stdlib/console.rb +18 -18
  198. data/stdlib/date.rb +85 -66
  199. data/stdlib/delegate.rb +2 -2
  200. data/stdlib/e2mmap.rb +176 -0
  201. data/stdlib/encoding.rb +1 -1
  202. data/stdlib/erb.rb +1 -1
  203. data/stdlib/forwardable.rb +14 -14
  204. data/stdlib/json.rb +1 -2
  205. data/stdlib/logger.rb +112 -0
  206. data/stdlib/math.rb +1 -1
  207. data/stdlib/matrix.rb +2169 -0
  208. data/stdlib/matrix/eigenvalue_decomposition.rb +883 -0
  209. data/stdlib/matrix/lup_decomposition.rb +219 -0
  210. data/stdlib/nashorn/file.rb +7 -9
  211. data/stdlib/native.rb +69 -63
  212. data/stdlib/nodejs.rb +3 -0
  213. data/stdlib/nodejs/dir.rb +25 -4
  214. data/stdlib/nodejs/env.rb +40 -0
  215. data/stdlib/nodejs/file.rb +184 -34
  216. data/stdlib/nodejs/fileutils.rb +4 -4
  217. data/stdlib/nodejs/io.rb +4 -46
  218. data/stdlib/nodejs/irb.rb +27 -29
  219. data/stdlib/nodejs/kernel.rb +2 -11
  220. data/stdlib/nodejs/node_modules/balanced-match/.npmignore +5 -0
  221. data/stdlib/nodejs/node_modules/balanced-match/LICENSE.md +21 -0
  222. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/README.md +13 -2
  223. data/stdlib/nodejs/node_modules/balanced-match/index.js +59 -0
  224. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/package.json +46 -42
  225. data/stdlib/nodejs/node_modules/brace-expansion/LICENSE +21 -0
  226. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/README.md +9 -1
  227. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/index.js +12 -2
  228. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/package.json +48 -48
  229. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/.travis.yml +0 -0
  230. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/LICENSE +0 -0
  231. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/README.markdown +0 -0
  232. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/example/map.js +0 -0
  233. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/index.js +0 -0
  234. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/package.json +47 -42
  235. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/test/map.js +0 -0
  236. data/stdlib/nodejs/node_modules/fs.realpath/LICENSE +43 -0
  237. data/stdlib/nodejs/node_modules/fs.realpath/README.md +33 -0
  238. data/stdlib/nodejs/node_modules/fs.realpath/index.js +66 -0
  239. data/stdlib/nodejs/node_modules/fs.realpath/old.js +303 -0
  240. data/stdlib/nodejs/node_modules/fs.realpath/package.json +59 -0
  241. data/stdlib/nodejs/node_modules/glob/README.md +57 -46
  242. data/stdlib/nodejs/node_modules/glob/changelog.md +67 -0
  243. data/stdlib/nodejs/node_modules/glob/common.js +91 -28
  244. data/stdlib/nodejs/node_modules/glob/glob.js +196 -55
  245. data/stdlib/nodejs/node_modules/glob/package.json +55 -51
  246. data/stdlib/nodejs/node_modules/glob/sync.js +116 -39
  247. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight → inflight}/LICENSE +0 -0
  248. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight → inflight}/README.md +0 -0
  249. data/stdlib/nodejs/node_modules/inflight/inflight.js +54 -0
  250. data/stdlib/nodejs/node_modules/inflight/package.json +58 -0
  251. data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/LICENSE +0 -0
  252. data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/README.md +0 -0
  253. data/stdlib/nodejs/node_modules/inherits/inherits.js +7 -0
  254. data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/inherits_browser.js +0 -0
  255. data/stdlib/nodejs/node_modules/inherits/package.json +61 -0
  256. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → minimatch}/LICENSE +0 -0
  257. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch → minimatch}/README.md +2 -9
  258. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch → minimatch}/minimatch.js +284 -206
  259. data/stdlib/nodejs/node_modules/minimatch/package.json +63 -0
  260. data/stdlib/nodejs/node_modules/{glob/node_modules/once/node_modules/wrappy → once}/LICENSE +0 -0
  261. data/stdlib/nodejs/node_modules/{glob/node_modules/once → once}/README.md +28 -0
  262. data/stdlib/nodejs/node_modules/once/once.js +42 -0
  263. data/stdlib/nodejs/node_modules/once/package.json +67 -0
  264. data/stdlib/nodejs/node_modules/path-is-absolute/index.js +20 -0
  265. data/stdlib/nodejs/node_modules/path-is-absolute/license +21 -0
  266. data/stdlib/nodejs/node_modules/path-is-absolute/package.json +75 -0
  267. data/stdlib/nodejs/node_modules/path-is-absolute/readme.md +59 -0
  268. data/stdlib/nodejs/node_modules/unxhr/LICENSE +22 -0
  269. data/stdlib/nodejs/node_modules/unxhr/README.md +41 -0
  270. data/stdlib/nodejs/node_modules/unxhr/lib/XMLHttpRequest.js +598 -0
  271. data/stdlib/nodejs/node_modules/unxhr/lib/browser.js +2 -0
  272. data/stdlib/nodejs/node_modules/unxhr/lib/request.js +63 -0
  273. data/stdlib/nodejs/node_modules/unxhr/package.json +75 -0
  274. data/stdlib/nodejs/node_modules/wrappy/LICENSE +15 -0
  275. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → wrappy}/README.md +0 -0
  276. data/stdlib/nodejs/node_modules/wrappy/package.json +59 -0
  277. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → wrappy}/wrappy.js +0 -0
  278. data/stdlib/nodejs/open-uri.rb +26 -0
  279. data/stdlib/nodejs/package-lock.json +88 -0
  280. data/stdlib/nodejs/package.json +2 -1
  281. data/stdlib/nodejs/pathname.rb +20 -0
  282. data/stdlib/nodejs/require.rb +3 -3
  283. data/stdlib/nodejs/stacktrace.rb +1 -1
  284. data/stdlib/nodejs/yaml.rb +1 -1
  285. data/stdlib/opal-builder.rb +1 -0
  286. data/stdlib/opal-parser.rb +4 -1
  287. data/stdlib/opal-platform.rb +8 -10
  288. data/stdlib/opal-source-maps.rb +0 -1
  289. data/stdlib/open-uri.rb +349 -0
  290. data/stdlib/ostruct.rb +19 -17
  291. data/stdlib/pathname.rb +22 -22
  292. data/stdlib/pp.rb +5 -5
  293. data/stdlib/promise.rb +30 -26
  294. data/stdlib/rbconfig/sizeof.rb +50 -0
  295. data/stdlib/securerandom.rb +1 -1
  296. data/stdlib/set.rb +21 -23
  297. data/stdlib/singleton.rb +3 -4
  298. data/stdlib/stringio.rb +33 -0
  299. data/stdlib/strscan.rb +55 -55
  300. data/stdlib/template.rb +1 -2
  301. data/stdlib/thread.rb +6 -7
  302. data/tasks/benchmarking.rake +1 -1
  303. data/tasks/building.rake +4 -12
  304. data/tasks/linting.rake +17 -2
  305. data/tasks/releasing.rake +84 -0
  306. data/tasks/testing.rake +57 -15
  307. data/tasks/testing/mspec_special_calls.rb +23 -4
  308. data/vendored-minitest/minitest.rb +1 -1
  309. metadata +169 -168
  310. data/bin/opal-build +0 -3
  311. data/exe/opal-mspec +0 -10
  312. data/lib/opal/nodes/args/initialize_kwargs.rb +0 -29
  313. data/lib/opal/nodes/args/kwarg.rb +0 -31
  314. data/lib/opal/nodes/args/kwoptarg.rb +0 -34
  315. data/lib/opal/nodes/args/kwrestarg.rb +0 -39
  316. data/lib/opal/nodes/args/mlhsarg.rb +0 -78
  317. data/lib/opal/nodes/args/normarg.rb +0 -29
  318. data/lib/opal/nodes/args/optarg.rb +0 -25
  319. data/lib/opal/nodes/args/post_args.rb +0 -201
  320. data/lib/opal/nodes/args/post_kwargs.rb +0 -32
  321. data/lib/opal/nodes/args/restarg.rb +0 -38
  322. data/lib/opal/nodes/inline_args.rb +0 -60
  323. data/opal/corelib/string/inheritance.rb +0 -123
  324. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +0 -17
  325. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +0 -44
  326. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +0 -52
  327. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +0 -51
  328. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +0 -61
  329. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +0 -97
  330. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +0 -1
  331. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +0 -51
  332. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +0 -25
  333. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +0 -1
  334. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +0 -4
  335. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +0 -23
  336. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +0 -15
  337. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +0 -1181
  338. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +0 -2
  339. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +0 -3
  340. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +0 -8
  341. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +0 -2
  342. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +0 -4
  343. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +0 -6
  344. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +0 -5
  345. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +0 -38
  346. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +0 -56
  347. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +0 -32
  348. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +0 -1075
  349. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +0 -182
  350. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +0 -9
  351. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +0 -10
  352. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +0 -24
  353. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +0 -15
  354. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +0 -16
  355. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +0 -10
  356. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +0 -13
  357. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +0 -7
  358. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +0 -50
  359. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +0 -60
  360. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +0 -399
  361. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +0 -45
  362. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +0 -274
  363. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +0 -8
  364. data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +0 -27
  365. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +0 -36
  366. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +0 -52
  367. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +0 -51
  368. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +0 -33
  369. data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +0 -21
  370. data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +0 -60
  371. data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +0 -23
  372. data/stdlib/nodejs/rubygems.rb +0 -68
  373. data/stdlib/source_map.rb +0 -5
  374. data/stdlib/source_map/map.rb +0 -220
  375. data/stdlib/source_map/mapping.rb +0 -26
  376. data/stdlib/source_map/offset.rb +0 -88
  377. data/stdlib/source_map/version.rb +0 -3
  378. data/stdlib/source_map/vlq.rb +0 -99
  379. data/stdlib/sourcemap.rb +0 -1
@@ -1,2 +1 @@
1
- require 'source_map'
2
1
  require 'opal/source_map'
@@ -0,0 +1,349 @@
1
+ # Copied from https://raw.githubusercontent.com/ruby/ruby/373babeaac8c3e663e1ded74a9f06ac94a671ed9/lib/open-uri.rb
2
+ # frozen_string_literal: true
3
+ require 'stringio'
4
+ require 'corelib/array/pack'
5
+
6
+ module Kernel
7
+ private
8
+ alias open_uri_original_open open # :nodoc:
9
+ class << self
10
+ alias open_uri_original_open open # :nodoc:
11
+ end
12
+
13
+ # Allows the opening of various resources including URIs.
14
+ #
15
+ # If the first argument responds to the 'open' method, 'open' is called on
16
+ # it with the rest of the arguments.
17
+ #
18
+ # If the first argument is a string that begins with xxx://, it is parsed by
19
+ # URI.parse. If the parsed object responds to the 'open' method,
20
+ # 'open' is called on it with the rest of the arguments.
21
+ #
22
+ # Otherwise, the original Kernel#open is called.
23
+ #
24
+ # OpenURI::OpenRead#open provides URI::HTTP#open, URI::HTTPS#open and
25
+ # URI::FTP#open, Kernel#open.
26
+ #
27
+ # We can accept URIs and strings that begin with http://, https:// and
28
+ # ftp://. In these cases, the opened file object is extended by OpenURI::Meta.
29
+ def open(name, *rest, &block) # :doc:
30
+ if name.respond_to?(:to_str) && %r{\A[A-Za-z][A-Za-z0-9+\-\.]*://} =~ name
31
+ OpenURI.open_uri(name, *rest, &block)
32
+ else
33
+ open_uri_original_open(name, *rest, &block)
34
+ end
35
+ end
36
+ module_function :open
37
+ end
38
+
39
+ # OpenURI is an easy-to-use wrapper for Net::HTTP, Net::HTTPS and Net::FTP.
40
+ #
41
+ # == Example
42
+ #
43
+ # It is possible to open an http, https or ftp URL as though it were a file:
44
+ #
45
+ # open("http://www.ruby-lang.org/") {|f|
46
+ # f.each_line {|line| p line}
47
+ # }
48
+ #
49
+ # The opened file has several getter methods for its meta-information, as
50
+ # follows, since it is extended by OpenURI::Meta.
51
+ #
52
+ # open("http://www.ruby-lang.org/en") {|f|
53
+ # f.each_line {|line| p line}
54
+ # p f.base_uri # <URI::HTTP:0x40e6ef2 URL:http://www.ruby-lang.org/en/>
55
+ # p f.content_type # "text/html"
56
+ # p f.charset # "iso-8859-1"
57
+ # p f.content_encoding # []
58
+ # p f.last_modified # Thu Dec 05 02:45:02 UTC 2002
59
+ # }
60
+ #
61
+ # Additional header fields can be specified by an optional hash argument.
62
+ #
63
+ # open("http://www.ruby-lang.org/en/",
64
+ # "User-Agent" => "Ruby/#{RUBY_VERSION}",
65
+ # "From" => "foo@bar.invalid",
66
+ # "Referer" => "http://www.ruby-lang.org/") {|f|
67
+ # # ...
68
+ # }
69
+ #
70
+ # The environment variables such as http_proxy, https_proxy and ftp_proxy
71
+ # are in effect by default. Here we disable proxy:
72
+ #
73
+ # open("http://www.ruby-lang.org/en/", :proxy => nil) {|f|
74
+ # # ...
75
+ # }
76
+ #
77
+ # See OpenURI::OpenRead.open and Kernel#open for more on available options.
78
+ #
79
+ # URI objects can be opened in a similar way.
80
+ #
81
+ # uri = URI.parse("http://www.ruby-lang.org/en/")
82
+ # uri.open {|f|
83
+ # # ...
84
+ # }
85
+ #
86
+ # URI objects can be read directly. The returned string is also extended by
87
+ # OpenURI::Meta.
88
+ #
89
+ # str = uri.read
90
+ # p str.base_uri
91
+ #
92
+ # Author:: Tanaka Akira <akr@m17n.org>
93
+
94
+ module OpenURI
95
+
96
+ def self.open_uri(name, *rest) # :nodoc:
97
+ io = open_loop(name, {})
98
+ io.rewind
99
+ if block_given?
100
+ begin
101
+ yield io
102
+ ensure
103
+ close_io(io)
104
+ end
105
+ else
106
+ io
107
+ end
108
+ end
109
+
110
+ def self.close_io(io)
111
+ if io.respond_to? :close!
112
+ io.close! # Tempfile
113
+ else
114
+ io.close unless io.closed?
115
+ end
116
+ end
117
+
118
+ def self.open_loop(uri, options) # :nodoc:
119
+ req = request(uri)
120
+ data = `req.responseText`
121
+ status = `req.status`
122
+ status_text = `req.statusText && req.statusText.errno ? req.statusText.errno : req.statusText`
123
+ if status == 200 || (status == 0 && data)
124
+ build_response(req, status, status_text)
125
+ else
126
+ raise OpenURI::HTTPError.new("#{status} #{status_text}", '')
127
+ end
128
+ end
129
+
130
+ def self.build_response(req, status, status_text)
131
+ buf = Buffer.new
132
+ buf << data(req).pack('c*')
133
+ io = buf.io
134
+ #io.base_uri = uri # TODO: Generate a URI object from the uri String
135
+ io.status = "#{status} #{status_text}"
136
+ io.meta_add_field('content-type', `req.getResponseHeader("Content-Type") || ''`)
137
+ last_modified = `req.getResponseHeader("Last-Modified")`
138
+ io.meta_add_field('last-modified', last_modified) if last_modified
139
+ io
140
+ end
141
+
142
+ def self.data(req)
143
+ %x{
144
+ var binStr = req.responseText;
145
+ var byteArray = [];
146
+ for (var i = 0, len = binStr.length; i < len; ++i) {
147
+ var c = binStr.charCodeAt(i);
148
+ var byteCode = c & 0xff; // byte at offset i
149
+ byteArray.push(byteCode);
150
+ }
151
+ return byteArray;
152
+ }
153
+ end
154
+
155
+ def self.request(uri)
156
+ %x{
157
+ try {
158
+ var xhr = new XMLHttpRequest();
159
+ xhr.open('GET', uri, false);
160
+ // We cannot use xhr.responseType = "arraybuffer" because XMLHttpRequest is used in synchronous mode.
161
+ // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType#Synchronous_XHR_restrictions
162
+ xhr.overrideMimeType('text/plain; charset=x-user-defined');
163
+ xhr.send();
164
+ return xhr;
165
+ } catch (error) {
166
+ #{raise OpenURI::HTTPError.new(`error.message`, '')}
167
+ }
168
+ }
169
+ end
170
+
171
+ class HTTPError < StandardError
172
+ def initialize(message, io)
173
+ super(message, io)
174
+ @io = io
175
+ end
176
+ attr_reader :io
177
+ end
178
+
179
+ class Buffer # :nodoc: all
180
+ def initialize
181
+ @io = StringIO.new
182
+ @size = 0
183
+ end
184
+ attr_reader :size
185
+
186
+ def <<(str)
187
+ @io << str
188
+ @size += str.length
189
+ end
190
+
191
+ def io
192
+ Meta.init @io unless Meta === @io
193
+ @io
194
+ end
195
+ end
196
+
197
+ # Mixin for holding meta-information.
198
+ module Meta
199
+ def Meta.init(obj, src=nil) # :nodoc:
200
+ obj.extend Meta
201
+ obj.instance_eval {
202
+ @base_uri = nil
203
+ @meta = {} # name to string. legacy.
204
+ @metas = {} # name to array of strings.
205
+ }
206
+ if src
207
+ obj.status = src.status
208
+ obj.base_uri = src.base_uri
209
+ src.metas.each {|name, values|
210
+ obj.meta_add_field2(name, values)
211
+ }
212
+ end
213
+ end
214
+
215
+ # returns an Array that consists of status code and message.
216
+ attr_accessor :status
217
+
218
+ # returns a URI that is the base of relative URIs in the data.
219
+ # It may differ from the URI supplied by a user due to redirection.
220
+ attr_accessor :base_uri
221
+
222
+ # returns a Hash that represents header fields.
223
+ # The Hash keys are downcased for canonicalization.
224
+ # The Hash values are a field body.
225
+ # If there are multiple field with same field name,
226
+ # the field values are concatenated with a comma.
227
+ attr_reader :meta
228
+
229
+ # returns a Hash that represents header fields.
230
+ # The Hash keys are downcased for canonicalization.
231
+ # The Hash value are an array of field values.
232
+ attr_reader :metas
233
+
234
+ def meta_setup_encoding # :nodoc:
235
+ charset = self.charset
236
+ enc = find_encoding(charset)
237
+ set_encoding(enc)
238
+ end
239
+
240
+ def set_encoding(enc)
241
+ if self.respond_to? :force_encoding
242
+ self.force_encoding(enc)
243
+ elsif self.respond_to? :string
244
+ self.string.force_encoding(enc)
245
+ else # Tempfile
246
+ self.set_encoding enc
247
+ end
248
+ end
249
+
250
+ def find_encoding(charset)
251
+ enc = nil
252
+ if charset
253
+ begin
254
+ enc = Encoding.find(charset)
255
+ rescue ArgumentError
256
+ end
257
+ end
258
+ enc = Encoding::ASCII_8BIT unless enc
259
+ enc
260
+ end
261
+
262
+ def meta_add_field2(name, values) # :nodoc:
263
+ name = name.downcase
264
+ @metas[name] = values
265
+ @meta[name] = values.join(', ')
266
+ meta_setup_encoding if name == 'content-type'
267
+ end
268
+
269
+ def meta_add_field(name, value) # :nodoc:
270
+ meta_add_field2(name, [value])
271
+ end
272
+
273
+ def last_modified
274
+ if (vs = @metas['last-modified'])
275
+ Time.at(`Date.parse(#{vs.join(', ')}) / 1000`).utc
276
+ else
277
+ nil
278
+ end
279
+ end
280
+
281
+ def content_type_parse # :nodoc:
282
+ content_type = @metas['content-type']
283
+ # FIXME Extract type, subtype and parameters
284
+ content_type.join(', ')
285
+ end
286
+
287
+ # returns a charset parameter in Content-Type field.
288
+ # It is downcased for canonicalization.
289
+ #
290
+ # If charset parameter is not given but a block is given,
291
+ # the block is called and its result is returned.
292
+ # It can be used to guess charset.
293
+ #
294
+ # If charset parameter and block is not given,
295
+ # nil is returned except text type in HTTP.
296
+ # In that case, "iso-8859-1" is returned as defined by RFC2616 3.7.1.
297
+ def charset
298
+ type = content_type_parse
299
+ if type && %r{\Atext/} =~ type && @base_uri && /\Ahttp\z/i =~ @base_uri.scheme
300
+ 'iso-8859-1' # RFC2616 3.7.1
301
+ else
302
+ nil
303
+ end
304
+ end
305
+
306
+ # returns "type/subtype" which is MIME Content-Type.
307
+ # It is downcased for canonicalization.
308
+ # Content-Type parameters are stripped.
309
+ def content_type
310
+ type = content_type_parse
311
+ type || 'application/octet-stream'
312
+ end
313
+ end
314
+
315
+ # Mixin for HTTP and FTP URIs.
316
+ module OpenRead
317
+ # OpenURI::OpenRead#open provides `open' for URI::HTTP and URI::FTP.
318
+ #
319
+ # OpenURI::OpenRead#open takes optional 3 arguments as:
320
+ #
321
+ # OpenURI::OpenRead#open([mode [, perm]] [, options]) [{|io| ... }]
322
+ #
323
+ # OpenURI::OpenRead#open returns an IO-like object if block is not given.
324
+ # Otherwise it yields the IO object and return the value of the block.
325
+ # The IO object is extended with OpenURI::Meta.
326
+ #
327
+ # +mode+ and +perm+ are the same as Kernel#open.
328
+ #
329
+ # However, +mode+ must be read mode because OpenURI::OpenRead#open doesn't
330
+ # support write mode (yet).
331
+ # Also +perm+ is ignored because it is meaningful only for file creation.
332
+ #
333
+ def open(*rest, &block)
334
+ OpenURI.open_uri(self, *rest, &block)
335
+ end
336
+
337
+ # OpenURI::OpenRead#read([options]) reads a content referenced by self and
338
+ # returns the content as string.
339
+ # The string is extended with OpenURI::Meta.
340
+ # The argument +options+ is same as OpenURI::OpenRead#open.
341
+ def read(options={})
342
+ self.open(options) {|f|
343
+ str = f.read
344
+ Meta.init str, f
345
+ str
346
+ }
347
+ end
348
+ end
349
+ end
@@ -2,9 +2,11 @@ class OpenStruct
2
2
  def initialize(hash = nil)
3
3
  @table = {}
4
4
 
5
- hash.each_pair {|key, value|
6
- @table[new_ostruct_member(key)] = value
7
- } if hash
5
+ if hash
6
+ hash.each_pair do |key, value|
7
+ @table[new_ostruct_member(key)] = value
8
+ end
9
+ end
8
10
  end
9
11
 
10
12
  def [](name)
@@ -21,9 +23,9 @@ class OpenStruct
21
23
  end
22
24
  if name.end_with? '='
23
25
  if args.length != 1
24
- raise ArgumentError.new "wrong number of arguments (0 for 1)"
26
+ raise ArgumentError, 'wrong number of arguments (0 for 1)'
25
27
  end
26
- @table[new_ostruct_member(name[0 .. -2])] = args[0]
28
+ @table[new_ostruct_member(name[0..-2])] = args[0]
27
29
  else
28
30
  @table[name.to_sym]
29
31
  end
@@ -32,9 +34,9 @@ class OpenStruct
32
34
  def each_pair
33
35
  return enum_for :each_pair unless block_given?
34
36
 
35
- @table.each_pair {|pair|
37
+ @table.each_pair do |pair|
36
38
  yield pair
37
- }
39
+ end
38
40
  end
39
41
 
40
42
  def ==(other)
@@ -66,9 +68,9 @@ class OpenStruct
66
68
  def hash
67
69
  @table.hash
68
70
  end
69
-
71
+
70
72
  attr_reader :table
71
-
73
+
72
74
  def delete_field(name)
73
75
  sym = name.to_sym
74
76
  begin
@@ -77,7 +79,7 @@ class OpenStruct
77
79
  end
78
80
  @table.delete sym
79
81
  end
80
-
82
+
81
83
  def new_ostruct_member(name)
82
84
  name = name.to_sym
83
85
  unless respond_to?(name)
@@ -88,11 +90,11 @@ class OpenStruct
88
90
  end
89
91
 
90
92
  `var ostruct_ids;`
91
-
93
+
92
94
  def inspect
93
95
  %x{
94
96
  var top = (ostruct_ids === undefined),
95
- ostruct_id = #{self.__id__};
97
+ ostruct_id = #{__id__};
96
98
  }
97
99
  begin
98
100
  result = "#<#{self.class}"
@@ -108,13 +110,13 @@ class OpenStruct
108
110
 
109
111
  result += ' ' if @table.any?
110
112
 
111
- result += each_pair.map {|name, value|
113
+ result += each_pair.map do |name, value|
112
114
  "#{name}=#{value.inspect}"
113
- }.join ", "
115
+ end.join ', '
114
116
 
115
- result += ">"
117
+ result += '>'
116
118
 
117
- result
119
+ result
118
120
  ensure
119
121
  %x{
120
122
  if (top) {
@@ -123,6 +125,6 @@ class OpenStruct
123
125
  }
124
126
  end
125
127
  end
126
-
128
+
127
129
  alias to_s inspect
128
130
  end
@@ -22,7 +22,7 @@ class Pathname
22
22
 
23
23
  attr_reader :path
24
24
 
25
- def == other
25
+ def ==(other)
26
26
  other.path == @path
27
27
  end
28
28
 
@@ -32,7 +32,7 @@ class Pathname
32
32
 
33
33
  def relative?
34
34
  path = @path
35
- while r = chop_basename(path)
35
+ while (r = chop_basename(path))
36
36
  path, = r
37
37
  end
38
38
  path == ''
@@ -63,7 +63,7 @@ class Pathname
63
63
  end
64
64
 
65
65
  def cleanpath
66
- `return Opal.normalize(#@path)`
66
+ `return Opal.normalize(#{@path})`
67
67
  end
68
68
 
69
69
  def to_path
@@ -75,7 +75,7 @@ class Pathname
75
75
  end
76
76
 
77
77
  def expand_path
78
- File.expand_path @path
78
+ Pathname.new(File.expand_path(@path))
79
79
  end
80
80
 
81
81
  def +(other)
@@ -87,7 +87,7 @@ class Pathname
87
87
  prefix2 = path2
88
88
  index_list2 = []
89
89
  basename_list2 = []
90
- while r2 = chop_basename(prefix2)
90
+ while (r2 = chop_basename(prefix2))
91
91
  prefix2, basename2 = r2
92
92
  index_list2.unshift prefix2.length
93
93
  basename_list2.unshift basename2
@@ -99,11 +99,11 @@ class Pathname
99
99
  index_list2.shift
100
100
  basename_list2.shift
101
101
  end
102
- break unless r1 = chop_basename(prefix1)
102
+ break unless (r1 = chop_basename(prefix1))
103
103
  prefix1, basename1 = r1
104
104
  next if basename1 == '.'
105
105
  if basename1 == '..' || basename_list2.empty? || basename_list2.first != '..'
106
- prefix1 = prefix1 + basename1
106
+ prefix1 += basename1
107
107
  break
108
108
  end
109
109
  index_list2.shift
@@ -129,16 +129,16 @@ class Pathname
129
129
  result = args.pop
130
130
  result = Pathname.new(result) unless Pathname === result
131
131
  return result if result.absolute?
132
- args.reverse_each {|arg|
132
+ args.reverse_each do |arg|
133
133
  arg = Pathname.new(arg) unless Pathname === arg
134
134
  result = arg + result
135
135
  return result if result.absolute?
136
- }
136
+ end
137
137
  self + result
138
138
  end
139
139
 
140
140
  def split
141
- [ dirname, basename ]
141
+ [dirname, basename]
142
142
  end
143
143
 
144
144
  def dirname
@@ -158,34 +158,34 @@ class Pathname
158
158
  end
159
159
 
160
160
  def <=>(other)
161
- self.path <=> other.path
161
+ path <=> other.path
162
162
  end
163
163
 
164
164
  alias eql? ==
165
165
  alias === ==
166
166
 
167
- alias :to_str :to_path
168
- alias :to_s :to_path
167
+ alias to_str to_path
168
+ alias to_s to_path
169
169
 
170
170
  SAME_PATHS = if File::FNM_SYSCASE.nonzero?
171
- # Avoid #zero? here because #casecmp can return nil.
172
- proc {|a, b| a.casecmp(b) == 0}
173
- else
174
- proc {|a, b| a == b}
175
- end
171
+ # Avoid #zero? here because #casecmp can return nil.
172
+ proc { |a, b| a.casecmp(b) == 0 }
173
+ else
174
+ proc { |a, b| a == b }
175
+ end
176
176
 
177
177
  def relative_path_from(base_directory)
178
- dest_directory = self.cleanpath.to_s
178
+ dest_directory = cleanpath.to_s
179
179
  base_directory = base_directory.cleanpath.to_s
180
180
  dest_prefix = dest_directory
181
181
  dest_names = []
182
- while r = chop_basename(dest_prefix)
182
+ while (r = chop_basename(dest_prefix))
183
183
  dest_prefix, basename = r
184
184
  dest_names.unshift basename if basename != '.'
185
185
  end
186
186
  base_prefix = base_directory
187
187
  base_names = []
188
- while r = chop_basename(base_prefix)
188
+ while (r = chop_basename(base_prefix))
189
189
  base_prefix, basename = r
190
190
  base_names.unshift basename if basename != '.'
191
191
  end
@@ -211,7 +211,7 @@ class Pathname
211
211
  end
212
212
 
213
213
  def entries
214
- Dir.entries(@path).map {|f| self.class.new(f) }
214
+ Dir.entries(@path).map { |f| self.class.new(f) }
215
215
  end
216
216
  end
217
217