Author: boisvert
Date: Mon Sep 28 17:36:52 2009
New Revision: 819657

URL: http://svn.apache.org/viewvc?rev=819657&view=rev
Log:
Fix BUILDR-322 timestamp check for .java, .scala and .groovy files

Modified:
    buildr/trunk/lib/buildr/core/compile.rb

Modified: buildr/trunk/lib/buildr/core/compile.rb
URL: 
http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/core/compile.rb?rev=819657&r1=819656&r2=819657&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/core/compile.rb (original)
+++ buildr/trunk/lib/buildr/core/compile.rb Mon Sep 28 17:36:52 2009
@@ -175,14 +175,32 @@
             FileList["#{source}/**/*.{#{ext_glob}}"].reject { |file| 
File.directory?(file) }.
               each { |file| map[file] = File.join(target, 
Util.relative_path(file, source).ext(target_ext)) }
           else
-            map[source] = target # File.join(target, 
File.basename(source).ext(target_ext))
+            # try to extract package name from .java or .scala files
+            if ['.java', '.scala', '.groovy'].include? File.extname(source)
+              package = findFirst(source, /^\s*package\s+(\S+)\s*;?\s*$/)
+              map[source] = package ? File.join(target, package[1].gsub('.', 
'/'), File.basename(source).ext(target_ext)) : target
+            elsif
+              map[source] = target
+            end
           end
           map
         end
       end
+
+    private
       
-    end
+      def findFirst(file, pattern)
+        match = nil
+        File.open(file, "r") do |infile|
+          while (line = infile.gets)
+            match = line.match(pattern)
+            break if match
+          end
+        end
+        match
+      end
 
+    end
   end
 
 


Reply via email to