/** * 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); }