Completed
Push — master ( c79f7e...463ede )
by Gallice
02:34
created

StepFactory   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 10
c 1
b 0
f 0
lcom 1
cbo 5
dl 0
loc 60
ccs 21
cts 21
cp 1
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
B create() 0 17 6
A createActionStep() 0 4 1
A createMergeStep() 0 4 1
A createMessageStep() 0 4 1
A createStopStep() 0 4 1
1
<?php
2
3
namespace Tgallice\Wit;
4
5
use Tgallice\Wit\Exception\InvalidStepException;
6
use Tgallice\Wit\Model\Step;
7
use Tgallice\Wit\Model\Step\Action;
8
use Tgallice\Wit\Model\Step\Merge;
9
use Tgallice\Wit\Model\Step\Message;
10
use Tgallice\Wit\Model\Step\Stop;
11
12
class StepFactory
13
{
14 5
    public static function create(array $step)
15
    {
16 5
        $type = isset($step['type']) ? $step['type'] : null;
17
18
        switch ($type) {
19 5
            case Step::TYPE_ACTION:
20 1
                return self::createActionStep($step);
21 5
            case Step::TYPE_MESSAGE:
22 2
                return self::createMessageStep($step);
23 5
            case Step::TYPE_MERGE:
24 3
                return self::createMergeStep($step);
25 3
            case Step::TYPE_STOP:
26 2
                return self::createStopStep($step);
27 1
            default:
28 1
                throw new InvalidStepException('Invalid Step', $step);
29 1
        }
30
    }
31
32
    /**
33
     * @param array $step
34
     *
35
     * @return Action
36
     */
37 2
    public static function createActionStep(array $step)
38
    {
39 2
        return new Action($step['action'], $step['confidence']);
40
    }
41
42
    /**
43
     * @param array $step
44
     *
45
     * @return Merge
46
     */
47 4
    public static function createMergeStep(array $step)
48
    {
49 4
        return new Merge($step['entities'], $step['confidence']);
50
    }
51
52
    /**
53
     * @param array $step
54
     *
55
     * @return Message
56
     */
57 3
    public static function createMessageStep(array $step)
58
    {
59 3
        return new Message($step['msg'], $step['confidence']);
60
    }
61
62
    /**
63
     * @param array $step
64
     *
65
     * @return Stop
66
     */
67 3
    public static function createStopStep(array $step)
68
    {
69 3
        return new Stop($step['confidence']);
70
    }
71
}
72