Вход Регистрация
Файл: vendor/league/commonmark/src/Extension/Strikethrough/StrikethroughDelimiterProcessor.php
Строк: 77
<?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 
LeagueCommonMarkDelimiterProcessorDelimiterProcessorInterface;
use 
LeagueCommonMarkNodeInlineAbstractStringContainer;

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

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

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

    public function 
getDelimiterUse(DelimiterInterface $opener, DelimiterInterface $closer): int
    
{
        
$min = min($opener->getLength(), $closer->getLength());

        return 
$min >= 2 ? $min : 0;
    }

    public function 
process(AbstractStringContainer $opener, AbstractStringContainer $closer, int $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);
    }
}
Онлайн: 0
Реклама