MinifierFactory::get()   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 3
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 7
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Enjoys\AssetsCollector;
6
7
use Closure;
8
9
final class MinifierFactory
10
{
11
12
    /**
13
     * @param Closure(string):string|Minifier|null $minifier
14
     * @return Minifier|null
15
     */
16
    public static function get(Closure|Minifier|null $minifier): ?Minifier
17
    {
18
        if ($minifier instanceof Minifier || $minifier === null){
19
            return $minifier;
20
        }
21
22
        return self::createFromClosure($minifier);
23
    }
24
25
    /**
26
     * @param Closure(string): string $closure
27
     * @return Minifier
28
     */
29
    private static function createFromClosure(Closure $closure): Minifier
30
    {
31
        return new class($closure) implements Minifier {
32
33
            /**
34
             * @param Closure(string): string $minifier
35
             */
36
            public function __construct(private readonly Closure $minifier)
37
            {
38
            }
39
40
            public function minify(string $content): string
41
            {
42
                return call_user_func($this->minifier, $content);
43
            }
44
        };
45
    }
46
47
}
48