From 56fdd4e64cde220a54306578c8da75461acdf091 Mon Sep 17 00:00:00 2001 From: Florent DUBOST Date: Fri, 11 Oct 2013 15:44:31 +0200 Subject: [PATCH] Adding possibilty to name resource --- Annotation/ApiDoc.php | 14 +++++++++++--- Extractor/ApiDocExtractor.php | 10 +++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Annotation/ApiDoc.php b/Annotation/ApiDoc.php index 744d340..760e174 100644 --- a/Annotation/ApiDoc.php +++ b/Annotation/ApiDoc.php @@ -78,7 +78,7 @@ class ApiDoc /** * @var Boolean */ - private $isResource = false; + private $resource = false; /** * @var string @@ -132,7 +132,7 @@ class ApiDoc public function __construct(array $data) { - $this->isResource = isset($data['resource']) && $data['resource']; + $this->resource = !empty($data['resource']) ? $data['resource'] : false; if (isset($data['description'])) { $this->description = $data['description']; @@ -292,7 +292,15 @@ class ApiDoc */ public function isResource() { - return $this->isResource; + return (bool) $this->resource; + } + + /** + * @return mixed + */ + public function getResource() + { + return $this->resource && is_string($this->resource) ? $this->resource : false; } /** diff --git a/Extractor/ApiDocExtractor.php b/Extractor/ApiDocExtractor.php index 02fe52d..3535300 100644 --- a/Extractor/ApiDocExtractor.php +++ b/Extractor/ApiDocExtractor.php @@ -108,8 +108,12 @@ class ApiDocExtractor if ($method = $this->getReflectionMethod($route->getDefault('_controller'))) { if ($annotation = $this->reader->getMethodAnnotation($method, self::ANNOTATION_CLASS)) { if ($annotation->isResource()) { - // remove format from routes used for resource grouping - $resources[] = str_replace('.{_format}', '', $route->getPattern()); + if (!($resource = $annotation->getResource())) { + // remove format from routes used for resource grouping + $resources[] = str_replace('.{_format}', '', $route->getPattern()); + } else { + $resources[] = $resource; + } } $array[] = array('annotation' => $this->extractData($annotation, $route, $method)); @@ -123,7 +127,7 @@ class ApiDocExtractor $pattern = $element['annotation']->getRoute()->getPattern(); foreach ($resources as $resource) { - if (0 === strpos($pattern, $resource)) { + if (0 === strpos($pattern, $resource) || $resource === $element['annotation']->getResource()) { $array[$index]['resource'] = $resource; $hasResource = true;