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

declare(strict_types=1);

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

namespace LeagueCommonMarkExtensionStrikethrough;

use 
LeagueCommonMarkDelimiterDelimiterInterface;
use 
LeagueCommonMarkDelimiterProcessorCacheableDelimiterProcessorInterface;
use 
LeagueCommonMarkNodeInlineAbstractStringContainer;

final class 
StrikethroughDelimiterProcessor implements CacheableDelimiterProcessorInterface
{
    public function 
getOpeningCharacter(): string
    
{
        return 
'~';
    }

    public function 
getClosingCharacter(): string
    
{
        return 
'~';
    }

    public function 
getMinLength(): int
    
{
        return 
1;
    }

    public function 
getDelimiterUse(DelimiterInterface $openerDelimiterInterface $closer): int
    
{
        if (
$opener->getLength() > && $closer->getLength() > 2) {
            return 
0;
        }

        if (
$opener->getLength() !== $closer->getLength()) {
            return 
0;
        }

        
// $opener and $closer are the same length so we just return one of them
        
return $opener->getLength();
    }

    public function 
process(AbstractStringContainer $openerAbstractStringContainer $closerint $delimiterUse): void
    
{
        
$strikethrough = new Strikethrough(str_repeat('~'$delimiterUse));

        
$tmp $opener->next();
        while (
$tmp !== null && $tmp !== $closer) {
            
$next $tmp->next();
            
$strikethrough->appendChild($tmp);
            
$tmp $next;
        }

        
$opener->insertAfter($strikethrough);
    }

    public function 
getCacheKey(DelimiterInterface $closer): string
    
{
        return 
'~' $closer->getLength();
    }
}
Онлайн: 2
Реклама