[macruby-changes] [3444] MacRuby/trunk/lib/dispatch/enumerable.rb
source_changes at macosforge.org
source_changes at macosforge.org
Mon Feb 8 15:03:39 PST 2010
Revision: 3444
http://trac.macosforge.org/projects/ruby/changeset/3444
Author: ernest.prabhakar at gmail.com
Date: 2010-02-08 15:03:39 -0800 (Mon, 08 Feb 2010)
Log Message:
-----------
Moved Dispatch::Enumerable directly into Enumerable
Modified Paths:
--------------
MacRuby/trunk/lib/dispatch/enumerable.rb
Modified: MacRuby/trunk/lib/dispatch/enumerable.rb
===================================================================
--- MacRuby/trunk/lib/dispatch/enumerable.rb 2010-02-08 23:03:32 UTC (rev 3443)
+++ MacRuby/trunk/lib/dispatch/enumerable.rb 2010-02-08 23:03:39 UTC (rev 3444)
@@ -1,69 +1,61 @@
# Additional parallel operations for any object supporting +each+
-module Dispatch
- module Enumerable
- # Parallel +each+
- def p_each(&block)
- grp = Group.new
- self.each do |obj|
- Dispatch.group(grp) { block.call(obj) }
- end
- grp.wait
+module Enumerable
+ # Parallel +each+
+ def p_each(&block)
+ grp = Dispatch::Group.new
+ self.each do |obj|
+ Dispatch.group(grp) { block.call(obj) }
end
+ grp.wait
+ end
- # Parallel +each_with_index+
- def p_each_with_index(&block)
- grp = Group.new
- self.each_with_index do |obj, i|
- Dispatch.group(grp) { block.call(obj, i) }
- end
- grp.wait
+ # Parallel +each_with_index+
+ def p_each_with_index(&block)
+ grp = Dispatch::Group.new
+ self.each_with_index do |obj, i|
+ Dispatch.group(grp) { block.call(obj, i) }
end
+ grp.wait
+ end
- # Parallel +inject+
- # Requires initial value since 'first' no longer special.
- # Only works if result doesn't depend on the order elements are processed.
- def p_inject(initial, &block)
- @result = Dispatch.wrap(initial)
- self.p_each { |obj| block.call(@result, obj) }
- @result._done
- return @result
- end
+ # Parallel +inject+
+ # Requires initial value since 'first' no longer special.
+ # Only works if result doesn't depend on the order elements are processed.
+ def p_inject(initial, &block)
+ @result = Dispatch.wrap(initial)
+ self.p_each { |obj| block.call(@result, obj) }
+ @result._done
+ return @result
+ end
- # Parallel +collect+
- def p_map(&block)
- result = Dispatch.wrap(Array)
- self.p_each_with_index do |obj, i|
- result[i] = block.call(obj)
- end
- result
+ # Parallel +collect+
+ def p_map(&block)
+ result = Dispatch.wrap(Array)
+ self.p_each_with_index do |obj, i|
+ result[i] = block.call(obj)
end
+ result
+ end
- # Parallel +select+; will return array of objects for which
- # +&block+ returns true.
- # Useful if the test block is very expensive to run
- def p_find_all(&block)
- @found_all = Dispatch.wrap(Array)
- self.p_each { |obj| @found_all << obj if block.call(obj) }
- @found_all._done # will this leak?
- end
+ # Parallel +select+; will return array of objects for which
+ # +&block+ returns true.
+ # Useful if the test block is very expensive to run
+ def p_find_all(&block)
+ @found_all = Dispatch.wrap(Array)
+ self.p_each { |obj| @found_all << obj if block.call(obj) }
+ @found_all._done # will this leak?
+ end
- # Parallel +detect+; will return -one- match for +&block+
- # but it may not be the 'first'
- # Useful if the test block is very expensive to run
- def p_find(&block)
- @found = Dispatch.wrap(nil)
- self.p_each do |obj|
- found = @found.nil? ? block.call(obj) : nil
- @found = obj if found and @found.nil?
- end
- @found._done # will this leak?
+ # Parallel +detect+; will return -one- match for +&block+
+ # but it may not be the 'first'
+ # Useful if the test block is very expensive to run
+ def p_find(&block)
+ @found = Dispatch.wrap(nil)
+ self.p_each do |obj|
+ found = @found.nil? ? block.call(obj) : nil
+ @found = obj if found and @found.nil?
end
+ @found._done # will this leak?
end
end
-
-# Mixin to Enumerable, and thus everything that includes it
-module Enumerable
- include Dispatch::Enumerable
-end
-
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100208/951d2bf1/attachment-0001.html>
More information about the macruby-changes
mailing list