opal 0.3.42 → 0.3.43

Sign up to get free protection for your applications and to get access to all the features.
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