Transliterator::transliterate()   A
last analyzed

Complexity

Conditions 5
Paths 5

Size

Total Lines 23
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 5.1158

Importance

Changes 0
Metric Value
eloc 11
dl 0
loc 23
ccs 10
cts 12
cp 0.8333
rs 9.6111
c 0
b 0
f 0
cc 5
nc 5
nop 1
crap 5.1158
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