opal 0.3.42 → 0.3.43

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 (553) hide show
  1. data/CHANGELOG.md +29 -0
  2. data/CONTRIBUTING.md +9 -1
  3. data/Rakefile +58 -21
  4. data/config.ru +14 -0
  5. data/examples/rack/Gemfile +3 -0
  6. data/examples/rack/README.md +22 -0
  7. data/examples/rack/app/app.rb +5 -0
  8. data/examples/rack/config.ru +20 -0
  9. data/examples/rack/index.html +12 -0
  10. data/examples/server/Gemfile +3 -0
  11. data/examples/server/README.md +22 -0
  12. data/examples/server/app/app.rb +18 -0
  13. data/examples/server/config.ru +10 -0
  14. data/examples/server/index.html.erb +10 -0
  15. data/lib/opal.rb +4 -1
  16. data/lib/opal/erb.rb +41 -0
  17. data/lib/opal/lexer.rb +1 -1
  18. data/lib/opal/parser.rb +5 -12
  19. data/lib/opal/processor.rb +70 -0
  20. data/lib/opal/server.rb +93 -0
  21. data/lib/opal/version.rb +1 -1
  22. data/opal.gemspec +1 -1
  23. data/opal/{opal/date.rb → date.rb} +0 -0
  24. data/opal/erb.rb +19 -0
  25. data/{spec → opal}/fileutils.rb +0 -0
  26. data/{spec → opal}/iconv.rb +0 -0
  27. data/opal/observer.rb +202 -0
  28. data/opal/opal-browser/local_storage.rb +27 -0
  29. data/opal/opal-browser/script_loader.rb +40 -0
  30. data/opal/opal-eventable.rb +26 -0
  31. data/opal/opal-parser.js.erb +8 -3
  32. data/opal/{opal/template.rb → opal-template.rb} +0 -0
  33. data/opal/opal.rb +20 -18
  34. data/opal/opal/array.rb +1 -1
  35. data/opal/opal/class.rb +6 -1
  36. data/opal/opal/kernel.rb +1 -1
  37. data/opal/opal/native.rb +91 -5
  38. data/opal/opal/runtime.js +39 -8
  39. data/{spec → opal}/pp.rb +0 -0
  40. data/opal/{opal/racc.rb → racc.rb} +0 -0
  41. data/{spec → opal}/rbconfig.rb +0 -0
  42. data/opal/{opal/strscan.rb → strscan.rb} +0 -0
  43. data/{spec → opal}/yaml.rb +0 -0
  44. data/spec/{core_ext → opal}/array/element_reference_spec.rb +0 -0
  45. data/spec/{core_ext → opal}/array/equal_value_spec.rb +0 -0
  46. data/spec/{core_ext → opal}/array/fill_spec.rb +0 -0
  47. data/spec/{core_ext → opal}/array/reduce_spec.rb +0 -0
  48. data/spec/{core_ext → opal}/array/to_json_spec.rb +0 -0
  49. data/spec/{core_ext → opal}/basic_object/send_spec.rb +0 -0
  50. data/spec/{core_ext → opal}/boolean/singleton_class_spec.rb +0 -0
  51. data/spec/{core_ext → opal}/boolean/to_json_spec.rb +0 -0
  52. data/spec/opal/browser/local_storage_spec.rb +55 -0
  53. data/spec/{core_ext → opal}/class/_inherited_spec.rb +0 -0
  54. data/spec/{core_ext → opal}/class/proc_methods_spec.rb +0 -0
  55. data/spec/{core_ext → opal}/class/singleton_methods_spec.rb +0 -0
  56. data/spec/{core_ext → opal}/constants_spec.rb +0 -0
  57. data/spec/opal/erb/erb_spec.rb +31 -0
  58. data/spec/opal/eventable_spec.rb +75 -0
  59. data/spec/{core_ext → opal}/method_missing_spec.rb +0 -0
  60. data/spec/opal/native/element_reference_spec.rb +40 -0
  61. data/spec/opal/native/equal_spec.rb +17 -0
  62. data/spec/opal/native/fixtures/classes.rb +27 -0
  63. data/spec/opal/native/global_spec.rb +12 -0
  64. data/spec/opal/native/initialize_spec.rb +8 -0
  65. data/spec/opal/native/method_missing_spec.rb +53 -0
  66. data/spec/{core_ext → opal}/native/to_native_spec.rb +1 -1
  67. data/spec/{core_ext → opal}/nil/to_json_spec.rb +0 -0
  68. data/spec/opal/runtime/eval_spec.rb +5 -0
  69. data/spec/opal/runtime/send_spec.rb +34 -0
  70. data/spec/ospec/main.rb.erb +9 -3
  71. data/spec/ospec/runner.rb +132 -5
  72. data/spec/{grammar → parser}/alias_spec.rb +0 -0
  73. data/spec/{grammar → parser}/and_spec.rb +0 -0
  74. data/spec/{grammar → parser}/array_spec.rb +0 -0
  75. data/spec/{grammar → parser}/attrasgn_spec.rb +0 -0
  76. data/spec/{grammar → parser}/begin_spec.rb +0 -0
  77. data/spec/{grammar → parser}/block_spec.rb +0 -0
  78. data/spec/{grammar → parser}/break_spec.rb +0 -0
  79. data/spec/{grammar → parser}/call_spec.rb +0 -0
  80. data/spec/{grammar → parser}/class_spec.rb +0 -0
  81. data/spec/{grammar → parser}/const_spec.rb +0 -0
  82. data/spec/{grammar → parser}/cvar_spec.rb +0 -0
  83. data/spec/{grammar → parser}/def_spec.rb +0 -0
  84. data/spec/{grammar → parser}/false_spec.rb +0 -0
  85. data/spec/{grammar → parser}/file_spec.rb +0 -0
  86. data/spec/{grammar → parser}/gvar_spec.rb +0 -0
  87. data/spec/{grammar → parser}/hash_spec.rb +0 -0
  88. data/spec/{grammar → parser}/iasgn_spec.rb +0 -0
  89. data/spec/{grammar → parser}/if_spec.rb +0 -0
  90. data/spec/{grammar → parser}/iter_spec.rb +0 -0
  91. data/spec/{grammar → parser}/ivar_spec.rb +0 -0
  92. data/spec/{grammar → parser}/lambda_spec.rb +0 -0
  93. data/spec/{grammar → parser}/lasgn_spec.rb +0 -0
  94. data/spec/{grammar → parser}/line_spec.rb +0 -0
  95. data/spec/{grammar → parser}/lvar_spec.rb +0 -0
  96. data/spec/{grammar → parser}/masgn_spec.rb +0 -0
  97. data/spec/{grammar → parser}/module_spec.rb +0 -0
  98. data/spec/{grammar → parser}/nil_spec.rb +0 -0
  99. data/spec/{grammar → parser}/not_spec.rb +0 -0
  100. data/spec/{grammar → parser}/nth_ref_spec.rb +0 -0
  101. data/spec/{grammar → parser}/op_asgn1_spec.rb +0 -0
  102. data/spec/{grammar → parser}/op_asgn2_spec.rb +0 -0
  103. data/spec/{grammar → parser}/or_spec.rb +0 -0
  104. data/spec/{grammar → parser}/parser_spec.rb +0 -0
  105. data/spec/{grammar → parser}/return_spec.rb +0 -0
  106. data/spec/{grammar → parser}/sclass_spec.rb +0 -0
  107. data/spec/{grammar → parser}/self_spec.rb +0 -0
  108. data/spec/{grammar → parser}/str_spec.rb +0 -0
  109. data/spec/{grammar → parser}/string_spec.rb +0 -0
  110. data/spec/{grammar → parser}/strscan/check_spec.rb +0 -0
  111. data/spec/{grammar → parser}/strscan/scan_spec.rb +0 -0
  112. data/spec/{grammar → parser}/super_spec.rb +0 -0
  113. data/spec/{grammar → parser}/true_spec.rb +0 -0
  114. data/spec/{grammar → parser}/undef_spec.rb +0 -0
  115. data/spec/{grammar → parser}/unless_spec.rb +0 -0
  116. data/spec/{grammar → parser}/while_spec.rb +0 -0
  117. data/spec/{grammar → parser}/xstr_spec.rb +0 -0
  118. data/spec/{grammar → parser}/yield_spec.rb +0 -0
  119. data/spec/{core → rubyspec/core}/array/allocate_spec.rb +0 -0
  120. data/spec/{core → rubyspec/core}/array/append_spec.rb +0 -0
  121. data/spec/{core → rubyspec/core}/array/array_spec.rb +0 -0
  122. data/spec/{core → rubyspec/core}/array/assoc_spec.rb +0 -0
  123. data/spec/{core → rubyspec/core}/array/at_spec.rb +0 -0
  124. data/spec/{core → rubyspec/core}/array/choice_spec.rb +0 -0
  125. data/spec/{core → rubyspec/core}/array/clear_spec.rb +0 -0
  126. data/spec/{core → rubyspec/core}/array/clone_spec.rb +0 -0
  127. data/spec/{core → rubyspec/core}/array/collect_spec.rb +0 -0
  128. data/spec/{core → rubyspec/core}/array/combination_spec.rb +0 -0
  129. data/spec/{core → rubyspec/core}/array/compact_spec.rb +0 -0
  130. data/spec/{core → rubyspec/core}/array/comparison_spec.rb +0 -0
  131. data/spec/{core → rubyspec/core}/array/concat_spec.rb +0 -0
  132. data/spec/{core → rubyspec/core}/array/constructor_spec.rb +0 -0
  133. data/spec/{core → rubyspec/core}/array/count_spec.rb +0 -0
  134. data/spec/{core → rubyspec/core}/array/delete_at_spec.rb +0 -0
  135. data/spec/{core → rubyspec/core}/array/delete_if_spec.rb +0 -0
  136. data/spec/{core → rubyspec/core}/array/delete_spec.rb +0 -0
  137. data/spec/{core → rubyspec/core}/array/drop_spec.rb +0 -0
  138. data/spec/{core → rubyspec/core}/array/drop_while_spec.rb +0 -0
  139. data/spec/{core → rubyspec/core}/array/dup_spec.rb +0 -0
  140. data/spec/{core → rubyspec/core}/array/each_index_spec.rb +0 -0
  141. data/spec/{core → rubyspec/core}/array/each_spec.rb +0 -0
  142. data/spec/{core → rubyspec/core}/array/empty_spec.rb +0 -0
  143. data/spec/{core → rubyspec/core}/array/eql_spec.rb +0 -0
  144. data/spec/{core → rubyspec/core}/array/fetch_spec.rb +0 -0
  145. data/spec/{core → rubyspec/core}/array/find_index_spec.rb +0 -0
  146. data/spec/{core → rubyspec/core}/array/first_spec.rb +0 -0
  147. data/spec/{core → rubyspec/core}/array/fixtures/classes.rb +0 -0
  148. data/spec/{core → rubyspec/core}/array/flatten_spec.rb +0 -0
  149. data/spec/{core → rubyspec/core}/array/frozen_spec.rb +0 -0
  150. data/spec/{core → rubyspec/core}/array/include_spec.rb +0 -0
  151. data/spec/{core → rubyspec/core}/array/index_spec.rb +0 -0
  152. data/spec/{core → rubyspec/core}/array/insert_spec.rb +0 -0
  153. data/spec/{core → rubyspec/core}/array/inspect_spec.rb +0 -0
  154. data/spec/{core → rubyspec/core}/array/intersection_spec.rb +0 -0
  155. data/spec/{core → rubyspec/core}/array/join_spec.rb +0 -0
  156. data/spec/{core → rubyspec/core}/array/keep_if_spec.rb +0 -0
  157. data/spec/{core → rubyspec/core}/array/last_spec.rb +0 -0
  158. data/spec/{core → rubyspec/core}/array/length_spec.rb +0 -0
  159. data/spec/{core → rubyspec/core}/array/map_spec.rb +0 -0
  160. data/spec/{core → rubyspec/core}/array/minus_spec.rb +0 -0
  161. data/spec/{core → rubyspec/core}/array/multiply_spec.rb +0 -0
  162. data/spec/{core → rubyspec/core}/array/new_spec.rb +0 -0
  163. data/spec/{core → rubyspec/core}/array/ntimes_spec.rb +0 -0
  164. data/spec/{core → rubyspec/core}/array/plus_spec.rb +0 -0
  165. data/spec/{core → rubyspec/core}/array/pop_spec.rb +0 -0
  166. data/spec/{core → rubyspec/core}/array/push_spec.rb +0 -0
  167. data/spec/{core → rubyspec/core}/array/rassoc_spec.rb +0 -0
  168. data/spec/{core → rubyspec/core}/array/reject_spec.rb +0 -0
  169. data/spec/{core → rubyspec/core}/array/replace_spec.rb +0 -0
  170. data/spec/{core → rubyspec/core}/array/reverse_each_spec.rb +0 -0
  171. data/spec/{core → rubyspec/core}/array/reverse_spec.rb +0 -0
  172. data/spec/{core → rubyspec/core}/array/rindex_spec.rb +0 -0
  173. data/spec/{core → rubyspec/core}/array/select_spec.rb +0 -0
  174. data/spec/{core → rubyspec/core}/array/shared/collect.rb +0 -0
  175. data/spec/{core → rubyspec/core}/array/shared/enumeratorize.rb +0 -0
  176. data/spec/{core → rubyspec/core}/array/shared/eql.rb +0 -0
  177. data/spec/{core → rubyspec/core}/array/shared/index.rb +0 -0
  178. data/spec/{core → rubyspec/core}/array/shared/inspect.rb +0 -0
  179. data/spec/{core → rubyspec/core}/array/shared/join.rb +0 -0
  180. data/spec/{core → rubyspec/core}/array/shared/keep_if.rb +0 -0
  181. data/spec/{core → rubyspec/core}/array/shared/length.rb +0 -0
  182. data/spec/{core → rubyspec/core}/array/shared/replace.rb +0 -0
  183. data/spec/{core → rubyspec/core}/array/shared/slice.rb +0 -0
  184. data/spec/{core → rubyspec/core}/array/shift_spec.rb +0 -0
  185. data/spec/{core → rubyspec/core}/array/shuffle_spec.rb +0 -0
  186. data/spec/{core → rubyspec/core}/array/size_spec.rb +0 -0
  187. data/spec/{core → rubyspec/core}/array/slice_spec.rb +0 -0
  188. data/spec/{core → rubyspec/core}/array/sort_spec.rb +0 -0
  189. data/spec/{core → rubyspec/core}/array/take_spec.rb +0 -0
  190. data/spec/{core → rubyspec/core}/array/take_while_spec.rb +0 -0
  191. data/spec/{core → rubyspec/core}/array/to_a_spec.rb +0 -0
  192. data/spec/{core → rubyspec/core}/array/to_ary_spec.rb +0 -0
  193. data/spec/{core → rubyspec/core}/array/try_convert_spec.rb +0 -0
  194. data/spec/{core → rubyspec/core}/array/uniq_spec.rb +0 -0
  195. data/spec/{core → rubyspec/core}/array/unshift_spec.rb +0 -0
  196. data/spec/{core → rubyspec/core}/array/zip_spec.rb +0 -0
  197. data/spec/{core → rubyspec/core}/class/bridge_class_spec.rb +0 -0
  198. data/spec/{core → rubyspec/core}/class/extend_spec.rb +0 -0
  199. data/spec/{core → rubyspec/core}/class/fixtures/classes.rb +0 -0
  200. data/spec/{core → rubyspec/core}/class/instance_methods_spec.rb +0 -0
  201. data/spec/{core → rubyspec/core}/class/last_value_spec.rb +0 -0
  202. data/spec/{core → rubyspec/core}/class/new_spec.rb +0 -0
  203. data/spec/{core → rubyspec/core}/enumerable/all_spec.rb +0 -0
  204. data/spec/{core → rubyspec/core}/enumerable/any_spec.rb +0 -0
  205. data/spec/{core → rubyspec/core}/enumerable/collect_spec.rb +0 -0
  206. data/spec/{core → rubyspec/core}/enumerable/count_spec.rb +0 -0
  207. data/spec/{core → rubyspec/core}/enumerable/detect_spec.rb +0 -0
  208. data/spec/{core → rubyspec/core}/enumerable/drop_spec.rb +0 -0
  209. data/spec/{core → rubyspec/core}/enumerable/drop_while_spec.rb +0 -0
  210. data/spec/{core → rubyspec/core}/enumerable/each_slice_spec.rb +0 -0
  211. data/spec/{core → rubyspec/core}/enumerable/each_with_index_spec.rb +0 -0
  212. data/spec/{core → rubyspec/core}/enumerable/each_with_object_spec.rb +0 -0
  213. data/spec/{core → rubyspec/core}/enumerable/entries_spec.rb +0 -0
  214. data/spec/{core → rubyspec/core}/enumerable/find_all_spec.rb +0 -0
  215. data/spec/{core → rubyspec/core}/enumerable/find_index_spec.rb +0 -0
  216. data/spec/{core → rubyspec/core}/enumerable/find_spec.rb +0 -0
  217. data/spec/{core → rubyspec/core}/enumerable/first_spec.rb +0 -0
  218. data/spec/{core → rubyspec/core}/enumerable/fixtures/classes.rb +0 -0
  219. data/spec/{core → rubyspec/core}/enumerable/grep_spec.rb +0 -0
  220. data/spec/{core → rubyspec/core}/enumerable/group_by_spec.rb +0 -0
  221. data/spec/{core → rubyspec/core}/enumerable/select_spec.rb +0 -0
  222. data/spec/{core → rubyspec/core}/enumerable/take_spec.rb +0 -0
  223. data/spec/{core → rubyspec/core}/enumerable/to_a_spec.rb +0 -0
  224. data/spec/{core → rubyspec/core}/enumerator/each_spec.rb +0 -0
  225. data/spec/{core → rubyspec/core}/enumerator/new_spec.rb +0 -0
  226. data/spec/{core → rubyspec/core}/enumerator/next_spec.rb +0 -0
  227. data/spec/{core → rubyspec/core}/enumerator/rewind_spec.rb +0 -0
  228. data/spec/{core → rubyspec/core}/false/and_spec.rb +0 -0
  229. data/spec/{core → rubyspec/core}/false/inspect_spec.rb +0 -0
  230. data/spec/{core → rubyspec/core}/false/or_spec.rb +0 -0
  231. data/spec/{core → rubyspec/core}/false/to_s_spec.rb +0 -0
  232. data/spec/{core → rubyspec/core}/false/xor_spec.rb +0 -0
  233. data/spec/{core → rubyspec/core}/hash/allocate_spec.rb +0 -0
  234. data/spec/{core → rubyspec/core}/hash/assoc_spec.rb +0 -0
  235. data/spec/{core → rubyspec/core}/hash/clear_spec.rb +0 -0
  236. data/spec/{core → rubyspec/core}/hash/clone_spec.rb +0 -0
  237. data/spec/{core → rubyspec/core}/hash/constructor_spec.rb +0 -0
  238. data/spec/{core → rubyspec/core}/hash/default_proc_spec.rb +0 -0
  239. data/spec/{core → rubyspec/core}/hash/default_spec.rb +0 -0
  240. data/spec/{core → rubyspec/core}/hash/delete_if_spec.rb +0 -0
  241. data/spec/{core → rubyspec/core}/hash/delete_spec.rb +0 -0
  242. data/spec/{core → rubyspec/core}/hash/dup_spec.rb +0 -0
  243. data/spec/{core → rubyspec/core}/hash/each_key_spec.rb +0 -0
  244. data/spec/{core → rubyspec/core}/hash/each_pair_spec.rb +0 -0
  245. data/spec/{core → rubyspec/core}/hash/each_spec.rb +0 -0
  246. data/spec/{core → rubyspec/core}/hash/each_value_spec.rb +0 -0
  247. data/spec/{core → rubyspec/core}/hash/element_reference_spec.rb +0 -0
  248. data/spec/{core → rubyspec/core}/hash/element_set_spec.rb +0 -0
  249. data/spec/{core → rubyspec/core}/hash/empty_spec.rb +0 -0
  250. data/spec/{core → rubyspec/core}/hash/fetch_spec.rb +0 -0
  251. data/spec/{core → rubyspec/core}/hash/flatten_spec.rb +0 -0
  252. data/spec/{core → rubyspec/core}/hash/has_key_spec.rb +0 -0
  253. data/spec/{core → rubyspec/core}/hash/has_value_spec.rb +0 -0
  254. data/spec/{core → rubyspec/core}/hash/include_spec.rb +0 -0
  255. data/spec/{core → rubyspec/core}/hash/index_spec.rb +0 -0
  256. data/spec/{core → rubyspec/core}/hash/indexes_spec.rb +0 -0
  257. data/spec/{core → rubyspec/core}/hash/indices_spec.rb +0 -0
  258. data/spec/{core → rubyspec/core}/hash/invert_spec.rb +0 -0
  259. data/spec/{core → rubyspec/core}/hash/keep_if_spec.rb +0 -0
  260. data/spec/{core → rubyspec/core}/hash/key_spec.rb +0 -0
  261. data/spec/{core → rubyspec/core}/hash/keys_spec.rb +0 -0
  262. data/spec/{core → rubyspec/core}/hash/length_spec.rb +0 -0
  263. data/spec/{core → rubyspec/core}/hash/member_spec.rb +0 -0
  264. data/spec/{core → rubyspec/core}/hash/merge_spec.rb +0 -0
  265. data/spec/{core → rubyspec/core}/hash/new_spec.rb +0 -0
  266. data/spec/{core → rubyspec/core}/hash/rassoc_spec.rb +0 -0
  267. data/spec/{core → rubyspec/core}/hash/reject_spec.rb +0 -0
  268. data/spec/{core → rubyspec/core}/hash/replace_spec.rb +0 -0
  269. data/spec/{core → rubyspec/core}/hash/select_spec.rb +0 -0
  270. data/spec/{core → rubyspec/core}/hash/shift_spec.rb +0 -0
  271. data/spec/{core → rubyspec/core}/hash/size_spec.rb +0 -0
  272. data/spec/{core → rubyspec/core}/hash/to_a_spec.rb +0 -0
  273. data/spec/{core → rubyspec/core}/hash/to_json_spec.rb +0 -0
  274. data/spec/{core → rubyspec/core}/hash/to_native_spec.rb +0 -0
  275. data/spec/{core → rubyspec/core}/hash/update_spec.rb +0 -0
  276. data/spec/{core → rubyspec/core}/hash/value_spec.rb +0 -0
  277. data/spec/{core → rubyspec/core}/hash/values_at_spec.rb +0 -0
  278. data/spec/{core → rubyspec/core}/hash/values_spec.rb +0 -0
  279. data/spec/{core → rubyspec/core}/json/parse_spec.rb +0 -0
  280. data/spec/{core → rubyspec/core}/kernel/Array_spec.rb +0 -0
  281. data/spec/{core → rubyspec/core}/kernel/block_given.rb +0 -0
  282. data/spec/{core → rubyspec/core}/kernel/class_spec.rb +0 -0
  283. data/spec/{core → rubyspec/core}/kernel/define_singleton_method_spec.rb +0 -0
  284. data/spec/{core → rubyspec/core}/kernel/eql_spec.rb +0 -0
  285. data/spec/{core → rubyspec/core}/kernel/equal_spec.rb +0 -0
  286. data/spec/{core → rubyspec/core}/kernel/equal_value_spec.rb +0 -0
  287. data/spec/{core → rubyspec/core}/kernel/extend_spec.rb +0 -0
  288. data/spec/{core → rubyspec/core}/kernel/format_spec.rb +0 -0
  289. data/spec/{core → rubyspec/core}/kernel/instance_eval_spec.rb +0 -0
  290. data/spec/{core → rubyspec/core}/kernel/instance_variable_get_spec.rb +0 -0
  291. data/spec/{core → rubyspec/core}/kernel/instance_variable_set_spec.rb +0 -0
  292. data/spec/{core → rubyspec/core}/kernel/loop_spec.rb +0 -0
  293. data/spec/{core → rubyspec/core}/kernel/match_spec.rb +0 -0
  294. data/spec/{core → rubyspec/core}/kernel/method_spec.rb +0 -0
  295. data/spec/{core → rubyspec/core}/kernel/methods_spec.rb +0 -0
  296. data/spec/{core → rubyspec/core}/kernel/nil_spec.rb +0 -0
  297. data/spec/{core → rubyspec/core}/kernel/p_spec.rb +0 -0
  298. data/spec/{core → rubyspec/core}/kernel/printf_spec.rb +0 -0
  299. data/spec/{core → rubyspec/core}/kernel/proc_spec.rb +0 -0
  300. data/spec/{core → rubyspec/core}/kernel/rand_spec.rb +0 -0
  301. data/spec/{core → rubyspec/core}/kernel/respond_to_spec.rb +0 -0
  302. data/spec/{core → rubyspec/core}/kernel/send_spec.rb +0 -0
  303. data/spec/{core → rubyspec/core}/kernel/sprintf_spec.rb +0 -0
  304. data/spec/{core → rubyspec/core}/kernel/tap_spec.rb +0 -0
  305. data/spec/{core → rubyspec/core}/kernel/to_json_spec.rb +0 -0
  306. data/spec/{core → rubyspec/core}/kernel/to_s_spec.rb +0 -0
  307. data/spec/{core → rubyspec/core}/matchdata/to_a_spec.rb +0 -0
  308. data/spec/{core → rubyspec/core}/module/alias_method_spec.rb +0 -0
  309. data/spec/{core → rubyspec/core}/module/ancestors_spec.rb +0 -0
  310. data/spec/{core → rubyspec/core}/module/append_features_spec.rb +0 -0
  311. data/spec/{core → rubyspec/core}/module/const_get_spec.rb +0 -0
  312. data/spec/rubyspec/core/module/const_missing_spec.rb +18 -0
  313. data/spec/{core → rubyspec/core}/module/const_set_spec.rb +0 -0
  314. data/spec/{core → rubyspec/core}/module/fixtures/classes.rb +0 -0
  315. data/spec/{core → rubyspec/core}/module/method_defined_spec.rb +0 -0
  316. data/spec/{core → rubyspec/core}/module/module_function_spec.rb +0 -0
  317. data/spec/{core → rubyspec/core}/module/undef_method_spec.rb +0 -0
  318. data/spec/{core → rubyspec/core}/nil/and_spec.rb +0 -0
  319. data/spec/{core → rubyspec/core}/nil/dup_spec.rb +0 -0
  320. data/spec/{core → rubyspec/core}/nil/inspect_spec.rb +0 -0
  321. data/spec/{core → rubyspec/core}/nil/nil_spec.rb +0 -0
  322. data/spec/{core → rubyspec/core}/nil/or_spec.rb +0 -0
  323. data/spec/{core → rubyspec/core}/nil/to_a_spec.rb +0 -0
  324. data/spec/{core → rubyspec/core}/nil/to_f_spec.rb +0 -0
  325. data/spec/{core → rubyspec/core}/nil/to_h_spec.rb +0 -0
  326. data/spec/{core → rubyspec/core}/nil/to_i_spec.rb +0 -0
  327. data/spec/{core → rubyspec/core}/nil/to_s_spec.rb +0 -0
  328. data/spec/{core → rubyspec/core}/nil/xor_spec.rb +0 -0
  329. data/spec/{core → rubyspec/core}/numeric/abs_spec.rb +0 -0
  330. data/spec/{core → rubyspec/core}/numeric/bit_and_spec.rb +0 -0
  331. data/spec/{core → rubyspec/core}/numeric/bit_or_spec.rb +0 -0
  332. data/spec/{core → rubyspec/core}/numeric/bit_xor_spec.rb +0 -0
  333. data/spec/{core → rubyspec/core}/numeric/ceil_spec.rb +0 -0
  334. data/spec/{core → rubyspec/core}/numeric/chr_spec.rb +0 -0
  335. data/spec/{core → rubyspec/core}/numeric/comparison_spec.rb +0 -0
  336. data/spec/{core → rubyspec/core}/numeric/complement_spec.rb +0 -0
  337. data/spec/{core → rubyspec/core}/numeric/divide_spec.rb +0 -0
  338. data/spec/{core → rubyspec/core}/numeric/downto_spec.rb +0 -0
  339. data/spec/{core → rubyspec/core}/numeric/eql_spec.rb +0 -0
  340. data/spec/{core → rubyspec/core}/numeric/equal_value_spec.rb +0 -0
  341. data/spec/{core → rubyspec/core}/numeric/even_spec.rb +0 -0
  342. data/spec/{core → rubyspec/core}/numeric/exponent_spec.rb +0 -0
  343. data/spec/{core → rubyspec/core}/numeric/floor_spec.rb +0 -0
  344. data/spec/{core → rubyspec/core}/numeric/gt_spec.rb +0 -0
  345. data/spec/{core → rubyspec/core}/numeric/gte_spec.rb +0 -0
  346. data/spec/{core → rubyspec/core}/numeric/integer_spec.rb +0 -0
  347. data/spec/{core → rubyspec/core}/numeric/left_shift_spec.rb +0 -0
  348. data/spec/{core → rubyspec/core}/numeric/lt_spec.rb +0 -0
  349. data/spec/{core → rubyspec/core}/numeric/lte_spec.rb +0 -0
  350. data/spec/{core → rubyspec/core}/numeric/magnitude_spec.rb +0 -0
  351. data/spec/{core → rubyspec/core}/numeric/minus_spec.rb +0 -0
  352. data/spec/{core → rubyspec/core}/numeric/modulo_spec.rb +0 -0
  353. data/spec/{core → rubyspec/core}/numeric/multiply_spec.rb +0 -0
  354. data/spec/{core → rubyspec/core}/numeric/next_spec.rb +0 -0
  355. data/spec/{core → rubyspec/core}/numeric/odd_spec.rb +0 -0
  356. data/spec/{core → rubyspec/core}/numeric/ord_spec.rb +0 -0
  357. data/spec/{core → rubyspec/core}/numeric/plus_spec.rb +0 -0
  358. data/spec/{core → rubyspec/core}/numeric/pred_spec.rb +0 -0
  359. data/spec/{core → rubyspec/core}/numeric/right_shift_spec.rb +0 -0
  360. data/spec/{core → rubyspec/core}/numeric/succ_spec.rb +0 -0
  361. data/spec/{core → rubyspec/core}/numeric/times_spec.rb +0 -0
  362. data/spec/{core → rubyspec/core}/numeric/to_f_spec.rb +0 -0
  363. data/spec/{core → rubyspec/core}/numeric/to_i_spec.rb +0 -0
  364. data/spec/{core → rubyspec/core}/numeric/to_json_spec.rb +0 -0
  365. data/spec/{core → rubyspec/core}/numeric/to_s_spec.rb +0 -0
  366. data/spec/{core → rubyspec/core}/numeric/uminus_spec.rb +0 -0
  367. data/spec/{core → rubyspec/core}/numeric/upto_spec.rb +0 -0
  368. data/spec/{core → rubyspec/core}/numeric/zero_spec.rb +0 -0
  369. data/spec/{core → rubyspec/core}/proc/call_spec.rb +0 -0
  370. data/spec/{core → rubyspec/core}/proc/element_reference_spec.rb +0 -0
  371. data/spec/{core → rubyspec/core}/proc/proc_tricks_spec.rb +0 -0
  372. data/spec/{core → rubyspec/core}/range/begin_spec.rb +0 -0
  373. data/spec/{core → rubyspec/core}/range/case_compare_spec.rb +0 -0
  374. data/spec/{core → rubyspec/core}/range/end_spec.rb +0 -0
  375. data/spec/{core → rubyspec/core}/regexp/match_spec.rb +0 -0
  376. data/spec/{core → rubyspec/core}/runtime/call_spec.rb +0 -0
  377. data/spec/{core → rubyspec/core}/runtime/class_hierarchy_spec.rb +0 -0
  378. data/spec/{core → rubyspec/core}/runtime/def_spec.rb +0 -0
  379. data/spec/{core → rubyspec/core}/runtime/defined_spec.rb +0 -0
  380. data/spec/{core → rubyspec/core}/runtime/super_spec.rb +0 -0
  381. data/spec/{core → rubyspec/core}/string/capitalize_spec.rb +0 -0
  382. data/spec/{core → rubyspec/core}/string/casecmp_spec.rb +0 -0
  383. data/spec/{core → rubyspec/core}/string/chomp_spec.rb +0 -0
  384. data/spec/{core → rubyspec/core}/string/chop_spec.rb +0 -0
  385. data/spec/{core → rubyspec/core}/string/chr_spec.rb +0 -0
  386. data/spec/{core → rubyspec/core}/string/comparison_spec.rb +0 -0
  387. data/spec/{core → rubyspec/core}/string/demodulize_spec.rb +0 -0
  388. data/spec/{core → rubyspec/core}/string/downcase_spec.rb +0 -0
  389. data/spec/{core → rubyspec/core}/string/element_reference_spec.rb +0 -0
  390. data/spec/{core → rubyspec/core}/string/empty_spec.rb +0 -0
  391. data/spec/{core → rubyspec/core}/string/end_with_spec.rb +0 -0
  392. data/spec/{core → rubyspec/core}/string/fixtures/classes.rb +0 -0
  393. data/spec/{core → rubyspec/core}/string/format_spec.rb +0 -0
  394. data/spec/{core → rubyspec/core}/string/gsub_spec.rb +0 -0
  395. data/spec/{core → rubyspec/core}/string/include_spec.rb +0 -0
  396. data/spec/{core → rubyspec/core}/string/intern_spec.rb +0 -0
  397. data/spec/{core → rubyspec/core}/string/length_spec.rb +0 -0
  398. data/spec/{core → rubyspec/core}/string/lstrip_spec.rb +0 -0
  399. data/spec/{core → rubyspec/core}/string/match_spec.rb +0 -0
  400. data/spec/{core → rubyspec/core}/string/next_spec.rb +0 -0
  401. data/spec/{core → rubyspec/core}/string/ord_spec.rb +0 -0
  402. data/spec/{core → rubyspec/core}/string/partition_spec.rb +0 -0
  403. data/spec/{core → rubyspec/core}/string/reverse_spec.rb +0 -0
  404. data/spec/{core → rubyspec/core}/string/rstrip_spec.rb +0 -0
  405. data/spec/{core → rubyspec/core}/string/size_spec.rb +0 -0
  406. data/spec/{core → rubyspec/core}/string/slice_spec.rb +0 -0
  407. data/spec/{core → rubyspec/core}/string/split_spec.rb +0 -0
  408. data/spec/{core → rubyspec/core}/string/start_with_spec.rb +0 -0
  409. data/spec/{core → rubyspec/core}/string/strip_spec.rb +0 -0
  410. data/spec/{core → rubyspec/core}/string/sub_spec.rb +0 -0
  411. data/spec/{core → rubyspec/core}/string/succ_spec.rb +0 -0
  412. data/spec/{core → rubyspec/core}/string/sum_spec.rb +0 -0
  413. data/spec/{core → rubyspec/core}/string/swapcase_spec.rb +0 -0
  414. data/spec/{core → rubyspec/core}/string/to_a_spec.rb +0 -0
  415. data/spec/{core → rubyspec/core}/string/to_f_spec.rb +0 -0
  416. data/spec/{core → rubyspec/core}/string/to_i_spec.rb +0 -0
  417. data/spec/{core → rubyspec/core}/string/to_json_spec.rb +0 -0
  418. data/spec/{core → rubyspec/core}/string/to_s_spec.rb +0 -0
  419. data/spec/{core → rubyspec/core}/string/to_str_spec.rb +0 -0
  420. data/spec/{core → rubyspec/core}/string/to_sym_spec.rb +0 -0
  421. data/spec/{core → rubyspec/core}/string/underscore_spec.rb +0 -0
  422. data/spec/{core → rubyspec/core}/string/upcase_spec.rb +0 -0
  423. data/spec/{core → rubyspec/core}/symbol/to_proc_spec.rb +0 -0
  424. data/spec/{core → rubyspec/core}/time/at_spec.rb +0 -0
  425. data/spec/{core → rubyspec/core}/time/day_spec.rb +0 -0
  426. data/spec/{core → rubyspec/core}/time/friday_spec.rb +0 -0
  427. data/spec/{core → rubyspec/core}/time/hour_spec.rb +0 -0
  428. data/spec/{core → rubyspec/core}/time/min_spec.rb +0 -0
  429. data/spec/{core → rubyspec/core}/time/monday_spec.rb +0 -0
  430. data/spec/{core → rubyspec/core}/time/month_spec.rb +0 -0
  431. data/spec/{core → rubyspec/core}/time/now_spec.rb +0 -0
  432. data/spec/{core → rubyspec/core}/time/saturday_spec.rb +0 -0
  433. data/spec/{core → rubyspec/core}/true/and_spec.rb +0 -0
  434. data/spec/{core → rubyspec/core}/true/inspect_spec.rb +0 -0
  435. data/spec/{core → rubyspec/core}/true/or_spec.rb +0 -0
  436. data/spec/{core → rubyspec/core}/true/to_s_spec.rb +0 -0
  437. data/spec/{core → rubyspec/core}/true/xor_spec.rb +0 -0
  438. data/spec/rubyspec/filters/bugs/alias.rb +6 -0
  439. data/spec/{filters → rubyspec/filters/bugs}/ancestors.rb +0 -0
  440. data/spec/rubyspec/filters/bugs/array.rb +5 -0
  441. data/spec/{filters → rubyspec/filters/bugs}/array_delete.rb +0 -0
  442. data/spec/{filters → rubyspec/filters/bugs}/array_fetch.rb +0 -0
  443. data/spec/{filters → rubyspec/filters/bugs}/array_first.rb +0 -0
  444. data/spec/{filters → rubyspec/filters/bugs}/array_flatten.rb +0 -0
  445. data/spec/{filters → rubyspec/filters/bugs}/array_intersection.rb +0 -0
  446. data/spec/{filters → rubyspec/filters/bugs}/array_join.rb +0 -0
  447. data/spec/{filters → rubyspec/filters/bugs}/block_args.rb +0 -0
  448. data/spec/rubyspec/filters/bugs/break.rb +10 -0
  449. data/spec/rubyspec/filters/bugs/case.rb +8 -0
  450. data/spec/{filters → rubyspec/filters/bugs}/coerce_integer.rb +0 -0
  451. data/spec/rubyspec/filters/bugs/kernel/instance_variables.rb +3 -0
  452. data/spec/rubyspec/filters/bugs/language/class.rb +11 -0
  453. data/spec/rubyspec/filters/bugs/language/class_variables.rb +12 -0
  454. data/spec/rubyspec/filters/bugs/module/class_variables.rb +6 -0
  455. data/spec/rubyspec/filters/bugs/public_methods.rb +3 -0
  456. data/spec/{filters → rubyspec/filters/mspec}/mocks.rb +0 -0
  457. data/spec/rubyspec/filters/mspec/ruby_exe.rb +5 -0
  458. data/spec/{filters → rubyspec/filters/mspec}/should_receive.rb +1 -0
  459. data/spec/rubyspec/filters/parser/block_args.rb +51 -0
  460. data/spec/{filters → rubyspec/filters/unsupported}/array_subclasses.rb +0 -0
  461. data/spec/{filters → rubyspec/filters/unsupported}/frozen.rb +0 -0
  462. data/spec/{filters → rubyspec/filters/unsupported}/tainted.rb +0 -0
  463. data/spec/{fixtures → rubyspec/fixtures}/class.rb +0 -0
  464. data/spec/{fixtures → rubyspec/fixtures}/class_variables.rb +0 -0
  465. data/spec/rubyspec/fixtures/constants.rb +20 -0
  466. data/spec/{language → rubyspec/language}/alias_spec.rb +7 -7
  467. data/spec/{language → rubyspec/language}/and_spec.rb +0 -0
  468. data/spec/{language → rubyspec/language}/array_spec.rb +3 -3
  469. data/spec/{language → rubyspec/language}/block_spec.rb +59 -59
  470. data/spec/{language → rubyspec/language}/break_spec.rb +15 -19
  471. data/spec/{language → rubyspec/language}/case_spec.rb +6 -6
  472. data/spec/{language → rubyspec/language}/class_spec.rb +16 -18
  473. data/spec/{language → rubyspec/language}/class_variable_spec.rb +10 -10
  474. data/spec/{language → rubyspec/language}/def_spec.rb +0 -0
  475. data/spec/{language → rubyspec/language}/defined_spec.rb +2 -2
  476. data/spec/{language → rubyspec/language}/ensure_spec.rb +0 -0
  477. data/spec/{language → rubyspec/language}/execution_spec.rb +0 -0
  478. data/spec/{language → rubyspec/language}/fixtures/array.rb +0 -0
  479. data/spec/{language → rubyspec/language}/fixtures/block.rb +0 -0
  480. data/spec/{language → rubyspec/language}/fixtures/break.rb +0 -0
  481. data/spec/{language → rubyspec/language}/fixtures/ensure.rb +0 -0
  482. data/spec/{language → rubyspec/language}/fixtures/literal_lambda.rb +0 -0
  483. data/spec/{language → rubyspec/language}/fixtures/metaclass.rb +0 -0
  484. data/spec/{language → rubyspec/language}/fixtures/module.rb +0 -0
  485. data/spec/{language → rubyspec/language}/fixtures/next.rb +0 -0
  486. data/spec/{language → rubyspec/language}/fixtures/return.rb +0 -0
  487. data/spec/{language → rubyspec/language}/fixtures/send.rb +0 -0
  488. data/spec/{language → rubyspec/language}/fixtures/send_1.9.rb +0 -0
  489. data/spec/{language → rubyspec/language}/fixtures/super.rb +0 -0
  490. data/spec/{language → rubyspec/language}/fixtures/variables.rb +0 -0
  491. data/spec/{language → rubyspec/language}/fixtures/yield.rb +0 -0
  492. data/spec/{language → rubyspec/language}/for_spec.rb +0 -0
  493. data/spec/{language → rubyspec/language}/hash_spec.rb +0 -0
  494. data/spec/{language → rubyspec/language}/if_spec.rb +0 -0
  495. data/spec/{language → rubyspec/language}/literal_lambda_spec.rb +0 -0
  496. data/spec/{language → rubyspec/language}/loop_spec.rb +0 -0
  497. data/spec/{language → rubyspec/language}/metaclass_spec.rb +0 -0
  498. data/spec/{language → rubyspec/language}/module_spec.rb +0 -0
  499. data/spec/{language → rubyspec/language}/next_spec.rb +0 -0
  500. data/spec/{language → rubyspec/language}/not_spec.rb +0 -0
  501. data/spec/{language → rubyspec/language}/numbers_spec.rb +0 -0
  502. data/spec/{language → rubyspec/language}/or_spec.rb +0 -0
  503. data/spec/{language → rubyspec/language}/order_spec.rb +0 -0
  504. data/spec/{language → rubyspec/language}/precedence_spec.rb +0 -0
  505. data/spec/{language → rubyspec/language}/predefined_spec.rb +0 -0
  506. data/spec/{language → rubyspec/language}/proc_spec.rb +0 -0
  507. data/spec/{language → rubyspec/language}/redo_spec.rb +0 -0
  508. data/spec/{language → rubyspec/language}/regexp_spec.rb +0 -0
  509. data/spec/{language → rubyspec/language}/rescue_spec.rb +0 -0
  510. data/spec/{language → rubyspec/language}/retry_spec.rb +0 -0
  511. data/spec/{language → rubyspec/language}/return_spec.rb +0 -0
  512. data/spec/{language → rubyspec/language}/send_spec.rb +0 -1
  513. data/spec/{language → rubyspec/language}/singleton_class_spec.rb +0 -0
  514. data/spec/{language → rubyspec/language}/string_spec.rb +0 -0
  515. data/spec/{language → rubyspec/language}/super_spec.rb +0 -0
  516. data/spec/{language → rubyspec/language}/symbol_spec.rb +0 -0
  517. data/spec/{language → rubyspec/language}/undef_spec.rb +0 -0
  518. data/spec/{language → rubyspec/language}/unless_spec.rb +0 -0
  519. data/spec/{language → rubyspec/language}/until_spec.rb +0 -0
  520. data/spec/{language → rubyspec/language}/variables_spec.rb +3 -3
  521. data/spec/{language → rubyspec/language}/versions/array_1.9.rb +0 -0
  522. data/spec/{language → rubyspec/language}/versions/case_1.9.rb +0 -0
  523. data/spec/{language → rubyspec/language}/versions/hash_1.9.rb +0 -0
  524. data/spec/{language → rubyspec/language}/versions/literal_lambda_1.9.rb +0 -0
  525. data/spec/{language → rubyspec/language}/versions/not_1.9.rb +0 -0
  526. data/spec/{language → rubyspec/language}/versions/send_1.9.rb +0 -0
  527. data/spec/{language → rubyspec/language}/versions/symbol_1.9.rb +0 -0
  528. data/spec/{language → rubyspec/language}/versions/variables_1.9.rb +0 -0
  529. data/spec/{language → rubyspec/language}/while_spec.rb +0 -0
  530. data/spec/{language → rubyspec/language}/yield_spec.rb +0 -0
  531. data/spec/{library → rubyspec/library}/date/new_spec.rb +0 -0
  532. data/spec/{library → rubyspec/library}/date/to_s_spec.rb +0 -0
  533. data/spec/{library → rubyspec/library}/date/today_spec.rb +0 -0
  534. data/spec/rubyspec/library/observer/add_observer_spec.rb +31 -0
  535. data/spec/rubyspec/library/observer/count_observers_spec.rb +33 -0
  536. data/spec/rubyspec/library/observer/delete_observer_spec.rb +19 -0
  537. data/spec/rubyspec/library/observer/delete_observers_spec.rb +19 -0
  538. data/spec/rubyspec/library/observer/fixtures/classes.rb +25 -0
  539. data/spec/rubyspec/library/observer/notify_observers_spec.rb +31 -0
  540. data/spec/rubyspec/spec_helper.rb +59 -0
  541. data/spec/simple_erb_template.opalerb +1 -0
  542. data/spec/spec_helper.rb +0 -59
  543. data/spec/templates/foo/bar.opalerb +1 -0
  544. data/spec/templates/prefixed.opalerb +1 -0
  545. metadata +1028 -961
  546. data/opal/opal/browser_loader.js +0 -57
  547. data/spec/core_ext/native/fixtures/classes.rb +0 -5
  548. data/spec/core_ext/native/initialize_spec.rb +0 -8
  549. data/spec/core_ext/native/method_missing_spec.rb +0 -8
  550. data/spec/date.rb +0 -0
  551. data/spec/fixtures/constants.rb +0 -0
  552. data/spec/ospec/filter.rb +0 -32
  553. data/spec/ospec/phantom.rb +0 -97
data/CHANGELOG.md CHANGED
@@ -1,3 +1,32 @@
1
+ ## 0.3.43 2013-05-02
2
+
3
+ * Stop inlining respond_to? inside the parser. This now fully respects
4
+ an object overriding respond_to?.
5
+
6
+ * Expose `Opal.eval()` function when parser is loaded for parsing
7
+ and running strings of ruby code.
8
+
9
+ * Add erb to corelib (as well as compiler to gem lib). ERB files with
10
+ .opalerb extension will automatically be compiled into Template
11
+ constant.
12
+
13
+ * Added some examples into examples/ dir.
14
+
15
+ * Add Opal.send() javascript function for sending methods to ruby
16
+ objects.
17
+
18
+ * Native class for wrapping and interacting with native objects and
19
+ function calls.
20
+
21
+ * Add local_storage to stdlib as a basic wrapper around localStorage.
22
+
23
+ * Make method_missing more performant by reusing same dispatch function
24
+ instead of reallocating one for each run.
25
+
26
+ * Fix Kernel#format to work in firefox. String.prototype.replace() had
27
+ different semantics for empty matching groups which was breaking
28
+ Kernel#format.
29
+
1
30
  ## 0.3.42 2013-03-21
2
31
 
3
32
  * Fix/add lots of language specs.
data/CONTRIBUTING.md CHANGED
@@ -21,4 +21,12 @@ and all specs, run:
21
21
 
22
22
  ```
23
23
  $ rake
24
- ```
24
+ ```
25
+
26
+ You can alternatively run tests in a browser using:
27
+
28
+ ```
29
+ $ rackup
30
+ ```
31
+
32
+ And then opening `http://127.0.0.1:9292` in a web browser.
data/Rakefile CHANGED
@@ -1,34 +1,69 @@
1
1
  require 'bundler'
2
2
  Bundler.require
3
3
 
4
- require 'opal-sprockets'
4
+ require 'rack'
5
+ require 'webrick'
5
6
 
6
- desc "Run tests through mspec"
7
- task :default do
8
- require 'rack'
9
- require 'webrick'
7
+ class RunSpec
8
+ def initialize(file=nil)
9
+ Opal::Processor.arity_check_enabled = true
10
10
 
11
- Opal::Processor.arity_check_enabled = true
11
+ ENV['OPAL_SPEC'] = file.nil? ? ["#{Dir.pwd}/spec/"].join(',') : file.join(',')
12
12
 
13
- server = fork do
14
- serv = Opal::Server.new { |s|
15
- s.append_path 'spec' # before mspec, so we use our overrides
16
- s.append_path File.join(Gem::Specification.find_by_name('mspec').gem_dir, 'lib')
17
- s.debug = false
18
- s.main = 'ospec/main'
19
- }
13
+ server = fork do
14
+ serv = Opal::Server.new { |s|
15
+ s.append_path 'spec' # before mspec, so we use our overrides
16
+ s.append_path File.join(Gem::Specification.find_by_name('mspec').gem_dir, 'lib')
17
+ s.debug = false
18
+ s.main = 'ospec/main'
19
+ }
20
20
 
21
- Rack::Server.start(:app => serv, :Port => 9999, :AccessLog => [],
22
- :Logger => WEBrick::Log.new("/dev/null"))
23
- end
21
+ Rack::Server.start(:app => serv, :Port => 9999, :AccessLog => [],
22
+ :Logger => WEBrick::Log.new("/dev/null"))
23
+ end
24
24
 
25
- system "phantomjs \"spec/ospec/sprockets.js\" \"http://localhost:9999/\""
26
- success = $?.success?
25
+ system "phantomjs \"spec/ospec/sprockets.js\" \"http://localhost:9999/\""
26
+ success = $?.success?
27
27
 
28
- Process.kill(:SIGINT, server)
29
- Process.wait
28
+ Process.kill(:SIGINT, server)
29
+ Process.wait
30
30
 
31
- exit 1 unless success
31
+ exit 1 unless success
32
+ end
33
+ end
34
+
35
+ desc "Run tests through mspec"
36
+ task :default do
37
+ RunSpec.new
38
+ end
39
+
40
+ desc "Run task with spec:dir:file helper"
41
+ namespace :spec do
42
+ task 'dirs' do
43
+ end
44
+ rule '' do |t|
45
+
46
+ #build path for spec files\dirs.
47
+ #Example:
48
+ #spec:core => spec/core/
49
+ #spec:core:array:allocae => spec/core/array/allocate_spec.rb
50
+ def path(dirs)
51
+ path = "#{Dir.pwd}"
52
+ dirs.each do |dir|
53
+ base = path + "/#{dir}"
54
+ if Dir.exists?(base)
55
+ path = base
56
+ else
57
+ path = Dir.glob("#{base}_spec.rb")
58
+ end
59
+ end
60
+ path = [path].flatten
61
+ raise "File or Dir with task #{t.name} not found." if path.empty?
62
+ path
63
+ end
64
+
65
+ RunSpec.new(path(t.name.split(":")))
66
+ end
32
67
  end
33
68
 
34
69
  desc "Build opal.js and opal-parser.js to build/"
@@ -38,6 +73,8 @@ task :dist do
38
73
  env = Sprockets::Environment.new
39
74
  Opal.paths.each { |p| env.append_path p }
40
75
 
76
+ Dir.mkdir 'build' unless File.directory? 'build'
77
+
41
78
  File.open('build/opal.js', 'w+') { |f| f << env['opal'].to_s }
42
79
  File.open('build/opal-parser.js', 'w+') { |f| f << env['opal-parser'].to_s }
43
80
  end
data/config.ru ADDED
@@ -0,0 +1,14 @@
1
+ require 'bundler'
2
+ Bundler.require
3
+
4
+ require 'opal-sprockets'
5
+
6
+ run Opal::Server.new { |s|
7
+ Opal::Processor.arity_check_enabled = true
8
+
9
+ s.append_path 'spec'
10
+ s.append_path File.join(Gem::Specification.find_by_name('mspec').gem_dir, 'lib')
11
+
12
+ s.debug = false
13
+ s.main = 'ospec/main'
14
+ }
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'opal', :path => '../..'
@@ -0,0 +1,22 @@
1
+ # Opal Rack example
2
+
3
+ This example uses a simple rack server, along with sprockets to serve
4
+ the assets. Sprockets makes opal easy to use, and is the basis for
5
+ integration with rails (via opal-rails).
6
+
7
+ ## Running
8
+
9
+ Install dependencies (opal):
10
+
11
+ ```
12
+ $ bundle install
13
+ ```
14
+
15
+ Run rack server:
16
+
17
+ ```
18
+ $ bundle exec rackup
19
+ ```
20
+
21
+ Open any browser to `http://127.0.0.1/index.html`, and enjoy!
22
+
@@ -0,0 +1,5 @@
1
+ require 'opal'
2
+
3
+ # use native alert from browser
4
+ Native.global.alert "Boo! From opal."
5
+
@@ -0,0 +1,20 @@
1
+ require 'bundler'
2
+ Bundler.require
3
+
4
+ # Use sprockets for handling our assets
5
+ map '/assets' do
6
+ env = Sprockets::Environment.new
7
+
8
+ # add all our opal load paths to sprockets
9
+ Opal.paths.each { |p| env.append_path p }
10
+
11
+ # add 'app' dir for serving app.rb
12
+ env.append_path 'app'
13
+
14
+ # run!
15
+ run env
16
+ end
17
+
18
+ # Use simple Rack::Directory for serving current dir
19
+ run Rack::Directory.new('.')
20
+
@@ -0,0 +1,12 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Opal rack example</title>
6
+
7
+ <script src="/assets/app.js"></script>
8
+
9
+ </head>
10
+ <body>
11
+ </body>
12
+ </html>
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'opal', :path => '../..'
@@ -0,0 +1,22 @@
1
+ # Opal Example Application
2
+
3
+ This example shows how to use `Opal::Server` on top of a rack app to run
4
+ a simple opal application.
5
+
6
+ ## Run example
7
+
8
+ Change into this directory, and install dependencies:
9
+
10
+ ```
11
+ $ bundle install
12
+ ```
13
+
14
+ Start the rack server (which will compile/build opal runtime for you):
15
+
16
+ ```
17
+ $ bundle exec rackup
18
+ ```
19
+
20
+ Then just open `http://127.0.0.1:9292` in any browser and checkout the console.
21
+
22
+ Happy hacking.
@@ -0,0 +1,18 @@
1
+ require 'opal'
2
+
3
+ [1, 2, 3, 4].each do |a|
4
+ puts a
5
+ end
6
+
7
+ class Foo
8
+ attr_accessor :name
9
+
10
+ def method_missing(sym, *args, &block)
11
+ puts "You tried to call: #{sym}"
12
+ end
13
+ end
14
+
15
+ adam = Foo.new
16
+ adam.name = 'Adam Beynon'
17
+ puts adam.name
18
+ adam.do_task
@@ -0,0 +1,10 @@
1
+ require 'bundler'
2
+ Bundler.require
3
+
4
+ run Opal::Server.new { |s|
5
+ s.append_path 'app'
6
+
7
+ s.index_path = 'index.html.erb'
8
+ s.debug = true
9
+ s.main = 'app'
10
+ }
@@ -0,0 +1,10 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>opal server example</title>
6
+ <%= javascript_include_tag 'app' %>
7
+ </head>
8
+ <body>
9
+ </body>
10
+ </html>
data/lib/opal.rb CHANGED
@@ -1,4 +1,7 @@
1
1
  require 'opal/parser'
2
+ require 'opal/processor'
3
+ require 'opal/erb'
4
+ require 'opal/server'
2
5
  require 'opal/version'
3
6
 
4
7
  # Opal is a ruby to javascript compiler, with a runtime for running
@@ -35,6 +38,6 @@ module Opal
35
38
 
36
39
  # Private, don't add to these directly (use .append_path instead).
37
40
  def self.paths
38
- @paths ||= [Opal.core_dir]
41
+ @paths ||= [core_dir]
39
42
  end
40
43
  end
data/lib/opal/erb.rb ADDED
@@ -0,0 +1,41 @@
1
+ require 'opal/parser'
2
+
3
+ module Opal
4
+ module ERB
5
+ def self.parse(str, name='(erb)')
6
+ body = str.gsub('"', '\\"').gsub(/<%=([\s\S]+?)%>/) do
7
+ inner = $1.gsub(/\\'/, "'").gsub(/\\"/, '"')
8
+ "\")\nout.<<(#{ inner })\nout.<<(\""
9
+ end.gsub(/<%([\s\S]+?)%>/) do
10
+ "\")\n#{ $1 }\nout.<<(\""
11
+ end
12
+
13
+ code = "ERB.new('#{name}') do\nout = []\nout.<<(\"#{ body }\")\nout.join\nend\n"
14
+ Opal.parse code
15
+ end
16
+
17
+ class Processor < Tilt::Template
18
+ self.default_mime_type = 'application/javascript'
19
+
20
+ def self.engine_initialized?
21
+ true
22
+ end
23
+
24
+ def initialize_engine
25
+ require_template_library 'opal'
26
+ end
27
+
28
+ def prepare
29
+ # ...
30
+ end
31
+
32
+ def evaluate(scope, locals, &block)
33
+ Opal::ERB.parse data, scope.logical_path.sub(/^templates\//, '')
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ Tilt.register 'opalerb', Opal::ERB::Processor
40
+ Sprockets.register_engine '.opalerb', Opal::ERB::Processor
41
+
data/lib/opal/lexer.rb CHANGED
@@ -533,7 +533,7 @@ module Opal
533
533
  end
534
534
 
535
535
  elsif scanner.scan(/\^\=/)
536
- @lex_state = :exor_beg
536
+ @lex_state = :expr_beg
537
537
  return :OP_ASGN, '^'
538
538
  elsif scanner.scan(/\^/)
539
539
  if @lex_state == :expr_fname
data/lib/opal/parser.rb CHANGED
@@ -565,7 +565,9 @@ module Opal
565
565
  "false"
566
566
  when :ivar
567
567
  ivar_name = part[1].to_s[1..-1]
568
- "(#{current_self}[#{ivar_name.inspect}] != null ? 'instance-variable' : 'nil')"
568
+ with_temp do |t|
569
+ "((#{t} = #{current_self}[#{ivar_name.inspect}], #{t} != null && #{t} !== nil) ? 'instance-variable' : nil)"
570
+ end
569
571
  else
570
572
  raise "bad defined? part: #{part[0]}"
571
573
  end
@@ -714,13 +716,6 @@ module Opal
714
716
  "%s%s = %s.%s" % [@scope.proto, meth, @scope.proto, func]
715
717
  end
716
718
 
717
- def handle_respond_to(sexp, level)
718
- recv, mid, arglist = sexp
719
- recv ||= s(:self)
720
- meth = process(arglist[1], level) if arglist[1]
721
- "(!!#{process(recv, level)}['$' + #{meth}])"
722
- end
723
-
724
719
  # s(:call, recv, :mid, s(:arglist))
725
720
  # s(:call, nil, :mid, s(:arglist))
726
721
  def process_call(sexp, level)
@@ -736,8 +731,6 @@ module Opal
736
731
  return handle_alias_native(sexp) if @scope.class_scope?
737
732
  when :require
738
733
  return handle_require arglist[1]
739
- when :respond_to?
740
- return handle_respond_to(sexp, level)
741
734
  end
742
735
 
743
736
  splat = arglist[1..-1].any? { |a| a.first == :splat }
@@ -1345,7 +1338,7 @@ module Opal
1345
1338
  elsif rhs[0] == :to_ary
1346
1339
  code = ["((#{tmp} = #{process rhs[1], :expr})._isArray ? #{tmp} : (#{tmp} = [#{tmp}]))"]
1347
1340
  elsif rhs[0] == :splat
1348
- code = ["#{tmp} = #{process rhs[1], :expr}"]
1341
+ code = ["(#{tmp} = #{process(rhs[1], :expr)})['$to_a'] ? (#{tmp} = #{tmp}['$to_a']()) : (#{tmp})._isArray ? #{tmp} : (#{tmp} = [#{tmp}])"]
1349
1342
  else
1350
1343
  raise "Unsupported mlhs type"
1351
1344
  end
@@ -1769,7 +1762,7 @@ module Opal
1769
1762
 
1770
1763
  with_temp do |t|
1771
1764
  base = process base, :expr
1772
- "((#{t} = (#{base})._scope.#{cname}) == null ? __opal.cm(#{cname.inspect}) : #{t})"
1765
+ "((#{t} = (#{base})._scope).#{cname} == null ? #{t}.cm(#{cname.inspect}) : #{t}.#{cname})"
1773
1766
  end
1774
1767
  end
1775
1768
 
@@ -0,0 +1,70 @@
1
+ require 'sprockets'
2
+
3
+ module Opal
4
+ # Proccess using Sprockets
5
+ #
6
+ # Opal.process('opal-jquery') # => String
7
+ def self.process(asset)
8
+ env = Sprockets::Environment.new
9
+ Opal.paths.each { |p| env.append_path p }
10
+ env[file].to_s
11
+ end
12
+
13
+ # The Processor class is used to make ruby files (with rb or opal extensions)
14
+ # available to any sprockets based server. Processor will then get passed any
15
+ # ruby source file to build. There are some options you can override globally
16
+ # which effect how certain ruby features are handled:
17
+ #
18
+ # * method_missing_enabled [true by default]
19
+ # * optimized_operators_enabled [true by default]
20
+ # * arity_check_enabled [false by default]
21
+ #
22
+ class Processor < Tilt::Template
23
+ self.default_mime_type = 'application/javascript'
24
+
25
+ def self.engine_initialized?
26
+ true
27
+ end
28
+
29
+ class << self
30
+ attr_accessor :method_missing_enabled
31
+ attr_accessor :optimized_operators_enabled
32
+ attr_accessor :arity_check_enabled
33
+ attr_accessor :const_missing_enabled
34
+ end
35
+
36
+ self.method_missing_enabled = true
37
+ self.optimized_operators_enabled = true
38
+ self.arity_check_enabled = false
39
+ self.const_missing_enabled = true
40
+
41
+ def initialize_engine
42
+ require_template_library 'opal'
43
+ end
44
+
45
+ def prepare
46
+ end
47
+
48
+ def evaluate(context, locals, &block)
49
+ options = {
50
+ :method_missing => self.class.method_missing_enabled,
51
+ :optimized_operators => self.class.optimized_operators_enabled,
52
+ :arity_check => self.class.arity_check_enabled,
53
+ :const_missing => self.class.const_missing_enabled,
54
+ :file => context.logical_path
55
+ }
56
+
57
+ parser = Opal::Parser.new
58
+ result = parser.parse data, options
59
+
60
+ parser.requires.each { |r| context.require_asset r }
61
+ result
62
+ end
63
+ end
64
+ end
65
+
66
+ Tilt.register 'rb', Opal::Processor
67
+ Sprockets.register_engine '.rb', Opal::Processor
68
+
69
+ Tilt.register 'opal', Opal::Processor
70
+ Sprockets.register_engine '.opal', Opal::Processor