示例#1
0
 /**
  * Generate the documentation contents from the resources collection.
  *
  * @param \Illuminate\Support\Collection $resources
  * @param string $name
  *
  * @return string
  */
 protected function generateContentsFromResources(Collection $resources, $name)
 {
     $contents = '';
     $contents .= $this->getFormat();
     $contents .= $this->line(2);
     $contents .= sprintf('# %s', $name);
     $contents .= $this->line(2);
     $content = ' [Home](' . $this->baseUrl . $this->homeUrl . ')' . "\n";
     $resources->each(function ($resource) use(&$contents, $content) {
         if ($resource->getActions()->isEmpty()) {
             return;
         }
         $contents .= $this->line(2);
         $contents .= $resource->getDefinition();
         $contents .= "\n" . '| Name: | Method: | Route: |' . "\n";
         $contents .= '| :-------- | :-------- | :-------- |' . "\n";
         $content .= "\n" . $resource->getDefinition();
         if ($description = $resource->getDescription()) {
             $content .= $this->line();
             $content .= $description;
         }
         if (($parameters = $resource->getParameters()) && !$parameters->isEmpty()) {
             $this->appendParameters($content, $parameters);
         }
         $resource->getActions()->each(function ($action) use(&$contents, $content, $resource) {
             $content .= "\n" . $action->getDefinition();
             if ($description = $action->getDescription()) {
                 $content .= $this->line();
                 $content .= $description;
             }
             if (($attributes = $action->getAttributes()) && !$attributes->isEmpty()) {
                 $this->appendAttributes($content, $attributes);
             }
             if (($parameters = $action->getParameters()) && !$parameters->isEmpty()) {
                 $this->appendParameters($content, $parameters);
             }
             if ($request = $action->getRequest()) {
                 $this->appendRequest($content, $request, $resource);
             }
             if ($response = $action->getResponse()) {
                 $this->appendResponse($content, $response, $resource);
             }
             if ($transaction = $action->getTransaction()) {
                 foreach ($transaction->value as $value) {
                     if ($value instanceof Annotation\Request) {
                         $this->appendRequest($content, $value, $resource);
                     } elseif ($value instanceof Annotation\Response) {
                         $this->appendResponse($content, $value, $resource);
                     } else {
                         throw new RuntimeException('Unsupported annotation type given in transaction.');
                     }
                 }
             }
             $baseUrl = substr($action->getRoute(), 1);
             $fileUrl = $this->getFileUrl($baseUrl, $action->getIdentifier());
             $file = strtolower($action->getMethod()) . '-' . $fileUrl . '.md';
             $this->writer->write(stripslashes(trim($content)), $this->includePath . '/' . $file);
             $contents .= $this->generateLink($action->getMethod(), $fileUrl, $action->getHttpVerb(), $action->getRoute());
         });
     });
     return stripslashes($contents);
 }