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 (https://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\CommonMark\Parser\Inline;
18
 
19
use League\CommonMark\Delimiter\Delimiter;
20
use League\CommonMark\Node\Inline\Text;
21
use League\CommonMark\Parser\Inline\InlineParserInterface;
22
use League\CommonMark\Parser\Inline\InlineParserMatch;
23
use League\CommonMark\Parser\InlineParserContext;
24
 
25
final class BangParser implements InlineParserInterface
26
{
27
    public function getMatchDefinition(): InlineParserMatch
28
    {
29
        return InlineParserMatch::string('![');
30
    }
31
 
32
    public function parse(InlineParserContext $inlineContext): bool
33
    {
34
        $cursor = $inlineContext->getCursor();
35
        $cursor->advanceBy(2);
36
 
37
        $node = new Text('![', ['delim' => true]);
38
        $inlineContext->getContainer()->appendChild($node);
39
 
40
        // Add entry to stack for this opener
41
        $delimiter = new Delimiter('!', 1, $node, true, false, $cursor->getPosition());
42
        $inlineContext->getDelimiterStack()->push($delimiter);
43
 
44
        return true;
45
    }
46
}