Passed
Push — feature/initial-implementation ( fae671...591f29 )
by Fike
02:37
created

Operations::merge()   B

Complexity

Conditions 6
Paths 17

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 18
c 0
b 0
f 0
rs 8.8571
cc 6
eloc 11
nc 17
nop 1
1
<?php
2
3
namespace AmaTeam\ElasticSearch\Indexing\Analysis;
4
5
use AmaTeam\ElasticSearch\API\Indexing\Analysis;
6
use AmaTeam\ElasticSearch\API\Indexing\AnalysisInterface;
7
8
class Operations
9
{
10
    public static function merge(AnalysisInterface ...$sources): Analysis
11
    {
12
        $target = new Analysis();
13
        foreach ($sources as $source) {
14
            foreach ($source->getAnalyzers() as $name => $analyzer) {
15
                $target->setAnalyzer($name, $analyzer);
16
            }
17
            foreach ($source->getCharacterFilters() as $name => $characterFilter) {
18
                $target->setCharacterFilter($name, $characterFilter);
19
            }
20
            foreach ($source->getTokenizers() as $name => $tokenizer) {
21
                $target->setTokenizer($name, $tokenizer);
22
            }
23
            foreach ($source->getTokenFilters() as $name => $tokenFilter) {
24
                $target->setTokenFilter($name, $tokenFilter);
25
            }
26
        }
27
        return $target;
28
    }
29
}
30