I18nStringsBatch   A
last analyzed

Complexity

Total Complexity 15

Size/Duplication

Total Lines 117
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 15
eloc 30
c 1
b 0
f 0
dl 0
loc 117
ccs 36
cts 36
cp 1
rs 10

11 Methods

Rating   Name   Duplication   Size   Complexity  
A getBatch() 0 16 5
A setLocale() 0 5 1
A __construct() 0 4 1
A setJsonDepth() 0 5 1
A getJsonDepth() 0 3 1
A setDirectoryPrefix() 0 5 1
A getDirectoryPrefix() 0 3 1
A getBatchJson() 0 3 1
A getJsonFlags() 0 3 1
A getLocale() 0 3 1
A setJsonFlags() 0 5 1
1
<?php
2
3
namespace I18nStringsBatch;
4
5
use Illuminate\Support\Str;
6
7
class I18nStringsBatch
8
{
9
    protected ?string $locale = null;
10
11
    protected string $directoryPrefix = '';
12
13
    protected mixed $jsonFlags = JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT;
14
15
    protected int $jsonDepth = 512;
16
17
    /**
18
     * @param string      $directoryPrefix
19
     * @param string|null $locale
20
     */
21 6
    public function __construct(string $directoryPrefix = '', ?string $locale = null)
22
    {
23 6
        $this->directoryPrefix = $directoryPrefix;
24 6
        $this->locale          = $locale;
25
    }
26
27
    /**
28
     * @param string|null $locale
29
     * @return static
30
     */
31 1
    public function setLocale(?string $locale): static
32
    {
33 1
        $this->locale = $locale;
34
35 1
        return $this;
36
    }
37
38
    /**
39
     * @return string|null
40
     */
41 1
    public function getLocale(): ?string
42
    {
43 1
        return $this->locale;
44
    }
45
46
    /**
47
     * @param string $directoryPrefix
48
     * @return static
49
     */
50 1
    public function setDirectoryPrefix(string $directoryPrefix): static
51
    {
52 1
        $this->directoryPrefix = $directoryPrefix;
53
54 1
        return $this;
55
    }
56
57
    /**
58
     * @return string
59
     */
60 1
    public function getDirectoryPrefix(): string
61
    {
62 1
        return $this->directoryPrefix;
63
    }
64
65
    /**
66
     * @param int|mixed|string $jsonFlags
67
     */
68 1
    public function setJsonFlags(mixed $jsonFlags): static
69
    {
70 1
        $this->jsonFlags = $jsonFlags;
71
72 1
        return $this;
73
    }
74
75
    /**
76
     * @return mixed
77
     */
78 1
    public function getJsonFlags(): mixed
79
    {
80 1
        return $this->jsonFlags;
81
    }
82
83
    /**
84
     * @param int $jsonDepth
85
     * @return static
86
     */
87 1
    public function setJsonDepth(int $jsonDepth): static
88
    {
89 1
        $this->jsonDepth = $jsonDepth;
90
91 1
        return $this;
92
    }
93
94
    /**
95
     * @return int
96
     */
97 1
    public function getJsonDepth(): int
98
    {
99 1
        return $this->jsonDepth;
100
    }
101
102
103 4
    public function getBatch(string|array $keys): array
104
    {
105 4
        $batch     = [];
106 4
        $directory = trim($this->directoryPrefix, '/');
107 4
        foreach ((array) $keys as $key) {
108 4
            $key = ltrim($key, '/');
109 4
            if ($directory && !Str::startsWith($key, $directory)) {
110 1
                $key = "{$directory}/{$key}";
111
            }
112 4
            $messages = app('translator')->get($key, [], $this->locale);
113 4
            if (is_array($messages)) {
114 3
                $batch = array_merge($batch, $messages);
115
            }
116
        }
117
118 4
        return $batch;
119
    }
120
121 1
    public function getBatchJson(string|array $keys): string
122
    {
123 1
        return json_encode($this->getBatch($keys), $this->jsonFlags, $this->jsonDepth);
124
    }
125
}
126