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;
- }
- }
|