diff --git a/Annotation/ApiDoc.php b/Annotation/ApiDoc.php index 8f29375..c06eec7 100644 --- a/Annotation/ApiDoc.php +++ b/Annotation/ApiDoc.php @@ -27,7 +27,7 @@ class ApiDoc * @var string */ private $input = null; - + /** * @var string */ @@ -67,7 +67,7 @@ class ApiDoc * @var array */ private $parameters = array(); - + /** * @var array */ @@ -98,7 +98,7 @@ class ApiDoc if (isset($data['description'])) { $this->description = $data['description']; } - + if (isset($data['return'])) { $this->return = $data['return']; } @@ -203,7 +203,7 @@ class ApiDoc { $this->parameters = $parameters; } - + /** * Sets the responsed data as processed by the parsers - same format as parameters * @@ -213,7 +213,7 @@ class ApiDoc { $this->response = $response; } - + /** * @return array */ @@ -267,7 +267,7 @@ class ApiDoc if ($requirements = $this->requirements) { $data['requirements'] = $requirements; } - + if ($response = $this->response) { $data['response'] = $response; } diff --git a/Extractor/ApiDocExtractor.php b/Extractor/ApiDocExtractor.php index 771547a..7dfee71 100644 --- a/Extractor/ApiDocExtractor.php +++ b/Extractor/ApiDocExtractor.php @@ -247,14 +247,14 @@ class ApiDocExtractor // return (populates 'response' for the formatters) if (null !== $return = $annotation->getReturn()) { $response = array(); - + foreach ($this->parsers as $parser) { if ($parser->supports($return)) { $response = $parser->parse($return); break; } } - + $annotation->setResponse($response); } diff --git a/Formatter/MarkdownFormatter.php b/Formatter/MarkdownFormatter.php index 06befaa..3126909 100644 --- a/Formatter/MarkdownFormatter.php +++ b/Formatter/MarkdownFormatter.php @@ -85,6 +85,22 @@ class MarkdownFormatter extends AbstractFormatter } } + if (isset($data['response'])) { + $markdown .= "#### Response ####\n\n"; + + foreach ($data['response'] as $name => $parameter) { + $markdown .= sprintf("%s:\n\n", $name); + $markdown .= sprintf(" * type: %s\n", $parameter['dataType']); + $markdown .= sprintf(" * required: %s\n", $parameter['required'] ? 'true' : 'false'); + + if (isset($parameter['description']) && !empty($parameter['description'])) { + $markdown .= sprintf(" * description: %s\n", $parameter['description']); + } + + $markdown .= "\n"; + } + } + return $markdown; } diff --git a/Parser/JmsMetadataParser.php b/Parser/JmsMetadataParser.php index 34535bf..41ac909 100644 --- a/Parser/JmsMetadataParser.php +++ b/Parser/JmsMetadataParser.php @@ -35,10 +35,10 @@ class JmsMetadataParser implements ParserInterface try { if ($meta = $this->factory->getMetadataForClass($input)) { return true; - } + } } catch (\ReflectionException $e) { } - + return false; } @@ -81,7 +81,6 @@ class JmsMetadataParser implements ParserInterface //TODO: regex comment to get description - or move doc comment parsing functionality from `ApiDocExtractor` to a new location //in order to reuse it here - return $description; } diff --git a/Tests/Fixtures/Controller/TestController.php b/Tests/Fixtures/Controller/TestController.php index ec52f1b..542b7c8 100644 --- a/Tests/Fixtures/Controller/TestController.php +++ b/Tests/Fixtures/Controller/TestController.php @@ -104,7 +104,7 @@ class TestController /** * @ApiDoc( * description="Testing return", - * return="test_type" + * return="dependency_type" * ) */ public function jmsReturnTestAction() diff --git a/Tests/Formatter/MarkdownFormatterTest.php b/Tests/Formatter/MarkdownFormatterTest.php index d058ae5..57edb02 100644 --- a/Tests/Formatter/MarkdownFormatterTest.php +++ b/Tests/Formatter/MarkdownFormatterTest.php @@ -186,6 +186,19 @@ arr: * description: No description. +### `GET` /jms-return-test ### + +_Testing return_ + +#### Response #### + +a: + + * type: string + * required: true + * description: A nice description + + ### `ANY` /my-commented/{id}/{page} ### _This method is useful to test if the getDocComment works._ diff --git a/Tests/Formatter/SimpleFormatterTest.php b/Tests/Formatter/SimpleFormatterTest.php index b571a0f..9012ac8 100644 --- a/Tests/Formatter/SimpleFormatterTest.php +++ b/Tests/Formatter/SimpleFormatterTest.php @@ -220,7 +220,12 @@ class SimpleFormatterTest extends WebTestCase 'uri' => '/jms-return-test', 'description' => 'Testing return', 'response' => array( - + 'a' => array( + 'dataType' => 'string', + 'required' => true, + 'description' => 'A nice description', + 'readonly' => false + ) ) ), 5 =>