opal 0.3.21 → 0.3.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +1 -4
- data/Gemfile +9 -4
- data/README.md +10 -589
- data/Rakefile +51 -19
- data/config.ru +17 -0
- data/core/array.rb +42 -34
- data/core/basic_object.rb +4 -4
- data/core/browser.js +31 -0
- data/core/class.rb +7 -7
- data/core/enumerable.rb +65 -69
- data/core/erb.rb +30 -0
- data/core/error.rb +2 -3
- data/core/hash.rb +47 -18
- data/core/kernel.rb +15 -16
- data/core/load_order +2 -1
- data/core/module.rb +19 -37
- data/core/numeric.rb +4 -2
- data/core/object.rb +4 -0
- data/core/proc.rb +6 -3
- data/core/racc.rb +215 -0
- data/core/regexp.rb +16 -21
- data/core/runtime.js +141 -153
- data/core/string.rb +41 -19
- data/core/strscan.rb +61 -0
- data/core/time.rb +1 -5
- data/docs/index.md +616 -0
- data/docs/post.html +2 -8
- data/docs/pre.html +29 -26
- data/docs/try.html +52 -0
- data/lib/opal.rb +33 -3
- data/lib/opal/builder.rb +14 -34
- data/lib/opal/erb_parser.rb +19 -0
- data/lib/opal/grammar.rb +7 -3
- data/lib/opal/grammar.y +3 -0
- data/lib/opal/lexer.rb +16 -8
- data/lib/opal/parser.rb +156 -119
- data/lib/opal/rake_task.rb +2 -2
- data/lib/opal/scope.rb +9 -10
- data/lib/opal/version.rb +1 -1
- data/{test → spec}/core/array/allocate_spec.rb +0 -0
- data/{test → spec}/core/array/append_spec.rb +0 -0
- data/{test → spec}/core/array/assoc_spec.rb +0 -0
- data/{test → spec}/core/array/at_spec.rb +0 -0
- data/{test → spec}/core/array/clear_spec.rb +0 -0
- data/{test → spec}/core/array/clone_spec.rb +0 -0
- data/{test → spec}/core/array/collect_spec.rb +0 -0
- data/{test → spec}/core/array/compact_spec.rb +0 -0
- data/{test → spec}/core/array/concat_spec.rb +0 -0
- data/{test → spec}/core/array/constructor_spec.rb +0 -0
- data/{test → spec}/core/array/count_spec.rb +0 -0
- data/{test → spec}/core/array/delete_at_spec.rb +0 -0
- data/{test → spec}/core/array/delete_if_spec.rb +0 -0
- data/{test → spec}/core/array/delete_spec.rb +0 -0
- data/{test → spec}/core/array/each_index_spec.rb +0 -0
- data/{test → spec}/core/array/each_spec.rb +0 -0
- data/{test → spec}/core/array/element_reference_spec.rb +0 -0
- data/{test → spec}/core/array/empty_spec.rb +0 -0
- data/{test → spec}/core/array/eql_spec.rb +0 -0
- data/{test → spec}/core/array/fetch_spec.rb +0 -0
- data/{test → spec}/core/array/first_spec.rb +0 -0
- data/{test → spec}/core/array/flatten_spec.rb +0 -0
- data/{test → spec}/core/array/include_spec.rb +0 -0
- data/{test → spec}/core/array/insert_spec.rb +0 -0
- data/{test → spec}/core/array/last_spec.rb +0 -0
- data/{test → spec}/core/array/length_spec.rb +0 -0
- data/{test → spec}/core/array/map_spec.rb +0 -0
- data/{test → spec}/core/array/minus_spec.rb +0 -0
- data/{test → spec}/core/array/plus_spec.rb +0 -0
- data/{test → spec}/core/array/pop_spec.rb +0 -0
- data/{test → spec}/core/array/push_spec.rb +0 -0
- data/{test → spec}/core/array/rassoc_spec.rb +0 -0
- data/{test → spec}/core/array/reject_spec.rb +0 -0
- data/{test → spec}/core/array/replace_spec.rb +0 -0
- data/{test → spec}/core/array/reverse_each_spec.rb +0 -0
- data/{test → spec}/core/array/reverse_spec.rb +0 -0
- data/{test → spec}/core/array/size_spec.rb +0 -0
- data/{test → spec}/core/array/to_ary_spec.rb +0 -0
- data/{test → spec}/core/array/uniq_spec.rb +0 -0
- data/{test → spec}/core/array/zip_spec.rb +0 -0
- data/{test → spec}/core/class/fixtures/classes.rb +0 -0
- data/{test → spec}/core/class/new_spec.rb +3 -0
- data/{test → spec}/core/enumerable/all_spec.rb +3 -0
- data/{test → spec}/core/enumerable/any_spec.rb +0 -0
- data/{test → spec}/core/enumerable/collect_spec.rb +0 -0
- data/{test → spec}/core/enumerable/count_spec.rb +0 -0
- data/{test → spec}/core/enumerable/detect_spec.rb +0 -0
- data/{test → spec}/core/enumerable/drop_spec.rb +0 -0
- data/{test → spec}/core/enumerable/drop_while_spec.rb +0 -0
- data/{test → spec}/core/enumerable/each_with_index_spec.rb +0 -0
- data/{test → spec}/core/enumerable/each_with_object_spec.rb +0 -0
- data/{test → spec}/core/enumerable/entries_spec.rb +0 -0
- data/{test → spec}/core/enumerable/find_all_spec.rb +0 -0
- data/{test → spec}/core/enumerable/find_index_spec.rb +0 -0
- data/{test → spec}/core/enumerable/find_spec.rb +0 -0
- data/{test → spec}/core/enumerable/first_spec.rb +0 -0
- data/{test → spec}/core/enumerable/fixtures/classes.rb +0 -0
- data/{test → spec}/core/enumerable/grep_spec.rb +0 -0
- data/{test → spec}/core/enumerable/take_spec.rb +0 -0
- data/{test → spec}/core/enumerable/to_a_spec.rb +0 -0
- data/{test → spec}/core/false/and_spec.rb +0 -0
- data/{test → spec}/core/false/inspect_spec.rb +0 -0
- data/{test → spec}/core/false/or_spec.rb +0 -0
- data/{test → spec}/core/false/to_s_spec.rb +0 -0
- data/{test → spec}/core/false/xor_spec.rb +0 -0
- data/{test → spec}/core/hash/allocate_spec.rb +0 -0
- data/{test → spec}/core/hash/assoc_spec.rb +0 -0
- data/{test → spec}/core/hash/clear_spec.rb +0 -0
- data/{test → spec}/core/hash/clone_spec.rb +0 -0
- data/{test → spec}/core/hash/default_spec.rb +0 -0
- data/{test → spec}/core/hash/delete_if_spec.rb +0 -0
- data/{test → spec}/core/hash/each_key_spec.rb +0 -0
- data/{test → spec}/core/hash/each_pair_spec.rb +0 -0
- data/{test → spec}/core/hash/each_spec.rb +0 -0
- data/{test → spec}/core/hash/each_value_spec.rb +0 -0
- data/{test → spec}/core/hash/element_reference_spec.rb +14 -1
- data/{test → spec}/core/hash/element_set_spec.rb +0 -0
- data/{test → spec}/core/hash/empty_spec.rb +0 -0
- data/{test → spec}/core/hash/fetch_spec.rb +0 -0
- data/{test → spec}/core/hash/flatten_spec.rb +0 -0
- data/{test → spec}/core/hash/has_key_spec.rb +0 -0
- data/{test → spec}/core/hash/has_value_spec.rb +0 -0
- data/{test → spec}/core/hash/include_spec.rb +0 -0
- data/{test → spec}/core/hash/index_spec.rb +0 -0
- data/{test → spec}/core/hash/indexes_spec.rb +0 -0
- data/{test → spec}/core/hash/indices_spec.rb +0 -0
- data/{test → spec}/core/hash/invert_spec.rb +0 -0
- data/{test → spec}/core/hash/keep_if_spec.rb +0 -0
- data/{test → spec}/core/hash/key_spec.rb +0 -0
- data/{test → spec}/core/hash/keys_spec.rb +0 -0
- data/{test → spec}/core/hash/length_spec.rb +0 -0
- data/{test → spec}/core/hash/member_spec.rb +0 -0
- data/{test → spec}/core/hash/merge_spec.rb +0 -0
- data/{test → spec}/core/hash/new_spec.rb +8 -0
- data/{test → spec}/core/hash/rassoc_spec.rb +0 -0
- data/{test → spec}/core/hash/replace_spec.rb +0 -0
- data/{test → spec}/core/hash/select_spec.rb +0 -0
- data/{test → spec}/core/hash/shift_spec.rb +0 -0
- data/{test → spec}/core/hash/size_spec.rb +0 -0
- data/{test → spec}/core/hash/update_spec.rb +0 -0
- data/{test → spec}/core/hash/value_spec.rb +0 -0
- data/{test → spec}/core/hash/values_at_spec.rb +0 -0
- data/{test → spec}/core/hash/values_spec.rb +0 -0
- data/{test → spec}/core/kernel/define_singleton_method_spec.rb +0 -0
- data/{test → spec}/core/kernel/eql_spec.rb +0 -0
- data/{test → spec}/core/kernel/equal_value_spec.rb +0 -0
- data/{test → spec}/core/kernel/loop_spec.rb +0 -0
- data/{test → spec}/core/kernel/nil_spec.rb +0 -0
- data/{test → spec}/core/kernel/proc_spec.rb +4 -0
- data/{test → spec}/core/kernel/rand_spec.rb +0 -0
- data/{test → spec}/core/kernel/respond_to_spec.rb +0 -0
- data/{test → spec}/core/kernel/send_spec.rb +0 -0
- data/{test → spec}/core/kernel/tap_spec.rb +0 -0
- data/{test → spec}/core/kernel/to_s_spec.rb +0 -0
- data/{test → spec}/core/matchdata/to_a_spec.rb +0 -0
- data/{test → spec}/core/nil/and_spec.rb +0 -0
- data/{test → spec}/core/nil/inspect_spec.rb +0 -0
- data/{test → spec}/core/nil/nil_spec.rb +0 -0
- data/{test → spec}/core/nil/or_spec.rb +0 -0
- data/{test → spec}/core/nil/to_a_spec.rb +0 -0
- data/{test → spec}/core/nil/to_f_spec.rb +0 -0
- data/{test → spec}/core/nil/to_i_spec.rb +0 -0
- data/{test → spec}/core/nil/to_s_spec.rb +0 -0
- data/{test → spec}/core/nil/xor_spec.rb +0 -0
- data/{test → spec}/core/numeric/equal_value_spec.rb +0 -0
- data/spec/core/proc/proc_tricks_spec.rb +7 -0
- data/{test → spec}/core/range/begin_spec.rb +0 -0
- data/{test → spec}/core/range/case_compare_spec.rb +0 -0
- data/{test → spec}/core/range/end_spec.rb +0 -0
- data/{test → spec}/core/regexp/match_spec.rb +0 -0
- data/{test → spec}/core/string/capitalize_spec.rb +0 -0
- data/{test → spec}/core/string/casecmp_spec.rb +0 -0
- data/{test → spec}/core/string/chomp_spec.rb +0 -0
- data/{test → spec}/core/string/chop_spec.rb +0 -0
- data/{test → spec}/core/string/chr_spec.rb +0 -0
- data/{test → spec}/core/string/comparison_spec.rb +0 -0
- data/{test → spec}/core/string/downcase_spec.rb +0 -0
- data/{test → spec}/core/string/element_reference_spec.rb +14 -2
- data/{test → spec}/core/string/empty_spec.rb +0 -0
- data/{test → spec}/core/string/end_with_spec.rb +0 -0
- data/{test → spec}/core/string/fixtures/classes.rb +0 -0
- data/{test → spec}/core/string/gsub_spec.rb +0 -0
- data/{test → spec}/core/string/include_spec.rb +0 -0
- data/{test → spec}/core/string/intern_spec.rb +0 -0
- data/{test → spec}/core/string/length_spec.rb +0 -0
- data/{test → spec}/core/string/lstrip_spec.rb +0 -0
- data/{test → spec}/core/string/match_spec.rb +0 -0
- data/{test → spec}/core/string/next_spec.rb +0 -0
- data/{test → spec}/core/string/ord_spec.rb +0 -0
- data/{test → spec}/core/string/partition_spec.rb +0 -0
- data/{test → spec}/core/string/reverse_spec.rb +0 -0
- data/{test → spec}/core/string/rstrip_spec.rb +0 -0
- data/{test → spec}/core/string/size_spec.rb +0 -0
- data/{test → spec}/core/string/slice_spec.rb +4 -1
- data/{test → spec}/core/string/split_spec.rb +0 -0
- data/{test → spec}/core/string/start_with_spec.rb +0 -0
- data/{test → spec}/core/string/strip_spec.rb +0 -0
- data/{test → spec}/core/string/sub_spec.rb +0 -0
- data/{test → spec}/core/string/succ_spec.rb +0 -0
- data/{test → spec}/core/string/sum_spec.rb +0 -0
- data/{test → spec}/core/string/swapcase_spec.rb +0 -0
- data/{test → spec}/core/string/to_a_spec.rb +0 -0
- data/{test → spec}/core/string/to_f_spec.rb +0 -0
- data/{test → spec}/core/string/to_i_spec.rb +0 -0
- data/{test → spec}/core/string/to_s_spec.rb +0 -0
- data/{test → spec}/core/string/to_str_spec.rb +0 -0
- data/{test → spec}/core/string/to_sym_spec.rb +0 -0
- data/{test → spec}/core/string/upcase_spec.rb +0 -0
- data/{test → spec}/core/symbol/to_proc_spec.rb +0 -0
- data/{test → spec}/core/time/at_spec.rb +0 -0
- data/{test → spec}/core/time/day_spec.rb +0 -0
- data/{test → spec}/core/time/friday_spec.rb +0 -0
- data/{test → spec}/core/time/hour_spec.rb +0 -0
- data/{test → spec}/core/time/min_spec.rb +0 -0
- data/{test → spec}/core/time/monday_spec.rb +0 -0
- data/{test → spec}/core/time/month_spec.rb +0 -0
- data/{test → spec}/core/time/now_spec.rb +0 -0
- data/{test → spec}/core/time/saturday_spec.rb +0 -0
- data/{test → spec}/core/true/and_spec.rb +0 -0
- data/{test → spec}/core/true/inspect_spec.rb +0 -0
- data/{test → spec}/core/true/or_spec.rb +0 -0
- data/{test → spec}/core/true/to_s_spec.rb +0 -0
- data/{test → spec}/core/true/xor_spec.rb +0 -0
- data/spec/grammar/lvar_spec.rb +2 -1
- data/spec/grammar/str_spec.rb +1 -1
- data/spec/grammar/xstr_spec.rb +1 -1
- data/{test → spec}/index.html +3 -3
- data/{test → spec}/language/alias_spec.rb +0 -0
- data/{test → spec}/language/and_spec.rb +0 -0
- data/{test → spec}/language/array_spec.rb +0 -0
- data/{test → spec}/language/block_spec.rb +0 -0
- data/{test → spec}/language/break_spec.rb +0 -0
- data/{test → spec}/language/case_spec.rb +0 -0
- data/{test → spec}/language/defined_spec.rb +0 -0
- data/{test → spec}/language/ensure_spec.rb +2 -2
- data/{test → spec}/language/fixtures/next.rb +0 -0
- data/{test → spec}/language/fixtures/yield.rb +0 -0
- data/{test → spec}/language/hash_spec.rb +0 -0
- data/{test → spec}/language/if_spec.rb +0 -0
- data/{test → spec}/language/literal_lambda_spec.rb +0 -0
- data/{test → spec}/language/loop_spec.rb +0 -0
- data/{test → spec}/language/metaclass_spec.rb +0 -0
- data/{test → spec}/language/next_spec.rb +2 -0
- data/{test → spec}/language/or_spec.rb +0 -0
- data/{test → spec}/language/predefined_spec.rb +0 -0
- data/{test → spec}/language/regexp_spec.rb +0 -0
- data/{test → spec}/language/send_spec.rb +0 -0
- data/{test → spec}/language/singleton_class_spec.rb +0 -0
- data/{test → spec}/language/super_spec.rb +0 -0
- data/{test → spec}/language/symbol_spec.rb +0 -0
- data/{test → spec}/language/undef_spec.rb +0 -0
- data/{test → spec}/language/unless_spec.rb +0 -0
- data/{test → spec}/language/until_spec.rb +0 -0
- data/{test → spec}/language/variables_spec.rb +0 -0
- data/{test → spec}/language/while_spec.rb +0 -0
- data/{test → spec}/language/yield_spec.rb +2 -0
- data/{test → spec}/opal/array/subclassing_spec.rb +0 -0
- data/{test → spec}/opal/array/to_json_spec.rb +0 -0
- data/{test → spec}/opal/boolean/singleton_class_spec.rb +0 -0
- data/{test → spec}/opal/boolean/to_json_spec.rb +0 -0
- data/{test → spec}/opal/class/bridge_class_spec.rb +0 -0
- data/spec/opal/erb/erb_spec.rb +15 -0
- data/{test → spec}/opal/exception/subclassing_spec.rb +0 -0
- data/{test → spec}/opal/hash/to_json_spec.rb +0 -0
- data/spec/opal/hash/to_native_spec.rb +5 -0
- data/{test → spec}/opal/json/parse_spec.rb +0 -0
- data/{test → spec}/opal/kernel/to_json_spec.rb +0 -0
- data/{test → spec}/opal/nil/to_json_spec.rb +0 -0
- data/{test → spec}/opal/numeric/to_json_spec.rb +0 -0
- data/{test → spec}/opal/runtime/call_spec.rb +0 -0
- data/{test → spec}/opal/runtime/class_hierarchy_spec.rb +0 -0
- data/{test → spec}/opal/runtime/def_spec.rb +0 -0
- data/{test → spec}/opal/runtime/defined_spec.rb +0 -0
- data/{test → spec}/opal/runtime/method_missing_spec.rb +3 -3
- data/{test → spec}/opal/runtime/super_spec.rb +0 -0
- data/{test → spec}/opal/string/subclassing_spec.rb +0 -0
- data/{test → spec}/opal/string/to_json_spec.rb +0 -0
- data/spec/opal/strscan/check_spec.rb +13 -0
- data/spec/opal/strscan/scan_spec.rb +33 -0
- data/spec/parser/simple_spec.rb +44 -0
- data/spec/spec_helper.rb +7 -7
- metadata +487 -497
- data/core/dir.rb +0 -89
- data/core/file.rb +0 -85
- data/spec/browser_spec.rb +0 -28
- data/spec/builder/fixtures/build_source/adam.rb +0 -0
- data/spec/builder/fixtures/build_source/bar/a.rb +0 -0
- data/spec/builder/fixtures/build_source/bar/wow/b.rb +0 -0
- data/spec/builder/fixtures/build_source/bar/wow/cow/c.rb +0 -0
- data/spec/builder/fixtures/build_source/beynon.rb +0 -0
- data/spec/builder/fixtures/build_source/charles.js +0 -0
- data/spec/builder/fixtures/build_source/foo/a.rb +0 -0
- data/spec/builder/fixtures/build_source/foo/b.rb +0 -0
- data/spec/builder/fixtures/build_source/foo/x.js +0 -0
- data/spec/builder/fixtures/build_source/foo/y.js +0 -0
- data/spec/builder/lib_name_for_spec.rb +0 -19
- data/test/index.min.html +0 -12
- data/test/spec_helper.rb +0 -4
data/Rakefile
CHANGED
@@ -7,21 +7,35 @@ require 'opal/version'
|
|
7
7
|
require 'opal/rake_task'
|
8
8
|
|
9
9
|
Opal::RakeTask.new do |t|
|
10
|
-
t.dependencies = %w(opal-spec
|
11
|
-
t.
|
12
|
-
t.files = [] # we handle this by Opal.runtime instead
|
10
|
+
t.dependencies = %w(opal-spec)
|
11
|
+
t.files = [] # we handle this by Opal.runtime instead
|
13
12
|
end
|
14
13
|
|
15
|
-
desc "Build
|
16
|
-
task :
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
desc "Build opal-parser ready for browser"
|
15
|
+
task :parser do
|
16
|
+
puts " * build/opal-parser.js"
|
17
|
+
File.open('build/opal-parser.js', 'w+') do |o|
|
18
|
+
o.puts Opal::Builder.new(:files => %w(racc.rb strscan.rb), :dir => 'core').build
|
19
|
+
o.puts Opal.build_gem('opal')
|
20
|
+
o.puts File.read('core/browser.js')
|
22
21
|
end
|
23
22
|
end
|
24
23
|
|
24
|
+
desc "Run tests"
|
25
|
+
task :test do
|
26
|
+
src = %w(build/opal.js build/opal-spec.js build/opal-parser.js build/specs.js)
|
27
|
+
out = 'build/phantom_runner.js'
|
28
|
+
|
29
|
+
File.open(out, 'w+') do |o|
|
30
|
+
src.each { |s| o.write File.read(s) }
|
31
|
+
o.write "Opal.require('opal-spec/autorun');"
|
32
|
+
end
|
33
|
+
|
34
|
+
sh "phantomjs build/phantom_runner.js"
|
35
|
+
end
|
36
|
+
|
37
|
+
task :default => :test
|
38
|
+
|
25
39
|
desc "Check file sizes for opal.js runtime"
|
26
40
|
task :sizes do
|
27
41
|
o = File.read 'build/opal.js'
|
@@ -55,10 +69,6 @@ def gzip(str)
|
|
55
69
|
end
|
56
70
|
end
|
57
71
|
|
58
|
-
# Test
|
59
|
-
require 'rspec/core/rake_task'
|
60
|
-
RSpec::Core::RakeTask.new :default
|
61
|
-
|
62
72
|
namespace :docs do
|
63
73
|
desc "Clone repo"
|
64
74
|
task :clone do
|
@@ -73,7 +83,7 @@ namespace :docs do
|
|
73
83
|
end
|
74
84
|
end
|
75
85
|
|
76
|
-
desc "Build
|
86
|
+
desc "Build docs"
|
77
87
|
task :build do
|
78
88
|
require 'redcarpet'
|
79
89
|
require 'albino'
|
@@ -84,17 +94,39 @@ namespace :docs do
|
|
84
94
|
end
|
85
95
|
end
|
86
96
|
|
87
|
-
puts 'gh-pages/index.html'
|
88
97
|
markdown = Redcarpet::Markdown.new(klass, :fenced_code_blocks => true)
|
89
98
|
|
90
99
|
File.open('gh-pages/index.html', 'w+') do |o|
|
100
|
+
puts " * index.html"
|
91
101
|
o.write File.read('docs/pre.html')
|
92
|
-
o.write markdown.render(File.read "
|
102
|
+
o.write markdown.render(File.read "docs/index.md")
|
93
103
|
o.write File.read('docs/post.html')
|
94
104
|
end
|
95
105
|
|
96
|
-
|
97
|
-
|
106
|
+
%w(try).each do |src|
|
107
|
+
puts " * src.md"
|
108
|
+
File.open("gh-pages/#{src}.html", 'w+') do |out|
|
109
|
+
out.write File.read("docs/pre.html")
|
110
|
+
out.write File.read("docs/#{src}.html")
|
111
|
+
out.write File.read("docs/post.html")
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
%w(opal opal-parser).each do |src|
|
116
|
+
puts " * #{src}.js"
|
117
|
+
FileUtils.cp "build/#{src}.js", "gh-pages/#{src}.js"
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
task :server do
|
122
|
+
require 'rack'
|
123
|
+
server = Class.new(Rack::Server) do
|
124
|
+
def app
|
125
|
+
Rack::Directory.new('gh-pages')
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
server.new.start
|
98
130
|
end
|
99
131
|
|
100
132
|
desc "commit and push"
|
data/config.ru
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'rack'
|
2
|
+
|
3
|
+
app = lambda do |env|
|
4
|
+
path = env['PATH_INFO']
|
5
|
+
base_path = File.expand_path('../test/index.html', __FILE__)
|
6
|
+
case path
|
7
|
+
when /\.js/
|
8
|
+
contents = File.read(File.join(File.dirname(base_path), '..', path))
|
9
|
+
[200, {'Content-Type' => 'application/x-javascript'}, [contents]]
|
10
|
+
else
|
11
|
+
system 'rake opal'
|
12
|
+
contents = File.read(base_path)
|
13
|
+
[200, {'Content-Type' => 'text/html'}, [contents]]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
run app
|
data/core/array.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
`Array.prototype._isArray = true`
|
2
|
-
|
3
1
|
class Array < `Array`
|
2
|
+
%x{
|
3
|
+
Array_prototype._isArray = true;
|
4
|
+
}
|
4
5
|
|
5
6
|
include Enumerable
|
6
7
|
|
@@ -14,21 +15,19 @@ class Array < `Array`
|
|
14
15
|
}
|
15
16
|
end
|
16
17
|
|
17
|
-
def self.allocate
|
18
|
-
%x{
|
19
|
-
var arr = [];
|
20
|
-
arr.$k = #{self};
|
21
|
-
arr.$m = #{self}.$m_tbl;
|
22
|
-
return arr;
|
23
|
-
}
|
24
|
-
end
|
25
|
-
|
26
18
|
def self.new(size, obj = nil)
|
27
19
|
arr = allocate
|
28
20
|
|
29
21
|
%x{
|
30
|
-
|
31
|
-
|
22
|
+
if (size && size._isArray) {
|
23
|
+
for (var i = 0; i < size.length; i++) {
|
24
|
+
arr[i] = size[i];
|
25
|
+
}
|
26
|
+
}
|
27
|
+
else {
|
28
|
+
for (var i = 0; i < size; i++) {
|
29
|
+
arr[i] = obj;
|
30
|
+
}
|
32
31
|
}
|
33
32
|
}
|
34
33
|
|
@@ -230,7 +229,7 @@ class Array < `Array`
|
|
230
229
|
var result = [];
|
231
230
|
|
232
231
|
for (var i = 0, length = #{self}.length, value; i < length; i++) {
|
233
|
-
if ((value = block(__context, #{self}[i])) === __breaker) {
|
232
|
+
if ((value = block.call(__context, #{self}[i])) === __breaker) {
|
234
233
|
return __breaker.$v;
|
235
234
|
}
|
236
235
|
|
@@ -246,7 +245,7 @@ class Array < `Array`
|
|
246
245
|
|
247
246
|
%x{
|
248
247
|
for (var i = 0, length = #{self}.length, val; i < length; i++) {
|
249
|
-
if ((val = block(__context, #{self}[i])) === __breaker) {
|
248
|
+
if ((val = block.call(__context, #{self}[i])) === __breaker) {
|
250
249
|
return __breaker.$v;
|
251
250
|
}
|
252
251
|
|
@@ -356,7 +355,7 @@ class Array < `Array`
|
|
356
355
|
|
357
356
|
%x{
|
358
357
|
for (var i = 0, length = #{self}.length, value; i < length; i++) {
|
359
|
-
if ((value = block(__context, #{self}[i])) === __breaker) {
|
358
|
+
if ((value = block.call(__context, #{self}[i])) === __breaker) {
|
360
359
|
return __breaker.$v;
|
361
360
|
}
|
362
361
|
|
@@ -381,7 +380,7 @@ class Array < `Array`
|
|
381
380
|
|
382
381
|
%x{
|
383
382
|
for (var i = 0, length = #{self}.length, value; i < length; i++) {
|
384
|
-
if ((value = block
|
383
|
+
if ((value = block(__context, #{self}[i])) === __breaker) {
|
385
384
|
return __breaker.$v;
|
386
385
|
}
|
387
386
|
|
@@ -447,7 +446,7 @@ class Array < `Array`
|
|
447
446
|
}
|
448
447
|
|
449
448
|
if (block !== nil) {
|
450
|
-
return block
|
449
|
+
return block(__context, original);
|
451
450
|
}
|
452
451
|
|
453
452
|
#{ raise "Array#fetch" };
|
@@ -533,12 +532,13 @@ class Array < `Array`
|
|
533
532
|
end
|
534
533
|
|
535
534
|
def index(object, &block)
|
536
|
-
return enum_for :index unless block_given? && object == undefined
|
537
|
-
|
538
535
|
%x{
|
536
|
+
if (block === nil && object == null) {
|
537
|
+
return #{enum_for :index};
|
538
|
+
}
|
539
539
|
if (block !== nil) {
|
540
540
|
for (var i = 0, length = #{self}.length, value; i < length; i++) {
|
541
|
-
if ((value = block(__context, '', #{self}[i])) === __breaker) {
|
541
|
+
if ((value = block.call(__context, '', #{self}[i])) === __breaker) {
|
542
542
|
return __breaker.$v;
|
543
543
|
}
|
544
544
|
|
@@ -573,7 +573,7 @@ class Array < `Array`
|
|
573
573
|
}
|
574
574
|
|
575
575
|
for (var length = #{self}.length, value; i < length; i++) {
|
576
|
-
if ((value = block
|
576
|
+
if ((value = block(__context, result, #{self}[i])) === __breaker) {
|
577
577
|
return __breaker.$v;
|
578
578
|
}
|
579
579
|
|
@@ -609,12 +609,20 @@ class Array < `Array`
|
|
609
609
|
|
610
610
|
def inspect
|
611
611
|
%x{
|
612
|
-
var inspect
|
612
|
+
var i, inspect, el, el_insp, length, object_id;
|
613
613
|
|
614
|
-
|
615
|
-
|
616
|
-
}
|
614
|
+
inspect = [];
|
615
|
+
object_id = #{object_id};
|
616
|
+
length = #{self}.length;
|
617
|
+
|
618
|
+
for (i = 0; i < length; i++) {
|
619
|
+
el = #{self[`i`]};
|
620
|
+
|
621
|
+
// Check object_id to ensure it's not the same array get into an infinite loop
|
622
|
+
el_insp = #{`el`.object_id} === object_id ? '[...]' : #{`el`.inspect};
|
617
623
|
|
624
|
+
inspect.push(el_insp);
|
625
|
+
}
|
618
626
|
return '[' + inspect.join(', ') + ']';
|
619
627
|
}
|
620
628
|
end
|
@@ -635,7 +643,7 @@ class Array < `Array`
|
|
635
643
|
return enum_for :keep_if unless block_given?
|
636
644
|
%x{
|
637
645
|
for (var i = 0, length = #{self}.length, value; i < length; i++) {
|
638
|
-
if ((value = block
|
646
|
+
if ((value = block(__context, #{self}[i])) === __breaker) {
|
639
647
|
return __breaker.$v;
|
640
648
|
}
|
641
649
|
|
@@ -727,7 +735,7 @@ class Array < `Array`
|
|
727
735
|
var result = [];
|
728
736
|
|
729
737
|
for (var i = 0, length = #{self}.length, value; i < length; i++) {
|
730
|
-
if ((value = block(__context, #{self}[i])) === __breaker) {
|
738
|
+
if ((value = block.call(__context, #{self}[i])) === __breaker) {
|
731
739
|
return __breaker.$v;
|
732
740
|
}
|
733
741
|
|
@@ -746,7 +754,7 @@ class Array < `Array`
|
|
746
754
|
var original = #{self}.length;
|
747
755
|
|
748
756
|
for (var i = 0, length = #{self}.length, value; i < length; i++) {
|
749
|
-
if ((value = block(__context, #{self}[i])) === __breaker) {
|
757
|
+
if ((value = block.call(__context, #{self}[i])) === __breaker) {
|
750
758
|
return __breaker.$v;
|
751
759
|
}
|
752
760
|
|
@@ -796,7 +804,7 @@ class Array < `Array`
|
|
796
804
|
%x{
|
797
805
|
if (block !== nil) {
|
798
806
|
for (var i = #{self}.length - 1, value; i >= 0; i--) {
|
799
|
-
if ((value = block
|
807
|
+
if ((value = block(__context, #{self}[i])) === __breaker) {
|
800
808
|
return __breaker.$v;
|
801
809
|
}
|
802
810
|
|
@@ -826,7 +834,7 @@ class Array < `Array`
|
|
826
834
|
for (var i = 0, length = #{self}.length, item, value; i < length; i++) {
|
827
835
|
item = #{self}[i];
|
828
836
|
|
829
|
-
if ((value = block
|
837
|
+
if ((value = block(__context, item)) === __breaker) {
|
830
838
|
return __breaker.$v;
|
831
839
|
}
|
832
840
|
|
@@ -847,7 +855,7 @@ class Array < `Array`
|
|
847
855
|
for (var i = 0, length = original, item, value; i < length; i++) {
|
848
856
|
item = #{self}[i];
|
849
857
|
|
850
|
-
if ((value = block
|
858
|
+
if ((value = block(__context, item)) === __breaker) {
|
851
859
|
return __breaker.$v;
|
852
860
|
}
|
853
861
|
|
@@ -902,7 +910,7 @@ class Array < `Array`
|
|
902
910
|
for (var i = 0, length = #{self}.length, item, value; i < length; i++) {
|
903
911
|
item = #{self}[i];
|
904
912
|
|
905
|
-
if ((value = block
|
913
|
+
if ((value = block(__context, item)) === __breaker) {
|
906
914
|
return __breaker.$v;
|
907
915
|
}
|
908
916
|
|
@@ -1013,7 +1021,7 @@ class Array < `Array`
|
|
1013
1021
|
|
1014
1022
|
if (block !== nil) {
|
1015
1023
|
for (var i = 0; i < size; i++) {
|
1016
|
-
block(__context, result[i]);
|
1024
|
+
block.call(__context, result[i]);
|
1017
1025
|
}
|
1018
1026
|
|
1019
1027
|
return nil;
|
data/core/basic_object.rb
CHANGED
@@ -8,13 +8,13 @@ class BasicObject
|
|
8
8
|
|
9
9
|
def __send__(symbol, *args, &block)
|
10
10
|
%x{
|
11
|
-
var meth = #{self}
|
11
|
+
var meth = #{self}['$' + symbol];
|
12
12
|
|
13
13
|
if (!meth) {
|
14
14
|
return #{ method_missing symbol };
|
15
15
|
}
|
16
16
|
|
17
|
-
return meth.apply(
|
17
|
+
return meth.apply(#{self}, args);
|
18
18
|
}
|
19
19
|
end
|
20
20
|
|
@@ -29,7 +29,7 @@ class BasicObject
|
|
29
29
|
no_block_given();
|
30
30
|
}
|
31
31
|
|
32
|
-
return block(#{self});
|
32
|
+
return block.call(#{self});
|
33
33
|
}
|
34
34
|
end
|
35
35
|
|
@@ -39,7 +39,7 @@ class BasicObject
|
|
39
39
|
no_block_given();
|
40
40
|
}
|
41
41
|
|
42
|
-
return block.apply(
|
42
|
+
return block.apply(#{self}, args);
|
43
43
|
}
|
44
44
|
end
|
45
45
|
|
data/core/browser.js
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
(function() {
|
2
|
+
// quick exit if not insde browser
|
3
|
+
if (typeof(window) === 'undefined' || typeof(document) === 'undefined') {
|
4
|
+
return;
|
5
|
+
}
|
6
|
+
|
7
|
+
function findRubyScripts() {
|
8
|
+
var all = document.getElementsByTagName('script');
|
9
|
+
for (var i = 0, script; i < all.length; i++) {
|
10
|
+
script = all[i];
|
11
|
+
if (script.type === 'text/ruby') {
|
12
|
+
runRuby(script.innerHTML);
|
13
|
+
}
|
14
|
+
else if (script.type === 'text/erb') {
|
15
|
+
runERB(script.innerHTML);
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
function runRuby(source) {
|
21
|
+
var js = Opal.Opal.Parser.$new().$parse(source);
|
22
|
+
eval('(' + js + ')()');
|
23
|
+
}
|
24
|
+
|
25
|
+
if (window.addEventListener) {
|
26
|
+
window.addEventListener('DOMContentLoaded', findRubyScripts, false);
|
27
|
+
}
|
28
|
+
else {
|
29
|
+
window.attachEvent('onload', findRubyScripts);
|
30
|
+
}
|
31
|
+
})();
|
data/core/class.rb
CHANGED
@@ -5,10 +5,10 @@ class Class
|
|
5
5
|
var klass = boot_class(sup, AnonClass)
|
6
6
|
klass._name = nil;
|
7
7
|
|
8
|
-
|
8
|
+
sup.$inherited(klass);
|
9
9
|
|
10
10
|
if (block !== nil) {
|
11
|
-
block(klass
|
11
|
+
block.call(klass);
|
12
12
|
}
|
13
13
|
|
14
14
|
return klass;
|
@@ -17,7 +17,7 @@ class Class
|
|
17
17
|
|
18
18
|
def allocate
|
19
19
|
%x{
|
20
|
-
var obj =
|
20
|
+
var obj = new #{self};
|
21
21
|
obj._id = unique_id++;
|
22
22
|
return obj;
|
23
23
|
}
|
@@ -25,11 +25,11 @@ class Class
|
|
25
25
|
|
26
26
|
def new(*args, &block)
|
27
27
|
%x{
|
28
|
-
var obj = new self;
|
28
|
+
var obj = new #{self};
|
29
29
|
obj._id = unique_id++;
|
30
|
-
obj.$
|
30
|
+
obj.$initialize._p = block;
|
31
31
|
|
32
|
-
obj.$
|
32
|
+
obj.$initialize.apply(obj, args);
|
33
33
|
return obj;
|
34
34
|
}
|
35
35
|
end
|
@@ -39,7 +39,7 @@ class Class
|
|
39
39
|
|
40
40
|
def superclass
|
41
41
|
%x{
|
42
|
-
var sup = #{self}
|
42
|
+
var sup = #{self}._super;
|
43
43
|
|
44
44
|
if (!sup) {
|
45
45
|
return nil;
|
data/core/enumerable.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
module Enumerable
|
2
2
|
def all?(&block)
|
3
3
|
%x{
|
4
|
-
var result = true, proc
|
4
|
+
var result = true, proc;
|
5
5
|
|
6
6
|
if (block !== nil) {
|
7
|
-
proc = function(
|
7
|
+
proc = function(obj) {
|
8
8
|
var value;
|
9
9
|
|
10
|
-
if ((value = block(__context, obj)) === __breaker) {
|
10
|
+
if ((value = block.call(__context, obj)) === __breaker) {
|
11
11
|
return __breaker.$v;
|
12
12
|
}
|
13
13
|
|
@@ -20,7 +20,7 @@ module Enumerable
|
|
20
20
|
}
|
21
21
|
}
|
22
22
|
else {
|
23
|
-
proc = function(
|
23
|
+
proc = function(obj) {
|
24
24
|
if (obj === false || obj === nil) {
|
25
25
|
result = false;
|
26
26
|
__breaker.$v = nil;
|
@@ -30,8 +30,8 @@ module Enumerable
|
|
30
30
|
}
|
31
31
|
}
|
32
32
|
|
33
|
-
each._p = proc;
|
34
|
-
|
33
|
+
#{self}.$each._p = proc;
|
34
|
+
#{self}.$each();
|
35
35
|
|
36
36
|
return result;
|
37
37
|
}
|
@@ -39,13 +39,13 @@ module Enumerable
|
|
39
39
|
|
40
40
|
def any?(&block)
|
41
41
|
%x{
|
42
|
-
var result = false, proc
|
42
|
+
var result = false, proc;
|
43
43
|
|
44
44
|
if (block !== nil) {
|
45
|
-
proc = function(
|
45
|
+
proc = function(obj) {
|
46
46
|
var value;
|
47
47
|
|
48
|
-
if ((value = block(__context, obj)) === __breaker) {
|
48
|
+
if ((value = block.call(__context, obj)) === __breaker) {
|
49
49
|
return __breaker.$v;
|
50
50
|
}
|
51
51
|
|
@@ -58,7 +58,7 @@ module Enumerable
|
|
58
58
|
}
|
59
59
|
}
|
60
60
|
else {
|
61
|
-
proc = function(
|
61
|
+
proc = function(obj) {
|
62
62
|
if (obj !== false && obj !== nil) {
|
63
63
|
result = true;
|
64
64
|
__breaker.$v = nil;
|
@@ -68,8 +68,8 @@ module Enumerable
|
|
68
68
|
}
|
69
69
|
}
|
70
70
|
|
71
|
-
each._p = proc;
|
72
|
-
|
71
|
+
#{self}.$each._p = proc;
|
72
|
+
#{self}.$each();
|
73
73
|
|
74
74
|
return result;
|
75
75
|
}
|
@@ -79,20 +79,20 @@ module Enumerable
|
|
79
79
|
return enum_for :collect unless block_given?
|
80
80
|
|
81
81
|
%x{
|
82
|
-
var result = []
|
82
|
+
var result = [];
|
83
83
|
|
84
84
|
var proc = function() {
|
85
|
-
var obj = __slice.call(arguments
|
85
|
+
var obj = __slice.call(arguments), value;
|
86
86
|
|
87
|
-
if ((value = block.apply(
|
87
|
+
if ((value = block.apply(__context, obj)) === __breaker) {
|
88
88
|
return __breaker.$v;
|
89
89
|
}
|
90
90
|
|
91
91
|
result.push(value);
|
92
92
|
};
|
93
93
|
|
94
|
-
each._p = proc;
|
95
|
-
|
94
|
+
#{self}.$each._p = proc;
|
95
|
+
#{self}.$each();
|
96
96
|
|
97
97
|
return result;
|
98
98
|
}
|
@@ -100,19 +100,19 @@ module Enumerable
|
|
100
100
|
|
101
101
|
def count(object, &block)
|
102
102
|
%x{
|
103
|
-
var result = 0
|
103
|
+
var result = 0;
|
104
104
|
|
105
105
|
if (object != null) {
|
106
|
-
block = function(
|
106
|
+
block = function(obj) { return #{ `obj` == `object` }; };
|
107
107
|
}
|
108
108
|
else if (block === nil) {
|
109
109
|
block = function() { return true; };
|
110
110
|
}
|
111
111
|
|
112
|
-
var proc = function(
|
112
|
+
var proc = function(obj) {
|
113
113
|
var value;
|
114
114
|
|
115
|
-
if ((value = block(__context, obj)) === __breaker) {
|
115
|
+
if ((value = block.call(__context, obj)) === __breaker) {
|
116
116
|
return __breaker.$v;
|
117
117
|
}
|
118
118
|
|
@@ -121,8 +121,8 @@ module Enumerable
|
|
121
121
|
}
|
122
122
|
}
|
123
123
|
|
124
|
-
each._p = proc;
|
125
|
-
|
124
|
+
#{self}.$each._p = proc;
|
125
|
+
#{self}.$each();
|
126
126
|
|
127
127
|
return result;
|
128
128
|
}
|
@@ -132,12 +132,12 @@ module Enumerable
|
|
132
132
|
return enum_for :detect, ifnone unless block_given?
|
133
133
|
|
134
134
|
%x{
|
135
|
-
var result = nil
|
135
|
+
var result = nil;
|
136
136
|
|
137
|
-
each._p = function(
|
137
|
+
#{self}.$each._p = function(obj) {
|
138
138
|
var value;
|
139
139
|
|
140
|
-
if ((value = block(__context, obj)) === __breaker) {
|
140
|
+
if ((value = block.call(__context, obj)) === __breaker) {
|
141
141
|
return __breaker.$v;
|
142
142
|
}
|
143
143
|
|
@@ -149,7 +149,7 @@ module Enumerable
|
|
149
149
|
}
|
150
150
|
};
|
151
151
|
|
152
|
-
|
152
|
+
#{self}.$each();
|
153
153
|
|
154
154
|
if (result !== nil) {
|
155
155
|
return result;
|
@@ -166,10 +166,9 @@ module Enumerable
|
|
166
166
|
def drop(number)
|
167
167
|
%x{
|
168
168
|
var result = [],
|
169
|
-
current = 0
|
170
|
-
each = #{self}.$m.each;
|
169
|
+
current = 0;
|
171
170
|
|
172
|
-
each._p = function(
|
171
|
+
#{self}.$each._p = function(obj) {
|
173
172
|
if (number < current) {
|
174
173
|
result.push(e);
|
175
174
|
}
|
@@ -177,7 +176,7 @@ module Enumerable
|
|
177
176
|
current++;
|
178
177
|
};
|
179
178
|
|
180
|
-
|
179
|
+
#{self}.$each();
|
181
180
|
|
182
181
|
return result;
|
183
182
|
}
|
@@ -187,12 +186,12 @@ module Enumerable
|
|
187
186
|
return enum_for :drop_while unless block_given?
|
188
187
|
|
189
188
|
%x{
|
190
|
-
var result = []
|
189
|
+
var result = [];
|
191
190
|
|
192
|
-
each._p = function(
|
191
|
+
#{self}.$each._p = function(obj) {
|
193
192
|
var value;
|
194
193
|
|
195
|
-
if ((value = block(__context, obj)) === __breaker) {
|
194
|
+
if ((value = block.call(__context, obj)) === __breaker) {
|
196
195
|
return __breaker;
|
197
196
|
}
|
198
197
|
|
@@ -205,7 +204,7 @@ module Enumerable
|
|
205
204
|
return __breaker;
|
206
205
|
};
|
207
206
|
|
208
|
-
|
207
|
+
#{self}.$each();
|
209
208
|
|
210
209
|
return result;
|
211
210
|
}
|
@@ -215,19 +214,19 @@ module Enumerable
|
|
215
214
|
return enum_for :each_with_index unless block_given?
|
216
215
|
|
217
216
|
%x{
|
218
|
-
var index = 0
|
217
|
+
var index = 0;
|
219
218
|
|
220
|
-
each._p = function(
|
219
|
+
#{self}.$each._p = function(obj) {
|
221
220
|
var value;
|
222
221
|
|
223
|
-
if ((value = block(__context, obj, index)) === __breaker) {
|
222
|
+
if ((value = block.call(__context, obj, index)) === __breaker) {
|
224
223
|
return __breaker.$v;
|
225
224
|
}
|
226
225
|
|
227
226
|
index++;
|
228
227
|
};
|
229
228
|
|
230
|
-
|
229
|
+
#{self}.$each();
|
231
230
|
|
232
231
|
return nil;
|
233
232
|
}
|
@@ -237,17 +236,15 @@ module Enumerable
|
|
237
236
|
return enum_for :each_with_object unless block_given?
|
238
237
|
|
239
238
|
%x{
|
240
|
-
|
241
|
-
|
242
|
-
each._p = function(s, obj) {
|
239
|
+
#{self}.$each._p = function(obj) {
|
243
240
|
var value;
|
244
241
|
|
245
|
-
if ((value = block(__context, obj, object)) === __breaker) {
|
242
|
+
if ((value = block.call(__context, obj, object)) === __breaker) {
|
246
243
|
return __breaker.$v;
|
247
244
|
}
|
248
245
|
};
|
249
246
|
|
250
|
-
|
247
|
+
#{self}.$each();
|
251
248
|
|
252
249
|
return object;
|
253
250
|
}
|
@@ -255,13 +252,13 @@ module Enumerable
|
|
255
252
|
|
256
253
|
def entries
|
257
254
|
%x{
|
258
|
-
var result = []
|
255
|
+
var result = [];
|
259
256
|
|
260
|
-
each._p = function(
|
257
|
+
#{self}.$each._p = function(obj) {
|
261
258
|
result.push(obj);
|
262
259
|
};
|
263
260
|
|
264
|
-
|
261
|
+
#{self}.$each();
|
265
262
|
|
266
263
|
return result;
|
267
264
|
}
|
@@ -273,12 +270,12 @@ module Enumerable
|
|
273
270
|
return enum_for :find_all unless block_given?
|
274
271
|
|
275
272
|
%x{
|
276
|
-
var result = []
|
273
|
+
var result = [];
|
277
274
|
|
278
|
-
each._p = function(
|
275
|
+
#{self}.$each._p = function(obj) {
|
279
276
|
var value;
|
280
277
|
|
281
|
-
if ((value = block(__context, obj)) === __breaker) {
|
278
|
+
if ((value = block.call(__context, obj)) === __breaker) {
|
282
279
|
return __breaker.$v;
|
283
280
|
}
|
284
281
|
|
@@ -287,7 +284,7 @@ module Enumerable
|
|
287
284
|
}
|
288
285
|
};
|
289
286
|
|
290
|
-
|
287
|
+
#{self}.$each();
|
291
288
|
|
292
289
|
return result;
|
293
290
|
}
|
@@ -295,10 +292,10 @@ module Enumerable
|
|
295
292
|
|
296
293
|
def find_index(object, &block)
|
297
294
|
%x{
|
298
|
-
var proc, result = nil, index = 0
|
295
|
+
var proc, result = nil, index = 0;
|
299
296
|
|
300
297
|
if (object != null) {
|
301
|
-
proc = function (
|
298
|
+
proc = function (obj) {
|
302
299
|
if (#{ `obj` == `object` }) {
|
303
300
|
result = index;
|
304
301
|
return __breaker;
|
@@ -309,10 +306,10 @@ module Enumerable
|
|
309
306
|
else if (block === nil) {
|
310
307
|
return #{ enum_for 'find_index' };
|
311
308
|
} else {
|
312
|
-
proc = function(
|
309
|
+
proc = function(obj) {
|
313
310
|
var value;
|
314
311
|
|
315
|
-
if ((value = block(__context, obj)) === __breaker) {
|
312
|
+
if ((value = block.call(__context, obj)) === __breaker) {
|
316
313
|
return __breaker.$v;
|
317
314
|
}
|
318
315
|
|
@@ -326,8 +323,8 @@ module Enumerable
|
|
326
323
|
};
|
327
324
|
}
|
328
325
|
|
329
|
-
#{self}.$
|
330
|
-
#{self}.$
|
326
|
+
#{self}.$each._p = proc;
|
327
|
+
#{self}.$each();
|
331
328
|
|
332
329
|
return result;
|
333
330
|
}
|
@@ -337,16 +334,15 @@ module Enumerable
|
|
337
334
|
%x{
|
338
335
|
var result = [],
|
339
336
|
current = 0,
|
340
|
-
proc
|
341
|
-
each = #{self}.$m.each;
|
337
|
+
proc;
|
342
338
|
|
343
339
|
if (number == null) {
|
344
340
|
result = nil;
|
345
|
-
proc = function(
|
341
|
+
proc = function(obj) {
|
346
342
|
result = obj; return __breaker;
|
347
343
|
};
|
348
344
|
} else {
|
349
|
-
proc = function(
|
345
|
+
proc = function(obj) {
|
350
346
|
if (number <= current) {
|
351
347
|
return __breaker;
|
352
348
|
}
|
@@ -357,8 +353,8 @@ module Enumerable
|
|
357
353
|
};
|
358
354
|
}
|
359
355
|
|
360
|
-
each._p = proc;
|
361
|
-
|
356
|
+
#{self}.$each._p = proc;
|
357
|
+
#{self}.$each();
|
362
358
|
|
363
359
|
return result;
|
364
360
|
}
|
@@ -366,21 +362,21 @@ module Enumerable
|
|
366
362
|
|
367
363
|
def grep(pattern, &block)
|
368
364
|
%x{
|
369
|
-
var result = []
|
365
|
+
var result = [];
|
370
366
|
|
371
|
-
each._p = (block !== nil
|
372
|
-
? function(
|
367
|
+
#{self}.$each._p = (block !== nil
|
368
|
+
? function(obj) {
|
373
369
|
var value = #{pattern === `obj`};
|
374
370
|
|
375
371
|
if (value !== false && value !== nil) {
|
376
|
-
if ((value = block(__context, obj)) === __breaker) {
|
372
|
+
if ((value = block.call(__context, obj)) === __breaker) {
|
377
373
|
return __breaker.$v;
|
378
374
|
}
|
379
375
|
|
380
376
|
result.push(value);
|
381
377
|
}
|
382
378
|
}
|
383
|
-
: function(
|
379
|
+
: function(obj) {
|
384
380
|
var value = #{pattern === `obj`};
|
385
381
|
|
386
382
|
if (value !== false && value !== nil) {
|
@@ -388,7 +384,7 @@ module Enumerable
|
|
388
384
|
}
|
389
385
|
});
|
390
386
|
|
391
|
-
|
387
|
+
#{self}.$each();
|
392
388
|
|
393
389
|
return result;
|
394
390
|
}
|