Completed
Push — master ( b304e8...044dfd )
by Steve
02:05
created

StepBuilder::build()   B

Complexity

Conditions 10
Paths 4

Size

Total Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 19
rs 7.6666
c 0
b 0
f 0
cc 10
nc 4
nop 1

How to fix   Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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