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
@@ -4,9 +4,9 @@ module Kernel
4
4
  end
5
5
 
6
6
  def pp(*objs)
7
- objs.each {|obj|
7
+ objs.each do |obj|
8
8
  PP.pp(obj)
9
- }
9
+ end
10
10
  objs.size <= 1 ? objs.first : objs
11
11
  end
12
12
  module_function :pp
@@ -15,11 +15,11 @@ end
15
15
  class PP
16
16
  class << self
17
17
  if `(typeof(console) === "undefined" || typeof(console.log) === "undefined")`
18
- def pp(obj, out=$stdout, width=79)
18
+ def pp(obj, out = $stdout, width = 79)
19
19
  p(*args)
20
20
  end
21
21
  else
22
- def pp(obj, out=$stdout, width=79)
22
+ def pp(obj, out = $stdout, width = 79)
23
23
  if String === out
24
24
  out + obj.inspect + "\n"
25
25
  else
@@ -28,6 +28,6 @@ class PP
28
28
  end
29
29
  end
30
30
 
31
- alias :singleline_pp :pp
31
+ alias singleline_pp pp
32
32
  end
33
33
  end
@@ -134,7 +134,7 @@ class Promise
134
134
  end
135
135
 
136
136
  def act?
137
- @action.has_key?(:success) || @action.has_key?(:always)
137
+ @action.key?(:success) || @action.key?(:always)
138
138
  end
139
139
 
140
140
  def action
@@ -146,7 +146,7 @@ class Promise
146
146
  end
147
147
 
148
148
  def realized?
149
- !!@realized
149
+ @realized != false
150
150
  end
151
151
 
152
152
  def resolved?
@@ -159,7 +159,7 @@ class Promise
159
159
 
160
160
  def ^(promise)
161
161
  promise << self
162
- self >> promise
162
+ self >> promise
163
163
 
164
164
  promise
165
165
  end
@@ -178,7 +178,7 @@ class Promise
178
178
  elsif resolved?
179
179
  promise.resolve(@delayed ? @delayed[0] : value)
180
180
  elsif rejected?
181
- if !@action.has_key?(:failure) || Promise === (@delayed ? @delayed[0] : @error)
181
+ if !@action.key?(:failure) || Promise === (@delayed ? @delayed[0] : @error)
182
182
  promise.reject(@delayed ? @delayed[0] : error)
183
183
  elsif promise.action.include?(:always)
184
184
  promise.reject(@delayed ? @delayed[0] : error)
@@ -198,7 +198,8 @@ class Promise
198
198
  end
199
199
 
200
200
  begin
201
- if block = @action[:success] || @action[:always]
201
+ block = @action[:success] || @action[:always]
202
+ if block
202
203
  value = block.call(value)
203
204
  end
204
205
 
@@ -231,11 +232,12 @@ class Promise
231
232
  end
232
233
 
233
234
  begin
234
- if block = @action[:failure] || @action[:always]
235
+ block = @action[:failure] || @action[:always]
236
+ if block
235
237
  value = block.call(value)
236
238
  end
237
239
 
238
- if @action.has_key?(:always)
240
+ if @action.key?(:always)
239
241
  resolve!(value)
240
242
  else
241
243
  reject!(value)
@@ -326,11 +328,11 @@ class Promise
326
328
  result += " >> #{@next.inspect}"
327
329
  end
328
330
 
329
- if realized?
330
- result += ": #{(@value || @error).inspect}>"
331
- else
332
- result += ">"
333
- end
331
+ result += if realized?
332
+ ": #{(@value || @error).inspect}>"
333
+ else
334
+ '>'
335
+ end
334
336
 
335
337
  result
336
338
  end
@@ -343,7 +345,8 @@ class Promise
343
345
  current.push(promise.value)
344
346
  end
345
347
 
346
- if prev = promise.prev
348
+ prev = promise.prev
349
+ if prev
347
350
  current.concat(it(prev))
348
351
  else
349
352
  current
@@ -372,31 +375,31 @@ class Promise
372
375
 
373
376
  @wait = []
374
377
 
375
- promises.each {|promise|
378
+ promises.each do |promise|
376
379
  wait promise
377
- }
380
+ end
378
381
  end
379
382
 
380
383
  def each(&block)
381
384
  raise ArgumentError, 'no block given' unless block
382
385
 
383
- self.then {|values|
386
+ self.then do |values|
384
387
  values.each(&block)
385
- }
388
+ end
386
389
  end
387
390
 
388
391
  def collect(&block)
389
392
  raise ArgumentError, 'no block given' unless block
390
393
 
391
- self.then {|values|
394
+ self.then do |values|
392
395
  When.new(values.map(&block))
393
- }
396
+ end
394
397
  end
395
398
 
396
399
  def inject(*args, &block)
397
- self.then {|values|
400
+ self.then do |values|
398
401
  values.reduce(*args, &block)
399
- }
402
+ end
400
403
  end
401
404
 
402
405
  alias map collect
@@ -414,9 +417,9 @@ class Promise
414
417
 
415
418
  @wait << promise
416
419
 
417
- promise.always {
420
+ promise.always do
418
421
  try if @next.any?
419
- }
422
+ end
420
423
 
421
424
  self
422
425
  end
@@ -424,14 +427,15 @@ class Promise
424
427
  alias and wait
425
428
 
426
429
  def >>(*)
427
- super.tap {
430
+ super.tap do
428
431
  try
429
- }
432
+ end
430
433
  end
431
434
 
432
435
  def try
433
436
  if @wait.all?(&:realized?)
434
- if promise = @wait.find(&:rejected?)
437
+ promise = @wait.find(&:rejected?)
438
+ if promise
435
439
  reject(promise.error)
436
440
  else
437
441
  resolve(@wait.map(&:value))
@@ -0,0 +1,50 @@
1
+ # This file is not intended for real checks,
2
+ # but just to make happy libraries needing it.
3
+
4
+ RbConfig::SIZEOF = {
5
+ 'clock_t' => 8,
6
+ 'double _Complex' => 16,
7
+ 'double' => 8,
8
+ 'float _Complex' => 8,
9
+ 'float' => 4,
10
+ 'int' => 4,
11
+ 'int128_t' => 16,
12
+ 'int16_t' => 2,
13
+ 'int32_t' => 4,
14
+ 'int64_t' => 8,
15
+ 'int8_t' => 1,
16
+ 'intmax_t' => 8,
17
+ 'intptr_t' => 8,
18
+ 'int_fast16_t' => 2,
19
+ 'int_fast32_t' => 4,
20
+ 'int_fast64_t' => 8,
21
+ 'int_fast8_t' => 1,
22
+ 'int_least16_t' => 2,
23
+ 'int_least32_t' => 4,
24
+ 'int_least64_t' => 8,
25
+ 'int_least8_t' => 1,
26
+ 'long double _Complex' => 32,
27
+ 'long double' => 16,
28
+ 'long long' => 8,
29
+ 'long' => 8,
30
+ 'off_t' => 8,
31
+ 'ptrdiff_t' => 8,
32
+ 'short' => 2,
33
+ 'sig_atomic_t' => 4,
34
+ 'size_t' => 8,
35
+ 'ssize_t' => 8,
36
+ 'time_t' => 8,
37
+ 'uint128_t' => 16,
38
+ 'uint16_t' => 2,
39
+ 'uint32_t' => 4,
40
+ 'uint64_t' => 8,
41
+ 'uint8_t' => 1,
42
+ 'uintptr_t' => 8,
43
+ 'void*' => 8,
44
+ 'wchar_t' => 4,
45
+ 'wctrans_t' => 4,
46
+ 'wctype_t' => 4,
47
+ 'wint_t' => 4,
48
+ '_Bool' => 1,
49
+ '__int128' => 16,
50
+ }
@@ -1,6 +1,6 @@
1
1
  module SecureRandom
2
2
  def self.uuid
3
- "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".gsub(/[xy]/) do |ch,|
3
+ 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.gsub(/[xy]/) do |ch,|
4
4
  %x{
5
5
  var r = Math.random() * 16 | 0,
6
6
  v = ch == "x" ? r : (r & 3 | 8);
@@ -7,13 +7,13 @@ class Set
7
7
  end
8
8
 
9
9
  def initialize(enum = nil, &block)
10
- @hash = Hash.new
10
+ @hash = {}
11
11
 
12
12
  return if enum.nil?
13
13
  raise ArgumentError, 'value must be enumerable' unless Enumerable === enum
14
14
 
15
15
  if block
16
- enum.each { |item| add block.call(item) }
16
+ enum.each { |item| add yield(item) }
17
17
  else
18
18
  merge(enum)
19
19
  end
@@ -26,7 +26,7 @@ class Set
26
26
 
27
27
  def -(enum)
28
28
  unless enum.respond_to? :each
29
- raise ArgumentError, "value must be enumerable"
29
+ raise ArgumentError, 'value must be enumerable'
30
30
  end
31
31
 
32
32
  dup.subtract(enum)
@@ -38,11 +38,11 @@ class Set
38
38
  end
39
39
 
40
40
  def ==(other)
41
- if self.equal?(other)
41
+ if equal?(other)
42
42
  true
43
43
  elsif other.instance_of?(self.class)
44
44
  @hash == other.instance_variable_get(:@hash)
45
- elsif other.is_a?(Set) && self.size == other.size
45
+ elsif other.is_a?(Set) && size == other.size
46
46
  other.all? { |o| @hash.include?(o) }
47
47
  else
48
48
  false
@@ -82,13 +82,11 @@ class Set
82
82
  if include?(o)
83
83
  delete(o)
84
84
  self
85
- else
86
- nil
87
85
  end
88
86
  end
89
87
 
90
88
  def delete_if
91
- block_given? or return enum_for(__method__)
89
+ return enum_for(:delete_if) unless block_given?
92
90
  # @hash.delete_if should be faster, but using it breaks the order
93
91
  # of enumeration in subclasses.
94
92
  select { |o| yield o }.each { |o| @hash.delete(o) }
@@ -104,7 +102,7 @@ class Set
104
102
  end
105
103
 
106
104
  def each(&block)
107
- return enum_for :each unless block_given?
105
+ return enum_for(:each) unless block_given?
108
106
  @hash.each_key(&block)
109
107
  self
110
108
  end
@@ -148,46 +146,46 @@ class Set
148
146
  enum.each { |item| delete item }
149
147
  self
150
148
  end
151
-
149
+
152
150
  def |(enum)
153
151
  unless enum.respond_to? :each
154
- raise ArgumentError, "value must be enumerable"
152
+ raise ArgumentError, 'value must be enumerable'
155
153
  end
156
154
  dup.merge(enum)
157
155
  end
158
-
156
+
159
157
  def superset?(set)
160
- set.is_a?(Set) or raise ArgumentError, "value must be a set"
158
+ set.is_a?(Set) || raise(ArgumentError, 'value must be a set')
161
159
  return false if size < set.size
162
160
  set.all? { |o| include?(o) }
163
161
  end
164
-
162
+
165
163
  alias >= superset?
166
-
164
+
167
165
  def proper_superset?(set)
168
- set.is_a?(Set) or raise ArgumentError, "value must be a set"
166
+ set.is_a?(Set) || raise(ArgumentError, 'value must be a set')
169
167
  return false if size <= set.size
170
168
  set.all? { |o| include?(o) }
171
169
  end
172
-
170
+
173
171
  alias > proper_superset?
174
-
172
+
175
173
  def subset?(set)
176
- set.is_a?(Set) or raise ArgumentError, "value must be a set"
174
+ set.is_a?(Set) || raise(ArgumentError, 'value must be a set')
177
175
  return false if set.size < size
178
176
  all? { |o| set.include?(o) }
179
177
  end
180
-
178
+
181
179
  alias <= subset?
182
180
 
183
181
  def proper_subset?(set)
184
- set.is_a?(Set) or raise ArgumentError, "value must be a set"
182
+ set.is_a?(Set) || raise(ArgumentError, 'value must be a set')
185
183
  return false if set.size <= size
186
184
  all? { |o| set.include?(o) }
187
185
  end
188
-
186
+
189
187
  alias < proper_subset?
190
-
188
+
191
189
  alias + |
192
190
  alias union |
193
191
 
@@ -8,7 +8,6 @@ module Singleton
8
8
  end
9
9
 
10
10
  module SingletonClassMethods
11
-
12
11
  def clone
13
12
  Singleton.__init__(super)
14
13
  end
@@ -21,12 +20,12 @@ module Singleton
21
20
 
22
21
  class << Singleton
23
22
  def __init__(klass)
24
- klass.instance_eval {
23
+ klass.instance_eval do
25
24
  @singleton__instance__ = nil
26
- }
25
+ end
27
26
  def klass.instance
28
27
  return @singleton__instance__ if @singleton__instance__
29
- @singleton__instance__ = new()
28
+ @singleton__instance__ = new
30
29
  end
31
30
  klass
32
31
  end
@@ -96,6 +96,39 @@ class StringIO < IO
96
96
  self
97
97
  end
98
98
 
99
+ def each(separator = $/)
100
+ return enum_for :each_line unless block_given?
101
+ check_readable
102
+ chomp_lines = false
103
+ if ::Hash === separator
104
+ separator = (chomp_lines = separator[:chomp]) ? /\r?\n/ : $/
105
+ elsif separator
106
+ separator = separator.to_str
107
+ else
108
+ separator = `undefined`
109
+ end
110
+ %x{
111
+ var str = self.string, stringLength = str.length;
112
+ if (self.position < stringLength) str = str.substr(self.position);
113
+ if (separator) {
114
+ var chomped = #{`str`.chomp}, trailing = str.length !== chomped.length, splitted = chomped.split(separator);
115
+ for (var i = 0, len = splitted.length; i < len; i++) {
116
+ var line = chomp_lines ? splitted[i] : (i < len - 1 || trailing ? splitted[i] + separator : splitted[i]);
117
+ #{yield `line`};
118
+ }
119
+ } else if (separator === undefined) {
120
+ #{yield `str`};
121
+ } else {
122
+ var m, re = /(.+(?:\n\n|$))\n*/g;
123
+ while ((m = re.exec(str))) #{yield `m[1]`};
124
+ }
125
+ self.position = stringLength;
126
+ }
127
+ self
128
+ end
129
+
130
+ alias each_line each
131
+
99
132
  def write(string)
100
133
  check_writable
101
134
 
@@ -13,7 +13,7 @@ class StringScanner
13
13
  attr_reader :string
14
14
 
15
15
  def beginning_of_line?
16
- `#@pos === 0 || #@string.charAt(#@pos - 1) === "\n"`
16
+ `#{@pos} === 0 || #{@string}.charAt(#{@pos} - 1) === "\n"`
17
17
  end
18
18
 
19
19
  alias bol? beginning_of_line?
@@ -22,23 +22,23 @@ class StringScanner
22
22
  pattern = anchor(pattern)
23
23
 
24
24
  %x{
25
- var result = pattern.exec(#@working);
25
+ var result = pattern.exec(#{@working});
26
26
 
27
27
  if (result == null) {
28
- return #@matched = nil;
28
+ return #{@matched} = nil;
29
29
  }
30
30
  else if (typeof(result) === 'object') {
31
- #@prev_pos = #@pos;
32
- #@pos += result[0].length;
33
- #@working = #@working.substring(result[0].length);
34
- #@matched = result[0];
35
- #@match = result;
31
+ #{@prev_pos} = #{@pos};
32
+ #{@pos} += result[0].length;
33
+ #{@working} = #{@working}.substring(result[0].length);
34
+ #{@matched} = result[0];
35
+ #{@match} = result;
36
36
 
37
37
  return result[0];
38
38
  }
39
39
  else if (typeof(result) === 'string') {
40
- #@pos += result.length;
41
- #@working = #@working.substring(result.length);
40
+ #{@pos} += result.length;
41
+ #{@working} = #{@working}.substring(result.length);
42
42
 
43
43
  return result;
44
44
  }
@@ -52,8 +52,8 @@ class StringScanner
52
52
  pattern = anchor(pattern)
53
53
 
54
54
  %x{
55
- var pos = #@pos,
56
- working = #@working,
55
+ var pos = #{@pos},
56
+ working = #{@working},
57
57
  result;
58
58
 
59
59
  while (true) {
@@ -63,26 +63,25 @@ class StringScanner
63
63
 
64
64
  if (result == null) {
65
65
  if (working.length === 0) {
66
- return #@matched = nil;
66
+ return #{@matched} = nil;
67
67
  }
68
68
 
69
69
  continue;
70
70
  }
71
71
 
72
- #@matched = #@string.substr(#@pos, pos - #@pos - 1 + result[0].length);
73
- #@prev_pos = pos - 1;
74
- #@pos = pos;
75
- #@working = working.substr(result[0].length);
72
+ #{@matched} = #{@string}.substr(#{@pos}, pos - #{@pos} - 1 + result[0].length);
73
+ #{@prev_pos} = pos - 1;
74
+ #{@pos} = pos;
75
+ #{@working} = working.substr(result[0].length);
76
76
 
77
- return #@matched;
77
+ return #{@matched};
78
78
  }
79
79
  }
80
80
  end
81
81
 
82
-
83
82
  def [](idx)
84
83
  %x{
85
- var match = #@match;
84
+ var match = #{@match};
86
85
 
87
86
  if (idx < 0) {
88
87
  idx += match.length;
@@ -104,46 +103,46 @@ class StringScanner
104
103
  pattern = anchor(pattern)
105
104
 
106
105
  %x{
107
- var result = pattern.exec(#@working);
106
+ var result = pattern.exec(#{@working});
108
107
 
109
108
  if (result == null) {
110
- return #@matched = nil;
109
+ return #{@matched} = nil;
111
110
  }
112
111
 
113
- return #@matched = result[0];
112
+ return #{@matched} = result[0];
114
113
  }
115
114
  end
116
115
 
117
116
  def check_until(pattern)
118
117
  %x{
119
- var prev_pos = #@prev_pos,
120
- pos = #@pos;
118
+ var prev_pos = #{@prev_pos},
119
+ pos = #{@pos};
121
120
 
122
121
  var result = #{scan_until(pattern)};
123
122
 
124
123
  if (result !== nil) {
125
- #@matched = result.substr(-1);
126
- #@working = #@string.substr(pos);
124
+ #{@matched} = result.substr(-1);
125
+ #{@working} = #{@string}.substr(pos);
127
126
  }
128
127
 
129
- #@prev_pos = prev_pos;
130
- #@pos = pos;
128
+ #{@prev_pos} = prev_pos;
129
+ #{@pos} = pos;
131
130
 
132
131
  return result;
133
132
  }
134
133
  end
135
134
 
136
135
  def peek(length)
137
- `#@working.substring(0, length)`
136
+ `#{@working}.substring(0, length)`
138
137
  end
139
138
 
140
139
  def eos?
141
- `#@working.length === 0`
140
+ `#{@working}.length === 0`
142
141
  end
143
142
 
144
143
  def exist?(pattern)
145
144
  %x{
146
- var result = pattern.exec(#@working);
145
+ var result = pattern.exec(#{@working});
147
146
 
148
147
  if (result == null) {
149
148
  return nil;
@@ -161,19 +160,19 @@ class StringScanner
161
160
  pattern = anchor(pattern)
162
161
 
163
162
  %x{
164
- var result = pattern.exec(#@working);
163
+ var result = pattern.exec(#{@working});
165
164
 
166
165
  if (result == null) {
167
- return #@matched = nil;
166
+ return #{@matched} = nil;
168
167
  }
169
168
  else {
170
169
  var match_str = result[0];
171
170
  var match_len = match_str.length;
172
171
 
173
- #@matched = match_str;
174
- #@prev_pos = #@pos;
175
- #@pos += match_len;
176
- #@working = #@working.substring(match_len);
172
+ #{@matched} = match_str;
173
+ #{@prev_pos} = #{@pos};
174
+ #{@pos} += match_len;
175
+ #{@working} = #{@working}.substring(match_len);
177
176
 
178
177
  return match_len;
179
178
  }
@@ -188,7 +187,7 @@ class StringScanner
188
187
  return nil;
189
188
  }
190
189
  else {
191
- #@matched = result.substr(-1);
190
+ #{@matched} = result.substr(-1);
192
191
 
193
192
  return result.length;
194
193
  }
@@ -199,14 +198,14 @@ class StringScanner
199
198
  %x{
200
199
  var result = nil;
201
200
 
202
- if (#@pos < #@string.length) {
203
- #@prev_pos = #@pos;
204
- #@pos += 1;
205
- result = #@matched = #@working.substring(0, 1);
206
- #@working = #@working.substring(1);
201
+ if (#{@pos} < #{@string}.length) {
202
+ #{@prev_pos} = #{@pos};
203
+ #{@pos} += 1;
204
+ result = #{@matched} = #{@working}.substring(0, 1);
205
+ #{@working} = #{@working}.substring(1);
207
206
  }
208
207
  else {
209
- #@matched = nil;
208
+ #{@matched} = nil;
210
209
  }
211
210
 
212
211
  return result;
@@ -220,13 +219,13 @@ class StringScanner
220
219
  pattern = anchor(pattern)
221
220
 
222
221
  %x{
223
- var result = pattern.exec(#@working);
222
+ var result = pattern.exec(#{@working});
224
223
 
225
224
  if (result == null) {
226
225
  return nil;
227
226
  }
228
227
  else {
229
- #@prev_pos = #@pos;
228
+ #{@prev_pos} = #{@pos};
230
229
 
231
230
  return result[0].length;
232
231
  }
@@ -246,31 +245,31 @@ class StringScanner
246
245
 
247
246
  def matched_size
248
247
  %x{
249
- if (#@matched === nil) {
248
+ if (#{@matched} === nil) {
250
249
  return nil;
251
250
  }
252
251
 
253
- return #@matched.length
252
+ return #{@matched}.length
254
253
  }
255
254
  end
256
255
 
257
256
  def post_match
258
257
  %x{
259
- if (#@matched === nil) {
258
+ if (#{@matched} === nil) {
260
259
  return nil;
261
260
  }
262
261
 
263
- return #@string.substr(#@pos);
262
+ return #{@string}.substr(#{@pos});
264
263
  }
265
264
  end
266
265
 
267
266
  def pre_match
268
267
  %x{
269
- if (#@matched === nil) {
268
+ if (#{@matched} === nil) {
270
269
  return nil;
271
270
  }
272
271
 
273
- return #@string.substr(0, #@prev_pos);
272
+ return #{@string}.substr(0, #{@prev_pos});
274
273
  }
275
274
  end
276
275
 
@@ -285,7 +284,7 @@ class StringScanner
285
284
  end
286
285
 
287
286
  def rest?
288
- `#@working.length !== 0`
287
+ `#{@working}.length !== 0`
289
288
  end
290
289
 
291
290
  def rest_size
@@ -305,7 +304,8 @@ class StringScanner
305
304
  self
306
305
  end
307
306
 
308
- private
307
+ private
308
+
309
309
  def anchor(pattern)
310
310
  %x{
311
311
  var flags = pattern.toString().match(/\/([^\/]+)$/);