Вход Регистрация
Файл: vendor/league/commonmark/src/Extension/Autolink/EmailAutolinkParser.php
Строк: 83
<?php

declare(strict_types=1);

/*
 * This file is part of the league/commonmark package.
 *
 * (c) Colin O'Dell <colinodell@gmail.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace LeagueCommonMarkExtensionAutolink;

use 
LeagueCommonMarkExtensionCommonMarkNodeInlineLink;
use 
LeagueCommonMarkParserInlineInlineParserInterface;
use 
LeagueCommonMarkParserInlineInlineParserMatch;
use 
LeagueCommonMarkParserInlineParserContext;

final class 
EmailAutolinkParser implements InlineParserInterface
{
    private const 
REGEX '[A-Za-z0-9.-_+]+@[A-Za-z0-9-_]+.[A-Za-z0-9-_.]+';

    public function 
getMatchDefinition(): InlineParserMatch
    
{
        return 
InlineParserMatch::regex(self::REGEX);
    }

    public function 
parse(InlineParserContext $inlineContext): bool
    
{
        
$email $inlineContext->getFullMatch();
        
// The last character cannot be - or _
        
if (in_array(substr($email, -1), ['-''_'], true)) {
            return 
false;
        }

        
// Does the URL end with punctuation that should be stripped?
        
if (substr($email, -1) === '.') {
            
$email substr($email0, -1);
        }

        
$inlineContext->getCursor()->advanceBy(strlen($email));
        
$inlineContext->getContainer()->appendChild(new Link('mailto:' $email$email));

        return 
true;
    }
}
Онлайн: 0
Реклама