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