StepBuilder   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 10
eloc 13
dl 0
loc 26
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B build() 0 19 10
1
<?php
2
3
namespace MeadSteve\Tale;
4
5
use MeadSteve\Tale\Exceptions\FailureToBuildStep;
6
use MeadSteve\Tale\Steps\LambdaStep;
7
use MeadSteve\Tale\Steps\Step;
8
9
class StepBuilder
10
{
11
12
    /**
13
     * @param mixed ...$args
14
     * @return Step
15
     */
16
    public static function build(...$args): Step
17
    {
18
        if (sizeof($args) == 1 && $args[0] instanceof Step) {
19
            return $args[0];
20
        }
21
        if (sizeof($args) == 3
22
            && is_string($args[2])
23
            && $args[0] instanceof \Closure
24
            && $args[1] instanceof \Closure
25
        ) {
26
            return new LambdaStep($args[0], $args[1], $args[2]);
27
        }
28
        if (sizeof($args) == 2
29
            && $args[0] instanceof \Closure
30
            && $args[1] instanceof \Closure
31
        ) {
32
            return new LambdaStep($args[0], $args[1]);
33
        }
34
        throw new FailureToBuildStep("Not sure how to build a step from provided data");
35
    }
36
}
37