This commit is contained in:
Evan Villemez 2012-08-24 11:12:36 -04:00
parent 185d0e588b
commit 9b94ae4b2c
3 changed files with 19 additions and 17 deletions

View File

@ -82,7 +82,7 @@ class JmsMetadataParser implements ParserInterface
* There are various ways via JMS to declare arrays of objects, but that's an internal
* implementation detail.
*
* @param string $type
* @param string $type
* @return string
*/
protected function getNormalizedType($type)
@ -91,9 +91,10 @@ class JmsMetadataParser implements ParserInterface
return $type;
}
if(false !== strpos($type, "array") || false !== strpos($type, "ArrayCollection")) {
if (false !== strpos($type, "array") || false !== strpos($type, "ArrayCollection")) {
if ($nested = $this->getNestedClassInArray($type)) {
$exp = explode("\\", $nested);
return sprintf("array of objects (%s)", end($exp));
} else {
return "array";
@ -101,6 +102,7 @@ class JmsMetadataParser implements ParserInterface
}
$exp = explode("\\", $type);
return sprintf("object (%s)", end($exp));
}
@ -108,7 +110,7 @@ class JmsMetadataParser implements ParserInterface
* Check the various ways JMS describes custom classes in arrays, and
* get the name of the class in the array, if available.
*
* @param string $type
* @param string $type
* @return string|false
*/
protected function getNestedClassInArray($type)
@ -118,6 +120,7 @@ class JmsMetadataParser implements ParserInterface
$regEx = "/\<([A-Za-z0-9\\\]*)(\,?\s?(.*))?\>/";
if (preg_match($regEx, $type, $matches)) {
$matched = (!empty($matches[3])) ? $matches[3] : $matches[1];
return in_array($matched, array('boolean', 'integer', 'string', 'double', 'array', 'DateTime')) ? false : $matched;
}
@ -129,7 +132,7 @@ class JmsMetadataParser implements ParserInterface
*
* http://jmsyst.com/bundles/JMSSerializerBundle/master/reference/annotations#type
*
* @param string $type
* @param string $type
* @return string|false
*/
protected function getNestedClass($type)
@ -152,7 +155,6 @@ class JmsMetadataParser implements ParserInterface
$description = "No description.";
//TODO: abstract docblock parsing utility and implement here
return $description;
}