opal 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (734) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +19 -0
  3. data/.gitmodules +1 -1
  4. data/.jshintrc +1 -2
  5. data/.rspec +1 -2
  6. data/.travis.yml +42 -20
  7. data/.yardopts +3 -1
  8. data/CHANGELOG.md +164 -1
  9. data/Gemfile +16 -9
  10. data/HACKING.md +4 -2
  11. data/README.md +11 -11
  12. data/Rakefile +1 -1
  13. data/appveyor.yml +29 -0
  14. data/benchmark/bm_constant_lookup_big.rb +799 -0
  15. data/benchmark/bm_constant_lookup_small.rb +59 -0
  16. data/benchmark/bm_module_definition_big.rb +400 -0
  17. data/benchmark/bm_module_definition_small.rb +30 -0
  18. data/benchmark-ips/bm_case.rb +33 -0
  19. data/benchmark-ips/bm_constants_lookup.rb +13 -0
  20. data/benchmark-ips/bm_is_number.rb +29 -0
  21. data/benchmark-ips/bm_symbol_to_proc.rb +19 -0
  22. data/bin +1 -0
  23. data/docs/compiled_ruby.md +16 -14
  24. data/docs/faq.md +3 -3
  25. data/docs/headless_chrome.md +105 -0
  26. data/docs/rspec.md +4 -20
  27. data/docs/unsupported_features.md +6 -4
  28. data/examples/rack/Gemfile +1 -0
  29. data/examples/rack/Gemfile.lock +11 -7
  30. data/examples/rack/app/application.rb +14 -3
  31. data/examples/rack/app/user.rb +2 -0
  32. data/examples/rack/config.ru +1 -1
  33. data/examples/rack/index.html.erb +1 -0
  34. data/examples/sinatra/Gemfile +1 -1
  35. data/examples/sinatra/Gemfile.lock +8 -11
  36. data/examples/sinatra/app/application.rb +2 -0
  37. data/{bin → exe}/opal +4 -2
  38. data/{bin → exe}/opal-repl +23 -1
  39. data/lib/opal/ast/builder.rb +13 -0
  40. data/lib/opal/ast/node.rb +30 -0
  41. data/lib/opal/builder.rb +82 -17
  42. data/lib/opal/builder_processors.rb +9 -7
  43. data/lib/opal/cli.rb +45 -59
  44. data/lib/opal/cli_options.rb +19 -12
  45. data/lib/opal/cli_runners/applescript.rb +3 -4
  46. data/lib/opal/cli_runners/chrome.js +135 -0
  47. data/lib/opal/cli_runners/chrome.rb +100 -0
  48. data/lib/opal/cli_runners/nashorn.rb +1 -1
  49. data/lib/opal/cli_runners/node_modules/.bin/chrome-remote-interface +1 -0
  50. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/LICENSE +18 -0
  51. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/README.md +843 -0
  52. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/bin/client.js +326 -0
  53. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/chrome-remote-interface.js +11 -0
  54. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/index.js +39 -0
  55. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/api.js +84 -0
  56. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/chrome.js +289 -0
  57. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/defaults.js +4 -0
  58. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/devtools.js +245 -0
  59. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/external-request.js +23 -0
  60. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/protocol.json +13303 -0
  61. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/websocket-wrapper.js +32 -0
  62. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/package.json +128 -0
  63. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/webpack.config.js +55 -0
  64. data/lib/opal/cli_runners/node_modules/commander/Readme.md +195 -0
  65. data/lib/opal/cli_runners/node_modules/commander/index.js +851 -0
  66. data/lib/opal/cli_runners/node_modules/commander/package.json +92 -0
  67. data/{stdlib/nodejs/node_modules/js-yaml/node_modules/argparse → lib/opal/cli_runners/node_modules/ultron}/LICENSE +7 -6
  68. data/lib/opal/cli_runners/node_modules/ultron/index.js +138 -0
  69. data/lib/opal/cli_runners/node_modules/ultron/package.json +112 -0
  70. data/{stdlib/nodejs/node_modules/js-yaml → lib/opal/cli_runners/node_modules/ws}/LICENSE +6 -6
  71. data/lib/opal/cli_runners/node_modules/ws/README.md +259 -0
  72. data/lib/opal/cli_runners/node_modules/ws/SECURITY.md +33 -0
  73. data/lib/opal/cli_runners/node_modules/ws/index.js +15 -0
  74. data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.fallback.js +56 -0
  75. data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.js +15 -0
  76. data/lib/opal/cli_runners/node_modules/ws/lib/ErrorCodes.js +28 -0
  77. data/lib/opal/cli_runners/node_modules/ws/lib/EventTarget.js +158 -0
  78. data/lib/opal/cli_runners/node_modules/ws/lib/Extensions.js +69 -0
  79. data/lib/opal/cli_runners/node_modules/ws/lib/PerMessageDeflate.js +339 -0
  80. data/lib/opal/cli_runners/node_modules/ws/lib/Receiver.js +520 -0
  81. data/lib/opal/cli_runners/node_modules/ws/lib/Sender.js +438 -0
  82. data/lib/opal/cli_runners/node_modules/ws/lib/Validation.fallback.js +9 -0
  83. data/lib/opal/cli_runners/node_modules/ws/lib/Validation.js +17 -0
  84. data/lib/opal/cli_runners/node_modules/ws/lib/WebSocket.js +705 -0
  85. data/lib/opal/cli_runners/node_modules/ws/lib/WebSocketServer.js +336 -0
  86. data/lib/opal/cli_runners/node_modules/ws/package.json +122 -0
  87. data/lib/opal/cli_runners/nodejs.rb +4 -2
  88. data/lib/opal/cli_runners/package.json +5 -0
  89. data/lib/opal/cli_runners/server.rb +1 -1
  90. data/lib/opal/cli_runners.rb +2 -1
  91. data/lib/opal/compiler.rb +136 -95
  92. data/lib/opal/config.rb +114 -36
  93. data/lib/opal/deprecations.rb +18 -0
  94. data/lib/opal/eof_content.rb +36 -0
  95. data/lib/opal/erb.rb +1 -0
  96. data/lib/opal/errors.rb +1 -0
  97. data/lib/opal/fragment.rb +1 -0
  98. data/lib/opal/nodes/arglist.rb +2 -1
  99. data/lib/opal/nodes/args/initialize_kwargs.rb +1 -0
  100. data/lib/opal/nodes/args/kwarg.rb +9 -7
  101. data/lib/opal/nodes/args/kwoptarg.rb +13 -8
  102. data/lib/opal/nodes/args/kwrestarg.rb +5 -5
  103. data/lib/opal/nodes/args/mlhsarg.rb +3 -2
  104. data/lib/opal/nodes/args/normarg.rb +6 -7
  105. data/lib/opal/nodes/args/optarg.rb +5 -7
  106. data/lib/opal/nodes/args/post_args.rb +6 -5
  107. data/lib/opal/nodes/args/post_kwargs.rb +1 -0
  108. data/lib/opal/nodes/args/restarg.rb +7 -7
  109. data/lib/opal/nodes/array.rb +1 -0
  110. data/lib/opal/nodes/base.rb +24 -3
  111. data/lib/opal/nodes/call.rb +168 -155
  112. data/lib/opal/nodes/call_special.rb +37 -214
  113. data/lib/opal/nodes/case.rb +36 -22
  114. data/lib/opal/nodes/class.rb +4 -3
  115. data/lib/opal/nodes/constants.rb +28 -48
  116. data/lib/opal/nodes/csend.rb +25 -0
  117. data/lib/opal/nodes/def.rb +57 -17
  118. data/lib/opal/nodes/defined.rb +170 -60
  119. data/lib/opal/nodes/definitions.rb +42 -133
  120. data/lib/opal/nodes/defs.rb +29 -0
  121. data/lib/opal/nodes/hash.rb +12 -35
  122. data/lib/opal/nodes/helpers.rb +31 -62
  123. data/lib/opal/nodes/if.rb +21 -32
  124. data/lib/opal/nodes/inline_args.rb +12 -13
  125. data/lib/opal/nodes/iter.rb +61 -36
  126. data/lib/opal/nodes/literal.rb +206 -114
  127. data/lib/opal/nodes/logic.rb +39 -57
  128. data/lib/opal/nodes/masgn.rb +20 -18
  129. data/lib/opal/nodes/module.rb +10 -11
  130. data/lib/opal/nodes/node_with_args.rb +15 -18
  131. data/lib/opal/nodes/rescue.rb +37 -70
  132. data/lib/opal/nodes/runtime_helpers.rb +8 -3
  133. data/lib/opal/nodes/scope.rb +10 -5
  134. data/lib/opal/nodes/singleton_class.rb +4 -3
  135. data/lib/opal/nodes/super.rb +112 -88
  136. data/lib/opal/nodes/top.rb +7 -2
  137. data/lib/opal/nodes/variables.rb +57 -35
  138. data/lib/opal/nodes/while.rb +11 -1
  139. data/lib/opal/nodes/yield.rb +1 -17
  140. data/lib/opal/nodes.rb +3 -1
  141. data/lib/opal/parser.rb +29 -766
  142. data/lib/opal/path_reader.rb +22 -5
  143. data/lib/opal/paths.rb +10 -4
  144. data/lib/opal/regexp_anchors.rb +1 -0
  145. data/lib/opal/rewriter.rb +64 -0
  146. data/lib/opal/rewriters/base.rb +63 -0
  147. data/lib/opal/rewriters/binary_operator_assignment.rb +141 -0
  148. data/lib/opal/rewriters/block_to_iter.rb +17 -0
  149. data/lib/opal/rewriters/break_finder.rb +34 -0
  150. data/lib/opal/rewriters/dot_js_syntax.rb +60 -0
  151. data/lib/opal/rewriters/explicit_writer_return.rb +58 -0
  152. data/lib/opal/rewriters/for_rewriter.rb +93 -0
  153. data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +58 -0
  154. data/lib/opal/rewriters/js_reserved_words.rb +108 -0
  155. data/lib/opal/rewriters/logical_operator_assignment.rb +154 -0
  156. data/lib/opal/rewriters/opal_engine_check.rb +42 -0
  157. data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +67 -0
  158. data/lib/opal/server.rb +4 -0
  159. data/lib/opal/simple_server.rb +101 -0
  160. data/lib/opal/source_map.rb +1 -1
  161. data/lib/opal/util.rb +6 -6
  162. data/lib/opal/version.rb +2 -1
  163. data/lib/opal.rb +7 -1
  164. data/lib/tilt/opal.rb +1 -0
  165. data/opal/README.md +1 -1
  166. data/opal/corelib/array.rb +184 -107
  167. data/opal/corelib/basic_object.rb +6 -6
  168. data/opal/corelib/boolean.rb +11 -3
  169. data/opal/corelib/class.rb +14 -11
  170. data/opal/corelib/comparable.rb +16 -0
  171. data/opal/corelib/complex.rb +5 -1
  172. data/opal/corelib/constants.rb +3 -3
  173. data/opal/corelib/enumerable.rb +176 -11
  174. data/opal/corelib/error.rb +35 -17
  175. data/opal/corelib/file.rb +114 -176
  176. data/opal/corelib/hash.rb +226 -13
  177. data/opal/corelib/helpers.rb +12 -15
  178. data/opal/corelib/io.rb +3 -2
  179. data/opal/corelib/kernel.rb +68 -32
  180. data/opal/corelib/marshal/read_buffer.rb +288 -150
  181. data/opal/corelib/marshal/write_buffer.rb +27 -2
  182. data/opal/corelib/method.rb +33 -13
  183. data/opal/corelib/module.rb +134 -82
  184. data/opal/corelib/nil.rb +11 -3
  185. data/opal/corelib/number.rb +220 -34
  186. data/opal/corelib/numeric.rb +3 -11
  187. data/opal/corelib/process.rb +44 -4
  188. data/opal/corelib/random/seedrandom.js.rb +15 -0
  189. data/opal/corelib/random.rb +117 -0
  190. data/opal/corelib/range.rb +147 -24
  191. data/opal/corelib/regexp.rb +82 -13
  192. data/opal/corelib/runtime.js +623 -397
  193. data/opal/corelib/string/encoding.rb +67 -31
  194. data/opal/corelib/string/inheritance.rb +1 -1
  195. data/opal/corelib/string.rb +40 -9
  196. data/opal/corelib/struct.rb +18 -3
  197. data/opal/corelib/time.rb +3 -3
  198. data/opal/corelib/variables.rb +1 -1
  199. data/opal/opal.rb +1 -0
  200. data/opal.gemspec +32 -29
  201. data/stdlib/base64.rb +4 -2
  202. data/stdlib/bigdecimal/bignumber.js.rb +1 -1
  203. data/stdlib/buffer/array.rb +4 -2
  204. data/stdlib/date.rb +64 -31
  205. data/stdlib/headless_chrome.rb +11 -0
  206. data/stdlib/json.rb +16 -4
  207. data/stdlib/nashorn/file.rb +15 -0
  208. data/stdlib/native.rb +21 -12
  209. data/stdlib/nodejs/dir.rb +1 -1
  210. data/stdlib/nodejs/file.rb +77 -23
  211. data/stdlib/nodejs/io.rb +30 -1
  212. data/stdlib/nodejs/{node_modules/js-yaml/dist/js-yaml.js → js-yaml-3-6-1.js} +815 -626
  213. data/stdlib/nodejs/kernel.rb +3 -1
  214. data/stdlib/nodejs/package.json +0 -1
  215. data/stdlib/nodejs/stacktrace.rb +179 -0
  216. data/stdlib/nodejs/yaml.rb +2 -1
  217. data/stdlib/opal/platform.rb +6 -14
  218. data/stdlib/opal-builder.rb +1 -0
  219. data/stdlib/opal-platform.rb +15 -0
  220. data/stdlib/pathname.rb +1 -1
  221. data/stdlib/rbconfig.rb +1 -1
  222. data/stdlib/securerandom.rb +1 -1
  223. data/stdlib/strscan.rb +15 -1
  224. data/stdlib/yaml.rb +1 -1
  225. data/tasks/benchmarking.rake +9 -0
  226. data/tasks/building.rake +24 -20
  227. data/tasks/linting.rake +24 -13
  228. data/tasks/testing/mspec_special_calls.rb +44 -15
  229. data/tasks/testing/opal_rspec_smoketest.Gemfile +6 -0
  230. data/tasks/testing.rake +351 -202
  231. metadata +135 -915
  232. data/lib/opal/cli_runners/phantom.js +0 -70
  233. data/lib/opal/cli_runners/phantomjs.rb +0 -28
  234. data/lib/opal/hike_path_finder.rb +0 -18
  235. data/lib/opal/nodes/for.rb +0 -48
  236. data/lib/opal/parser/grammar.rb +0 -6157
  237. data/lib/opal/parser/grammar.y +0 -2011
  238. data/lib/opal/parser/keywords.rb +0 -66
  239. data/lib/opal/parser/lexer.rb +0 -1352
  240. data/lib/opal/parser/parser_scope.rb +0 -28
  241. data/lib/opal/parser/sexp.rb +0 -90
  242. data/lib/opal/sprockets/environment.rb +0 -23
  243. data/lib/opal/sprockets/erb.rb +0 -23
  244. data/lib/opal/sprockets/path_reader.rb +0 -36
  245. data/lib/opal/sprockets/processor.rb +0 -145
  246. data/lib/opal/sprockets/server.rb +0 -133
  247. data/lib/opal/sprockets/source_map_header_patch.rb +0 -41
  248. data/lib/opal/sprockets/source_map_server.rb +0 -115
  249. data/lib/opal/sprockets.rb +0 -91
  250. data/spec/README.md +0 -10
  251. data/spec/filters/bugs/array.rb +0 -12
  252. data/spec/filters/bugs/basicobject.rb +0 -16
  253. data/spec/filters/bugs/bigdecimal.rb +0 -160
  254. data/spec/filters/bugs/class.rb +0 -10
  255. data/spec/filters/bugs/compiler_opal.rb +0 -5
  256. data/spec/filters/bugs/complex.rb +0 -3
  257. data/spec/filters/bugs/date.rb +0 -94
  258. data/spec/filters/bugs/enumerable.rb +0 -50
  259. data/spec/filters/bugs/enumerator.rb +0 -42
  260. data/spec/filters/bugs/exception.rb +0 -58
  261. data/spec/filters/bugs/float.rb +0 -33
  262. data/spec/filters/bugs/hash.rb +0 -11
  263. data/spec/filters/bugs/inheritance.rb +0 -5
  264. data/spec/filters/bugs/integer.rb +0 -28
  265. data/spec/filters/bugs/kernel.rb +0 -297
  266. data/spec/filters/bugs/language.rb +0 -275
  267. data/spec/filters/bugs/language_opal.rb +0 -88
  268. data/spec/filters/bugs/marshal.rb +0 -43
  269. data/spec/filters/bugs/method.rb +0 -84
  270. data/spec/filters/bugs/module.rb +0 -196
  271. data/spec/filters/bugs/numeric.rb +0 -127
  272. data/spec/filters/bugs/pathname.rb +0 -5
  273. data/spec/filters/bugs/proc.rb +0 -36
  274. data/spec/filters/bugs/range.rb +0 -144
  275. data/spec/filters/bugs/rational.rb +0 -4
  276. data/spec/filters/bugs/regexp.rb +0 -196
  277. data/spec/filters/bugs/set.rb +0 -42
  278. data/spec/filters/bugs/singleton.rb +0 -6
  279. data/spec/filters/bugs/string.rb +0 -101
  280. data/spec/filters/bugs/stringscanner.rb +0 -79
  281. data/spec/filters/bugs/struct.rb +0 -4
  282. data/spec/filters/bugs/time.rb +0 -29
  283. data/spec/filters/bugs/unboundmethod.rb +0 -27
  284. data/spec/filters/unsupported/array.rb +0 -163
  285. data/spec/filters/unsupported/basicobject.rb +0 -14
  286. data/spec/filters/unsupported/bignum.rb +0 -52
  287. data/spec/filters/unsupported/class.rb +0 -4
  288. data/spec/filters/unsupported/delegator.rb +0 -5
  289. data/spec/filters/unsupported/enumerable.rb +0 -11
  290. data/spec/filters/unsupported/enumerator.rb +0 -13
  291. data/spec/filters/unsupported/fixnum.rb +0 -14
  292. data/spec/filters/unsupported/float.rb +0 -43
  293. data/spec/filters/unsupported/freeze.rb +0 -53
  294. data/spec/filters/unsupported/hash.rb +0 -51
  295. data/spec/filters/unsupported/integer.rb +0 -3
  296. data/spec/filters/unsupported/kernel.rb +0 -31
  297. data/spec/filters/unsupported/language.rb +0 -17
  298. data/spec/filters/unsupported/marshal.rb +0 -46
  299. data/spec/filters/unsupported/matchdata.rb +0 -30
  300. data/spec/filters/unsupported/math.rb +0 -3
  301. data/spec/filters/unsupported/module.rb +0 -8
  302. data/spec/filters/unsupported/pathname.rb +0 -3
  303. data/spec/filters/unsupported/privacy.rb +0 -147
  304. data/spec/filters/unsupported/proc.rb +0 -3
  305. data/spec/filters/unsupported/regexp.rb +0 -59
  306. data/spec/filters/unsupported/set.rb +0 -4
  307. data/spec/filters/unsupported/singleton.rb +0 -6
  308. data/spec/filters/unsupported/string.rb +0 -537
  309. data/spec/filters/unsupported/struct.rb +0 -6
  310. data/spec/filters/unsupported/symbol.rb +0 -19
  311. data/spec/filters/unsupported/taint.rb +0 -15
  312. data/spec/filters/unsupported/thread.rb +0 -7
  313. data/spec/filters/unsupported/time.rb +0 -202
  314. data/spec/lib/builder_processors_spec.rb +0 -27
  315. data/spec/lib/builder_spec.rb +0 -72
  316. data/spec/lib/cli_runners/phantomjs_spec.rb +0 -39
  317. data/spec/lib/cli_spec.rb +0 -211
  318. data/spec/lib/compiler/call_spec.rb +0 -700
  319. data/spec/lib/compiler/pre_processed_conditionals_spec.rb +0 -87
  320. data/spec/lib/compiler_spec.rb +0 -285
  321. data/spec/lib/config_spec.rb +0 -13
  322. data/spec/lib/dependency_resolver_spec.rb +0 -40
  323. data/spec/lib/fixtures/complex_sprockets.js.rb.erb +0 -4
  324. data/spec/lib/fixtures/file_with_directives.js +0 -2
  325. data/spec/lib/fixtures/jst_file.js.jst +0 -1
  326. data/spec/lib/fixtures/no_requires.rb +0 -1
  327. data/spec/lib/fixtures/opal_file.rb +0 -2
  328. data/spec/lib/fixtures/require_tree_test.rb +0 -3
  329. data/spec/lib/fixtures/required_file.js +0 -1
  330. data/spec/lib/fixtures/required_tree_test/required_file1.rb +0 -1
  331. data/spec/lib/fixtures/required_tree_test/required_file2.rb +0 -1
  332. data/spec/lib/fixtures/requires.rb +0 -7
  333. data/spec/lib/fixtures/source_map/subfolder/other_file.rb +0 -1
  334. data/spec/lib/fixtures/source_map.rb +0 -1
  335. data/spec/lib/fixtures/sprockets_file.js.rb +0 -3
  336. data/spec/lib/fixtures/sprockets_require_tree_test.rb +0 -3
  337. data/spec/lib/hike_path_finder_spec.rb +0 -23
  338. data/spec/lib/lexer_spec.rb +0 -110
  339. data/spec/lib/parser/alias_spec.rb +0 -26
  340. data/spec/lib/parser/and_spec.rb +0 -13
  341. data/spec/lib/parser/aref_spec.rb +0 -10
  342. data/spec/lib/parser/attrasgn_spec.rb +0 -28
  343. data/spec/lib/parser/begin_spec.rb +0 -42
  344. data/spec/lib/parser/block_spec.rb +0 -12
  345. data/spec/lib/parser/break_spec.rb +0 -17
  346. data/spec/lib/parser/call_spec.rb +0 -201
  347. data/spec/lib/parser/class_spec.rb +0 -35
  348. data/spec/lib/parser/comments_spec.rb +0 -11
  349. data/spec/lib/parser/def_spec.rb +0 -109
  350. data/spec/lib/parser/if_spec.rb +0 -26
  351. data/spec/lib/parser/iter_spec.rb +0 -59
  352. data/spec/lib/parser/lambda_spec.rb +0 -219
  353. data/spec/lib/parser/literal_spec.rb +0 -118
  354. data/spec/lib/parser/masgn_spec.rb +0 -37
  355. data/spec/lib/parser/module_spec.rb +0 -27
  356. data/spec/lib/parser/not_spec.rb +0 -21
  357. data/spec/lib/parser/op_asgn1_spec.rb +0 -23
  358. data/spec/lib/parser/op_asgn2_spec.rb +0 -23
  359. data/spec/lib/parser/op_asgn_spec.rb +0 -17
  360. data/spec/lib/parser/or_spec.rb +0 -13
  361. data/spec/lib/parser/return_spec.rb +0 -22
  362. data/spec/lib/parser/sclass_spec.rb +0 -21
  363. data/spec/lib/parser/string_spec.rb +0 -286
  364. data/spec/lib/parser/super_spec.rb +0 -20
  365. data/spec/lib/parser/unary_spec.rb +0 -52
  366. data/spec/lib/parser/undef_spec.rb +0 -19
  367. data/spec/lib/parser/unless_spec.rb +0 -13
  368. data/spec/lib/parser/variables_spec.rb +0 -116
  369. data/spec/lib/parser/while_spec.rb +0 -15
  370. data/spec/lib/parser/yield_spec.rb +0 -20
  371. data/spec/lib/path_reader_spec.rb +0 -36
  372. data/spec/lib/paths_spec.rb +0 -18
  373. data/spec/lib/shared/path_finder_shared.rb +0 -19
  374. data/spec/lib/shared/path_reader_shared.rb +0 -31
  375. data/spec/lib/spec_helper.rb +0 -16
  376. data/spec/lib/sprockets/erb_spec.rb +0 -38
  377. data/spec/lib/sprockets/path_reader_spec.rb +0 -41
  378. data/spec/lib/sprockets/processor_spec.rb +0 -79
  379. data/spec/lib/sprockets/server_spec.rb +0 -102
  380. data/spec/lib/sprockets_spec.rb +0 -32
  381. data/spec/lib/tilt/opal_spec.rb +0 -37
  382. data/spec/mspec-opal/formatters.rb +0 -188
  383. data/spec/mspec-opal/runner.rb +0 -193
  384. data/spec/opal/compiler/irb_spec.rb +0 -44
  385. data/spec/opal/core/arity_spec.rb +0 -142
  386. data/spec/opal/core/array/intersection_spec.rb +0 -38
  387. data/spec/opal/core/array/minus_spec.rb +0 -38
  388. data/spec/opal/core/array/select_spec.rb +0 -14
  389. data/spec/opal/core/array/set_range_to_array_spec.rb +0 -7
  390. data/spec/opal/core/array/union_spec.rb +0 -38
  391. data/spec/opal/core/array/uniq_spec.rb +0 -49
  392. data/spec/opal/core/date_spec.rb +0 -177
  393. data/spec/opal/core/enumerable/all_break_spec.rb +0 -5
  394. data/spec/opal/core/enumerable/any_break_spec.rb +0 -5
  395. data/spec/opal/core/enumerable/collect_break_spec.rb +0 -13
  396. data/spec/opal/core/enumerable/count_break_spec.rb +0 -5
  397. data/spec/opal/core/enumerable/detect_break_spec.rb +0 -5
  398. data/spec/opal/core/enumerable/drop_while_break_spec.rb +0 -5
  399. data/spec/opal/core/enumerable/each_slice_break.rb +0 -6
  400. data/spec/opal/core/enumerable/each_with_index_break_spec.rb +0 -5
  401. data/spec/opal/core/enumerable/each_with_object_break_spec.rb +0 -5
  402. data/spec/opal/core/enumerable/find_all_break_spec.rb +0 -5
  403. data/spec/opal/core/enumerable/find_index_break_spec.rb +0 -5
  404. data/spec/opal/core/enumerable/grep_break_spec.rb +0 -5
  405. data/spec/opal/core/enumerable/max_break_spec.rb +0 -5
  406. data/spec/opal/core/enumerable/max_by_break_spec.rb +0 -5
  407. data/spec/opal/core/enumerable/min_break_spec.rb +0 -5
  408. data/spec/opal/core/enumerable/min_by_break_spec.rb +0 -5
  409. data/spec/opal/core/enumerable/none_break_spec.rb +0 -5
  410. data/spec/opal/core/enumerable/one_break_spec.rb +0 -5
  411. data/spec/opal/core/enumerable/reduce_break_spec.rb +0 -5
  412. data/spec/opal/core/enumerable/take_while_break_spec.rb +0 -5
  413. data/spec/opal/core/enumerator/with_index_spec.rb +0 -6
  414. data/spec/opal/core/exception_spec.rb +0 -20
  415. data/spec/opal/core/fixtures/class.rb +0 -124
  416. data/spec/opal/core/fixtures/class_variables.rb +0 -0
  417. data/spec/opal/core/fixtures/constants.rb +0 -33
  418. data/spec/opal/core/fixtures/require_tree_files/file 1.rb +0 -1
  419. data/spec/opal/core/fixtures/require_tree_files/file 2.rb +0 -1
  420. data/spec/opal/core/fixtures/require_tree_files/file 3.rb +0 -1
  421. data/spec/opal/core/fixtures/require_tree_files/file 4.rb +0 -1
  422. data/spec/opal/core/fixtures/require_tree_files/file 5.rb +0 -1
  423. data/spec/opal/core/fixtures/require_tree_files/nested/nested 1.rb +0 -1
  424. data/spec/opal/core/fixtures/require_tree_files/nested/nested 2.rb +0 -1
  425. data/spec/opal/core/fixtures/require_tree_files/other/other 1.rb +0 -1
  426. data/spec/opal/core/fixtures/require_tree_with_dot/file 1.rb +0 -1
  427. data/spec/opal/core/fixtures/require_tree_with_dot/file 2.rb +0 -1
  428. data/spec/opal/core/fixtures/require_tree_with_dot/file 3.rb +0 -1
  429. data/spec/opal/core/fixtures/require_tree_with_dot/index.rb +0 -3
  430. data/spec/opal/core/hash/has_value_spec.rb +0 -13
  431. data/spec/opal/core/hash/internals_spec.rb +0 -332
  432. data/spec/opal/core/helpers_spec.rb +0 -14
  433. data/spec/opal/core/kernel/Array_spec.rb +0 -10
  434. data/spec/opal/core/kernel/at_exit_spec.rb +0 -70
  435. data/spec/opal/core/kernel/block_given_spec.rb +0 -30
  436. data/spec/opal/core/kernel/class_spec.rb +0 -6
  437. data/spec/opal/core/kernel/define_singleton_method_spec.rb +0 -21
  438. data/spec/opal/core/kernel/equal_value_spec.rb +0 -12
  439. data/spec/opal/core/kernel/extend_spec.rb +0 -21
  440. data/spec/opal/core/kernel/format_spec.rb +0 -122
  441. data/spec/opal/core/kernel/freeze_spec.rb +0 -15
  442. data/spec/opal/core/kernel/instance_eval_spec.rb +0 -28
  443. data/spec/opal/core/kernel/instance_variable_defined_spec.rb +0 -15
  444. data/spec/opal/core/kernel/instance_variable_get_spec.rb +0 -14
  445. data/spec/opal/core/kernel/instance_variable_set_spec.rb +0 -10
  446. data/spec/opal/core/kernel/instance_variables_spec.rb +0 -110
  447. data/spec/opal/core/kernel/loop_spec.rb +0 -23
  448. data/spec/opal/core/kernel/match_spec.rb +0 -5
  449. data/spec/opal/core/kernel/method_spec.rb +0 -31
  450. data/spec/opal/core/kernel/methods_spec.rb +0 -25
  451. data/spec/opal/core/kernel/nil_spec.rb +0 -7
  452. data/spec/opal/core/kernel/p_spec.rb +0 -15
  453. data/spec/opal/core/kernel/printf_spec.rb +0 -11
  454. data/spec/opal/core/kernel/proc_spec.rb +0 -13
  455. data/spec/opal/core/kernel/raise_spec.rb +0 -13
  456. data/spec/opal/core/kernel/rand_spec.rb +0 -23
  457. data/spec/opal/core/kernel/require_tree_spec.rb +0 -18
  458. data/spec/opal/core/kernel/respond_to_spec.rb +0 -41
  459. data/spec/opal/core/kernel/send_spec.rb +0 -56
  460. data/spec/opal/core/kernel/sprintf_spec.rb +0 -5
  461. data/spec/opal/core/language/arguments/mlhs_arg_spec.rb +0 -19
  462. data/spec/opal/core/language/block_spec.rb +0 -538
  463. data/spec/opal/core/language/class_spec.rb +0 -55
  464. data/spec/opal/core/language/equal_spec.rb +0 -8
  465. data/spec/opal/core/language/fixtures/array.rb +0 -11
  466. data/spec/opal/core/language/fixtures/block.rb +0 -57
  467. data/spec/opal/core/language/fixtures/break.rb +0 -240
  468. data/spec/opal/core/language/fixtures/ensure.rb +0 -72
  469. data/spec/opal/core/language/fixtures/literal_lambda.rb +0 -7
  470. data/spec/opal/core/language/fixtures/metaclass.rb +0 -33
  471. data/spec/opal/core/language/fixtures/module.rb +0 -24
  472. data/spec/opal/core/language/fixtures/next.rb +0 -128
  473. data/spec/opal/core/language/fixtures/return.rb +0 -118
  474. data/spec/opal/core/language/fixtures/send.rb +0 -111
  475. data/spec/opal/core/language/fixtures/send_1.9.rb +0 -22
  476. data/spec/opal/core/language/fixtures/super.rb +0 -308
  477. data/spec/opal/core/language/fixtures/variables.rb +0 -58
  478. data/spec/opal/core/language/fixtures/yield.rb +0 -28
  479. data/spec/opal/core/language/heredoc_spec.rb +0 -42
  480. data/spec/opal/core/language/keyword_arguments_spec.rb +0 -11
  481. data/spec/opal/core/language/predefined_spec.rb +0 -138
  482. data/spec/opal/core/language/proc_spec.rb +0 -263
  483. data/spec/opal/core/language/regexp_spec.rb +0 -20
  484. data/spec/opal/core/language/rescue_spec.rb +0 -18
  485. data/spec/opal/core/language/send_spec.rb +0 -230
  486. data/spec/opal/core/language/string_spec.rb +0 -44
  487. data/spec/opal/core/language/ternary_operator_spec.rb +0 -20
  488. data/spec/opal/core/language/variables_spec.rb +0 -1366
  489. data/spec/opal/core/language/versions/array_1.9.rb +0 -39
  490. data/spec/opal/core/language/versions/block_1.9.rb +0 -0
  491. data/spec/opal/core/language/versions/break_1.9.rb +0 -0
  492. data/spec/opal/core/language/versions/case_1.9.rb +0 -20
  493. data/spec/opal/core/language/versions/def_2_0_spec.rb +0 -62
  494. data/spec/opal/core/language/versions/hash_1_9_spec.rb +0 -23
  495. data/spec/opal/core/language/versions/literal_lambda_1.9.rb +0 -143
  496. data/spec/opal/core/language/versions/not_1.9.rb +0 -22
  497. data/spec/opal/core/language/versions/send_1.9.rb +0 -241
  498. data/spec/opal/core/language/versions/symbol_1.9.rb +0 -15
  499. data/spec/opal/core/language/versions/variables_1.9.rb +0 -8
  500. data/spec/opal/core/language_spec.rb +0 -45
  501. data/spec/opal/core/marshal/dump_spec.rb +0 -53
  502. data/spec/opal/core/marshal/load_spec.rb +0 -7
  503. data/spec/opal/core/method/to_proc_spec.rb +0 -28
  504. data/spec/opal/core/module/alias_method_spec.rb +0 -28
  505. data/spec/opal/core/module/ancestors_spec.rb +0 -11
  506. data/spec/opal/core/module/append_features_spec.rb +0 -14
  507. data/spec/opal/core/module/attr_accessor_spec.rb +0 -26
  508. data/spec/opal/core/module/const_defined_spec.rb +0 -84
  509. data/spec/opal/core/module/const_get_spec.rb +0 -85
  510. data/spec/opal/core/module/const_missing_spec.rb +0 -17
  511. data/spec/opal/core/module/const_set_spec.rb +0 -64
  512. data/spec/opal/core/module/constants_spec.rb +0 -49
  513. data/spec/opal/core/module/fixtures/classes.rb +0 -444
  514. data/spec/opal/core/module/method_defined_spec.rb +0 -48
  515. data/spec/opal/core/module/method_lookup_spec.rb +0 -13
  516. data/spec/opal/core/module/module_function_spec.rb +0 -25
  517. data/spec/opal/core/module/name_spec.rb +0 -41
  518. data/spec/opal/core/module/public_method_defined_spec.rb +0 -18
  519. data/spec/opal/core/module/remove_const_spec.rb +0 -22
  520. data/spec/opal/core/module/undef_method_spec.rb +0 -66
  521. data/spec/opal/core/numeric/bit_and_spec.rb +0 -7
  522. data/spec/opal/core/numeric/bit_or_spec.rb +0 -8
  523. data/spec/opal/core/numeric/bit_xor_spec.rb +0 -6
  524. data/spec/opal/core/numeric/ceil_spec.rb +0 -8
  525. data/spec/opal/core/numeric/chr_spec.rb +0 -8
  526. data/spec/opal/core/numeric/comparison_spec.rb +0 -24
  527. data/spec/opal/core/numeric/complement_spec.rb +0 -8
  528. data/spec/opal/core/numeric/divide_spec.rb +0 -10
  529. data/spec/opal/core/numeric/eql_spec.rb +0 -9
  530. data/spec/opal/core/numeric/exponent_spec.rb +0 -33
  531. data/spec/opal/core/numeric/floor_spec.rb +0 -8
  532. data/spec/opal/core/numeric/gt_spec.rb +0 -11
  533. data/spec/opal/core/numeric/gte_spec.rb +0 -12
  534. data/spec/opal/core/numeric/integer_spec.rb +0 -9
  535. data/spec/opal/core/numeric/left_shift_spec.rb +0 -21
  536. data/spec/opal/core/numeric/lt_spec.rb +0 -11
  537. data/spec/opal/core/numeric/lte_spec.rb +0 -12
  538. data/spec/opal/core/numeric/minus_spec.rb +0 -8
  539. data/spec/opal/core/numeric/modulo_spec.rb +0 -19
  540. data/spec/opal/core/numeric/multiply_spec.rb +0 -9
  541. data/spec/opal/core/numeric/next_spec.rb +0 -9
  542. data/spec/opal/core/numeric/ord_spec.rb +0 -9
  543. data/spec/opal/core/numeric/plus_spec.rb +0 -8
  544. data/spec/opal/core/numeric/pred_spec.rb +0 -7
  545. data/spec/opal/core/numeric/right_shift_spec.rb +0 -25
  546. data/spec/opal/core/numeric/step_spec.rb +0 -11
  547. data/spec/opal/core/numeric/succ_spec.rb +0 -9
  548. data/spec/opal/core/numeric/times_spec.rb +0 -36
  549. data/spec/opal/core/numeric/to_f_spec.rb +0 -7
  550. data/spec/opal/core/numeric/to_i_spec.rb +0 -7
  551. data/spec/opal/core/numeric/to_json_spec.rb +0 -8
  552. data/spec/opal/core/numeric/to_s_spec.rb +0 -26
  553. data/spec/opal/core/numeric/uminus_spec.rb +0 -9
  554. data/spec/opal/core/numeric/upto_spec.rb +0 -19
  555. data/spec/opal/core/numeric/zero_spec.rb +0 -7
  556. data/spec/opal/core/object_id_spec.rb +0 -56
  557. data/spec/opal/core/proc/call_spec.rb +0 -21
  558. data/spec/opal/core/proc/element_reference_spec.rb +0 -21
  559. data/spec/opal/core/proc/proc_tricks_spec.rb +0 -7
  560. data/spec/opal/core/runtime/begin_spec.rb +0 -39
  561. data/spec/opal/core/runtime/block_send_spec.rb +0 -28
  562. data/spec/opal/core/runtime/block_spec.rb +0 -23
  563. data/spec/opal/core/runtime/bridged_classes_spec.rb +0 -123
  564. data/spec/opal/core/runtime/constants_spec.rb +0 -13
  565. data/spec/opal/core/runtime/donate_spec.rb +0 -53
  566. data/spec/opal/core/runtime/eval_spec.rb +0 -5
  567. data/spec/opal/core/runtime/main_methods_spec.rb +0 -27
  568. data/spec/opal/core/runtime/method_missing_spec.rb +0 -68
  569. data/spec/opal/core/runtime/method_spec.rb +0 -31
  570. data/spec/opal/core/runtime/operator_call_spec.rb +0 -13
  571. data/spec/opal/core/runtime/paren_spec.rb +0 -14
  572. data/spec/opal/core/runtime/rescue_spec.rb +0 -71
  573. data/spec/opal/core/runtime/return_spec.rb +0 -38
  574. data/spec/opal/core/runtime/send_spec.rb +0 -34
  575. data/spec/opal/core/runtime/singleton_class_spec.rb +0 -13
  576. data/spec/opal/core/runtime/super_spec.rb +0 -223
  577. data/spec/opal/core/runtime/truthy_spec.rb +0 -63
  578. data/spec/opal/core/runtime/variables_spec.rb +0 -20
  579. data/spec/opal/core/runtime_spec.rb +0 -58
  580. data/spec/opal/core/source_map_spec.rb +0 -49
  581. data/spec/opal/core/string_spec.rb +0 -32
  582. data/spec/opal/javascript_api_spec.rb +0 -16
  583. data/spec/opal/stdlib/erb/erb_spec.rb +0 -30
  584. data/spec/opal/stdlib/erb/inline_block.opalerb +0 -3
  585. data/spec/opal/stdlib/erb/quoted.opalerb +0 -1
  586. data/spec/opal/stdlib/erb/simple.opalerb +0 -1
  587. data/spec/opal/stdlib/js_spec.rb +0 -66
  588. data/spec/opal/stdlib/json/ext_spec.rb +0 -48
  589. data/spec/opal/stdlib/json/parse_spec.rb +0 -33
  590. data/spec/opal/stdlib/native/alias_native_spec.rb +0 -27
  591. data/spec/opal/stdlib/native/array_spec.rb +0 -11
  592. data/spec/opal/stdlib/native/each_spec.rb +0 -13
  593. data/spec/opal/stdlib/native/element_reference_spec.rb +0 -16
  594. data/spec/opal/stdlib/native/exposure_spec.rb +0 -33
  595. data/spec/opal/stdlib/native/ext_spec.rb +0 -19
  596. data/spec/opal/stdlib/native/hash_spec.rb +0 -51
  597. data/spec/opal/stdlib/native/initialize_spec.rb +0 -17
  598. data/spec/opal/stdlib/native/method_missing_spec.rb +0 -51
  599. data/spec/opal/stdlib/native/native_alias_spec.rb +0 -19
  600. data/spec/opal/stdlib/native/native_class_spec.rb +0 -18
  601. data/spec/opal/stdlib/native/native_module_spec.rb +0 -13
  602. data/spec/opal/stdlib/native/native_reader_spec.rb +0 -22
  603. data/spec/opal/stdlib/native/native_writer_spec.rb +0 -30
  604. data/spec/opal/stdlib/native/new_spec.rb +0 -92
  605. data/spec/opal/stdlib/native/struct_spec.rb +0 -12
  606. data/spec/opal/stdlib/promise/always_spec.rb +0 -49
  607. data/spec/opal/stdlib/promise/error_spec.rb +0 -15
  608. data/spec/opal/stdlib/promise/rescue_spec.rb +0 -53
  609. data/spec/opal/stdlib/promise/then_spec.rb +0 -79
  610. data/spec/opal/stdlib/promise/trace_spec.rb +0 -51
  611. data/spec/opal/stdlib/promise/value_spec.rb +0 -15
  612. data/spec/opal/stdlib/promise/when_spec.rb +0 -34
  613. data/spec/opal/stdlib/source_map_spec.rb +0 -8
  614. data/spec/opal/stdlib/strscan/scan_spec.rb +0 -11
  615. data/spec/opal/stdlib/template/paths_spec.rb +0 -10
  616. data/spec/opal/stdlib/thread/mutex_spec.rb +0 -40
  617. data/spec/opal/stdlib/thread/thread_queue_spec.rb +0 -32
  618. data/spec/opal/stdlib/thread/thread_spec.rb +0 -60
  619. data/spec/ruby_specs +0 -121
  620. data/spec/spec_helper.rb +0 -26
  621. data/spec/support/match_helpers.rb +0 -57
  622. data/spec/support/mspec_rspec_adapter.rb +0 -33
  623. data/spec/support/parser_helpers.rb +0 -37
  624. data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +0 -277
  625. data/stdlib/nodejs/node_modules/js-yaml/README.md +0 -288
  626. data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +0 -140
  627. data/stdlib/nodejs/node_modules/js-yaml/bower.json +0 -23
  628. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +0 -3
  629. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +0 -102
  630. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +0 -18
  631. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +0 -31
  632. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +0 -22
  633. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +0 -18
  634. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +0 -197
  635. data/stdlib/nodejs/node_modules/js-yaml/index.js +0 -7
  636. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +0 -62
  637. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +0 -554
  638. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +0 -25
  639. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +0 -1581
  640. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +0 -78
  641. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +0 -18
  642. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +0 -25
  643. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +0 -28
  644. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +0 -17
  645. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +0 -25
  646. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +0 -103
  647. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +0 -133
  648. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +0 -37
  649. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +0 -110
  650. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +0 -183
  651. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +0 -85
  652. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +0 -84
  653. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +0 -27
  654. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +0 -8
  655. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +0 -12
  656. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +0 -36
  657. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +0 -56
  658. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +0 -61
  659. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +0 -8
  660. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +0 -33
  661. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +0 -8
  662. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +0 -98
  663. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +0 -61
  664. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +0 -39
  665. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +0 -115
  666. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +0 -239
  667. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +0 -36
  668. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +0 -22
  669. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +0 -59
  670. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +0 -13
  671. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +0 -33
  672. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +0 -28
  673. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +0 -23
  674. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +0 -49
  675. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +0 -35
  676. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +0 -270
  677. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +0 -1
  678. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +0 -47
  679. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +0 -55
  680. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +0 -40
  681. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +0 -48
  682. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +0 -43
  683. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +0 -27
  684. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +0 -26
  685. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +0 -50
  686. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +0 -148
  687. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +0 -50
  688. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +0 -146
  689. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +0 -481
  690. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +0 -14
  691. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +0 -50
  692. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +0 -54
  693. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +0 -75
  694. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +0 -1168
  695. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +0 -18
  696. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +0 -88
  697. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +0 -798
  698. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +0 -77
  699. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +0 -23
  700. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +0 -22
  701. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +0 -69
  702. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +0 -6
  703. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +0 -1415
  704. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +0 -2
  705. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +0 -8
  706. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +0 -825
  707. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +0 -33
  708. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +0 -11
  709. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +0 -10
  710. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +0 -26
  711. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +0 -673
  712. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
  713. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +0 -107
  714. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +0 -62
  715. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +0 -73
  716. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +0 -117
  717. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +0 -177
  718. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +0 -3908
  719. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +0 -69
  720. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +0 -239
  721. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +0 -422
  722. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +0 -66
  723. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +0 -387
  724. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +0 -20238
  725. data/stdlib/nodejs/node_modules/js-yaml/package.json +0 -83
  726. data/stdlib/phantomjs.rb +0 -17
  727. data/tasks/testing/sprockets-phantomjs.js +0 -54
  728. data/test/nodejs/test_dir.rb +0 -17
  729. data/test/nodejs/test_file.rb +0 -30
  730. data/test/opal/test_keyword.rb +0 -590
  731. data/test/opal/unsupported_and_bugs.rb +0 -30
  732. /data/{CODE_OF_CONDUCT.md → CONDUCT.md} +0 -0
  733. /data/{bin → exe}/opal-build +0 -0
  734. /data/{bin → exe}/opal-mspec +0 -0
data/lib/opal/builder.rb CHANGED
@@ -1,15 +1,62 @@
1
+ # frozen_string_literal: true
1
2
  require 'opal/path_reader'
2
- require 'opal/builder_processors'
3
3
  require 'opal/paths'
4
+ require 'opal/config'
4
5
  require 'set'
5
6
 
6
7
  module Opal
7
8
  class Builder
8
- include BuilderProcessors
9
+ # The registered processors
10
+ def self.processors
11
+ @processors ||= []
12
+ end
13
+
14
+ # All the extensions supported by registered processors
15
+ def self.extensions
16
+ @extensions ||= []
17
+ end
18
+
19
+ # @public
20
+ # Register a builder processor and the supported extensions.
21
+ # A processor will respond to:
22
+ #
23
+ # ## `#requires`
24
+ # An array of string containing the logic paths of required assets
25
+ #
26
+ # ## `#required_trees`
27
+ # An array of string containing the logic paths of required directories
28
+ #
29
+ # ## `#to_s`
30
+ # The processed source
31
+ #
32
+ # ## `#source_map`
33
+ # An instance of `::SourceMap::Map` representing the processd asset's source
34
+ # map.
35
+ #
36
+ # ## `.new(source, filename, compiler_options)`
37
+ # The processor will be instantiated passing:
38
+ # - the unprocessed source
39
+ # - the asset's filename
40
+ # - Opal's compiler options
41
+ #
42
+ # ## `.match?(path)`
43
+ # The processor is able to recognize paths suitable for its type of
44
+ # processing.
45
+ #
46
+ def self.register_processor(processor, processor_extensions)
47
+ return if processors.include?(processor)
48
+ processors << processor
49
+ processor_extensions.each { |ext| extensions << ext }
50
+ end
51
+
52
+
9
53
 
10
54
  class MissingRequire < LoadError
11
55
  end
12
56
 
57
+ class ProcessorNotFound < LoadError
58
+ end
59
+
13
60
  def initialize(options = nil)
14
61
  (options || {}).each_pair do |k,v|
15
62
  public_send("#{k}=", v)
@@ -17,11 +64,10 @@ module Opal
17
64
 
18
65
  @stubs ||= []
19
66
  @preload ||= []
20
- @processors ||= DEFAULT_PROCESSORS
21
- @path_reader ||= PathReader.new
67
+ @processors ||= ::Opal::Builder.processors
68
+ @path_reader ||= PathReader.new(Opal.paths, extensions.map{|e| [".#{e}", ".js.#{e}"]}.flatten)
22
69
  @prerequired ||= []
23
- @compiler_options ||= {}
24
- @default_processor ||= RubyProcessor
70
+ @compiler_options ||= Opal::Config.compiler_options
25
71
 
26
72
  @processed = []
27
73
  end
@@ -36,7 +82,7 @@ module Opal
36
82
  end
37
83
 
38
84
  def build_str source, filename, options = {}
39
- path = path_reader.expand(filename).to_s unless stub?(filename)
85
+ path = path_from_filename(filename)
40
86
  asset = processor_for(source, filename, path, options)
41
87
  requires = preload + asset.requires + tree_requires(asset, path)
42
88
  requires.map { |r| process_require(r, options) }
@@ -77,9 +123,8 @@ module Opal
77
123
 
78
124
  attr_reader :processed
79
125
 
80
- attr_accessor :processors, :default_processor, :path_reader,
81
- :compiler_options, :stubs, :prerequired, :preload
82
-
126
+ attr_accessor :processors, :path_reader, :compiler_options,
127
+ :stubs, :prerequired, :preload
83
128
 
84
129
 
85
130
 
@@ -108,14 +153,29 @@ module Opal
108
153
  end
109
154
 
110
155
  def processor_for(source, filename, path, options)
111
- processor = processors.find { |p| p.match? path }
112
- processor ||= default_processor
113
- return processor.new(source, filename, compiler_options.merge(options))
156
+ processor = processors.find { |p| p.match? path } or
157
+ raise ProcessorNotFound, "can't find processor for filename: #{filename.inspect}, path: #{path.inspect}, source: #{source.inspect}, processors: #{processors.inspect}"
158
+ processor.new(source, filename, compiler_options.merge(options))
114
159
  end
115
160
 
116
161
  def read(path)
117
- path_reader.read(path) or
118
- raise MissingRequire, "can't find file: #{path.inspect} in #{path_reader.paths.inspect}"
162
+ path_reader.read(path) or begin
163
+ print_list = lambda { |list| "- #{list.join("\n- ")}\n" }
164
+ message = "can't find file: #{path.inspect} in:\n"+
165
+ print_list[path_reader.paths]+
166
+ "\nWith the following extensions:\n"+
167
+ print_list[path_reader.extensions]+
168
+ "\nAnd the following processors:\n"+
169
+ print_list[processors]
170
+
171
+ case compiler_options[:dynamic_require_severity]
172
+ when :raise then raise MissingRequire, message
173
+ when :warning then warn message
174
+ else # noop
175
+ end
176
+
177
+ return "raise LoadError, #{message.inspect}"
178
+ end
119
179
  end
120
180
 
121
181
  def process_require(filename, options)
@@ -134,12 +194,17 @@ module Opal
134
194
  end
135
195
  end
136
196
 
137
- path = path_reader.expand(filename).to_s unless stub?(filename)
197
+ path = path_from_filename(filename)
138
198
  asset = processor_for(source, filename, path, options.merge(requirable: true))
139
199
  process_requires(filename, asset.requires+tree_requires(asset, path), options)
140
200
  processed << asset
141
201
  end
142
202
 
203
+ def path_from_filename(filename)
204
+ return if stub?(filename)
205
+ (path_reader.expand(filename) || File.expand_path(filename)).to_s
206
+ end
207
+
143
208
  def process_requires(filename, requires, options)
144
209
  requires.map { |r| process_require(r, options) }
145
210
  rescue MissingRequire => error
@@ -155,7 +220,7 @@ module Opal
155
220
  end
156
221
 
157
222
  def extensions
158
- @extensions ||= DEFAULT_PROCESSORS.flat_map(&:extensions).compact
223
+ ::Opal::Builder.extensions
159
224
  end
160
225
  end
161
226
  end
@@ -1,16 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  require 'opal/compiler'
2
3
  require 'opal/erb'
3
4
  require 'source_map'
4
5
 
5
6
  module Opal
6
7
  module BuilderProcessors
7
- DEFAULT_PROCESSORS = []
8
-
9
8
  class Processor
10
- def self.inherited(processor)
11
- DEFAULT_PROCESSORS << processor
12
- end
13
-
14
9
  def initialize(source, filename, options = {})
15
10
  @source, @filename, @options = source, filename, options
16
11
  @requires = []
@@ -26,8 +21,10 @@ module Opal
26
21
  @extensions = extensions
27
22
  matches = extensions.join('|')
28
23
  matches = "(#{matches})" if extensions.size == 1
29
-
30
24
  @match_regexp = Regexp.new "\\.#{matches}#{REGEXP_END}"
25
+
26
+ ::Opal::Builder.register_processor(self, extensions)
27
+ nil
31
28
  end
32
29
 
33
30
  def self.extensions
@@ -111,6 +108,11 @@ module Opal
111
108
  def compiler_class
112
109
  ::Opal::Compiler
113
110
  end
111
+
112
+ # Also catch a files with missing extensions and nil.
113
+ def self.match? other
114
+ super or File.extname(other.to_s) == ''
115
+ end
114
116
  end
115
117
 
116
118
  class OpalERBProcessor < RubyProcessor
data/lib/opal/cli.rb CHANGED
@@ -1,5 +1,5 @@
1
+ # frozen_string_literal: true
1
2
  require 'opal'
2
- require 'rack'
3
3
  require 'opal/builder'
4
4
  require 'opal/cli_runners'
5
5
 
@@ -9,18 +9,6 @@ module Opal
9
9
  :output, :requires, :gems, :stubs, :verbose, :port, :preload,
10
10
  :filename, :debug, :no_exit, :lib_only
11
11
 
12
- def compile?
13
- @compile
14
- end
15
-
16
- def sexp?
17
- @sexp
18
- end
19
-
20
- def skip_opal_require?
21
- @skip_opal_require
22
- end
23
-
24
12
  class << self
25
13
  attr_accessor :stdout
26
14
  end
@@ -29,8 +17,8 @@ module Opal
29
17
  options ||= {}
30
18
 
31
19
  # Runner
32
- @runner_type = options.delete(:runner) || :nodejs
33
- @port = options.delete(:port) || 3000
20
+ @runner_type = options.delete(:runner) || :nodejs
21
+ @port = options.delete(:port) || 3000
34
22
 
35
23
  @options = options
36
24
  @compile = !!options.delete(:compile)
@@ -41,7 +29,6 @@ module Opal
41
29
  @lib_only = options.delete(:lib_only)
42
30
  @argv = options.delete(:argv) || []
43
31
  @evals = options.delete(:evals) || []
44
- @requires = options.delete(:requires) || []
45
32
  @load_paths = options.delete(:load_paths) || []
46
33
  @gems = options.delete(:gems) || []
47
34
  @stubs = options.delete(:stubs) || []
@@ -50,7 +37,10 @@ module Opal
50
37
  @verbose = options.fetch(:verbose, false); options.delete(:verbose)
51
38
  @debug = options.fetch(:debug, false); options.delete(:debug)
52
39
  @filename = options.fetch(:filename) { @file && @file.path }; options.delete(:filename)
53
- @skip_opal_require = options.delete(:skip_opal_require)
40
+
41
+ @requires = options.delete(:requires) || []
42
+ @requires.unshift('opal') unless options.delete(:skip_opal_require)
43
+
54
44
  @compiler_options = Hash[
55
45
  *compiler_option_names.map do |option|
56
46
  key = option.to_sym
@@ -60,18 +50,23 @@ module Opal
60
50
  end.compact.flatten
61
51
  ]
62
52
 
53
+ raise ArgumentError, "no libraries to compile" if @lib_only and @requires.length == 0
63
54
  raise ArgumentError, "no runnable code provided (evals or file)" if @evals.empty? and @file.nil? and not(@lib_only)
64
55
  raise ArgumentError, "can't accept evals or file in `library only` mode" if (@evals.any? or @file) and @lib_only
65
56
  raise ArgumentError, "unknown options: #{options.inspect}" unless @options.empty?
66
57
  end
67
58
 
68
59
  def run
69
- case
70
- when @map; show_source_map
71
- when sexp?; show_sexp
72
- when compile?; show_compiled_source
73
- else run_code
74
- end
60
+ return show_sexp if @sexp
61
+
62
+ compiled_source = builder.to_s
63
+
64
+ File.write @map, builder.source_map if @map
65
+
66
+ return puts compiled_source if @compile
67
+
68
+ runner.run(compiled_source, argv)
69
+ @exit_status = runner.exit_status
75
70
  end
76
71
 
77
72
  def runner
@@ -83,65 +78,51 @@ module Opal
83
78
  end
84
79
  end
85
80
 
86
- def run_code
87
- runner.run(compiled_source, argv)
88
- @exit_status = runner.exit_status
89
- end
90
-
91
81
  attr_reader :exit_status
92
82
 
93
- def build
83
+ def builder
84
+ @builder ||= create_builder
85
+ end
86
+
87
+ def create_builder
94
88
  builder = Opal::Builder.new stubs: stubs, compiler_options: compiler_options
89
+
90
+ # --include
95
91
  builder.append_paths(*load_paths)
92
+
93
+ # --gem
96
94
  gems.each { |gem_name| builder.use_gem gem_name }
97
95
 
98
- builder.build 'opal' unless skip_opal_require?
96
+ # --require
97
+ requires.each { |required| builder.build(required) }
99
98
 
99
+ # --preload
100
100
  preload.each { |path| builder.build_require(path) }
101
101
 
102
- # FLAGS
102
+ # --verbose
103
103
  builder.build_str '$VERBOSE = true', '(flags)' if verbose
104
- builder.build_str '$DEBUG = true', '(flags)' if debug
105
104
 
106
- # REQUIRES: -r
107
- requires.each do |local_require|
108
- builder.build(local_require)
109
- end
105
+ # --debug
106
+ builder.build_str '$DEBUG = true', '(flags)' if debug
110
107
 
111
- unless lib_only
112
- evals_or_file do |contents, filename|
113
- builder.build_str(contents, filename)
114
- end
115
- end
108
+ # --eval / stdin / file
109
+ evals_or_file { |source, filename| builder.build_str(source, filename) }
116
110
 
111
+ # --no-exit
117
112
  builder.build_str 'Kernel.exit', '(exit)' unless no_exit
118
113
 
119
114
  builder
120
115
  end
121
116
 
122
- def compiled_source
123
- build.to_s
124
- end
125
-
126
- def show_compiled_source
127
- puts compiled_source
128
- end
129
-
130
117
  def show_sexp
131
118
  evals_or_file do |contents, filename|
132
- sexp = Opal::Parser.new.parse(contents, filename)
119
+ buffer = ::Opal::Source::Buffer.new(filename)
120
+ buffer.source = contents
121
+ sexp = Opal::Parser.default_parser.parse(buffer)
133
122
  puts sexp.inspect
134
123
  end
135
124
  end
136
125
 
137
- def show_source_map
138
- evals_or_file do |contents, filename|
139
- compiler = Opal::Compiler.new(contents, options.merge(file: filename))
140
- compiler.compile
141
- puts compiler.source_map.to_json
142
- end
143
- end
144
-
145
126
  def compiler_option_names
146
127
  %w[
147
128
  method_missing
@@ -150,12 +131,17 @@ module Opal
150
131
  source_map_enabled
151
132
  irb_enabled
152
133
  inline_operators
134
+ enable_source_location
135
+ parse_comments
153
136
  ]
154
137
  end
155
138
 
156
- # Internal: Yelds a string of source code and the proper filename for either
139
+ # Internal: Yields a string of source code and the proper filename for either
157
140
  # evals, stdin or a filepath.
158
141
  def evals_or_file
142
+ # --library
143
+ return if lib_only
144
+
159
145
  if evals.any?
160
146
  yield evals.join("\n"), '-e'
161
147
  else
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'optparse'
2
3
 
3
4
  module Opal
@@ -76,15 +77,11 @@ module Opal
76
77
  options[:sexp] = true
77
78
  end
78
79
 
79
- on('-m', '--map', 'Show sourcemap') do
80
- options[:map] = true
81
- end
82
-
83
80
  on('-c', '--compile', 'Compile to JavaScript') do
84
81
  options[:compile] = true
85
82
  end
86
83
 
87
- on('-R', '--runner RUNNER', %w[nodejs server phantomjs applescript nashorn], 'Choose the runner: nodejs (default), server') do |runner|
84
+ on('-R', '--runner RUNNER', %w[nodejs server applescript nashorn chrome], 'Choose the runner: nodejs (default), server, chrome') do |runner|
88
85
  options[:runner] = runner.to_sym
89
86
  end
90
87
 
@@ -97,10 +94,6 @@ module Opal
97
94
  options[:no_exit] = true
98
95
  end
99
96
 
100
- on('-L', '--library', 'Generate only the code of the library. Omit [programfile] and [-e]') do |no_exit|
101
- options[:lib_only] = true
102
- end
103
-
104
97
  section 'Compilation Options:'
105
98
 
106
99
  on('-M', '--no-method-missing', 'Enable/Disable method missing') do
@@ -126,19 +119,33 @@ module Opal
126
119
  options[:dynamic_require_severity] = level.to_sym
127
120
  end
128
121
 
129
- on('-P', '--source-map [FILE]', 'Enable/Disable source map') do |file|
130
- options[:source_map_enabled] = true
131
- options[:source_map_file] = file if file
122
+ on('-P', '--map FILE', 'Enable/Disable source map') do |file|
123
+ options[:map] = file
132
124
  end
133
125
 
134
126
  on('-F', '--file FILE', 'Set filename for compiled code') do |file|
135
127
  options[:file] = file
136
128
  end
137
129
 
130
+ on('-L', '--library', 'Compile only required libraries. Omit [programfile] and [-e]. Assumed [-cOE].') do
131
+ options[:lib_only] = true
132
+ options[:no_exit] = true
133
+ options[:compile] = true
134
+ options[:skip_opal_require] = true
135
+ end
136
+
138
137
  on("--irb", "Enable IRB var mode") do
139
138
  options[:irb] = true
140
139
  end
141
140
 
141
+ on('--enable-source-location', 'Compiles source location for each method definition.') do
142
+ options[:enable_source_location] = true
143
+ end
144
+
145
+ on('--parse-comments', 'Compiles comments for each method definition.') do
146
+ options[:parse_comments] = true
147
+ end
148
+
142
149
  separator ''
143
150
  end
144
151
 
@@ -1,4 +1,4 @@
1
- require 'opal/cli_runners'
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Opal
4
4
  module CliRunners
@@ -22,15 +22,14 @@ module Opal
22
22
  # tempfile = File.new('opal-applescript-runner.js', 'w') # for debugging
23
23
  tempfile.write code
24
24
  tempfile.close
25
- successful = system_with_output('osascript', '-l', 'JavaScript', tempfile.path , *argv)
26
-
25
+ _successful = system_with_output('osascript', '-l', 'JavaScript', tempfile.path , *argv)
27
26
  rescue Errno::ENOENT
28
27
  raise MissingAppleScript, 'AppleScript is only available on Mac OS X.'
29
28
  end
30
29
 
31
30
  # Let's support fake IO objects like StringIO
32
31
  def system_with_output(env, *cmd)
33
- if (io_output = IO.try_convert(output))
32
+ if (_io_output = IO.try_convert(output))
34
33
  system(env,*cmd)
35
34
  @exit_status = $?.exitstatus
36
35
  return
@@ -0,0 +1,135 @@
1
+ var CDP = require("chrome-remote-interface");
2
+ var fs = require("fs");
3
+
4
+ // NOTE: the code above doesn't work on Windows
5
+ // and it doesn't support interactive stdin input (which is ok for our scenario)
6
+ var opal_code = fs.readFileSync("/dev/stdin").toString();
7
+
8
+ // Chrome can't handle huge data passed to `addScriptToEvaluateOnLoad`
9
+ // https://groups.google.com/a/chromium.org/forum/#!topic/chromium-discuss/U5qyeX_ydBo
10
+ // The only way is to create temporary files and pass them to chrome.
11
+ fs.writeFileSync("/tmp/chrome-opal.js", opal_code);
12
+ fs.writeFileSync("/tmp/chrome-opal.html", "" +
13
+ "<html>" +
14
+ "<head>" +
15
+ "<meta charset='utf-8'>" +
16
+ "<script src='chrome-opal.js'></script>" +
17
+ "</head>" +
18
+ "<body>" +
19
+ "</body>" +
20
+ "</html>"
21
+ );
22
+
23
+ var options = {
24
+ host: process.env.CHROME_HOST || 'localhost',
25
+ port: process.env.CHROME_PORT || 9222
26
+ };
27
+
28
+ CDP(options, function(client) {
29
+ var Page = client.Page,
30
+ Runtime = client.Runtime,
31
+ Console = client.Console;
32
+
33
+ Promise.all([
34
+ Console.enable(),
35
+ Page.enable(),
36
+ Runtime.enable(),
37
+ ]).then(function() {
38
+ // This hook catches only the first argument of `console.log`
39
+ // More advanced version Runtime.consoleAPICalled returns all arguments
40
+ // but all of them are not formatted, i.e. by calling
41
+ // console.log('string', [1, 2, 3], {a: 'b'})
42
+ // it returns the following data to the callback:
43
+ // {
44
+ // "type":"log",
45
+ // "args":[
46
+ // {
47
+ // "type":"string",
48
+ // "value":"string"
49
+ // },
50
+ // {
51
+ // "type":"object",
52
+ // "subtype":"array",
53
+ // "className":"Array",
54
+ // "description":"Array(3)",
55
+ // "objectId":"{\"injectedScriptId\":11,\"id\":1}",
56
+ // "preview":{
57
+ // "type":"object",
58
+ // "subtype":"array",
59
+ // "description":"Array(3)",
60
+ // "overflow":false,
61
+ // "properties":[
62
+ // {"name":"0","type":"number","value":"1"},
63
+ // {"name":"1","type":"number","value":"2"},
64
+ // {"name":"2","type":"number","value":"3"}
65
+ // ]
66
+ // }
67
+ // },
68
+ // {
69
+ // "type":"object",
70
+ // "className":"Object",
71
+ // "description":"Object",
72
+ // "objectId":"{\"injectedScriptId\":11,\"id\":2}",
73
+ // "preview":{
74
+ // "type":"object",
75
+ // "description":"Object",
76
+ // "overflow":false,
77
+ // "properties":[
78
+ // {"name":"a","type":"string","value":"b"}
79
+ // ]
80
+ // }
81
+ // }
82
+ // ],
83
+ // // ...
84
+ // }
85
+ // Supporting this format for complex data structure is challenging, feel free to contribute!
86
+ //
87
+ Console.messageAdded(function(console_message) {
88
+ process.stdout.write(console_message.message.text);
89
+ });
90
+
91
+ Runtime.exceptionThrown(function(exception) {
92
+ var exceptionDetails = exception.exceptionDetails,
93
+ properties = exceptionDetails.exception.preview.properties,
94
+ stackTrace = exceptionDetails.stackTrace.callFrames,
95
+ name, message, trace = [], i;
96
+
97
+
98
+ for (i = 0; i < properties.length; i++) {
99
+ var property = properties[i];
100
+
101
+ if (property.name == "name") {
102
+ name = property.value;
103
+ }
104
+
105
+ if (property.name == "message") {
106
+ message = property.value;
107
+ }
108
+ }
109
+
110
+ console.log(name + " : " + message);
111
+
112
+ for (i = 0; i < stackTrace.length; i++) {
113
+ var raw = stackTrace[i];
114
+
115
+ console.log(" at " + raw.functionName + " (" + raw.url + ":" + raw.lineNumber + ":" + raw.columnNumber + ")")
116
+ }
117
+
118
+ process.exit(1);
119
+ })
120
+
121
+ Page.loadEventFired(() => {
122
+ Runtime.evaluate({ expression: "window.OPAL_EXIT_CODE" }).then(function(output) {
123
+ client.close();
124
+
125
+ if (typeof(output.result) !== "undefined" && output.result.type === "number") {
126
+ process.exit(output.result.value);
127
+ } else {
128
+ process.exit(0);
129
+ }
130
+ })
131
+ });
132
+
133
+ Page.navigate({ url: 'file:///tmp/chrome-opal.html' })
134
+ });
135
+ });