/** * @group #3753 */ public function testGenerateWithWordWrapDisabled() { $largeStr = '@var This is a very large string that will not be wrapped if it contains more than 80 characters'; $this->docBlockGenerator->setLongDescription($largeStr); $this->docBlockGenerator->setWordWrap(false); $expected = '/**' . DocBlockGenerator::LINE_FEED . ' * @var This is a very large string that will not be wrapped if it contains more than' . ' 80 characters' . DocBlockGenerator::LINE_FEED . ' */' . DocBlockGenerator::LINE_FEED; $this->assertEquals($expected, $this->docBlockGenerator->generate()); }
public function generate(Generator\ClassGenerator $class, PHPClass $type) { $class = $this->fixInterfaces($class); if (!($extends = $type->getExtends()) && class_exists($type->getNamespace())) { $extendNamespace = $type->getNamespace(); $extendNamespace = explode('\\', $extendNamespace); $extendClass = array_pop($extendNamespace); $extendNamespace = implode('\\', $extendNamespace); $extends = new PHPClass(); $extends->setName($extendClass); $extends->setNamespace($extendNamespace); $class->setExtendedClass($extends); } if ($type->getNamespace() == Enumeration::class) { $extendNamespace = $type->getNamespace(); $extendNamespace = explode('\\', $extendNamespace); $extendClass = array_pop($extendNamespace); $extendNamespace = implode('\\', $extendNamespace); $extends = new PHPClass(); $extends->setName($extendClass); $extends->setNamespace($extendNamespace); $class->setExtendedClass($extends); } if ($extends->getName() == "string" && $extends->getNamespace() == "" && class_exists($type->getNamespace() . '\\String')) { $extends->setName('String'); $extends->setNamespace($type->getNamespace()); } elseif ($extends->getName() == "string" && $extends->getNamespace() == "" && class_exists($type->getNamespace())) { $extendNamespace = $type->getNamespace(); $extendNamespace = explode('\\', $extendNamespace); $extendClass = array_pop($extendNamespace); $extendNamespace = implode('\\', $extendNamespace); $extends = new PHPClass(); $extends->setName($extendClass); $extends->setNamespace($extendNamespace); $class->setExtendedClass($extends); } $docblock = new DocBlockGenerator("Class representing " . $type->getName()); if ($type->getDoc()) { $docblock->setLongDescription($type->getDoc()); } $class->setNamespaceName($type->getNamespace()); $class->setName($type->getName()); $class->setDocblock($docblock); $class->setExtendedClass($extends->getName()); if ($extends->getNamespace() != $type->getNamespace()) { if ($extends->getName() == $type->getName()) { $class->addUse($type->getExtends()->getFullName(), $extends->getName() . "Base"); $class->setExtendedClass($extends->getName() . "Base"); } else { $class->addUse($extends->getFullName()); } } if ($this->handleBody($class, $type)) { return true; } }
/** * @param ClassGenerator $class * @param Attribute $tagAttribute */ protected function addAttribute(ClassGenerator $class, Attribute $tagAttribute) { $methodName = str_replace(':', '-', $tagAttribute->getName()); $methodName = ucfirst($this->stringToCamelCaseConverter->convert($methodName, '-')); $method = new MethodGenerator(); if ($tagAttribute->isFlag()) { $method->setName('is' . $methodName); $method->setParameter(new ParameterGenerator('v', 'bool', true)); } else { $method->setName('set' . $methodName); $method->setParameter(new ParameterGenerator('v', 'string')); } $body = []; $body[] = '$this->attributes[\'' . $tagAttribute->getName() . '\'] = $v;'; $body[] = 'return $this;'; $method->setBody(implode(PHP_EOL, $body)); $docBlock = new DocBlockGenerator(); $docBlock->setTag(new GenericTag('var', 'string')); $docBlock->setTag(new GenericTag('return', '$this')); if (!is_null($tagAttribute->getDescription())) { $docBlock->setLongDescription($tagAttribute->getDescription()); } $method->setDocBlock($docBlock); $class->addMethodFromGenerator($method); }
public function generate() { $method = $this->getMethodGenerator(); $api = $this->getApi(); $operation = $this->getOperation(); $method->setName($operation->getNickname()); $parameterClassGenerator = $this->getParameterClassGenerator(); $parameterClassGenerator->setName($operation->getNickname()); $parameterGenerator = $this->getParameterGenerator(); $propertyGenerator = $this->getPropertyGenerator(); $docBlockGenerator = $this->getDocblockGenerator(); $docBlockGenerator->setShortDescription($operation->getSummary()); $docBlockGenerator->setLongDescription(strip_tags($operation->getNotes())); $hasRequired = false; $routeParams = array(); foreach ($operation->getParameters() as $swaggerParameter) { switch ($swaggerParameter->getParamType()) { case self::PARAM_TYPE_PATH: if ($swaggerParameter->getRequired()) { $hasRequired = true; } $parameters = $method->getParameters(); if (isset($parameters[$swaggerParameter->getName()])) { continue; } $parameter = clone $parameterGenerator; $parameter->setName($swaggerParameter->getName()); $method->setParameter($parameter); $paramTag = new CodeGenerator\DocBlock\Tag\ParamTag(); $paramTag->setDataType($swaggerParameter::getType($swaggerParameter->getDataType())); $paramTag->setParamName($swaggerParameter->getName()); $paramDescription = $swaggerParameter->getDescription(); $paramTag->setDescription($paramDescription); $docBlockGenerator->setTag($paramTag); $routeParams[] = $parameter; break; case self::PARAM_TYPE_QUERY: case self::PARAM_TYPE_FORM: $propertyName = lcfirst($swaggerParameter->getName()); if (($postParamStart = strpos($propertyName, '[')) !== false) { $propertyPostParams = substr($propertyName, $postParamStart); $propertyName = substr($propertyName, 0, $postParamStart); echo "{$method->getName()}::\${$propertyName} has: {$propertyPostParams}" . PHP_EOL; } if ($parameterClassGenerator->hasProperty($propertyName)) { continue; } $property = clone $propertyGenerator; $property->setName($propertyName); $propertyDocblock = new CodeGenerator\DocBlockGenerator(); $propertyDocblock->setShortDescription($swaggerParameter->getDescription()); $propertyDescription = ''; if ($allowableValues = $swaggerParameter->getAllowableValues()) { if ($allowableValues->getValueType() == 'LIST') { $propertyDescription .= 'Allowable values: [' . implode(', ', $allowableValues->getValues()) . ']' . PHP_EOL; } } $propertyDocblock->setLongDescription($propertyDescription); if (!$this->isDocBlockEmpty($propertyDocblock)) { $property->setDocBlock($propertyDocblock); } $parameterClassGenerator->addPropertyFromGenerator($property); $getterGenerator = $this->generateParameterGetter($propertyName, $swaggerParameter); $setterGenerator = $this->generateParameterSetter($propertyName, $swaggerParameter); $parameterClassGenerator->addMethods(array($getterGenerator, $setterGenerator)); break; } } if (count($parameterClassGenerator->getProperties())) { $queryParameter = clone $parameterGenerator; $queryParameter->setName($operation->getNickname()); $queryParameter->setType(RestGenerator::REQUEST_NAMESPACE_ALIAS . '\\' . $operation->getNickname()); if (!$hasRequired) { $queryParameter->setDefaultValue(new CodeGenerator\ValueGenerator(null)); } $paramTag = new CodeGenerator\DocBlock\Tag\ParamTag(); $paramTag->setDataType(RestGenerator::REQUEST_NAMESPACE_ALIAS . '\\' . $operation->getNickname()); $paramTag->setParamName($operation->getNickname()); if (!$hasRequired) { $paramTag->setDescription(' = null'); } $docBlockGenerator->setTag($paramTag); $method->setParameter($queryParameter); } else { $queryParameter = null; } $method->setDocBlock($docBlockGenerator); $body = $this->getBody($routeParams, $queryParameter); $method->setBody($body); }
public function generate(Generator\ClassGenerator $class, PHPClass $type) { $docblock = new DocBlockGenerator("Class representing " . $type->getName()); if ($type->getDoc()) { $docblock->setLongDescription($type->getDoc()); } $class->setNamespaceName($type->getNamespace() ?: NULL); $class->setName($type->getName()); $class->setDocblock($docblock); if ($extends = $type->getExtends()) { if ($p = $this->isOneType($extends)) { $this->handleProperty($class, $p); $this->handleValueMethod($class, $p, $extends); } else { $class->setExtendedClass($extends->getName()); if ($extends->getNamespace() != $type->getNamespace()) { if ($extends->getName() == $type->getName()) { $class->addUse($type->getExtends()->getFullName(), $extends->getName() . "Base"); $class->setExtendedClass($extends->getName() . "Base"); } else { $class->addUse($extends->getFullName()); } } } } if ($this->handleBody($class, $type)) { return true; } }
public function testLongDescriptionGetterAndSetter() { $this->docBlockGenerator->setLongDescription('Long Description'); $this->assertEquals('Long Description', $this->docBlockGenerator->getLongDescription()); }