opal 0.3.42 → 0.3.43
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +29 -0
- data/CONTRIBUTING.md +9 -1
- data/Rakefile +58 -21
- data/config.ru +14 -0
- data/examples/rack/Gemfile +3 -0
- data/examples/rack/README.md +22 -0
- data/examples/rack/app/app.rb +5 -0
- data/examples/rack/config.ru +20 -0
- data/examples/rack/index.html +12 -0
- data/examples/server/Gemfile +3 -0
- data/examples/server/README.md +22 -0
- data/examples/server/app/app.rb +18 -0
- data/examples/server/config.ru +10 -0
- data/examples/server/index.html.erb +10 -0
- data/lib/opal.rb +4 -1
- data/lib/opal/erb.rb +41 -0
- data/lib/opal/lexer.rb +1 -1
- data/lib/opal/parser.rb +5 -12
- data/lib/opal/processor.rb +70 -0
- data/lib/opal/server.rb +93 -0
- data/lib/opal/version.rb +1 -1
- data/opal.gemspec +1 -1
- data/opal/{opal/date.rb → date.rb} +0 -0
- data/opal/erb.rb +19 -0
- data/{spec → opal}/fileutils.rb +0 -0
- data/{spec → opal}/iconv.rb +0 -0
- data/opal/observer.rb +202 -0
- data/opal/opal-browser/local_storage.rb +27 -0
- data/opal/opal-browser/script_loader.rb +40 -0
- data/opal/opal-eventable.rb +26 -0
- data/opal/opal-parser.js.erb +8 -3
- data/opal/{opal/template.rb → opal-template.rb} +0 -0
- data/opal/opal.rb +20 -18
- data/opal/opal/array.rb +1 -1
- data/opal/opal/class.rb +6 -1
- data/opal/opal/kernel.rb +1 -1
- data/opal/opal/native.rb +91 -5
- data/opal/opal/runtime.js +39 -8
- data/{spec → opal}/pp.rb +0 -0
- data/opal/{opal/racc.rb → racc.rb} +0 -0
- data/{spec → opal}/rbconfig.rb +0 -0
- data/opal/{opal/strscan.rb → strscan.rb} +0 -0
- data/{spec → opal}/yaml.rb +0 -0
- data/spec/{core_ext → opal}/array/element_reference_spec.rb +0 -0
- data/spec/{core_ext → opal}/array/equal_value_spec.rb +0 -0
- data/spec/{core_ext → opal}/array/fill_spec.rb +0 -0
- data/spec/{core_ext → opal}/array/reduce_spec.rb +0 -0
- data/spec/{core_ext → opal}/array/to_json_spec.rb +0 -0
- data/spec/{core_ext → opal}/basic_object/send_spec.rb +0 -0
- data/spec/{core_ext → opal}/boolean/singleton_class_spec.rb +0 -0
- data/spec/{core_ext → opal}/boolean/to_json_spec.rb +0 -0
- data/spec/opal/browser/local_storage_spec.rb +55 -0
- data/spec/{core_ext → opal}/class/_inherited_spec.rb +0 -0
- data/spec/{core_ext → opal}/class/proc_methods_spec.rb +0 -0
- data/spec/{core_ext → opal}/class/singleton_methods_spec.rb +0 -0
- data/spec/{core_ext → opal}/constants_spec.rb +0 -0
- data/spec/opal/erb/erb_spec.rb +31 -0
- data/spec/opal/eventable_spec.rb +75 -0
- data/spec/{core_ext → opal}/method_missing_spec.rb +0 -0
- data/spec/opal/native/element_reference_spec.rb +40 -0
- data/spec/opal/native/equal_spec.rb +17 -0
- data/spec/opal/native/fixtures/classes.rb +27 -0
- data/spec/opal/native/global_spec.rb +12 -0
- data/spec/opal/native/initialize_spec.rb +8 -0
- data/spec/opal/native/method_missing_spec.rb +53 -0
- data/spec/{core_ext → opal}/native/to_native_spec.rb +1 -1
- data/spec/{core_ext → opal}/nil/to_json_spec.rb +0 -0
- data/spec/opal/runtime/eval_spec.rb +5 -0
- data/spec/opal/runtime/send_spec.rb +34 -0
- data/spec/ospec/main.rb.erb +9 -3
- data/spec/ospec/runner.rb +132 -5
- data/spec/{grammar → parser}/alias_spec.rb +0 -0
- data/spec/{grammar → parser}/and_spec.rb +0 -0
- data/spec/{grammar → parser}/array_spec.rb +0 -0
- data/spec/{grammar → parser}/attrasgn_spec.rb +0 -0
- data/spec/{grammar → parser}/begin_spec.rb +0 -0
- data/spec/{grammar → parser}/block_spec.rb +0 -0
- data/spec/{grammar → parser}/break_spec.rb +0 -0
- data/spec/{grammar → parser}/call_spec.rb +0 -0
- data/spec/{grammar → parser}/class_spec.rb +0 -0
- data/spec/{grammar → parser}/const_spec.rb +0 -0
- data/spec/{grammar → parser}/cvar_spec.rb +0 -0
- data/spec/{grammar → parser}/def_spec.rb +0 -0
- data/spec/{grammar → parser}/false_spec.rb +0 -0
- data/spec/{grammar → parser}/file_spec.rb +0 -0
- data/spec/{grammar → parser}/gvar_spec.rb +0 -0
- data/spec/{grammar → parser}/hash_spec.rb +0 -0
- data/spec/{grammar → parser}/iasgn_spec.rb +0 -0
- data/spec/{grammar → parser}/if_spec.rb +0 -0
- data/spec/{grammar → parser}/iter_spec.rb +0 -0
- data/spec/{grammar → parser}/ivar_spec.rb +0 -0
- data/spec/{grammar → parser}/lambda_spec.rb +0 -0
- data/spec/{grammar → parser}/lasgn_spec.rb +0 -0
- data/spec/{grammar → parser}/line_spec.rb +0 -0
- data/spec/{grammar → parser}/lvar_spec.rb +0 -0
- data/spec/{grammar → parser}/masgn_spec.rb +0 -0
- data/spec/{grammar → parser}/module_spec.rb +0 -0
- data/spec/{grammar → parser}/nil_spec.rb +0 -0
- data/spec/{grammar → parser}/not_spec.rb +0 -0
- data/spec/{grammar → parser}/nth_ref_spec.rb +0 -0
- data/spec/{grammar → parser}/op_asgn1_spec.rb +0 -0
- data/spec/{grammar → parser}/op_asgn2_spec.rb +0 -0
- data/spec/{grammar → parser}/or_spec.rb +0 -0
- data/spec/{grammar → parser}/parser_spec.rb +0 -0
- data/spec/{grammar → parser}/return_spec.rb +0 -0
- data/spec/{grammar → parser}/sclass_spec.rb +0 -0
- data/spec/{grammar → parser}/self_spec.rb +0 -0
- data/spec/{grammar → parser}/str_spec.rb +0 -0
- data/spec/{grammar → parser}/string_spec.rb +0 -0
- data/spec/{grammar → parser}/strscan/check_spec.rb +0 -0
- data/spec/{grammar → parser}/strscan/scan_spec.rb +0 -0
- data/spec/{grammar → parser}/super_spec.rb +0 -0
- data/spec/{grammar → parser}/true_spec.rb +0 -0
- data/spec/{grammar → parser}/undef_spec.rb +0 -0
- data/spec/{grammar → parser}/unless_spec.rb +0 -0
- data/spec/{grammar → parser}/while_spec.rb +0 -0
- data/spec/{grammar → parser}/xstr_spec.rb +0 -0
- data/spec/{grammar → parser}/yield_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/allocate_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/append_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/array_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/assoc_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/at_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/choice_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/clear_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/clone_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/collect_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/combination_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/compact_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/comparison_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/concat_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/constructor_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/count_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/delete_at_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/delete_if_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/delete_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/drop_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/drop_while_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/dup_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/each_index_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/each_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/empty_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/eql_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/fetch_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/find_index_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/first_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/fixtures/classes.rb +0 -0
- data/spec/{core → rubyspec/core}/array/flatten_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/frozen_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/include_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/index_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/insert_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/inspect_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/intersection_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/join_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/keep_if_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/last_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/length_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/map_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/minus_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/multiply_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/new_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/ntimes_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/plus_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/pop_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/push_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/rassoc_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/reject_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/replace_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/reverse_each_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/reverse_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/rindex_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/select_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/collect.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/enumeratorize.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/eql.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/index.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/inspect.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/join.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/keep_if.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/length.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/replace.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/slice.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shift_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shuffle_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/size_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/slice_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/sort_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/take_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/take_while_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/to_a_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/to_ary_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/try_convert_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/uniq_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/unshift_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/zip_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/class/bridge_class_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/class/extend_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/class/fixtures/classes.rb +0 -0
- data/spec/{core → rubyspec/core}/class/instance_methods_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/class/last_value_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/class/new_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/all_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/any_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/collect_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/count_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/detect_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/drop_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/drop_while_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/each_slice_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/each_with_index_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/each_with_object_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/entries_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/find_all_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/find_index_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/find_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/first_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/fixtures/classes.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/grep_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/group_by_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/select_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/take_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/to_a_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerator/each_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerator/new_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerator/next_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerator/rewind_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/false/and_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/false/inspect_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/false/or_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/false/to_s_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/false/xor_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/allocate_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/assoc_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/clear_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/clone_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/constructor_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/default_proc_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/default_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/delete_if_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/delete_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/dup_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/each_key_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/each_pair_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/each_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/each_value_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/element_reference_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/element_set_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/empty_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/fetch_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/flatten_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/has_key_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/has_value_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/include_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/index_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/indexes_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/indices_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/invert_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/keep_if_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/key_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/keys_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/length_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/member_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/merge_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/new_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/rassoc_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/reject_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/replace_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/select_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/shift_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/size_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/to_a_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/to_json_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/to_native_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/update_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/value_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/values_at_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/values_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/json/parse_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/Array_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/block_given.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/class_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/define_singleton_method_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/eql_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/equal_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/equal_value_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/extend_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/format_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/instance_eval_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/instance_variable_get_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/instance_variable_set_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/loop_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/match_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/method_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/methods_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/nil_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/p_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/printf_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/proc_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/rand_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/respond_to_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/send_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/sprintf_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/tap_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/to_json_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/to_s_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/matchdata/to_a_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/module/alias_method_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/module/ancestors_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/module/append_features_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/module/const_get_spec.rb +0 -0
- data/spec/rubyspec/core/module/const_missing_spec.rb +18 -0
- data/spec/{core → rubyspec/core}/module/const_set_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/module/fixtures/classes.rb +0 -0
- data/spec/{core → rubyspec/core}/module/method_defined_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/module/module_function_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/module/undef_method_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/and_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/dup_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/inspect_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/nil_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/or_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/to_a_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/to_f_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/to_h_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/to_i_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/to_s_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/xor_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/abs_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/bit_and_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/bit_or_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/bit_xor_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/ceil_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/chr_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/comparison_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/complement_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/divide_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/downto_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/eql_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/equal_value_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/even_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/exponent_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/floor_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/gt_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/gte_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/integer_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/left_shift_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/lt_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/lte_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/magnitude_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/minus_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/modulo_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/multiply_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/next_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/odd_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/ord_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/plus_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/pred_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/right_shift_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/succ_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/times_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/to_f_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/to_i_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/to_json_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/to_s_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/uminus_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/upto_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/zero_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/proc/call_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/proc/element_reference_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/proc/proc_tricks_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/range/begin_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/range/case_compare_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/range/end_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/regexp/match_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/runtime/call_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/runtime/class_hierarchy_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/runtime/def_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/runtime/defined_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/runtime/super_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/capitalize_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/casecmp_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/chomp_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/chop_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/chr_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/comparison_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/demodulize_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/downcase_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/element_reference_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/empty_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/end_with_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/fixtures/classes.rb +0 -0
- data/spec/{core → rubyspec/core}/string/format_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/gsub_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/include_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/intern_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/length_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/lstrip_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/match_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/next_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/ord_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/partition_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/reverse_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/rstrip_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/size_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/slice_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/split_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/start_with_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/strip_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/sub_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/succ_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/sum_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/swapcase_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/to_a_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/to_f_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/to_i_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/to_json_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/to_s_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/to_str_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/to_sym_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/underscore_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/upcase_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/symbol/to_proc_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/at_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/day_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/friday_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/hour_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/min_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/monday_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/month_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/now_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/saturday_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/true/and_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/true/inspect_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/true/or_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/true/to_s_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/true/xor_spec.rb +0 -0
- data/spec/rubyspec/filters/bugs/alias.rb +6 -0
- data/spec/{filters → rubyspec/filters/bugs}/ancestors.rb +0 -0
- data/spec/rubyspec/filters/bugs/array.rb +5 -0
- data/spec/{filters → rubyspec/filters/bugs}/array_delete.rb +0 -0
- data/spec/{filters → rubyspec/filters/bugs}/array_fetch.rb +0 -0
- data/spec/{filters → rubyspec/filters/bugs}/array_first.rb +0 -0
- data/spec/{filters → rubyspec/filters/bugs}/array_flatten.rb +0 -0
- data/spec/{filters → rubyspec/filters/bugs}/array_intersection.rb +0 -0
- data/spec/{filters → rubyspec/filters/bugs}/array_join.rb +0 -0
- data/spec/{filters → rubyspec/filters/bugs}/block_args.rb +0 -0
- data/spec/rubyspec/filters/bugs/break.rb +10 -0
- data/spec/rubyspec/filters/bugs/case.rb +8 -0
- data/spec/{filters → rubyspec/filters/bugs}/coerce_integer.rb +0 -0
- data/spec/rubyspec/filters/bugs/kernel/instance_variables.rb +3 -0
- data/spec/rubyspec/filters/bugs/language/class.rb +11 -0
- data/spec/rubyspec/filters/bugs/language/class_variables.rb +12 -0
- data/spec/rubyspec/filters/bugs/module/class_variables.rb +6 -0
- data/spec/rubyspec/filters/bugs/public_methods.rb +3 -0
- data/spec/{filters → rubyspec/filters/mspec}/mocks.rb +0 -0
- data/spec/rubyspec/filters/mspec/ruby_exe.rb +5 -0
- data/spec/{filters → rubyspec/filters/mspec}/should_receive.rb +1 -0
- data/spec/rubyspec/filters/parser/block_args.rb +51 -0
- data/spec/{filters → rubyspec/filters/unsupported}/array_subclasses.rb +0 -0
- data/spec/{filters → rubyspec/filters/unsupported}/frozen.rb +0 -0
- data/spec/{filters → rubyspec/filters/unsupported}/tainted.rb +0 -0
- data/spec/{fixtures → rubyspec/fixtures}/class.rb +0 -0
- data/spec/{fixtures → rubyspec/fixtures}/class_variables.rb +0 -0
- data/spec/rubyspec/fixtures/constants.rb +20 -0
- data/spec/{language → rubyspec/language}/alias_spec.rb +7 -7
- data/spec/{language → rubyspec/language}/and_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/array_spec.rb +3 -3
- data/spec/{language → rubyspec/language}/block_spec.rb +59 -59
- data/spec/{language → rubyspec/language}/break_spec.rb +15 -19
- data/spec/{language → rubyspec/language}/case_spec.rb +6 -6
- data/spec/{language → rubyspec/language}/class_spec.rb +16 -18
- data/spec/{language → rubyspec/language}/class_variable_spec.rb +10 -10
- data/spec/{language → rubyspec/language}/def_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/defined_spec.rb +2 -2
- data/spec/{language → rubyspec/language}/ensure_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/execution_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/array.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/block.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/break.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/ensure.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/literal_lambda.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/metaclass.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/module.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/next.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/return.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/send.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/send_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/super.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/variables.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/yield.rb +0 -0
- data/spec/{language → rubyspec/language}/for_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/hash_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/if_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/literal_lambda_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/loop_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/metaclass_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/module_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/next_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/not_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/numbers_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/or_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/order_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/precedence_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/predefined_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/proc_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/redo_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/regexp_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/rescue_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/retry_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/return_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/send_spec.rb +0 -1
- data/spec/{language → rubyspec/language}/singleton_class_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/string_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/super_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/symbol_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/undef_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/unless_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/until_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/variables_spec.rb +3 -3
- data/spec/{language → rubyspec/language}/versions/array_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/versions/case_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/versions/hash_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/versions/literal_lambda_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/versions/not_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/versions/send_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/versions/symbol_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/versions/variables_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/while_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/yield_spec.rb +0 -0
- data/spec/{library → rubyspec/library}/date/new_spec.rb +0 -0
- data/spec/{library → rubyspec/library}/date/to_s_spec.rb +0 -0
- data/spec/{library → rubyspec/library}/date/today_spec.rb +0 -0
- data/spec/rubyspec/library/observer/add_observer_spec.rb +31 -0
- data/spec/rubyspec/library/observer/count_observers_spec.rb +33 -0
- data/spec/rubyspec/library/observer/delete_observer_spec.rb +19 -0
- data/spec/rubyspec/library/observer/delete_observers_spec.rb +19 -0
- data/spec/rubyspec/library/observer/fixtures/classes.rb +25 -0
- data/spec/rubyspec/library/observer/notify_observers_spec.rb +31 -0
- data/spec/rubyspec/spec_helper.rb +59 -0
- data/spec/simple_erb_template.opalerb +1 -0
- data/spec/spec_helper.rb +0 -59
- data/spec/templates/foo/bar.opalerb +1 -0
- data/spec/templates/prefixed.opalerb +1 -0
- metadata +1028 -961
- data/opal/opal/browser_loader.js +0 -57
- data/spec/core_ext/native/fixtures/classes.rb +0 -5
- data/spec/core_ext/native/initialize_spec.rb +0 -8
- data/spec/core_ext/native/method_missing_spec.rb +0 -8
- data/spec/date.rb +0 -0
- data/spec/fixtures/constants.rb +0 -0
- data/spec/ospec/filter.rb +0 -32
- 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
data/Rakefile
CHANGED
@@ -1,34 +1,69 @@
|
|
1
1
|
require 'bundler'
|
2
2
|
Bundler.require
|
3
3
|
|
4
|
-
require '
|
4
|
+
require 'rack'
|
5
|
+
require 'webrick'
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
require 'webrick'
|
7
|
+
class RunSpec
|
8
|
+
def initialize(file=nil)
|
9
|
+
Opal::Processor.arity_check_enabled = true
|
10
10
|
|
11
|
-
|
11
|
+
ENV['OPAL_SPEC'] = file.nil? ? ["#{Dir.pwd}/spec/"].join(',') : file.join(',')
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
-
|
22
|
-
|
23
|
-
|
21
|
+
Rack::Server.start(:app => serv, :Port => 9999, :AccessLog => [],
|
22
|
+
:Logger => WEBrick::Log.new("/dev/null"))
|
23
|
+
end
|
24
24
|
|
25
|
-
|
26
|
-
|
25
|
+
system "phantomjs \"spec/ospec/sprockets.js\" \"http://localhost:9999/\""
|
26
|
+
success = $?.success?
|
27
27
|
|
28
|
-
|
29
|
-
|
28
|
+
Process.kill(:SIGINT, server)
|
29
|
+
Process.wait
|
30
30
|
|
31
|
-
|
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,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,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,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
|
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 ||= [
|
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
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
|
-
|
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
|
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}
|
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
|