restructured apidoc templates

This commit is contained in:
Carsten Brandt
2014-01-06 00:30:39 +01:00
parent 5982544678
commit f7e00887d6
32 changed files with 240 additions and 62 deletions

View File

@ -8,6 +8,8 @@
namespace yii\apidoc\commands;
use phpDocumentor\Reflection\FileReflector;
use TokenReflection\ReflectionFile;
use yii\apidoc\templates\BaseRenderer;
use yii\console\Controller;
use yii\helpers\Console;
use yii\helpers\FileHelper;
@ -23,6 +25,8 @@ use Yii;
*/
class RenderController extends Controller
{
public $template = 'offline';
/**
* Renders API documentation files
* @param array $sourceDirs
@ -31,7 +35,7 @@ class RenderController extends Controller
*/
public function actionIndex(array $sourceDirs, $targetDir)
{
$targetDir = Yii::getAlias($targetDir);
$targetDir = rtrim(Yii::getAlias($targetDir), '\\/');
if (is_dir($targetDir) && !$this->confirm('TargetDirectory already exists. Overwrite?')) {
return 2;
}
@ -39,6 +43,9 @@ class RenderController extends Controller
mkdir($targetDir);
}
$renderer = $this->findRenderer();
$renderer->targetDir = $targetDir;
$this->stdout('Searching files to process... ');
$files = [];
foreach($sourceDirs as $source) {
@ -88,11 +95,26 @@ class RenderController extends Controller
$this->stdout('done.' . PHP_EOL, Console::FG_GREEN);
// render models
$renderer = new OfflineRenderer();
$renderer->targetDir = $targetDir;
$renderer->render($context, $this);
}
/**
* @return BaseRenderer
*/
protected function findRenderer()
{
$file = Yii::getAlias('@yii/apidoc/templates/' . $this->template . '/Renderer.php');
$reflection = new FileReflector($file, true);
$reflection->process();
$classes = $reflection->getClasses();
if (empty($classes)) {
$this->stderr('Renderer not found.' . PHP_EOL);
}
$rendererClass = reset($classes)->getName();
require($file);
return new $rendererClass();
}
protected function findFiles($path, $except = [])
{
$path = FileHelper::normalizePath($path);
@ -115,4 +137,12 @@ class RenderController extends Controller
];
return FileHelper::findFiles($path, $options);
}
/**
* @inheritdoc
*/
public function globalOptions()
{
return array_merge(parent::globalOptions(), ['template']);
}
}