Author: djspiewak
Date: Tue Jun 23 00:04:42 2009
New Revision: 787475

URL: http://svn.apache.org/viewvc?rev=787475&view=rev
Log:
Wrapped up ugly provider looping in a single method

Modified:
    buildr/trunk/lib/buildr/shell.rb

Modified: buildr/trunk/lib/buildr/shell.rb
URL: 
http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/shell.rb?rev=787475&r1=787474&r2=787475&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/shell.rb (original)
+++ buildr/trunk/lib/buildr/shell.rb Tue Jun 23 00:04:42 2009
@@ -16,6 +16,18 @@
       def providers
         @providers ||= {}
       end
+      
+      def each
+        providers.each do |lang, p|
+          if lang == :none
+            p.each do |x|
+              yield x
+            end
+          else
+            yield p
+          end
+        end
+      end
     end
   end
   
@@ -48,24 +60,18 @@
     
     first_time do
       Project.local_task 'shell'
+      
+      ShellProviders.each { |p| Project.local_task "shell:#{name}" }
     end
     
     before_define do |project|
-      ShellProviders.providers.each do |lang, p|
-        load_provider = proc do |prov|
-          name = prov.to_sym
-          
-          trace "Defining task #{project.name}:shell:#{name}"
-          project.task "shell:#{name}" => :compile do
-            trace "Launching #{name} shell"
-            prov.new(project).launch
-          end
-        end
+      ShellProviders.each do |p|
+        name = p.to_sym
         
-        if lang == :none
-          p.each(&load_provider)
-        else
-          load_provider.call p
+        trace "Defining task #{project.name}:shell:#{name}"
+        project.task "shell:#{name}" => :compile do
+          trace "Launching #{name} shell"
+          p.new(project).launch
         end
       end
     end


Reply via email to