Compare commits

..
9 Commits
Author SHA1 Message Date
Barry vd. Heuvel 19aa77ac49 Indent with 8 spaces instead of 2 tabs
Similar to the rest.
2014-08-12 14:34:30 +02:00
Barry vd. Heuvel 25ec6bd1ea Remove message. 2014-08-12 09:14:43 +02:00
Barry vd. Heuvel 1b608fc446 Get correct namespace
The other one was empty, now it should be correct. Fixes #97
2014-08-11 13:26:11 +02:00
Barry vd. Heuvel 09055582af Add correct context for inheritdoc
Attempt 2 to fix #97
2014-08-11 13:05:28 +02:00
Barry vd. Heuvel 4cfcabb63d Normalize return/params from inheritdocs before appending
This normalizes return/param tags, before the tags are added to the docblock. This will preserve the correct context (and namespace).
Should fix #93
2014-08-11 12:07:00 +02:00
Barry vd. Heuvel cbfd53e0f9 Merge pull request #99 from alxy/patch-1
Fix a copy paste error (probably)
2014-08-11 11:01:57 +02:00
Barry vd. Heuvel fd11d89fa7 Clarify trait/interface message in model generator
Makes it clear why a trait/interface is skipped.
Fixes #98
2014-08-11 11:01:19 +02:00
alxy 7f335274bf Fix a copy paste error (probably)
I don't use this helper, however, I guess that line wasnt correct.
2014-08-11 10:30:52 +02:00
Barry vd. Heuvel c01769aebd Add note to config for interfaces 2014-08-10 10:02:50 +02:00
6 changed files with 39 additions and 16 deletions
-1
View File
@@ -184,7 +184,6 @@ class Alias
//If it doesn't exist, skip it
if (!class_exists($root) && !interface_exists($root)) {
$this->error("Class $root is not found.");
return;
}
+2
View File
@@ -175,6 +175,8 @@ class ModelsCommand extends Command
} catch (\Exception $e) {
$this->error("Exception: " . $e->getMessage() . "\nCould not analyze class $name.");
}
} elseif (interface_exists($name) || (function_exists('trait_exists') && trait_exists($name))) {
$this->info("Skipping interface/trait $name");
} else {
$this->error("Class $name does not exist");
}
+1 -1
View File
@@ -71,7 +71,7 @@ class Generator
protected function detectDrivers()
{
try{
if (class_exists('Cache')) {
if (class_exists('Auth')) {
$class = get_class(\Auth::driver());
$this->extra['Auth'] = array($class);
$this->interfaces['\Illuminate\Auth\UserProviderInterface'] = $class;
+24 -13
View File
@@ -52,9 +52,9 @@ class Method
//Normalize the description and inherit the docs from parents/interfaces
try {
$this->normalizeDescription();
$this->normalizeParams();
$this->normalizeReturn();
$this->normalizeParams($this->phpdoc);
$this->normalizeReturn($this->phpdoc);
$this->normalizeDescription($this->phpdoc);
} catch (\Exception $e) {}
//Get the parameters, including formatted default values
@@ -136,11 +136,12 @@ class Method
/**
* Get the description and get the inherited docs.
*
* @param DocBlock $phpdoc
*/
protected function normalizeDescription()
protected function normalizeDescription(DocBlock $phpdoc)
{
//Get the short + long description from the DocBlock
$description = $this->phpdoc->getText();
$description = $phpdoc->getText();
//Loop through parents/interfaces, to fill in {@inheritdoc}
if (strpos($description, '{@inheritdoc}') !== false) {
@@ -148,14 +149,18 @@ class Method
$inheritDescription = $inheritdoc->getText();
$description = str_replace('{@inheritdoc}', $inheritDescription, $description);
$this->phpdoc->setText($description);
$phpdoc->setText($description);
$this->normalizeParams($inheritdoc);
$this->normalizeReturn($inheritdoc);
//Add the tags that are inherited
$inheritTags = $inheritdoc->getTags();
if ($inheritTags) {
/** @var Tag $tag */
foreach ($inheritTags as $tag) {
$tag->setDocBlock();
$this->phpdoc->appendTag($tag);
$phpdoc->appendTag($tag);
}
}
}
@@ -163,11 +168,13 @@ class Method
/**
* Normalize the parameters
*
* @param DocBlock $phpdoc
*/
protected function normalizeParams()
protected function normalizeParams(DocBlock $phpdoc)
{
//Get the return type and adjust them for beter autocomplete
$paramTags = $this->phpdoc->getTagsByName('param');
$paramTags = $phpdoc->getTagsByName('param');
if ($paramTags) {
/** @var ParamTag $tag */
foreach($paramTags as $tag){
@@ -184,11 +191,13 @@ class Method
/**
* Normalize the return tag (make full namespace, replace interfaces)
*
* @param DocBlock $phpdoc
*/
protected function normalizeReturn()
protected function normalizeReturn(DocBlock $phpdoc)
{
//Get the return type and adjust them for beter autocomplete
$returnTags = $this->phpdoc->getTagsByName('return');
$returnTags = $phpdoc->getTagsByName('return');
if ($returnTags) {
/** @var ReturnTag $tag */
$tag = reset($returnTags);
@@ -275,7 +284,7 @@ class Method
/**
* @param \ReflectionMethod $reflectionMethod
* @return string
* @return DocBlock
*/
protected function getInheritDoc($reflectionMethod)
{
@@ -288,7 +297,9 @@ class Method
$method = $reflectionMethod->getPrototype();
}
if ($method) {
$phpdoc = new DocBlock($method);
$namespace = $method->getDeclaringClass()->getNamespaceName();
$phpdoc = new DocBlock($method, new Context($namespace));
if (strpos($phpdoc->getText(), '{@inheritdoc}') !== false) {
//Not at the end yet, try another parent/interface..
return $this->getInheritDoc($method);
+11
View File
@@ -71,6 +71,17 @@ return array(
'emergency' => 'Monolog\Logger::addEmergency',
)
),
/*
|--------------------------------------------------------------------------
| Interface implementations
|--------------------------------------------------------------------------
|
| These interfaces will be replaced with the implementing class. Some interfaces
| are detected by the helpers, others can be listed below.
|
*/
'interfaces' => array(
'\Illuminate\Auth\UserInterface' => '\User',
)
+1 -1
View File
@@ -19,7 +19,7 @@ namespace <?= $namespace == '__root' ? '' : $namespace ?>{
<?= $alias->getClassType() ?> <?= $alias->getAlias() ?> <?= $alias->getExtends() ? 'extends ' . $alias->getExtends() : '' ?>{
<?php foreach($alias->getMethods() as $method): ?>
<?= trim($method->getDocComment()) ?>
<?= trim($method->getDocComment(' ')) ?>
public static function <?= $method->getName() ?>(<?= $method->getParamsWithDefault() ?>){<?php if($method->getDeclaringClass() !== $method->getRoot()): ?>