Shuffle::shuffleArray()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 6
ccs 3
cts 3
cp 1
rs 9.4285
cc 1
eloc 3
nc 1
nop 1
crap 1
1
<?php
2
3
namespace Monolol\Lolifiers;
4
5
use Monolol\Lolifier;
6
7
class Shuffle implements Lolifier
8
{
9 1
    public function isHandling(array $record)
10
    {
11 1
        return true;
12
    }
13
    
14 6
    public function lolify(array $record)
15
    {
16 6
        if($this->countDifferentWordsInMessage($record['message']) <= 1)
17 6
        {
18 3
            return $record;
19
        }
20
        
21 3
        $record['message'] = $this->shuffleMessage($record['message']);
22
        
23 3
        return $record;
24
    }
25
    
26 6
    private function countDifferentWordsInMessage($message)
27
    {
28 6
        $messageArray = $this->convertStringToArray($message);
29 6
        $messageArray = array_unique($messageArray);
30
            
31 6
        return count($messageArray);
32
    }
33
    
34 6
    private function convertStringToArray($message)
35
    {
36 6
        return explode(' ', $message);
37
    }
38
    
39 3
    private function convertArrayToString(array $array)
40
    {
41 3
        return implode(' ', $array);
42
    }
43
    
44 3
    private function shuffleMessage($message)
45
    {
46
            
47 3
        $messageArray = $this->convertStringToArray($message);
48
        
49
        do
50
        {
51 3
            $shuffledMessageArray = $this->shuffleArray($messageArray);
52
        }
53 3
        while($messageArray === $shuffledMessageArray);
54
        
55 3
        return $this->convertArrayToString($shuffledMessageArray);
56
    }
57
    
58 3
    private function shuffleArray(array $array)
59
    {
60 3
        shuffle($array);
61
        
62 3
        return $array;
63
    }
64
}
65