|
- <?php
-
- namespace dokuwiki\Parsing\ParserMode;
-
- class Externallink extends AbstractMode
- {
- protected $schemes = [];
- protected $patterns = [];
-
- /** @inheritdoc */
- public function preConnect()
- {
- if (count($this->patterns)) return;
-
- $ltrs = '\w';
- $gunk = '/\#~:.?+=&%@!\-\[\]';
- $punc = '.:?\-;,';
- $host = $ltrs . $punc;
- $any = $ltrs . $gunk . $punc;
-
- $this->schemes = getSchemes();
- foreach ($this->schemes as $scheme) {
- $this->patterns[] = '\b(?i)' . $scheme . '(?-i)://[' . $any . ']+?(?=[' . $punc . ']*[^' . $any . '])';
- }
-
- $this->patterns[] = '(?<![/\\\\])\b(?i)www?(?-i)\.[' . $host . ']+?\.' .
- '[' . $host . ']+?[' . $any . ']+?(?=[' . $punc . ']*[^' . $any . '])';
- $this->patterns[] = '(?<![/\\\\])\b(?i)ftp?(?-i)\.[' . $host . ']+?\.' .
- '[' . $host . ']+?[' . $any . ']+?(?=[' . $punc . ']*[^' . $any . '])';
- }
-
- /** @inheritdoc */
- public function connectTo($mode)
- {
-
- foreach ($this->patterns as $pattern) {
- $this->Lexer->addSpecialPattern($pattern, $mode, 'externallink');
- }
- }
-
- /** @inheritdoc */
- public function getSort()
- {
- return 330;
- }
-
- /**
- * @return array
- */
- public function getPatterns()
- {
- return $this->patterns;
- }
- }
|