Completed
Pull Request — master (#3)
by Saulius
04:38 queued 02:08
created

TruncateWords   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 11
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 11
ccs 6
cts 6
cp 1
rs 10
c 0
b 0
f 0
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A execute() 0 9 2
1
<?php
2
/**
3
 * This file is part of the sauls/helpers package.
4
 *
5
 * @author    Saulius Vaičeliūnas <[email protected]>
6
 * @link      http://saulius.vaiceliunas.lt
7
 * @copyright 2018
8
 *
9
 * For the full copyright and license information, please view the LICENSE
10
 * file that was distributed with this source code.
11
 */
12
13
namespace Sauls\Component\Helper\Operation\StringOperation;
14
15
class TruncateWords implements TruncateWordsInterface
16
{
17 5
    public function execute(string $value, int $count, string $suffix = '...'): string
18
    {
19 5
        $value = \strip_tags($value);
20
21 5
        $words = \preg_split('/(\s+)/u', \trim($value), null, PREG_SPLIT_DELIM_CAPTURE);
22 5
        if (\count($words) / 2 > $count) {
0 ignored issues
show
Bug introduced by
It seems like $words can also be of type false; however, parameter $var of count() does only seem to accept Countable|array, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

22
        if (\count(/** @scrutinizer ignore-type */ $words) / 2 > $count) {
Loading history...
23 4
            return \implode('', \array_slice($words, 0, ($count * 2) - 1)) . $suffix;
0 ignored issues
show
Bug introduced by
It seems like $words can also be of type false; however, parameter $array of array_slice() does only seem to accept array, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

23
            return \implode('', \array_slice(/** @scrutinizer ignore-type */ $words, 0, ($count * 2) - 1)) . $suffix;
Loading history...
24
        }
25 1
        return $value;
26
    }
27
}
28