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
LexemeStatementEntityReferenceExtractor
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 extractEntityIds
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
1
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 a lexeme's statements,
14 * including those statements in sub-entities.
15 * This will NOT include the ID of the item used for a lexeme language
16 * (and anything else that is not in a statement).
17 *
18 * @license GPL-2.0-or-later
19 */
20class LexemeStatementEntityReferenceExtractor implements EntityReferenceExtractor {
21
22    private $statementRefExtractor;
23    private $formStatementRefExtractor;
24    private $senseStatementRefExtractor;
25
26    public function __construct(
27        StatementEntityReferenceExtractor $statementRefExtractor,
28        FormsStatementEntityReferenceExtractor $formStatementRefExtractor,
29        SensesStatementEntityReferenceExtractor $senseStatementRefExtractor
30    ) {
31        $this->statementRefExtractor = $statementRefExtractor;
32        $this->formStatementRefExtractor = $formStatementRefExtractor;
33        $this->senseStatementRefExtractor = $senseStatementRefExtractor;
34    }
35
36    /**
37     * @param EntityDocument $lexeme
38     * @return EntityId[]
39     */
40    public function extractEntityIds( EntityDocument $lexeme ) {
41        Assert::parameterType( Lexeme::class, $lexeme, '$lexeme' );
42        '@phan-var Lexeme $lexeme';
43
44        return array_merge(
45            $this->statementRefExtractor->extractEntityIds( $lexeme ),
46            $this->formStatementRefExtractor->extractEntityIds( $lexeme ),
47            $this->senseStatementRefExtractor->extractEntityIds( $lexeme )
48        );
49    }
50
51}