WMDE-leszek has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/356572 )
Change subject: Add Sense and SenseId ...................................................................... Add Sense and SenseId Also add sense list to the Lexeme entity Change-Id: Ib32df4facf7f6dc0f9444a3aad78705fb0d51fe5 --- M src/DataModel/Lexeme.php A src/DataModel/Sense.php A src/DataModel/SenseId.php A tests/phpunit/composer/DataModel/SenseIdTest.php A tests/phpunit/composer/DataModel/SenseTest.php 5 files changed, 134 insertions(+), 1 deletion(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseLexeme refs/changes/72/356572/1 diff --git a/src/DataModel/Lexeme.php b/src/DataModel/Lexeme.php index a4ea244..ea802a7 100644 --- a/src/DataModel/Lexeme.php +++ b/src/DataModel/Lexeme.php @@ -49,6 +49,11 @@ private $forms; /** + * @var Sense[] + */ + private $senses; + + /** * Note that $lexicalCategory and $language can only be null during construction time. Their * setters can not be called with null, and their getters will throw an exception if the * corresponding field was never initialized. @@ -59,6 +64,7 @@ * @param ItemId|null $language * @param StatementList|null $statements * @param LexemeForm[] $forms + * @oaram Sense[] $senses */ public function __construct( LexemeId $id = null, @@ -66,7 +72,8 @@ ItemId $lexicalCategory = null, ItemId $language = null, StatementList $statements = null, - array $forms = [] + array $forms = [], + array $senses = [] ) { $this->id = $id; $this->lemmas = $lemmas ?: new TermList(); @@ -74,6 +81,7 @@ $this->language = $language; $this->statements = $statements ?: new StatementList(); $this->forms = $forms; + $this->senses = $senses; } /** @@ -241,6 +249,13 @@ } /** + * @return Sense[] + */ + public function getSenses() { + return $this->senses; + } + + /** * @return bool False if a non-optional field was never initialized, true otherwise. */ public function isSufficientlyInitialized() { diff --git a/src/DataModel/Sense.php b/src/DataModel/Sense.php new file mode 100644 index 0000000..658a417 --- /dev/null +++ b/src/DataModel/Sense.php @@ -0,0 +1,38 @@ +<?php + +namespace Wikibase\Lexeme\DataModel; + +use Wikibase\DataModel\Statement\StatementList; +use Wikibase\DataModel\Term\TermList; + +/** + * @license GPL-2.0+ + * TODO: implement EntityDocument? + */ +class Sense { + + private $id; + + private $glossList; + + private $statementList; + + public function __construct( SenseId $id, TermList $glossList, StatementList $statementList ) { + $this->id = $id; + $this->glossList = $glossList; // TODO: check there is at least gloss in one language provided + $this->statementList = $statementList; + } + + public function getId() { + return $this->id; + } + + public function getGlosses() { + return $this->glossList; + } + + public function getStatements() { + return $this->statementList; + } + +} diff --git a/src/DataModel/SenseId.php b/src/DataModel/SenseId.php new file mode 100644 index 0000000..f11a9da --- /dev/null +++ b/src/DataModel/SenseId.php @@ -0,0 +1,30 @@ +<?php + +namespace Wikibase\Lexeme\DataModel; + +/** + * @license GPL-2.0+ + * TODO: implement EntityId? + */ +class SenseId { + + /** + * @var string + */ + private $serialization; + + /** + * @param string $serialization + */ + public function __construct( $serialization ) { + $this->serialization = $serialization; + } + + /** + * @return string + */ + public function getSerialization() { + return $this->serialization; + } + +} diff --git a/tests/phpunit/composer/DataModel/SenseIdTest.php b/tests/phpunit/composer/DataModel/SenseIdTest.php new file mode 100644 index 0000000..0139029 --- /dev/null +++ b/tests/phpunit/composer/DataModel/SenseIdTest.php @@ -0,0 +1,22 @@ +<?php + +namespace Wikibase\Lexeme\Tests\DataModel; + +use Wikibase\Lexeme\DataModel\SenseId; + +/** + * @covers Wikibase\Lexeme\DataModel\SenseId + * + * @group WikibaseLexeme + * + * @license GPL-2.0+ + */ +class SenseIdTest extends \PHPUnit_Framework_TestCase { + + public function testCanBeCreated() { + $id = new SenseId( 'L123-S1' ); + + $this->assertSame( 'L123-S1', $id->getSerialization() ); + } + +} diff --git a/tests/phpunit/composer/DataModel/SenseTest.php b/tests/phpunit/composer/DataModel/SenseTest.php new file mode 100644 index 0000000..62afcfa --- /dev/null +++ b/tests/phpunit/composer/DataModel/SenseTest.php @@ -0,0 +1,28 @@ +<?php + + +namespace Wikibase\Lexeme\Tests\DataModel; + +use Wikibase\DataModel\Statement\StatementList; +use Wikibase\DataModel\Term\TermList; +use Wikibase\Lexeme\DataModel\Sense; +use Wikibase\Lexeme\DataModel\SenseId; + +/** + * @covers Wikibase\Lexeme\DataModel\Sense + * + * @group WikibaseLexeme + * + * @license GPL-2.0+ + */ +class SenseTest extends \PHPUnit_Framework_TestCase { + + public function testCanBeCreated() { + $sense = new Sense( new SenseId( 'L1-S1' ), new TermList(), new StatementList() ); + + $this->assertSame( 'L1-S1', $sense->getId()->getSerialization() ); + $this->assertTrue( $sense->getGlosses()->isEmpty() ); + $this->assertTrue( $sense->getStatements()->isEmpty() ); + } + +} -- To view, visit https://gerrit.wikimedia.org/r/356572 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib32df4facf7f6dc0f9444a3aad78705fb0d51fe5 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/WikibaseLexeme Gerrit-Branch: master Gerrit-Owner: WMDE-leszek <leszek.mani...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits