Example #1
0
 /**
  * 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;
 }