Transliterator   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 25
Duplicated Lines 0 %

Test Coverage

Coverage 83.33%

Importance

Changes 0
Metric Value
wmc 5
eloc 12
dl 0
loc 25
ccs 10
cts 12
cp 0.8333
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A transliterate() 0 23 5
1
<?php
2
3
declare(strict_types = 1);
4
5
namespace DummyGenerator\Core\Transliterator;
6
7
use DummyGenerator\Definitions\Extension\Exception\ExtensionRuntimeException;
8
use DummyGenerator\Definitions\Transliterator\TransliteratorInterface;
9
10
class Transliterator implements TransliteratorInterface
11
{
12 10
    public function transliterate(string $string): string
13
    {
14 10
        if (0 === preg_match('/[^A-Za-z0-9_.]/', $string)) {
15 9
            return $string;
16
        }
17
18 1
        $transId = 'Any-Latin; Latin-ASCII; NFD; [:Nonspacing Mark:] Remove; NFC;';
19
20 1
        $transliterator = \Transliterator::create($transId);
21
22 1
        if ($transliterator === null) {
23
            throw new ExtensionRuntimeException('Transliterator cannot be created for given settings');
24
        }
25
26 1
        $transString = $transliterator->transliterate($string);
27
28 1
        if ($transString === false) {
29
            return '';
30
        }
31
32 1
        $transliterated = preg_replace('/[^A-Za-z0-9_.]/u', '', $transString);
33
34 1
        return (!empty($transliterated)) ? $transliterated : '';
35
    }
36
}
37