Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
LexemeSensesMerger
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
2 / 2
3
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 merge
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3namespace Wikibase\Lexeme\Domain\Merge;
4
5use Wikibase\DataModel\Services\Statement\GuidGenerator;
6use Wikibase\Lexeme\DataAccess\ChangeOp\ChangeOpSenseAdd;
7use Wikibase\Lexeme\DataAccess\ChangeOp\ChangeOpSenseClone;
8use Wikibase\Lexeme\Domain\Model\Lexeme;
9use Wikibase\Repo\ChangeOp\ChangeOps;
10
11/**
12 * @license GPL-2.0-or-later
13 */
14class LexemeSensesMerger {
15
16    /**
17     * @var GuidGenerator
18     */
19    private $guidGenerator;
20
21    public function __construct(
22        GuidGenerator $guidGenerator
23    ) {
24        $this->guidGenerator = $guidGenerator;
25    }
26
27    /**
28     * @param Lexeme $source
29     * @param Lexeme $target Will be modified by reference
30     */
31    public function merge( Lexeme $source, Lexeme $target ) {
32        $changeOps = new ChangeOps();
33
34        foreach ( $source->getSenses()->toArray() as $sourceSense ) {
35            $changeOps->add( new ChangeOpSenseAdd(
36                new ChangeOpSenseClone( $sourceSense ),
37                $this->guidGenerator
38            ) );
39        }
40
41        $changeOps->apply( $target );
42    }
43
44}