Browse Source

Support classmap generation for classes without space after class name

Class names with multi-byte characters are not supported.

Closes #1360.
Igor Wiedler 12 years ago
parent
commit
530991217b

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

@@ -125,7 +125,7 @@ class ClassMapGenerator
 
         preg_match_all('{
             (?:
-                 \b(?<![\$:>])(?<type>class|interface'.$traits.') \s+ (?<name>\S+)
+                 \b(?<![\$:>])(?<type>class|interface'.$traits.') \s+ (?<name>\w+)
                | \b(?<![\$:>])(?<ns>namespace) (?<nsname>\s+[^\s;{}\\\\]+(?:\s*\\\\\s*[^\s;{}\\\\]+)*)? \s*[\{;]
             )
         }ix', $contents, $matches);

+ 3 - 3
tests/Composer/Test/Autoload/ClassMapGeneratorTest.php

@@ -30,8 +30,7 @@ class ClassMapGeneratorTest extends \PHPUnit_Framework_TestCase
                 'Namespaced\\Bar' => realpath(__DIR__).'/Fixtures/Namespaced/Bar.php',
                 'Namespaced\\Foo' => realpath(__DIR__).'/Fixtures/Namespaced/Foo.php',
                 'Namespaced\\Baz' => realpath(__DIR__).'/Fixtures/Namespaced/Baz.php',
-                )
-            ),
+            )),
             array(__DIR__.'/Fixtures/beta/NamespaceCollision', array(
                 'NamespaceCollision\\A\\B\\Bar' => realpath(__DIR__).'/Fixtures/beta/NamespaceCollision/A/B/Bar.php',
                 'NamespaceCollision\\A\\B\\Foo' => realpath(__DIR__).'/Fixtures/beta/NamespaceCollision/A/B/Foo.php',
@@ -53,7 +52,8 @@ class ClassMapGeneratorTest extends \PHPUnit_Framework_TestCase
                 'ClassMap\\SomeParent'    => realpath(__DIR__).'/Fixtures/classmap/SomeParent.php',
                 'ClassMap\\SomeClass'     => realpath(__DIR__).'/Fixtures/classmap/SomeClass.php',
                 'Foo\\LargeClass'         => realpath(__DIR__).'/Fixtures/classmap/LargeClass.php',
-                'Foo\\LargeGap'         => realpath(__DIR__).'/Fixtures/classmap/LargeGap.php',
+                'Foo\\LargeGap'           => realpath(__DIR__).'/Fixtures/classmap/LargeGap.php',
+                'Foo\\MissingSpace'       => realpath(__DIR__).'/Fixtures/classmap/MissingSpace.php',
             )),
             array(__DIR__.'/Fixtures/template', array()),
         );

+ 6 - 0
tests/Composer/Test/Autoload/Fixtures/classmap/MissingSpace.php

@@ -0,0 +1,6 @@
+<?php
+
+namespace Foo;
+
+class MissingSpace{
+}