Class yii\apidoc\templates\bootstrap\GuideRenderer

Inheritanceyii\apidoc\templates\bootstrap\GuideRenderer » yii\apidoc\templates\html\GuideRenderer » yii\apidoc\renderers\GuideRenderer » yii\apidoc\renderers\BaseRenderer » yii\base\Component
Uses Traitsyii\apidoc\templates\bootstrap\RendererTrait
Available since extension's version2.0
Source Code https://github.com/yiisoft/yii2-apidoc/blob/master/templates/bootstrap/GuideRenderer.php

Protected Methods

Hide inherited methods

Method Description Defined By
afterMarkdownProcess() Callback that is called after markdown is processed. yii\apidoc\templates\html\GuideRenderer
filterTypes() Returns types of a given class yii\apidoc\templates\bootstrap\RendererTrait
fixMarkdownLinks() Adds guide name to link URLs in markdown yii\apidoc\templates\html\GuideRenderer
generateGuideFileName() Given markdown file name generates resulting html file name yii\apidoc\templates\html\GuideRenderer
generateLink() Generate link markup yii\apidoc\templates\html\GuideRenderer
getTypeCategory() Returns category of TypeDoc yii\apidoc\templates\bootstrap\RendererTrait
loadGuideStructure() Loads guide structure from a set of files yii\apidoc\renderers\GuideRenderer

Constants

Hide inherited constants

Constant Value Description Defined By
GUIDE_PREFIX 'guide-' Deprecated since 2.0.1 use $guidePrefix instead which allows configuring this options yii\apidoc\renderers\BaseRenderer

Property Details

Hide inherited properties

$layout public property
public $layout '@yii/apidoc/templates/bootstrap/layouts/guide.php'

Method Details

Hide inherited methods

afterMarkdownProcess() protected method (available since version 2.0.5)

Defined in: yii\apidoc\templates\html\GuideRenderer::afterMarkdownProcess()

Callback that is called after markdown is processed.

You may override it to do some post processing. The default implementation fixes some markdown links using fixMarkdownLinks() on the output.

protected afterMarkdownProcess( string $file, string $output, yii\apidoc\helpers\ApiMarkdown $renderer ): string
$file string

The file that has been processed.

$output string

The rendered HTML output.

$renderer yii\apidoc\helpers\ApiMarkdown

The renderer instance.

                protected function afterMarkdownProcess($file, $output, $renderer)
{
    return $this->fixMarkdownLinks($output);
}

            
createSubjectLink() public method

Defined in: yii\apidoc\renderers\BaseRenderer::createSubjectLink()

Creates a link to a subject

public createSubjectLink( yii\apidoc\models\PropertyDoc|yii\apidoc\models\MethodDoc|yii\apidoc\models\ConstDoc|yii\apidoc\models\EventDoc $subject, string $title null, array $options = [] ): string
$subject yii\apidoc\models\PropertyDoc|yii\apidoc\models\MethodDoc|yii\apidoc\models\ConstDoc|yii\apidoc\models\EventDoc
$title string
$options array

Additional HTML attributes for the link.

createTypeLink() public method

Defined in: yii\apidoc\renderers\BaseRenderer::createTypeLink()

Creates a link to a type (class, interface or trait)

public createTypeLink( yii\apidoc\models\ClassDoc|yii\apidoc\models\InterfaceDoc|yii\apidoc\models\TraitDoc|yii\apidoc\models\ClassDoc[]|yii\apidoc\models\InterfaceDoc[]|yii\apidoc\models\TraitDoc[]|string|string[] $types, yii\apidoc\models\BaseDoc $context null, string $title null, array $options = [] ): string
$types yii\apidoc\models\ClassDoc|yii\apidoc\models\InterfaceDoc|yii\apidoc\models\TraitDoc|yii\apidoc\models\ClassDoc[]|yii\apidoc\models\InterfaceDoc[]|yii\apidoc\models\TraitDoc[]|string|string[]
$context yii\apidoc\models\BaseDoc
$title string

A title to be used for the link TODO check whether [[yii...|Class]] is supported

$options array

Additional HTML attributes for the link.

filterTypes() protected method

Defined in: yii\apidoc\templates\bootstrap\RendererTrait::filterTypes()

Returns types of a given class

protected filterTypes( yii\apidoc\models\TypeDoc[] $types, string $navClasses ): array
$types yii\apidoc\models\TypeDoc[]
$navClasses string

                protected function filterTypes($types, $navClasses)
{
    switch ($navClasses) {
        case 'app':
            $types = array_filter($types, function ($val) {
                return strncmp($val->name, 'yii\\', 4) !== 0;
            });
            break;
        case 'yii':
            $self = $this;
            $types = array_filter($types, function ($val) use ($self) {
                if ($val->name == 'Yii' || $val->name == 'YiiRequirementChecker') {
                    return true;
                }
                if (strlen($val->name) < 5) {
                    return false;
                }
                $subName = substr($val->name, 4, strpos($val->name, '\\', 5) - 4);
                return strncmp($val->name, 'yii\\', 4) === 0 && !in_array($subName, $self->extensions);
            });
            break;
        default:
            $types = array_filter($types, function ($val) use ($navClasses) {
                return strncmp($val->name, "yii\\$navClasses\\", strlen("yii\\$navClasses\\")) === 0;
            });
    }
    return $types;
}

            
fixMarkdownLinks() protected method

Defined in: yii\apidoc\templates\html\GuideRenderer::fixMarkdownLinks()

Adds guide name to link URLs in markdown

protected fixMarkdownLinks( string $content ): string
$content string

generateApiUrl() public method

Defined in: yii\apidoc\templates\html\GuideRenderer::generateApiUrl()

Generate an url to a type in apidocs

public generateApiUrl( mixed $typeName ): mixed
$typeName mixed

                public function generateApiUrl($typeName)
{
    return rtrim($this->apiUrl, '/') . '/' . strtolower(str_replace('\\', '-', $typeName)) . '.html';
}

            
generateGuideFileName() protected method

Defined in: yii\apidoc\templates\html\GuideRenderer::generateGuideFileName()

Given markdown file name generates resulting html file name

protected generateGuideFileName( string $file ): string
$file string

Markdown file name

                protected function generateGuideFileName($file)
{
    return $this->guidePrefix . basename($file, '.md') . '.html';
}

            
generateGuideUrl() public method

Defined in: yii\apidoc\renderers\BaseRenderer::generateGuideUrl()

Generate an url to a guide page

public generateGuideUrl( string $file ): string
$file string

                public function generateGuideUrl($file)
{
    //skip parsing external url
    if ( (strpos($file, 'https://') !== false) || (strpos($file, 'http://') !== false) ) {
        return $file;
    }
    $hash = '';
    if (($pos = strpos($file, '#')) !== false) {
        $hash = substr($file, $pos);
        $file = substr($file, 0, $pos);
    }
    return rtrim($this->guideUrl, '/') . '/' . $this->guidePrefix . basename($file, '.md') . '.html' . $hash;
}

            
generateLink() protected method
protected generateLink( mixed $text, mixed $href, mixed $options = [] ): mixed
$text mixed
$href mixed
$options mixed

Additional HTML attributes for the link.

getGuideReferences() public method
public getGuideReferences( ): mixed

                public function getGuideReferences()
{
    // TODO implement for api docs
$refs = [];
foreach ($this->markDownFiles as $file) {
	$refName = 'guide-' . basename($file, '.md');
	$refs[$refName] = ['url' => $this->generateGuideFileName($file)];
}
return $refs;
}

            
getNavTypes() public method
public getNavTypes( yii\apidoc\models\TypeDoc $type, yii\apidoc\models\TypeDoc[] $types ): array
$type yii\apidoc\models\TypeDoc

Typedoc to take category from

$types yii\apidoc\models\TypeDoc[]

TypeDocs to filter

                public function getNavTypes($type, $types)
{
    if ($type === null) {
        return $types;
    }
    return $this->filterTypes($types, $this->getTypeCategory($type));
}

            
getTypeCategory() protected method

Defined in: yii\apidoc\templates\bootstrap\RendererTrait::getTypeCategory()

Returns category of TypeDoc

protected getTypeCategory( yii\apidoc\models\TypeDoc $type ): string
$type yii\apidoc\models\TypeDoc

                protected function getTypeCategory($type)
{
    $extensions = $this->extensions;
    $navClasses = 'app';
    if (isset($type)) {
        if ($type->name == 'Yii' || $type->name == 'YiiRequirementChecker') {
            $navClasses = 'yii';
        } elseif (strncmp($type->name, 'yii\\', 4) == 0) {
            $navClasses = 'yii';
            $subName = substr($type->name, 4);
            if (($pos = strpos($subName, '\\')) !== false) {
                $subNamespace = substr($subName, 0, $pos);
                if (in_array($subNamespace, $extensions)) {
                    $navClasses = $subNamespace;
                }
            }
        }
    }
    return $navClasses;
}

            
getView() public method
public getView( ): \yii\web\View
return \yii\web\View

The view instance

                public function getView()
{
    if ($this->_view === null) {
        $this->_view = new View();
        $assetPath = Yii::getAlias($this->_targetDir) . '/assets';
        if (!is_dir($assetPath)) {
            mkdir($assetPath);
        }
        $this->_view->assetManager = new AssetManager([
            'basePath' => $assetPath,
            'baseUrl' => './assets',
        ]);
    }
    return $this->_view;
}

            
init() public method
public init( ): mixed

                public function init()
{
    parent::init();
    if ($this->pageTitle === null) {
        $this->pageTitle = 'The Definitive Guide to Yii 2.0';
    }
}

            
loadGuideStructure() protected method

Defined in: yii\apidoc\renderers\GuideRenderer::loadGuideStructure()

Loads guide structure from a set of files

protected loadGuideStructure( array $files ): array
$files array

                protected function loadGuideStructure($files)
{
    $chapters = [];
    foreach ($files as $file) {
        $contents = file_get_contents($file);
        if (basename($file) == 'README.md') {
            $indexAnalyzer = new IndexFileAnalyzer();
            $chapters = $indexAnalyzer->analyze($contents);
            break;
        }
        if (preg_match("/^(.*)\n=+/", $contents, $matches)) {
            $headlines[$file] = $matches[1];
        } else {
            $headlines[$file] = basename($file);
        }
    }
    return $chapters;
}

            
render() public method

Renders a set of files given into target directory.

public render( mixed $files, mixed $targetDir ): mixed
$files mixed
$targetDir mixed

                public function render($files, $targetDir)
{
    $types = array_merge($this->apiContext->classes, $this->apiContext->interfaces, $this->apiContext->traits);
    $extTypes = [];
    foreach ($this->extensions as $k => $ext) {
        $extType = $this->filterTypes($types, $ext);
        if (empty($extType)) {
            unset($this->extensions[$k]);
            continue;
        }
        $extTypes[$ext] = $extType;
    }
    parent::render($files, $targetDir);
    if ($this->controller !== null) {
        $this->controller->stdout('generating search index...');
    }
    $indexer = new ApiIndexer();
    $indexer->indexFiles(FileHelper::findFiles($targetDir, ['only' => ['*.html']]), $targetDir);
    $js = $indexer->exportJs();
    file_put_contents($targetDir . '/jssearch.index.js', $js);
    if ($this->controller !== null) {
        $this->controller->stdout('done.' . PHP_EOL, Console::FG_GREEN);
    }
}