Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
/*
6
 * This file is part of the league/commonmark package.
7
 *
8
 * (c) Colin O'Dell <colinodell@gmail.com>
9
 *
10
 * Original code based on the CommonMark JS reference parser (http://bitly.com/commonmark-js)
11
 *  - (c) John MacFarlane
12
 *
13
 * For the full copyright and license information, please view the LICENSE
14
 * file that was distributed with this source code.
15
 */
16
 
17
namespace League\CommonMark\Extension\SmartPunct;
18
 
19
use League\CommonMark\Delimiter\DelimiterInterface;
20
use League\CommonMark\Delimiter\Processor\DelimiterProcessorInterface;
21
use League\CommonMark\Node\Inline\AbstractStringContainer;
22
 
23
final class QuoteProcessor implements DelimiterProcessorInterface
24
{
25
    /** @psalm-readonly */
26
    private string $normalizedCharacter;
27
 
28
    /** @psalm-readonly */
29
    private string $openerCharacter;
30
 
31
    /** @psalm-readonly */
32
    private string $closerCharacter;
33
 
34
    private function __construct(string $char, string $opener, string $closer)
35
    {
36
        $this->normalizedCharacter = $char;
37
        $this->openerCharacter     = $opener;
38
        $this->closerCharacter     = $closer;
39
    }
40
 
41
    public function getOpeningCharacter(): string
42
    {
43
        return $this->normalizedCharacter;
44
    }
45
 
46
    public function getClosingCharacter(): string
47
    {
48
        return $this->normalizedCharacter;
49
    }
50
 
51
    public function getMinLength(): int
52
    {
53
        return 1;
54
    }
55
 
56
    public function getDelimiterUse(DelimiterInterface $opener, DelimiterInterface $closer): int
57
    {
58
        return 1;
59
    }
60
 
61
    public function process(AbstractStringContainer $opener, AbstractStringContainer $closer, int $delimiterUse): void
62
    {
63
        $opener->insertAfter(new Quote($this->openerCharacter));
64
        $closer->insertBefore(new Quote($this->closerCharacter));
65
    }
66
 
67
    /**
68
     * Create a double-quote processor
69
     */
70
    public static function createDoubleQuoteProcessor(string $opener = Quote::DOUBLE_QUOTE_OPENER, string $closer = Quote::DOUBLE_QUOTE_CLOSER): self
71
    {
72
        return new self(Quote::DOUBLE_QUOTE, $opener, $closer);
73
    }
74
 
75
    /**
76
     * Create a single-quote processor
77
     */
78
    public static function createSingleQuoteProcessor(string $opener = Quote::SINGLE_QUOTE_OPENER, string $closer = Quote::SINGLE_QUOTE_CLOSER): self
79
    {
80
        return new self(Quote::SINGLE_QUOTE, $opener, $closer);
81
    }
82
}