Adrian Lang has uploaded a new change for review. https://gerrit.wikimedia.org/r/130337
Change subject: Add monolingual-text data type to experimental features ...................................................................... Add monolingual-text data type to experimental features We still need parsers, formatters and the frontend. Change-Id: I3aeeb935d685e3eda16b44d21af0ac3f2a84872c --- M lib/config/WikibaseLib.default.php M lib/includes/WikibaseDataTypeBuilders.php 2 files changed, 33 insertions(+), 4 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/37/130337/1 diff --git a/lib/config/WikibaseLib.default.php b/lib/config/WikibaseLib.default.php index c4be0fc..369eba9 100644 --- a/lib/config/WikibaseLib.default.php +++ b/lib/config/WikibaseLib.default.php @@ -115,12 +115,10 @@ // experimental stuff if ( defined( 'WB_EXPERIMENTAL_FEATURES' ) && WB_EXPERIMENTAL_FEATURES ) { // experimental data types - /* $defaults['dataTypes'] = array_merge( $defaults['dataTypes'], array( - //'monolingual-text', + 'monolingual-text', //'multilingual-text', ) ); - */ } return $defaults; diff --git a/lib/includes/WikibaseDataTypeBuilders.php b/lib/includes/WikibaseDataTypeBuilders.php index aef75e7..9c3895e 100644 --- a/lib/includes/WikibaseDataTypeBuilders.php +++ b/lib/includes/WikibaseDataTypeBuilders.php @@ -4,12 +4,14 @@ use DataTypes\DataType; use DataValues\TimeValue; +use Wikibase\Utils; use Wikibase\DataModel\Entity\EntityIdParser; use Wikibase\EntityLookup; use Wikibase\Validators\CompositeValidator; use Wikibase\Validators\DataFieldValidator; use Wikibase\Validators\DataValueValidator; use Wikibase\Validators\EntityExistsValidator; +use Wikibase\Validators\MembershipValidator; use Wikibase\Validators\NumberRangeValidator; use Wikibase\Validators\NumberValidator; use Wikibase\Validators\RegexValidator; @@ -79,7 +81,7 @@ ); $experimental = array( - // 'monolingual-text' => array( $this, 'buildMonolingualTextType' ), + 'monolingual-text' => array( $this, 'buildMonolingualTextType' ), // 'multilingual-text' => array( $this, 'buildMultilingualTextType' ), ); @@ -134,6 +136,35 @@ return new DataType( $id, 'string', array( new TypeValidator( 'DataValues\DataValue' ), $topValidator ) ); } + public function buildMonolingualTextType( $id ) { + $validators = array(); + + $validators[] = new TypeValidator( 'string' ); + //TODO: validate UTF8 (here and elsewhere) + $validators[] = new StringLengthValidator( 1, 400, 'mb_strlen' ); + $validators[] = new RegexValidator( '/^\s|[\r\n\t]|\s$/', true ); // no leading/trailing whitespace, no line breaks. + + $textValidator = new DataFieldValidator( + 'text', + new CompositeValidator( $validators, true ) //Note: each validator is fatal + ); + + $validators = array(); + $validators[] = new MembershipValidator( Utils::getLanguageCodes() ); + + $languageValidator = new DataFieldValidator( + 'language', + new CompositeValidator( $validators, true ) + ); + + $topValidator = new CompositeValidator( + array( $textValidator, $languageValidator ), + true + ); + + return new DataType( $id, 'monolingual-text', array( new TypeValidator( 'DataValues\DataValue' ), $topValidator ) ); + } + public function buildTimeType( $id ) { $validators = array(); $validators[] = new TypeValidator( 'array' ); -- To view, visit https://gerrit.wikimedia.org/r/130337 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3aeeb935d685e3eda16b44d21af0ac3f2a84872c Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Adrian Lang <adrian.l...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits