public function testIssueMultipleNamespaces() { $docblock = "@Entity"; $parser = new DocParser(); $parser->addNamespace("Doctrine\\Tests\\Common\\Annotations\\Ticket\\Doctrine\\ORM\\Mapping"); $parser->addNamespace("Doctrine\\Tests\\Common\\Annotations\\Ticket\\Doctrine\\ORM"); $annots = $parser->parse($docblock); $this->assertEquals(1, count($annots)); $this->assertInstanceOf("Doctrine\\Tests\\Common\\Annotations\\Ticket\\Doctrine\\ORM\\Mapping\\Entity", $annots[0]); }
public function register(Application $app) { $app['translation-extractor.logger'] = $app->share(function (Application $app) { return $app['monolog']; }); $app['translation-extractor.doc-parser'] = $app->share(function () { $parser = new DocParser(); $parser->addNamespace("JMS\\TranslationBundle\\Annotation"); return $parser; }); $app['translation-extractor.node-visitors'] = $app->share(function (Application $app) { return [new ConstraintExtractor($app), new ValidationExtractor($app['validator']->getMetadataFactory()), new DefaultPhpFileExtractor($app['translation-extractor.doc-parser']), new TwigFileExtractor($app['twig']), new FormExtractor($app['translation-extractor.doc-parser']), new HelpMessageExtractor($app['translation-extractor.doc-parser'])]; }); $app['translation-extractor.file-extractor'] = $app->share(function (Application $app) { return new FileExtractor($app['twig'], $app['translation-extractor.logger'], $app['translation-extractor.node-visitors']); }); $app['translation-extractor.extractor-manager'] = $app->share(function (Application $app) { return new ExtractorManager($app['translation-extractor.file-extractor'], $app['translation-extractor.logger']); }); $app['translation-extractor.writer'] = $app->share(function (Application $app) { return new FileWriter($app['translation-extractor.writers']); }); $app['translation-extractor.writers'] = $app->share(function () { return ['po' => new SymfonyDumperAdapter(new PoFileDumper(), 'po'), 'xlf' => new XliffDumper()]; }); $app['translation-extractor.loader-manager'] = $app->share(function (Application $app) { return new LoaderManager($app['translation-extractor.loaders']); }); $app['translation-extractor.loaders'] = $app->share(function () { return ['po' => new SymfonyLoaderAdapter(new PoFileLoader()), 'xlf' => new XliffLoader()]; }); $app['translation-extractor.updater'] = $app->share(function (Application $app) { AnnotationRegistry::registerAutoloadNamespace('JMS\\TranslationBundle\\Annotation', $app['root.path'] . '/vendor/jms/translation-bundle'); return new Updater($app['translation-extractor.loader-manager'], $app['translation-extractor.extractor-manager'], $app['translation-extractor.logger'], $app['translation-extractor.writer']); }); }
/** * Adds a namespace in which we will look for annotations. * * @param string $namespace */ public function addNamespace($namespace) { $this->parser->addNamespace($namespace); }
/** * @param string $namespace * * @throws RuntimeException */ public function registerNamespace($namespace) { $namespace = ltrim($namespace, '\\'); $this->docParser->addNamespace($namespace); $this->docParser->addNamespace('\\' . $namespace); }