Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
SensesStatementEntityReferenceExtractor
100.00% covered (success)
100.00%
9 / 9
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
 extractEntityIds
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3namespace Wikibase\Lexeme\Domain\EntityReferenceExtractors;
4
5use Wikibase\DataModel\Entity\EntityDocument;
6use Wikibase\DataModel\Entity\EntityId;
7use Wikibase\Lexeme\Domain\Model\Lexeme;
8use Wikibase\Repo\EntityReferenceExtractors\EntityReferenceExtractor;
9use Wikibase\Repo\EntityReferenceExtractors\StatementEntityReferenceExtractor;
10use Wikimedia\Assert\Assert;
11
12/**
13 * Extracts the referenced entity ids of each lexeme's senses' statements
14 *
15 * @license GPL-2.0-or-later
16 */
17class SensesStatementEntityReferenceExtractor implements EntityReferenceExtractor {
18
19    /**
20     * @var StatementEntityReferenceExtractor
21     */
22    private $statementEntityReferenceExtractor;
23
24    public function __construct(
25        StatementEntityReferenceExtractor $statementEntityReferenceExtractor
26    ) {
27        $this->statementEntityReferenceExtractor = $statementEntityReferenceExtractor;
28    }
29
30    /**
31     * @param EntityDocument $lexeme
32     * @return EntityId[]
33     */
34    public function extractEntityIds( EntityDocument $lexeme ) {
35        Assert::parameterType( Lexeme::class, $lexeme, '$lexeme' );
36        '@phan-var Lexeme $lexeme';
37
38        $ids = [];
39
40        /** @var Lexeme $lexeme */
41        foreach ( $lexeme->getSenses()->toArrayUnordered() as $sense ) {
42            $ids = array_merge(
43                $ids,
44                $this->statementEntityReferenceExtractor->extractEntityIds( $sense )
45            );
46        }
47
48        return array_unique( $ids );
49    }
50
51}