jenkins-bot has submitted this change and it was merged. (
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, 154 insertions(+), 1 deletion(-)
Approvals:
Aleksey Bekh-Ivanov (WMDE): Looks good to me, approved
jenkins-bot: Verified
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..bf48aab
--- /dev/null
+++ b/src/DataModel/Sense.php
@@ -0,0 +1,57 @@
+<?php
+
+namespace Wikibase\Lexeme\DataModel;
+
+use Wikibase\DataModel\Statement\StatementList;
+use Wikibase\DataModel\Term\TermList;
+
+/**
+ * A sense of a Lexeme.
+ *
+ * @license GPL-2.0+
+ */
+class Sense {
+
+ /**
+ * @var SenseId
+ */
+ private $id;
+
+ /**
+ * @var TermList
+ */
+ private $glossList;
+
+ /**
+ * @var StatementList
+ */
+ 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;
+ }
+
+ /**
+ * @return SenseId
+ */
+ public function getId() {
+ return $this->id;
+ }
+
+ /**
+ * @return TermList
+ */
+ public function getGlosses() {
+ return $this->glossList;
+ }
+
+ /**
+ * @return StatementList
+ */
+ public function getStatements() {
+ return $this->statementList;
+ }
+
+}
diff --git a/src/DataModel/SenseId.php b/src/DataModel/SenseId.php
new file mode 100644
index 0000000..61e8060
--- /dev/null
+++ b/src/DataModel/SenseId.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace Wikibase\Lexeme\DataModel;
+
+/**
+ * An ID of a sense of a lexeme.
+ *
+ * @license GPL-2.0+
+ */
+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..0f12f74
--- /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( 'S1' );
+
+ $this->assertSame( '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..9de2681
--- /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( 'S1' ), new TermList(), new
StatementList() );
+
+ $this->assertSame( '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: merged
Gerrit-Change-Id: Ib32df4facf7f6dc0f9444a3aad78705fb0d51fe5
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/WikibaseLexeme
Gerrit-Branch: master
Gerrit-Owner: WMDE-leszek <[email protected]>
Gerrit-Reviewer: Aleksey Bekh-Ivanov (WMDE) <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: Jakob <[email protected]>
Gerrit-Reviewer: Ladsgroup <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: WMDE-leszek <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits