| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | <?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\jssearch\Indexer;use cebe\jssearch\tokenizer\StandardTokenizer;use cebe\jssearch\TokenizerInterface;use yii\helpers\StringHelper;/** * ApiIndexer indexes framework API */class ApiIndexer extends Indexer{    /**     * @param string $file     * @param string $contents     * @param string $basePath     * @param string $baseUrl     * @return array     */    protected function generateFileInfo($file, $contents, $basePath, $baseUrl)    {        // create file entry        if (preg_match('~<h1>(.*?)</h1>~s', $contents, $matches)) {            $title = str_replace('¶', '', strip_tags($matches[1]));        } elseif (preg_match('~<title>(.*?)</title>~s', $contents, $matches)) {            $title = strip_tags($matches[1]);        } else {            $title = '<i>No title</i>';        }        if (preg_match('~<div id="classDescription">\s*<strong>(.*?)</strong>~s', $contents, $matches)) {            $description = strip_tags($matches[1]);        } elseif (preg_match('~<p>(.*?)</p>~s', $contents, $matches)) {            $description = StringHelper::truncate(strip_tags($matches[1]), 1000, '...', 'UTF-8');        } else {            $description = '';        }        return [            'u' => $baseUrl . str_replace('\\', '/', substr($file, strlen(rtrim($basePath, '\\/')))),            't' => $title,            'd' => $description,        ];    }    /**     * @return TokenizerInterface     */    public function getTokenizer()    {        $tokenizer = parent::getTokenizer();        if ($tokenizer instanceof StandardTokenizer) {            // yii is part of every doc and makes weird search results            $tokenizer->stopWords[] = 'yii';            $tokenizer->stopWords = array_unique($tokenizer->stopWords);        }        return $tokenizer;    }}
 |