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