Completed
Push — master ( f7eb77...bdcf7d )
by Tomáš
03:24
created

FileFactory::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 16
ccs 7
cts 7
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 11
nc 1
nop 2
crap 1
1
<?php
2
3
/*
4
 * This file is part of Symplify
5
 * Copyright (c) 2016 Tomas Votruba (http://tomasvotruba.cz).
6
 */
7
8
namespace Symplify\PHP7_CodeSniffer\File;
9
10
use Nette\FileNotFoundException;
11
use Symplify\PHP7_CodeSniffer\Fixer;
12
use Symplify\PHP7_CodeSniffer\Parser\EolCharDetector;
13
use Symplify\PHP7_CodeSniffer\Parser\FileToTokensParser;
14
use Symplify\PHP7_CodeSniffer\Report\ErrorDataCollector;
15
use Symplify\PHP7_CodeSniffer\Ruleset;
16
17
final class FileFactory
18
{
19
    /**
20
     * @var Fixer
21
     */
22
    private $fixer;
23
24
    /**
25
     * @var ErrorDataCollector
26
     */
27
    private $reportCollector;
28
29
    /**
30
     * @var FileToTokensParser
31
     */
32
    private $fileToTokenParser;
33
34
    /**
35
     * @var EolCharDetector
36
     */
37
    private $eolCharDetector;
38
39 7
    public function __construct(
40
        Fixer $fixer,
41
        ErrorDataCollector $reportCollector,
42
        FileToTokensParser $fileToTokenParser,
43
        EolCharDetector $eolCharDetector
44
    ) {
45 7
        $this->fixer = $fixer;
46 7
        $this->reportCollector = $reportCollector;
47 7
        $this->fileToTokenParser = $fileToTokenParser;
48 7
        $this->eolCharDetector = $eolCharDetector;
49 7
    }
50
51 7
    public function create(string $filePath, bool $isFixer) : File
52
    {
53 7
        $this->ensureFileExists($filePath);
54
55 6
        $tokens = $this->fileToTokenParser->parseFromFilePath($filePath);
56 6
        $eolChar = $this->eolCharDetector->detectForFilePath($filePath);
57
58 6
        return new File(
59
            $filePath,
60
            $tokens,
61 6
            $this->fixer,
62 6
            $this->reportCollector,
63
            $isFixer,
64
            $eolChar
65
        );
66
    }
67
68 7
    private function ensureFileExists(string $filePath)
69
    {
70 7
        if (!is_file($filePath) || !file_exists($filePath)) {
71 1
            throw new FileNotFoundException(sprintf(
72 1
                'File "%s" was not found.',
73
                $filePath
74
            ));
75
        }
76 6
    }
77
}
78