Since: 2.0
Author: Carsten Brandt (mail@cebe.cc)
Inheritance: extends yii\base\Component
Esempio n. 1
0
 /**
  * @inheritdoc
  */
 protected function parseLink($markdown)
 {
     list($result, $skip) = parent::parseLink($markdown);
     // add special syntax for linking to the guide
     $result = preg_replace_callback('/href="guide:([A-z0-9-.#]+)"/i', function ($match) {
         return 'href="' . static::$renderer->generateGuideUrl($match[1]) . '"';
     }, $result, 1);
     return [$result, $skip];
 }
Esempio n. 2
0
 /**
  * @inheritdoc
  */
 protected function renderLink($block)
 {
     $result = parent::renderLink($block);
     // add special syntax for linking to the guide
     $result = preg_replace_callback('/href="guide:([A-z0-9-.#]+)"/i', function ($match) {
         return 'href="' . static::$renderer->generateGuideUrl($match[1]) . '"';
     }, $result, 1);
     return $result;
 }
Esempio n. 3
0
 protected function parseApiLinks($text)
 {
     $context = $this->context;
     if (preg_match('/^\\[\\[([\\w\\d\\\\\\(\\):$]+)(\\|[^\\]]*)?\\]\\]/', $text, $matches)) {
         $offset = strlen($matches[0]);
         $object = $matches[1];
         $title = empty($matches[2]) || $matches[2] == '|' ? null : substr($matches[2], 1);
         if (($pos = strpos($object, '::')) !== false) {
             $typeName = substr($object, 0, $pos);
             $subjectName = substr($object, $pos + 2);
             if ($context !== null) {
                 // Collection resolves relative types
                 $typeName = (new Collection([$typeName], $context->phpDocContext))->__toString();
             }
             $type = static::$renderer->apiContext->getType($typeName);
             if ($type === null) {
                 static::$renderer->apiContext->errors[] = ['file' => $context !== null ? $context->sourceFile : null, 'message' => 'broken link to ' . $typeName . '::' . $subjectName . ($context !== null ? ' in ' . $context->name : '')];
                 return ['<span style="background: #f00;">' . $typeName . '::' . $subjectName . '</span>', $offset];
             } else {
                 if (($subject = $type->findSubject($subjectName)) !== null) {
                     if ($title === null) {
                         $title = $type->name . '::' . $subject->name;
                         if ($subject instanceof MethodDoc) {
                             $title .= '()';
                         }
                     }
                     return [static::$renderer->createSubjectLink($subject, $title), $offset];
                 } else {
                     static::$renderer->apiContext->errors[] = ['file' => $context !== null ? $context->sourceFile : null, 'message' => 'broken link to ' . $type->name . '::' . $subjectName . ($context !== null ? ' in ' . $context->name : '')];
                     return ['<span style="background: #ff0;">' . $type->name . '</span><span style="background: #f00;">::' . $subjectName . '</span>', $offset];
                 }
             }
         } elseif ($context !== null && ($subject = $context->findSubject($object)) !== null) {
             return [static::$renderer->createSubjectLink($subject, $title), $offset];
         }
         if ($context !== null) {
             // Collection resolves relative types
             $object = (new Collection([$object], $context->phpDocContext))->__toString();
         }
         if (($type = static::$renderer->apiContext->getType($object)) !== null) {
             return [static::$renderer->createTypeLink($type, null, $title), $offset];
         } elseif (strpos($typeLink = static::$renderer->createTypeLink($object, null, $title), '<a href') !== false) {
             return [$typeLink, $offset];
         }
         static::$renderer->apiContext->errors[] = ['file' => $context !== null ? $context->sourceFile : null, 'message' => 'broken link to ' . $object . ($context !== null ? ' in ' . $context->name : '')];
         return ['<span style="background: #f00;">' . $object . '</span>', $offset];
     }
     return ['[[', 2];
 }