ConversionProcessBuilder::newCommonMarkConverter()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 3.243

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 15
ccs 7
cts 10
cp 0.7
rs 9.4285
cc 3
eloc 8
nc 3
nop 1
crap 3.243
1
<?php
2
namespace Bookdown\Bookdown\Process\Conversion;
3
4
use League\CommonMark\DocParser;
5
use League\CommonMark\Environment;
6
use League\CommonMark\HtmlRenderer;
7
use Psr\Log\LoggerInterface;
8
use Bookdown\Bookdown\Config\RootConfig;
9
use Bookdown\Bookdown\Fsio;
10
use Bookdown\Bookdown\Process\ProcessBuilderInterface;
11
12
class ConversionProcessBuilder implements ProcessBuilderInterface
13
{
14 17
    public function newInstance(RootConfig $config, LoggerInterface $logger, Fsio $fsio)
15
    {
16 17
        return new ConversionProcess(
17 17
            $logger,
18 17
            $fsio,
19 17
            $this->newCommonMarkConverter($config)
20 17
        );
21
    }
22
23 17
    protected function newCommonMarkConverter(RootConfig $config)
24
    {
25 17
        $environment = Environment::createCommonMarkEnvironment();
26
27 17
        foreach ($config->getCommonMarkExtensions() as $extension) {
28 9
            if (!class_exists($extension)) {
29
                throw new \RuntimeException(
30
                    sprintf('CommonMark extension class "%s" does not exists. You must use a FCQN!', $extension)
31
                );
32
            }
33 9
            $environment->addExtension(new $extension());
34 17
        }
35
36 17
        return new \League\CommonMark\Converter(new DocParser($environment), new HtmlRenderer($environment));
37
    }
38
}
39