/** * Generates namespaces summary. * * @param \ApiGen\Template $template Template * @return \ApiGen\Generator * @throws \RuntimeException If template is not set. */ private function generateNamespaces(Template $template) { if (empty($this->namespaces)) { return $this; } $this->prepareTemplate('namespace'); $template->package = null; foreach ($this->namespaces as $namespaceName => $namespace) { $template->namespace = $namespaceName; $template->subnamespaces = array_filter($template->namespaces, function ($subnamespaceName) use($namespaceName) { return (bool) preg_match('~^' . preg_quote($namespaceName) . '\\\\[^\\\\]+$~', $subnamespaceName); }); $template->classes = $namespace['classes']; $template->interfaces = $namespace['interfaces']; $template->traits = $namespace['traits']; $template->exceptions = $namespace['exceptions']; $template->constants = $namespace['constants']; $template->functions = $namespace['functions']; $template->setFile($this->getTemplatePath('namespace'))->save($this->config->destination . DIRECTORY_SEPARATOR . $template->getNamespaceUrl($namespaceName)); $this->fireEvent('generateProgress', 1); } unset($template->subnamespaces); return $this; }