public function getNamespaces($requestedNamespace, $inputFolder, $exclude) { $broker = new Broker($backend = new Broker\Backend\Memory()); $broker->processDirectory($inputFolder); $namespaces = $backend->getNamespaces(); ksort($namespaces); $excludedNamespaces = $this->getExcludedNamespaces($exclude); $filteredNamespaces = $this->getFilteredNamespaces($requestedNamespace, $namespaces, $excludedNamespaces); return $filteredNamespaces; }
/** * @see Symfony\Component\Console\Command.Command::execute() */ protected function execute(InputInterface $input, OutputInterface $output) { $namespace = $input->getArgument('namespace'); $path = $input->getArgument('path'); $out = realpath($input->getOption('output')); $output->writeln(sprintf('<comment>Processing code from namespace %s</comment>', $namespace)); $output->writeln(sprintf('<comment>Processing files from %s</comment>', $path)); $output->writeln(sprintf('<comment>Outputting to %s</comment>', $out)); $output_files = array(); $filters = array(); if ($filtersArgument = trim($input->getOption('filters'))) { $filters = explode(';', $filtersArgument); foreach ($filters as $filter) { $output->writeln(sprintf('<comment>Applying filter %s</comment>', $filter)); } } $broker = new Broker($backend = new Memory()); $broker->processDirectory($path, $filters); $namespaces = $backend->getNamespaces(); ksort($namespaces); $excludes = array(); if ($exclude = trim($input->getOption('exclude'))) { $excludes = explode(';', $exclude); foreach ($excludes as $exclude) { $output->writeln(sprintf('<comment>Excluding code from %s</comment>', $exclude)); } } $filtered = array(); foreach ($namespaces as $n => $reflection) { if (substr($n, 0, strlen($namespace)) != $namespace) { continue; } foreach ($excludes as $exclude) { if (strncmp($n, $exclude, strlen($exclude)) == 0) { continue 2; } } $filtered[$n] = $reflection; } unset($namespaces); $elements = array(); foreach ($filtered as $n => $reflection) { $output->writeln(sprintf('<info>Processing %s</info>', $n)); $element = new NamespaceElement($reflection); $element->buildClasses($out, $output); $elements[$n] = $element; } unset($filtered); foreach ($elements as $n => $element) { $output->writeln(sprintf('<info>Building index for %s</info>', $n)); $options = array(); if ($n == $namespace && $input->getOption('title')) { $options = array('title' => $input->getOption('title')); } $element->buildIndex($out, $output, $options); } }