opal 0.10.6 → 0.11.0.rc1

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 (450) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +19 -0
  3. data/.gitmodules +1 -1
  4. data/.jshintrc +1 -2
  5. data/.travis.yml +26 -18
  6. data/CHANGELOG.md +89 -23
  7. data/{CODE_OF_CONDUCT.md → CONDUCT.md} +0 -0
  8. data/Gemfile +19 -21
  9. data/HACKING.md +2 -0
  10. data/README.md +7 -6
  11. data/Rakefile +1 -1
  12. data/appveyor.yml +21 -4
  13. data/benchmark-ips/bm_case.rb +33 -0
  14. data/benchmark-ips/bm_constants_lookup.rb +13 -0
  15. data/benchmark-ips/bm_is_number.rb +29 -0
  16. data/benchmark-ips/bm_symbol_to_proc.rb +19 -0
  17. data/benchmark/bm_constant_lookup_big.rb +799 -0
  18. data/benchmark/bm_constant_lookup_small.rb +59 -0
  19. data/benchmark/bm_module_definition_big.rb +400 -0
  20. data/benchmark/bm_module_definition_small.rb +30 -0
  21. data/bin/opal-repl +23 -1
  22. data/docs/compiled_ruby.md +16 -14
  23. data/docs/faq.md +3 -3
  24. data/docs/rspec.md +2 -1
  25. data/docs/unsupported_features.md +6 -4
  26. data/examples/rack/Gemfile +1 -0
  27. data/examples/rack/app/application.rb +14 -3
  28. data/examples/rack/app/user.rb +2 -0
  29. data/examples/rack/config.ru +1 -1
  30. data/examples/rack/index.html.erb +1 -0
  31. data/lib/opal.rb +6 -1
  32. data/lib/opal/ast/builder.rb +17 -0
  33. data/lib/opal/ast/node.rb +30 -0
  34. data/lib/opal/builder.rb +14 -3
  35. data/lib/opal/builder_processors.rb +1 -0
  36. data/lib/opal/cli.rb +45 -59
  37. data/lib/opal/cli_options.rb +11 -7
  38. data/lib/opal/cli_runners.rb +1 -0
  39. data/lib/opal/cli_runners/applescript.rb +3 -3
  40. data/lib/opal/cli_runners/nashorn.rb +1 -0
  41. data/lib/opal/cli_runners/nodejs.rb +4 -1
  42. data/lib/opal/cli_runners/phantom.js +1 -2
  43. data/lib/opal/cli_runners/phantomjs.rb +3 -2
  44. data/lib/opal/cli_runners/server.rb +1 -0
  45. data/lib/opal/compiler.rb +145 -94
  46. data/lib/opal/config.rb +1 -0
  47. data/lib/opal/deprecations.rb +18 -0
  48. data/lib/opal/erb.rb +1 -0
  49. data/lib/opal/errors.rb +1 -0
  50. data/lib/opal/fragment.rb +1 -0
  51. data/lib/opal/hike_path_finder.rb +1 -0
  52. data/lib/opal/nodes.rb +3 -0
  53. data/lib/opal/nodes/arglist.rb +2 -1
  54. data/lib/opal/nodes/args/initialize_kwargs.rb +1 -0
  55. data/lib/opal/nodes/args/kwarg.rb +7 -7
  56. data/lib/opal/nodes/args/kwoptarg.rb +6 -7
  57. data/lib/opal/nodes/args/kwrestarg.rb +5 -5
  58. data/lib/opal/nodes/args/mlhsarg.rb +3 -2
  59. data/lib/opal/nodes/args/normarg.rb +6 -7
  60. data/lib/opal/nodes/args/optarg.rb +5 -7
  61. data/lib/opal/nodes/args/post_args.rb +6 -5
  62. data/lib/opal/nodes/args/post_kwargs.rb +1 -0
  63. data/lib/opal/nodes/args/restarg.rb +7 -7
  64. data/lib/opal/nodes/array.rb +1 -0
  65. data/lib/opal/nodes/base.rb +24 -3
  66. data/lib/opal/nodes/call.rb +167 -155
  67. data/lib/opal/nodes/call_special.rb +31 -217
  68. data/lib/opal/nodes/case.rb +36 -22
  69. data/lib/opal/nodes/class.rb +4 -3
  70. data/lib/opal/nodes/constants.rb +28 -48
  71. data/lib/opal/nodes/csend.rb +25 -0
  72. data/lib/opal/nodes/def.rb +49 -16
  73. data/lib/opal/nodes/defined.rb +170 -60
  74. data/lib/opal/nodes/definitions.rb +40 -133
  75. data/lib/opal/nodes/defs.rb +29 -0
  76. data/lib/opal/nodes/for.rb +52 -25
  77. data/lib/opal/nodes/hash.rb +12 -35
  78. data/lib/opal/nodes/helpers.rb +27 -54
  79. data/lib/opal/nodes/if.rb +21 -32
  80. data/lib/opal/nodes/inline_args.rb +12 -13
  81. data/lib/opal/nodes/iter.rb +61 -36
  82. data/lib/opal/nodes/literal.rb +189 -116
  83. data/lib/opal/nodes/logic.rb +20 -25
  84. data/lib/opal/nodes/masgn.rb +20 -18
  85. data/lib/opal/nodes/module.rb +10 -11
  86. data/lib/opal/nodes/node_with_args.rb +14 -17
  87. data/lib/opal/nodes/rescue.rb +37 -70
  88. data/lib/opal/nodes/runtime_helpers.rb +8 -3
  89. data/lib/opal/nodes/scope.rb +9 -5
  90. data/lib/opal/nodes/singleton_class.rb +4 -3
  91. data/lib/opal/nodes/super.rb +115 -87
  92. data/lib/opal/nodes/top.rb +7 -2
  93. data/lib/opal/nodes/variables.rb +46 -35
  94. data/lib/opal/nodes/while.rb +11 -1
  95. data/lib/opal/nodes/yield.rb +1 -17
  96. data/lib/opal/parser.rb +28 -770
  97. data/lib/opal/path_reader.rb +5 -1
  98. data/lib/opal/paths.rb +10 -4
  99. data/lib/opal/regexp_anchors.rb +1 -0
  100. data/lib/opal/rewriter.rb +60 -0
  101. data/lib/opal/rewriters/base.rb +60 -0
  102. data/lib/opal/rewriters/binary_operator_assignment.rb +144 -0
  103. data/lib/opal/rewriters/block_to_iter.rb +17 -0
  104. data/lib/opal/rewriters/break_finder.rb +34 -0
  105. data/lib/opal/rewriters/dot_js_syntax.rb +60 -0
  106. data/lib/opal/rewriters/explicit_writer_return.rb +58 -0
  107. data/lib/opal/rewriters/js_reserved_words.rb +111 -0
  108. data/lib/opal/rewriters/logical_operator_assignment.rb +155 -0
  109. data/lib/opal/rewriters/opal_engine_check.rb +42 -0
  110. data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +67 -0
  111. data/lib/opal/server.rb +4 -0
  112. data/lib/opal/simple_server.rb +100 -0
  113. data/lib/opal/source_map.rb +1 -1
  114. data/lib/opal/util.rb +5 -5
  115. data/lib/opal/version.rb +2 -1
  116. data/lib/tilt/opal.rb +1 -0
  117. data/opal.gemspec +8 -7
  118. data/opal/README.md +1 -1
  119. data/opal/corelib/array.rb +137 -83
  120. data/opal/corelib/basic_object.rb +6 -6
  121. data/opal/corelib/class.rb +14 -11
  122. data/opal/corelib/complex.rb +5 -1
  123. data/opal/corelib/constants.rb +3 -3
  124. data/opal/corelib/enumerable.rb +129 -11
  125. data/opal/corelib/error.rb +35 -17
  126. data/opal/corelib/file.rb +65 -170
  127. data/opal/corelib/hash.rb +128 -13
  128. data/opal/corelib/helpers.rb +12 -15
  129. data/opal/corelib/io.rb +1 -0
  130. data/opal/corelib/kernel.rb +40 -21
  131. data/opal/corelib/marshal/read_buffer.rb +1 -1
  132. data/opal/corelib/method.rb +33 -13
  133. data/opal/corelib/module.rb +133 -81
  134. data/opal/corelib/number.rb +141 -25
  135. data/opal/corelib/numeric.rb +0 -8
  136. data/opal/corelib/process.rb +44 -4
  137. data/opal/corelib/random.rb +117 -0
  138. data/opal/corelib/random/seedrandom.js.rb +15 -0
  139. data/opal/corelib/range.rb +133 -10
  140. data/opal/corelib/regexp.rb +37 -9
  141. data/opal/corelib/runtime.js +601 -390
  142. data/opal/corelib/string.rb +39 -8
  143. data/opal/corelib/string/encoding.rb +51 -7
  144. data/opal/corelib/struct.rb +20 -0
  145. data/opal/corelib/time.rb +3 -3
  146. data/opal/corelib/variables.rb +1 -1
  147. data/opal/opal.rb +1 -0
  148. data/spec/filters/bugs/array.rb +5 -1
  149. data/spec/filters/bugs/basicobject.rb +2 -5
  150. data/spec/filters/bugs/bigdecimal.rb +8 -22
  151. data/spec/filters/bugs/class.rb +2 -1
  152. data/spec/filters/bugs/comparable.rb +5 -0
  153. data/spec/filters/bugs/date.rb +3 -3
  154. data/spec/filters/bugs/enumerable.rb +4 -11
  155. data/spec/filters/bugs/enumerator.rb +2 -4
  156. data/spec/filters/bugs/exception.rb +16 -2
  157. data/spec/filters/bugs/file.rb +8 -0
  158. data/spec/filters/bugs/float.rb +7 -1
  159. data/spec/filters/bugs/hash.rb +6 -2
  160. data/spec/filters/bugs/integer.rb +2 -0
  161. data/spec/filters/bugs/io.rb +8 -0
  162. data/spec/filters/bugs/kernel.rb +9 -138
  163. data/spec/filters/bugs/language.rb +89 -174
  164. data/spec/filters/bugs/marshal.rb +33 -35
  165. data/spec/filters/bugs/method.rb +0 -24
  166. data/spec/filters/bugs/module.rb +19 -55
  167. data/spec/filters/bugs/numeric.rb +0 -119
  168. data/spec/filters/bugs/pathname.rb +2 -0
  169. data/spec/filters/bugs/proc.rb +5 -4
  170. data/spec/filters/bugs/random.rb +7 -0
  171. data/spec/filters/bugs/range.rb +12 -120
  172. data/spec/filters/bugs/rational.rb +1 -1
  173. data/spec/filters/bugs/regexp.rb +2 -40
  174. data/spec/filters/bugs/set.rb +0 -1
  175. data/spec/filters/bugs/string.rb +5 -8
  176. data/spec/filters/bugs/stringscanner.rb +11 -19
  177. data/spec/filters/bugs/time.rb +7 -1
  178. data/spec/filters/bugs/unboundmethod.rb +1 -11
  179. data/spec/filters/unsupported/array.rb +5 -1
  180. data/spec/filters/unsupported/basicobject.rb +1 -1
  181. data/spec/filters/unsupported/bignum.rb +4 -1
  182. data/spec/filters/unsupported/class.rb +1 -1
  183. data/spec/filters/unsupported/delegator.rb +1 -1
  184. data/spec/filters/unsupported/enumerable.rb +1 -1
  185. data/spec/filters/unsupported/enumerator.rb +1 -1
  186. data/spec/filters/unsupported/file.rb +4 -0
  187. data/spec/filters/unsupported/fixnum.rb +1 -1
  188. data/spec/filters/unsupported/float.rb +4 -1
  189. data/spec/filters/unsupported/freeze.rb +27 -5
  190. data/spec/filters/unsupported/hash.rb +7 -15
  191. data/spec/filters/unsupported/integer.rb +1 -1
  192. data/spec/filters/unsupported/kernel.rb +2 -1
  193. data/spec/filters/unsupported/language.rb +6 -1
  194. data/spec/filters/unsupported/marshal.rb +1 -1
  195. data/spec/filters/unsupported/matchdata.rb +4 -1
  196. data/spec/filters/unsupported/math.rb +1 -1
  197. data/spec/filters/unsupported/pathname.rb +1 -1
  198. data/spec/filters/unsupported/privacy.rb +141 -9
  199. data/spec/filters/unsupported/proc.rb +1 -1
  200. data/spec/filters/unsupported/random.rb +4 -0
  201. data/spec/filters/unsupported/range.rb +7 -0
  202. data/spec/filters/unsupported/regexp.rb +25 -15
  203. data/spec/filters/unsupported/set.rb +1 -1
  204. data/spec/filters/unsupported/singleton.rb +1 -1
  205. data/spec/filters/unsupported/string.rb +110 -101
  206. data/spec/filters/unsupported/struct.rb +1 -1
  207. data/spec/filters/unsupported/symbol.rb +2 -1
  208. data/spec/filters/unsupported/taint.rb +22 -7
  209. data/spec/filters/unsupported/thread.rb +1 -1
  210. data/spec/filters/unsupported/time.rb +1 -1
  211. data/spec/lib/builder_spec.rb +17 -0
  212. data/spec/lib/cli_spec.rb +37 -8
  213. data/spec/lib/compiler/call_spec.rb +98 -66
  214. data/spec/lib/compiler_spec.rb +39 -30
  215. data/spec/lib/dependency_resolver_spec.rb +2 -2
  216. data/spec/lib/deprecations_spec.rb +16 -0
  217. data/spec/lib/fixtures/source_location_test.rb +7 -0
  218. data/spec/lib/rewriters/binary_operator_assignment_spec.rb +151 -0
  219. data/spec/lib/rewriters/block_to_iter_spec.rb +28 -0
  220. data/spec/lib/rewriters/dot_js_syntax_spec.rb +108 -0
  221. data/spec/lib/rewriters/explicit_writer_return_spec.rb +186 -0
  222. data/spec/lib/rewriters/js_reserved_words_spec.rb +116 -0
  223. data/spec/lib/rewriters/logical_operator_assignment_spec.rb +202 -0
  224. data/spec/lib/rewriters/opal_engine_check_spec.rb +82 -0
  225. data/spec/lib/rewriters/rubyspec/filters_rewriter_spec.rb +53 -0
  226. data/spec/lib/simple_server_spec.rb +54 -0
  227. data/spec/mspec-opal/formatters.rb +65 -17
  228. data/spec/mspec-opal/runner.rb +47 -67
  229. data/spec/opal/core/date_spec.rb +14 -0
  230. data/spec/opal/core/exception_spec.rb +10 -0
  231. data/spec/opal/core/hash/internals_spec.rb +10 -10
  232. data/spec/opal/core/kernel/rand_spec.rb +0 -4
  233. data/spec/opal/core/kernel/respond_to_spec.rb +5 -2
  234. data/spec/opal/core/language/constant_lookup_spec.rb +38 -0
  235. data/spec/opal/core/language/predefined_spec.rb +1 -1
  236. data/spec/opal/core/language/safe_navigator_spec.rb +7 -0
  237. data/spec/opal/core/language/send_spec.rb +1 -9
  238. data/spec/opal/core/language/string_spec.rb +8 -8
  239. data/spec/opal/core/language/versions/def_2_0_spec.rb +0 -4
  240. data/spec/opal/core/language_spec.rb +32 -0
  241. data/spec/opal/core/module/const_get_spec.rb +1 -1
  242. data/spec/opal/core/runtime/is_a_spec.rb +36 -0
  243. data/spec/opal/core/runtime/rescue_spec.rb +35 -0
  244. data/spec/opal/core/runtime_spec.rb +4 -4
  245. data/spec/opal/core/string_spec.rb +8 -8
  246. data/spec/opal/core/time_spec.rb +26 -17
  247. data/spec/opal/stdlib/erb/quoted.opalerb +1 -1
  248. data/spec/opal/stdlib/json/parse_spec.rb +4 -0
  249. data/spec/opal/stdlib/native/hash_spec.rb +16 -0
  250. data/spec/ruby_specs +2 -1
  251. data/spec/spec_helper.rb +1 -0
  252. data/spec/support/rewriters_helper.rb +24 -0
  253. data/stdlib/base64.rb +4 -2
  254. data/stdlib/bigdecimal/bignumber.js.rb +1 -1
  255. data/stdlib/date.rb +18 -19
  256. data/stdlib/json.rb +16 -4
  257. data/stdlib/nashorn/file.rb +15 -0
  258. data/stdlib/native.rb +21 -12
  259. data/stdlib/nodejs/dir.rb +1 -1
  260. data/stdlib/nodejs/file.rb +49 -20
  261. data/stdlib/nodejs/io.rb +22 -1
  262. data/stdlib/nodejs/{node_modules/js-yaml/dist/js-yaml.js → js-yaml-3-6-1.js} +815 -626
  263. data/stdlib/nodejs/kernel.rb +3 -1
  264. data/stdlib/nodejs/package.json +0 -1
  265. data/stdlib/nodejs/stacktrace.rb +163 -0
  266. data/stdlib/nodejs/yaml.rb +2 -1
  267. data/stdlib/opal-platform.rb +15 -0
  268. data/stdlib/opal/platform.rb +5 -13
  269. data/stdlib/pathname.rb +1 -1
  270. data/stdlib/strscan.rb +15 -1
  271. data/stdlib/yaml.rb +1 -1
  272. data/tasks/benchmarking.rake +9 -0
  273. data/tasks/building.rake +24 -20
  274. data/tasks/linting.rake +24 -13
  275. data/tasks/testing.rake +322 -205
  276. data/tasks/testing/mspec_special_calls.rb +44 -15
  277. data/tasks/testing/opal_rspec_smoketest.Gemfile +13 -0
  278. data/test/nodejs/fixtures/hello.rb +1 -0
  279. data/test/nodejs/test_file.rb +57 -0
  280. data/test/nodejs/test_io.rb +18 -0
  281. data/test/nodejs/test_opal_builder.rb +12 -0
  282. data/test/opal/unsupported_and_bugs.rb +9 -0
  283. metadata +127 -240
  284. data/lib/opal/parser/grammar.rb +0 -6157
  285. data/lib/opal/parser/grammar.y +0 -2011
  286. data/lib/opal/parser/keywords.rb +0 -66
  287. data/lib/opal/parser/lexer.rb +0 -1352
  288. data/lib/opal/parser/parser_scope.rb +0 -28
  289. data/lib/opal/parser/sexp.rb +0 -90
  290. data/lib/opal/sprockets.rb +0 -77
  291. data/lib/opal/sprockets/environment.rb +0 -23
  292. data/lib/opal/sprockets/erb.rb +0 -28
  293. data/lib/opal/sprockets/path_reader.rb +0 -36
  294. data/lib/opal/sprockets/processor.rb +0 -173
  295. data/lib/opal/sprockets/server.rb +0 -133
  296. data/lib/opal/sprockets/source_map_header_patch.rb +0 -41
  297. data/lib/opal/sprockets/source_map_server.rb +0 -117
  298. data/spec/filters/bugs/compiler_opal.rb +0 -5
  299. data/spec/filters/bugs/language_opal.rb +0 -88
  300. data/spec/filters/unsupported/module.rb +0 -8
  301. data/spec/lib/compiler/pre_processed_conditionals_spec.rb +0 -87
  302. data/spec/lib/lexer_spec.rb +0 -110
  303. data/spec/lib/parser/alias_spec.rb +0 -26
  304. data/spec/lib/parser/and_spec.rb +0 -13
  305. data/spec/lib/parser/aref_spec.rb +0 -10
  306. data/spec/lib/parser/attrasgn_spec.rb +0 -28
  307. data/spec/lib/parser/begin_spec.rb +0 -42
  308. data/spec/lib/parser/block_spec.rb +0 -12
  309. data/spec/lib/parser/break_spec.rb +0 -17
  310. data/spec/lib/parser/call_spec.rb +0 -201
  311. data/spec/lib/parser/class_spec.rb +0 -35
  312. data/spec/lib/parser/comments_spec.rb +0 -11
  313. data/spec/lib/parser/def_spec.rb +0 -109
  314. data/spec/lib/parser/if_spec.rb +0 -26
  315. data/spec/lib/parser/iter_spec.rb +0 -59
  316. data/spec/lib/parser/lambda_spec.rb +0 -219
  317. data/spec/lib/parser/literal_spec.rb +0 -118
  318. data/spec/lib/parser/masgn_spec.rb +0 -37
  319. data/spec/lib/parser/module_spec.rb +0 -27
  320. data/spec/lib/parser/not_spec.rb +0 -21
  321. data/spec/lib/parser/op_asgn1_spec.rb +0 -23
  322. data/spec/lib/parser/op_asgn2_spec.rb +0 -23
  323. data/spec/lib/parser/op_asgn_spec.rb +0 -17
  324. data/spec/lib/parser/or_spec.rb +0 -13
  325. data/spec/lib/parser/return_spec.rb +0 -22
  326. data/spec/lib/parser/sclass_spec.rb +0 -21
  327. data/spec/lib/parser/string_spec.rb +0 -286
  328. data/spec/lib/parser/super_spec.rb +0 -20
  329. data/spec/lib/parser/unary_spec.rb +0 -52
  330. data/spec/lib/parser/undef_spec.rb +0 -19
  331. data/spec/lib/parser/unless_spec.rb +0 -13
  332. data/spec/lib/parser/variables_spec.rb +0 -112
  333. data/spec/lib/parser/while_spec.rb +0 -15
  334. data/spec/lib/parser/yield_spec.rb +0 -20
  335. data/spec/lib/sprockets/erb_spec.rb +0 -38
  336. data/spec/lib/sprockets/path_reader_spec.rb +0 -41
  337. data/spec/lib/sprockets/processor_spec.rb +0 -79
  338. data/spec/lib/sprockets/server_spec.rb +0 -102
  339. data/spec/lib/sprockets_spec.rb +0 -39
  340. data/spec/lib/tilt/opal_spec.rb +0 -37
  341. data/spec/opal/core/language/block_spec.rb +0 -538
  342. data/spec/opal/core/language/proc_spec.rb +0 -263
  343. data/spec/opal/core/language/variables_spec.rb +0 -1366
  344. data/spec/opal/core/runtime/block_send_spec.rb +0 -28
  345. data/spec/opal/core/runtime/send_spec.rb +0 -34
  346. data/spec/support/parser_helpers.rb +0 -37
  347. data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +0 -277
  348. data/stdlib/nodejs/node_modules/js-yaml/LICENSE +0 -21
  349. data/stdlib/nodejs/node_modules/js-yaml/README.md +0 -288
  350. data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +0 -140
  351. data/stdlib/nodejs/node_modules/js-yaml/bower.json +0 -23
  352. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +0 -3
  353. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +0 -102
  354. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +0 -18
  355. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +0 -31
  356. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +0 -22
  357. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +0 -18
  358. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +0 -197
  359. data/stdlib/nodejs/node_modules/js-yaml/index.js +0 -7
  360. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +0 -39
  361. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +0 -62
  362. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +0 -554
  363. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +0 -25
  364. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +0 -1581
  365. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +0 -78
  366. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +0 -103
  367. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +0 -18
  368. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +0 -25
  369. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +0 -28
  370. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +0 -17
  371. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +0 -25
  372. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +0 -61
  373. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +0 -133
  374. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +0 -37
  375. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +0 -110
  376. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +0 -183
  377. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +0 -85
  378. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +0 -84
  379. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +0 -27
  380. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +0 -8
  381. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +0 -12
  382. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +0 -36
  383. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +0 -56
  384. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +0 -61
  385. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +0 -8
  386. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +0 -33
  387. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +0 -8
  388. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +0 -98
  389. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +0 -115
  390. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/LICENSE +0 -21
  391. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +0 -239
  392. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +0 -36
  393. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +0 -22
  394. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +0 -59
  395. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +0 -13
  396. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +0 -33
  397. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +0 -28
  398. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +0 -23
  399. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +0 -49
  400. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +0 -35
  401. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +0 -270
  402. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +0 -1
  403. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +0 -146
  404. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +0 -55
  405. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +0 -47
  406. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +0 -40
  407. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +0 -48
  408. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +0 -50
  409. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +0 -43
  410. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +0 -27
  411. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +0 -26
  412. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +0 -148
  413. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +0 -50
  414. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +0 -481
  415. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +0 -14
  416. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +0 -50
  417. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +0 -54
  418. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +0 -75
  419. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +0 -1168
  420. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +0 -18
  421. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +0 -88
  422. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +0 -798
  423. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +0 -77
  424. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +0 -2
  425. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +0 -8
  426. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +0 -825
  427. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +0 -33
  428. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +0 -11
  429. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +0 -10
  430. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +0 -26
  431. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +0 -673
  432. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
  433. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +0 -107
  434. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +0 -23
  435. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +0 -22
  436. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +0 -69
  437. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +0 -6
  438. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +0 -1415
  439. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +0 -62
  440. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +0 -73
  441. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +0 -117
  442. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +0 -177
  443. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +0 -3908
  444. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +0 -69
  445. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +0 -239
  446. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +0 -422
  447. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +0 -66
  448. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +0 -387
  449. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +0 -20238
  450. data/stdlib/nodejs/node_modules/js-yaml/package.json +0 -83
@@ -1,20 +0,0 @@
1
- require 'support/parser_helpers'
2
-
3
- describe "The super keyword" do
4
- it "should return s(:super) for any arguments" do
5
- parsed("super 1").should == [:super, [:arglist, [:int, 1]]]
6
- parsed("super 1, 2").should == [:super, [:arglist, [:int, 1], [:int, 2]]]
7
- parsed("super 1, *2").should == [:super, [:arglist, [:int, 1], [:splat, [:int, 2]]]]
8
- end
9
-
10
- it "should set nil for args when no arguments or parans" do
11
- parsed("super").should == [:super, nil]
12
- end
13
-
14
- it "should always return s(:super) with :arglist when parans are used" do
15
- parsed("super()").should == [:super, [:arglist]]
16
- parsed("super(1)").should == [:super, [:arglist, [:int, 1]]]
17
- parsed("super(1, 2)").should == [:super, [:arglist, [:int, 1], [:int, 2]]]
18
- parsed("super(1, *2)").should == [:super, [:arglist, [:int, 1], [:splat, [:int, 2]]]]
19
- end
20
- end
@@ -1,52 +0,0 @@
1
- require 'support/parser_helpers'
2
-
3
- describe Opal::Parser do
4
- describe '-@' do
5
- context 'with an integer' do
6
- it "parses unary op. with the right precedence" do
7
- parsed("-1.hello").should == [:call, [:int, -1], :hello, [:arglist]]
8
- expected = [:call, [:call, [:int, 1], :**, [:arglist, [:int, 2]]], :-@, [:arglist]]
9
- parsed("-1 ** 2").should == expected
10
- expected = [:call, nil, :puts, [:arglist, [:call, [:int, -1], :hello, [:arglist]]]]
11
- parsed("puts -1.hello").should == expected
12
- end
13
-
14
- it "parses unary op. as a method call" do
15
- parsed("-1").should == [:int, -1]
16
- end
17
-
18
- end
19
-
20
- context 'with a float' do
21
- it "parses unary op. with the right precedence" do
22
- parsed("-1.23.hello").should == [:call, [:float, -1.23], :hello, [:arglist]]
23
- end
24
-
25
- it "parses unary op. as a method call" do
26
- parsed("-1.23").should == [:float, -1.23]
27
- end
28
- end
29
- end
30
-
31
- describe '+@' do
32
- context 'with an integer' do
33
- it "parses unary op. with the right precedence" do
34
- parsed("+1.hello").should == [:call, [:int, 1], :hello, [:arglist]]
35
- end
36
-
37
- it "parses unary op. as a method call" do
38
- parsed("-1").should == [:int, -1]
39
- end
40
- end
41
-
42
- context 'with a float' do
43
- it "parses unary op. with the right precedence" do
44
- parsed("+1.23.hello").should == [:call, [:float, 1.23], :hello, [:arglist]]
45
- end
46
-
47
- it "parses unary op. as a method call" do
48
- parsed("-1.23").should == [:float, -1.23]
49
- end
50
- end
51
- end
52
- end
@@ -1,19 +0,0 @@
1
- require 'support/parser_helpers'
2
-
3
- describe "The undef keyword" do
4
- it "returns s(:undef) with the argument as an s(:lit)" do
5
- parsed("undef a").should == [:undef, [:sym, :a]]
6
- end
7
-
8
- it "appends multiple parts onto end of list" do
9
- parsed("undef a, b").should == [:undef, [:sym, :a], [:sym, :b]]
10
- end
11
-
12
- it "can take symbols or fitems" do
13
- parsed("undef :foo").should == [:undef, [:sym, :foo]]
14
- end
15
-
16
- it "can take multiple symbols" do
17
- parsed("undef :a, :b").should == [:undef, [:sym, :a], [:sym, :b]]
18
- end
19
- end
@@ -1,13 +0,0 @@
1
- require 'support/parser_helpers'
2
-
3
- describe "The unless keyword" do
4
- it "returns s(:if) with reversed true and false bodies" do
5
- parsed("unless 10; 20; end").should == [:if, [:int, 10], nil, [:int, 20]]
6
- parsed("unless 10; 20; 30; end").should == [:if, [:int, 10], nil, [:block, [:int, 20], [:int, 30]]]
7
- parsed("unless 10; 20; else; 30; end").should == [:if, [:int, 10], [:int, 30], [:int, 20]]
8
- end
9
-
10
- it "returns s(:if) with reversed true and false bodies for prefix unless" do
11
- parsed("20 unless 10").should == [:if, [:int, 10], nil, [:int, 20]]
12
- end
13
- end
@@ -1,112 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'support/parser_helpers'
4
-
5
- describe Opal::Parser do
6
- it "parses instance variables" do
7
- parsed("@a").should == [:ivar, :@a]
8
- parsed("@A").should == [:ivar, :@A]
9
- parsed("@class").should == [:ivar, :@class]
10
- end
11
-
12
- it "parses instance variable assignment" do
13
- parsed("@a = 1").should == [:iasgn, :@a, [:int, 1]]
14
- parsed("@A = 1").should == [:iasgn, :@A, [:int, 1]]
15
- parsed("@class = 1").should == [:iasgn, :@class, [:int, 1]]
16
- end
17
-
18
- describe "parses local variables" do
19
- it "should be created when an identifier is previously assigned to" do
20
- parsed("a = 1; a").should == [:block, [:lasgn, :a, [:int, 1]], [:lvar, :a]]
21
- parsed("a = 1; a; a").should == [:block, [:lasgn, :a, [:int, 1]], [:lvar, :a], [:lvar, :a]]
22
- end
23
-
24
- it "should not be created when no lasgn is previously used on name" do
25
- parsed("a").should == [:call, nil, :a, [:arglist]]
26
- parsed("a = 1; b").should == [:block, [:lasgn, :a, [:int, 1]], [:call, nil, :b, [:arglist]]]
27
- end
28
- end
29
-
30
- describe "parses local variables inside a def" do
31
- it "should created by a norm arg" do
32
- parsed("def a(b); b; end").should == [:def, nil, :a, [:args, [:arg, :b]], [:block, [:lvar, :b]]]
33
- parsed("def a(b, c); c; end").should == [:def, nil, :a, [:args, [:arg, :b], [:arg, :c]], [:block, [:lvar, :c]]]
34
- end
35
-
36
- it "should be created by an opt arg" do
37
- parsed("def a(b=10); b; end").should == [:def, nil, :a, [:args, [:optarg, :b, [:int, 10]]], [:block, [:lvar, :b]]]
38
- end
39
-
40
- it "should be created by a rest arg" do
41
- parsed("def a(*b); b; end").should == [:def, nil, :a, [:args, [:restarg, :b]], [:block, [:lvar, :b]]]
42
- end
43
-
44
- it "should be created by a block arg" do
45
- parsed("def a(&b); b; end").should == [:def, nil, :a, [:args, [:blockarg, :b]], [:block, [:lvar, :b]]]
46
- end
47
-
48
- it "should not be created from locals outside the def" do
49
- parsed("a = 10; def b; a; end").should == [:block, [:lasgn, :a, [:int, 10]], [:def, nil, :b, [:args], [:block, [:call, nil, :a, [:arglist]]]]]
50
- end
51
- end
52
-
53
- it "parses local var assignment" do
54
- parsed("a = 1").should == [:lasgn, :a, [:int, 1]]
55
- parsed("a = 1; b = 2").should == [:block, [:lasgn, :a, [:int, 1]], [:lasgn, :b, [:int, 2]]]
56
- end
57
-
58
- it "parses class variables" do
59
- parsed("@@foo").should == [:cvar, :@@foo]
60
- end
61
-
62
- it "parses class variable assignment" do
63
- parsed("@@foo = 100").should == [:cvdecl, :@@foo, [:int, 100]]
64
- end
65
-
66
- it "parses global variables" do
67
- parsed("$foo").should == [:gvar, :$foo]
68
- parsed("$:").should == [:gvar, :$:]
69
- end
70
-
71
- it "parses bulitin $-? gvars" do
72
- parsed("$-0").should == [:gvar, :$-0]
73
- parsed("$-a").should == [:gvar, :$-a]
74
- parsed("$-A").should == [:gvar, :$-A]
75
- end
76
-
77
- it "parses global var assignment" do
78
- parsed("$foo = 1").should == [:gasgn, :$foo, [:int, 1]]
79
- parsed("$: = 1").should == [:gasgn, :$:, [:int, 1]]
80
- end
81
-
82
- it "parses as s(:nth_ref)" do
83
- parsed('$1').first.should == :nth_ref
84
- end
85
-
86
- it "references the number 1..9 as first part" do
87
- parsed('$1').should == [:nth_ref, '1']
88
- parsed('$9').should == [:nth_ref, '9']
89
- end
90
-
91
- it "parses constants" do
92
- parsed("FOO").should == [:const, :FOO]
93
- parsed("BAR").should == [:const, :BAR]
94
- end
95
-
96
- it "parses constant assignment" do
97
- parsed("FOO = 1").should == [:cdecl, :FOO, [:int, 1]]
98
- parsed("FOO = BAR").should == [:cdecl, :FOO, [:const, :BAR]]
99
- end
100
-
101
- describe 'parsing unicode' do
102
- it "works for constants" do
103
- parsed("FOOλ = 1").should == [:cdecl, :FOOλ, [:int, 1]]
104
- end
105
-
106
- it "works for local variables" do
107
- parsed("λ = 1").should == [:lasgn, :λ, [:int, 1]]
108
- parsed("fooλ = 1").should == [:lasgn, :fooλ, [:int, 1]]
109
- parsed("λfoo = 1").should == [:lasgn, :λfoo, [:int, 1]]
110
- end
111
- end
112
- end
@@ -1,15 +0,0 @@
1
- require 'support/parser_helpers'
2
-
3
- describe "The while keyword" do
4
- it "returns an s(:while) with the given expr, body and true for head" do
5
- parsed("while 1; 2; end").should == [:while, [:int, 1], [:int, 2]]
6
- end
7
-
8
- it "uses an s(:block) if body has more than one statement" do
9
- parsed("while 1; 2; 3; end").should == [:while, [:int, 1], [:block, [:int, 2], [:int, 3]]]
10
- end
11
-
12
- it "treats the prefix while statement just like a regular while statement" do
13
- parsed("1 while 2").should == [:while, [:int, 2], [:int, 1]]
14
- end
15
- end
@@ -1,20 +0,0 @@
1
- require 'support/parser_helpers'
2
-
3
- describe "The yield keyword" do
4
- it "should return s(:yield) when no arguments given" do
5
- parsed("yield").should == [:yield]
6
- end
7
-
8
- it "appends arguments onto end of s(:yield) without an arglist" do
9
- parsed("yield 1").should == [:yield, [:int, 1]]
10
- parsed("yield 1, 2").should == [:yield, [:int, 1], [:int, 2]]
11
- parsed("yield 1, *2").should == [:yield, [:int, 1], [:splat, [:int, 2]]]
12
- end
13
-
14
- it "accepts parans for any number of arguments" do
15
- parsed("yield()").should == [:yield]
16
- parsed("yield(1)").should == [:yield, [:int, 1]]
17
- parsed("yield(1, 2)").should == [:yield, [:int, 1], [:int, 2]]
18
- parsed("yield(1, *2)").should == [:yield, [:int, 1], [:splat, [:int, 2]]]
19
- end
20
- end
@@ -1,38 +0,0 @@
1
- require 'lib/spec_helper'
2
- require 'opal/sprockets/erb'
3
-
4
- describe Opal::ERB::Processor do
5
- let(:pathname) { Pathname("/Code/app/mylib/opal/foo.#{ext}") }
6
- let(:environment) { double(Sprockets::Environment,
7
- cache: nil,
8
- :[] => nil,
9
- resolve: pathname.expand_path.to_s,
10
- engines: double(keys: %w[.rb .js .erb .opal]),
11
- ) }
12
- let(:sprockets_context) { double(Sprockets::Context,
13
- logical_path: "foo.#{ext}",
14
- environment: environment,
15
- pathname: pathname,
16
- filename: pathname.to_s,
17
- root_path: '/Code/app/mylib',
18
- is_a?: true,
19
- ) }
20
- let(:required_assets) { [] }
21
- let(:template) { described_class.new { |t| %Q{<% print("") %><a href="<%= url %>"><%= name %></a>} } }
22
- before { allow(sprockets_context).to receive(:require_asset) {|asset| required_assets << asset } }
23
-
24
- let(:ext) { 'opalerb' }
25
-
26
- it "is registered for '.opalerb' files" do
27
- expect(Tilt["test.#{ext}"]).to eq(described_class)
28
- end
29
-
30
- it 'renders the template' do
31
- expect(template.render(sprockets_context)).to include('"<a href=\""')
32
- end
33
-
34
- it 'implicitly requires "erb"' do
35
- template.render(sprockets_context)
36
- expect(required_assets).to eq(['erb'])
37
- end
38
- end
@@ -1,41 +0,0 @@
1
- require 'lib/spec_helper'
2
- require 'lib/shared/path_reader_shared'
3
- require 'opal/sprockets/path_reader'
4
-
5
- describe Opal::Sprockets::PathReader do
6
- let(:env) { Sprockets::Environment.new }
7
- let(:context) { double('context', depend_on: nil, depend_on_asset: nil) }
8
- let(:contents) { File.read(full_path) }
9
- let(:full_path) { fixtures_dir.join(logical_path+'.js.rb') }
10
- let(:logical_path) { 'sprockets_file' }
11
- let(:fixtures_dir) { Pathname('../../fixtures/').expand_path(__FILE__) }
12
-
13
- subject(:path_reader) { described_class.new(env, context) }
14
-
15
- before do
16
- Opal.paths.each {|p| env.append_path(p)}
17
- env.append_path fixtures_dir
18
- end
19
-
20
- include_examples :path_reader do
21
- let(:path) { logical_path }
22
- end
23
-
24
- it 'can read stuff from sprockets env' do
25
- expect(path_reader.read(logical_path)).to eq(contents)
26
- end
27
-
28
- it 'reads js files processing their directives' do
29
- path = 'file_with_directives.js'
30
- full_path = fixtures_dir.join(path)
31
- required_contents = File.read(fixtures_dir.join('required_file.js')).strip
32
- read_contents = path_reader.read(path)
33
- actual_contents = full_path.read
34
-
35
- expect(actual_contents).to include('//= require')
36
- expect(read_contents).not_to include('//= require')
37
-
38
- expect(read_contents).to include(required_contents)
39
- expect(actual_contents).not_to include(required_contents)
40
- end
41
- end
@@ -1,79 +0,0 @@
1
- require 'lib/spec_helper'
2
- require 'opal/sprockets/processor'
3
-
4
- describe Opal::Processor do
5
- let(:pathname) { Pathname("/Code/app/mylib/opal/foo.#{ext}") }
6
- let(:environment) { double(Sprockets::Environment,
7
- cache: nil,
8
- :[] => nil,
9
- resolve: pathname.expand_path.to_s,
10
- engines: double(keys: %w[.rb .js .opal]),
11
- ) }
12
- let(:sprockets_context) { double(Sprockets::Context,
13
- logical_path: "foo.#{ext}",
14
- environment: environment,
15
- pathname: pathname,
16
- filename: pathname.to_s,
17
- root_path: '/Code/app/mylib',
18
- is_a?: true,
19
- ) }
20
-
21
- %w[.rb .opal].each do |ext|
22
- let(:ext) { ext }
23
-
24
- describe %Q{with extension "#{ext}"} do
25
- it "is registered for '#{ext}' files" do
26
- expect(Sprockets.engines[ext]).to eq(described_class)
27
- end
28
-
29
- it "compiles and evaluates the template on #render" do
30
- template = described_class.new { |t| "puts 'Hello, World!'\n" }
31
- expect(template.render(sprockets_context)).to include('"Hello, World!"')
32
- end
33
- end
34
- end
35
-
36
- describe '.stubbed_files' do
37
- around do |e|
38
- config.stubbed_files.clear
39
- e.run
40
- config.stubbed_files.clear
41
- end
42
-
43
- let(:stubbed_file) { 'foo' }
44
- let(:template) { described_class.new { |t| "require #{stubbed_file.inspect}" } }
45
- let(:config) { Opal::Config }
46
-
47
- it 'usually require files' do
48
- expect(sprockets_context).to receive(:require_asset).with(stubbed_file)
49
- template.render(sprockets_context)
50
- end
51
-
52
- it 'skips require of stubbed file' do
53
- config.stubbed_files << stubbed_file.to_s
54
- expect(sprockets_context).not_to receive(:require_asset).with(stubbed_file)
55
- template.render(sprockets_context)
56
- end
57
-
58
- it 'marks a stubbed file as loaded' do
59
- config.stubbed_files << stubbed_file.to_s
60
- asset = double(dependencies: [], pathname: Pathname('bar'), logical_path: 'bar')
61
- environment.stub(:[]).with('bar.js') { asset }
62
- environment.stub(:engines) { {'.rb' => described_class, '.opal' => described_class} }
63
-
64
- code = ::Opal::Sprockets.load_asset('bar')
65
- code.should match stubbed_file
66
- end
67
- end
68
-
69
- describe '.cache_key' do
70
- it 'can be reset' do
71
- Opal::Config.arity_check_enabled = true
72
- old_cache_key = described_class.cache_key
73
- Opal::Config.arity_check_enabled = false
74
- expect(described_class.cache_key).to eq(old_cache_key)
75
- described_class.reset_cache_key!
76
- expect(described_class.cache_key).not_to eq(old_cache_key)
77
- end
78
- end
79
- end
@@ -1,102 +0,0 @@
1
- require 'lib/spec_helper'
2
- require 'sourcemap'
3
- require 'rack/test'
4
-
5
- describe Opal::Server do
6
- include Rack::Test::Methods
7
-
8
- let(:maps_prefix) { described_class::SOURCE_MAPS_PREFIX_PATH }
9
-
10
- def app
11
- described_class.new { |s|
12
- s.main = 'opal'
13
- s.debug = false
14
- s.append_path File.expand_path('../../fixtures', __FILE__)
15
- s.sprockets.logger = Logger.new(nil)
16
- }
17
- end
18
-
19
- it 'serves assets from /assets' do
20
- get '/assets/opal.js'
21
- expect(last_response).to be_ok
22
- end
23
-
24
- it 'serves assets with complex sprockets requires' do
25
- asset = app.sprockets['complex_sprockets']
26
- expect(asset).to be_truthy
27
-
28
- assets = asset.to_a.map do |sub_asset|
29
- sub_asset.logical_path.gsub(/\.self\.js$/, '.js')
30
- end
31
-
32
- %w[
33
- no_requires.js
34
- jst_file.js
35
- required_tree_test/required_file1.js
36
- required_tree_test/required_file2.js
37
- file_with_directives.js
38
- ].each do |logical_path|
39
- expect(assets).to include(logical_path)
40
- end
41
- end
42
-
43
- describe 'source maps' do
44
- it 'serves map on a top level file' do
45
- get '/assets/source_map.js'
46
- expect(last_response).to be_ok
47
-
48
- get maps_prefix+'/source_map.self.map'
49
- expect(last_response).to be_ok
50
- end
51
-
52
- it 'serves map on a subfolder file' do
53
- js_path = '/assets/source_map/subfolder/other_file.self.js'
54
- map_path = maps_prefix+'/source_map/subfolder/other_file.self.map'
55
-
56
- get js_path
57
-
58
- expect(last_response).to be_ok
59
- received_map_path = extract_map_path(last_response)
60
- expect(expand_path(received_map_path, js_path+'/..')).to eq(map_path)
61
-
62
- get maps_prefix+'/source_map/subfolder/other_file.self.map'
63
- expect(last_response).to be_ok
64
- end
65
-
66
- it 'serves map on a subfolder file' do
67
- js_path = '/assets/source_map/subfolder/other_file.self.js'
68
- map_path = maps_prefix+'/source_map/subfolder/other_file.self.map'
69
-
70
- get js_path
71
-
72
- expect(last_response).to be_ok
73
- received_map_path = extract_map_path(last_response)
74
- expect(expand_path(received_map_path, js_path+'/..')).to eq(map_path)
75
-
76
- get maps_prefix+'/source_map/subfolder/other_file.self.map'
77
- expect(last_response).to be_ok
78
- map = ::SourceMap::Map.from_json(last_response.body)
79
- expect(map.sources).to include(maps_prefix+'/source_map/subfolder/other_file.rb')
80
- end
81
- end
82
-
83
- def extract_map_path(response)
84
- source_map_comment_regexp = %r{//# sourceMappingURL=(.*)$}
85
-
86
- case
87
- when response.body =~ source_map_comment_regexp
88
- body.scan(source_map_comment_regexp).first.first
89
- when response.headers['X-SourceMap']
90
- response.headers['X-SourceMap']
91
- else
92
- raise "cannot find source map in response: #{response.inspect}"
93
- end
94
- end
95
-
96
- def expand_path(file_name, dir_string)
97
- path = File.expand_path(file_name, dir_string)
98
- # Remove Windows letter and colon (eg. C:) from path
99
- path = path[2..-1] if !(RUBY_PLATFORM =~ /mswin|mingw/).nil?
100
- path
101
- end
102
- end