ConversionProcess::saveTarget()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 2

Importance

Changes 3
Bugs 0 Features 0
Metric Value
c 3
b 0
f 0
dl 0
loc 12
ccs 10
cts 10
cp 1
rs 9.4285
cc 2
eloc 8
nc 2
nop 1
crap 2
1
<?php
2
namespace Bookdown\Bookdown\Process\Conversion;
3
4
use Psr\Log\LoggerInterface;
5
use Bookdown\Bookdown\Content\Page;
6
use Bookdown\Bookdown\Exception;
7
use Bookdown\Bookdown\Fsio;
8
use Bookdown\Bookdown\Process\ProcessInterface;
9
use League\CommonMark\Converter;
10
11
class ConversionProcess implements ProcessInterface
12
{
13
    protected $page;
14
    protected $logger;
15
    protected $fsio;
16
    protected $commonMarkConverter;
17
18 17
    public function __construct(
19
        LoggerInterface $logger,
20
        Fsio $fsio,
21
        Converter $commonMarkConverter
22
    ) {
23 17
        $this->logger = $logger;
24 17
        $this->fsio = $fsio;
25 17
        $this->commonMarkConverter = $commonMarkConverter;
26 17
    }
27
28 16
    public function __invoke(Page $page)
29
    {
30 16
        $this->page = $page;
31 16
        $text = $this->readOrigin();
32 16
        $html = $this->commonMarkConverter->convertToHtml($text);
33 16
        $this->saveTarget($html);
34 16
    }
35
36 16
    protected function readOrigin()
37
    {
38 16
        $file = $this->page->getOrigin();
39 16
        if (! $file) {
40 15
            $this->logger->info("    No origin for {$this->page->getTarget()}");
41 15
            return;
42
        }
43
44 15
        $this->logger->info("    Reading origin {$file}");
45 15
        return $this->fsio->get($file);
46
    }
47
48 16
    protected function saveTarget($html)
49
    {
50 16
        $file = $this->page->getTarget();
51 16
        $dir = dirname($file);
52 16
        if (! $this->fsio->isDir($dir)) {
53 16
            $this->logger->info("    Making directory {$dir}");
54 16
            $this->fsio->mkdir($dir);
55 16
        }
56
57 16
        $this->logger->info("    Saving target {$file}");
58 16
        $this->fsio->put($file, $html);
59 16
    }
60
}
61