Completed
Push — image-processors-refactoring ( dcd98f )
by Luis
05:57
created

plProcessor::isCompatibleWith()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
use PhUml\Processors\DotProcessor;
4
use PhUml\Processors\NeatoProcessor;
5
6
abstract class plProcessor
7
{
8
    public const INITIAL_INPUT_TYPE = 'application/phuml-structure';
9
10
    /**
11
     * @throws plProcessorNotFoundException
12
     */
13
    public static function factory($processor): plProcessor
14
    {
15
        $processor = ucfirst($processor);
16
        if ($processor === 'Dot') {
17
            return new DotProcessor();
18
        }
19
        if ($processor === 'Neato') {
20
            return new NeatoProcessor();
21
        }
22
        $classname = "pl{$processor}Processor";
23
        if (!class_exists($classname)) {
24
            throw new plProcessorNotFoundException($processor);
25
        }
26
        return new $classname();
27
    }
28
29
    public static function getProcessors(): array
30
    {
31
        return [
32
            'Graphviz',
33
            'Neato',
34
            'Dot',
35
            'Statistics',
36
        ];
37
    }
38
39
    public function writeToDisk(string $input, string $output): void
40
    {
41
        file_put_contents($output, $input);
42
    }
43
44 12
    public function isCompatibleWith(plProcessor $nextProcessor): bool
45
    {
46 12
        return $this->getOutputType() === $nextProcessor->getInputType();
47
    }
48
49 30
    public function isInitial(): bool
50
    {
51 30
        return self::INITIAL_INPUT_TYPE === $this->getInputType();
52
    }
53
54
    abstract public function name(): string;
55
56
    abstract public function getInputType(): string;
57
58
    abstract public function getOutputType(): string;
59
60
    abstract public function process($input);
61
}
62