Completed
Pull Request — master (#5)
by Steve
02:26
created

StepBuilder   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 10
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\Steps\LambdaStep;
6
use MeadSteve\Tale\Steps\Step;
7
8
class StepBuilder
9
{
10
11
    /**
12
     * @param mixed[] ...$args
13
     * @return Step
14
     */
15
    public static function build(...$args): Step
16
    {
17
        if (sizeof($args) == 1 && $args[0] instanceof Step) {
18
            return $args[0];
19
        }
20
        if (sizeof($args) == 3
21
            && is_string($args[2])
22
            && $args[0] instanceof \Closure
23
            && $args[1] instanceof \Closure
24
        ) {
25
            return new LambdaStep($args[0], $args[1], $args[2]);
26
        }
27
        if (sizeof($args) == 2
28
            && $args[0] instanceof \Closure
29
            && $args[1] instanceof \Closure
30
        ) {
31
            return new LambdaStep($args[0], $args[1]);
32
        }
33
        throw new \RuntimeException("Not sure how to build a step from provided data");
34
    }
35
}
36