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

Reply via email to