| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | <?php/** * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ */namespace yii\apidoc\helpers;use cebe\markdown\Markdown;/** * IndexFileAnalyzer analyzes index file with TOC. Typically README.md. */class IndexFileAnalyzer extends Markdown{    public $title;    public $introduction;    private $_chapter = 0;    private $_chapters = [];    /**     * Parses text and returns list of chapters got from it     * @param string $text     * @return array     */    public function analyze($text)    {        $this->parse($text);        return $this->_chapters;    }    /**     * @inheritdoc     */    protected function renderHeadline($block)    {        if ($this->_chapter === 0) {            $this->title = $this->renderAbsy($block['content']);            $this->introduction = '';            $this->_chapter++;        } else {            $this->_chapter++;            $this->_chapters[$this->_chapter] = [                'headline' => $this->renderAbsy($block['content']),                'content' => [],            ];        }        return parent::renderHeadline($block);    }    /**     * @inheritdoc     */    protected function renderParagraph($block)    {        if ($this->_chapter < 1) {            $this->introduction .= $this->renderAbsy($block['content']);        }        return parent::renderParagraph($block);    }    /**     * @inheritdoc     */    protected function renderList($block)    {        if ($this->_chapter > 0) {            foreach ($block['items'] as $item => $absyElements) {                foreach($absyElements as $element) {                    if ($element[0] === 'link') {                        $this->_chapters[$this->_chapter]['content'][] = [                            'headline' => $this->renderAbsy($element['text']),                            'file' => $element['url'],                        ];                    }                }            }        }        return parent::renderList($block);    }}
 |