Completed
Push — master ( 83739a...a13ee4 )
by Colin
14s queued 11s
created

QuoteProcessor::createSingleQuoteProcessor()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
crap 1
1
<?php
2
3
/*
4
 * This file is part of the league/commonmark package.
5
 *
6
 * (c) Colin O'Dell <[email protected]>
7
 *
8
 * Original code based on the CommonMark JS reference parser (http://bitly.com/commonmark-js)
9
 *  - (c) John MacFarlane
10
 *
11
 * For the full copyright and license information, please view the LICENSE
12
 * file that was distributed with this source code.
13
 */
14
15
namespace League\CommonMark\Extension\SmartPunct;
16
17
use League\CommonMark\Delimiter\DelimiterInterface;
18
use League\CommonMark\Delimiter\Processor\DelimiterProcessorInterface;
19
use League\CommonMark\Inline\Element\AbstractStringContainer;
20
21
final class QuoteProcessor implements DelimiterProcessorInterface
22
{
23
    /** @var string */
24
    private $normalizedCharacter;
25
26
    /** @var string */
27
    private $openerCharacter;
28
29
    /** @var string */
30
    private $closerCharacter;
31
32
    /**
33
     * QuoteProcessor constructor.
34
     *
35
     * @param string $char
36
     * @param string $opener
37
     * @param string $closer
38
     */
39 57
    private function __construct(string $char, string $opener, string $closer)
40
    {
41 57
        $this->normalizedCharacter = $char;
42 57
        $this->openerCharacter = $opener;
43 57
        $this->closerCharacter = $closer;
44 57
    }
45
46
    /**
47
     * {@inheritdoc}
48
     */
49 57
    public function getOpeningCharacter(): string
50
    {
51 57
        return $this->normalizedCharacter;
52
    }
53
54
    /**
55
     * {@inheritdoc}
56
     */
57 57
    public function getClosingCharacter(): string
58
    {
59 57
        return $this->normalizedCharacter;
60
    }
61
62
    /**
63
     * {@inheritdoc}
64
     */
65 6
    public function getMinLength(): int
66
    {
67 6
        return 1;
68
    }
69
70
    /**
71
     * {@inheritdoc}
72
     */
73 36
    public function getDelimiterUse(DelimiterInterface $opener, DelimiterInterface $closer): int
74
    {
75 36
        return 1;
76
    }
77
78
    /**
79
     * {@inheritdoc}
80
     */
81 36
    public function process(AbstractStringContainer $opener, AbstractStringContainer $closer, int $delimiterUse)
82
    {
83 36
        $opener->insertAfter(new Quote($this->openerCharacter));
84 36
        $closer->insertBefore(new Quote($this->closerCharacter));
85 36
    }
86
87
    /**
88
     * Create a double-quote processor
89
     *
90
     * @param string $opener
91
     * @param string $closer
92
     *
93
     * @return QuoteProcessor
94
     */
95 54
    public static function createDoubleQuoteProcessor(string $opener = Quote::DOUBLE_QUOTE_OPENER, string $closer = Quote::DOUBLE_QUOTE_CLOSER): self
96
    {
97 54
        return new self(Quote::DOUBLE_QUOTE, $opener, $closer);
98
    }
99
100
    /**
101
     * Create a single-quote processor
102
     *
103
     * @param string $opener
104
     * @param string $closer
105
     *
106
     * @return QuoteProcessor
107
     */
108 54
    public static function createSingleQuoteProcessor(string $opener = Quote::SINGLE_QUOTE_OPENER, string $closer = Quote::SINGLE_QUOTE_CLOSER): self
109
    {
110 54
        return new self(Quote::SINGLE_QUOTE, $opener, $closer);
111
    }
112
}
113