Browse Source

Fix matching of classes in trailing non-php text, fixes #1409

Jordi Boggiano 12 years ago
parent
commit
51eca2cdfc

+ 6 - 1
src/Composer/Autoload/ClassMapGenerator.php

@@ -121,7 +121,12 @@ class ClassMapGenerator
             $contents = preg_replace('{^.+?<\?}s', '<?', $contents);
         }
         // strip non-php blocks in the file
-        $contents = preg_replace('{\?>.*<\?}s', '', $contents);
+        $contents = preg_replace('{\?>.+<\?}s', '?><?', $contents);
+        // strip trailing non-php code if needed
+        $pos = strrpos($contents, '?>');
+        if (false !== $pos && false === strpos(substr($contents, $pos), '<?')) {
+            $contents = substr($contents, 0, $pos);
+        }
 
         preg_match_all('{
             (?:

+ 10 - 0
tests/Composer/Test/Autoload/Fixtures/template/template_3.php

@@ -0,0 +1,10 @@
+
+class leading { }
+
+<?php echo $queryClass ?>
+
+class inner { }
+
+<?php echo $defaultLocale ?>
+
+class trailing { }