Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 148 | Details | Vergleich mit vorheriger | 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
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
 
14
namespace League\CommonMark\Extension\FrontMatter\Data;
15
 
991 lars 16
use League\CommonMark\Exception\MissingDependencyException;
148 lars 17
use League\CommonMark\Extension\FrontMatter\Exception\InvalidFrontMatterException;
18
 
19
final class LibYamlFrontMatterParser implements FrontMatterDataParserInterface
20
{
21
    public static function capable(): ?LibYamlFrontMatterParser
22
    {
23
        if (! \extension_loaded('yaml')) {
24
            return null;
25
        }
26
 
27
        return new LibYamlFrontMatterParser();
28
    }
29
 
30
    /**
31
     * {@inheritDoc}
32
     */
33
    public function parse(string $frontMatter)
34
    {
35
        if (! \extension_loaded('yaml')) {
991 lars 36
            throw new MissingDependencyException('Failed to parse yaml: "ext-yaml" extension is missing');
148 lars 37
        }
38
 
39
        $result = @\yaml_parse($frontMatter);
40
 
41
        if ($result === false) {
42
            throw new InvalidFrontMatterException('Failed to parse front matter');
43
        }
44
 
45
        return $result;
46
    }
47
}