Thiemo Mättig (WMDE) has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/178967

Change subject: Reduce non-functional validator nesting
......................................................................

Reduce non-functional validator nesting

... mainly removing composite validators that contain a single
validator only.

Change-Id: Ia42f7022d495bd89fa5ab407ffaed14147eee073
---
M lib/includes/WikibaseDataTypeBuilders.php
1 file changed, 21 insertions(+), 35 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/67/178967/1

diff --git a/lib/includes/WikibaseDataTypeBuilders.php 
b/lib/includes/WikibaseDataTypeBuilders.php
index 1aa3a29..90f7ee4 100644
--- a/lib/includes/WikibaseDataTypeBuilders.php
+++ b/lib/includes/WikibaseDataTypeBuilders.php
@@ -203,19 +203,21 @@
         * @return DataType
         */
        public function buildMonolingualTextType( $id ) {
-               $textValidator = new DataFieldValidator(
+               $validators = array();
+
+               $validators[] = new DataFieldValidator(
                        'text',
                        new CompositeValidator( 
$this->getCommonStringValidators() ) //Note: each validator is fatal
                );
 
-               $languageValidator = new DataFieldValidator(
+               $validators[] = new DataFieldValidator(
                        'language',
                        new MembershipValidator( Utils::getLanguageCodes() )
                );
 
-               $topValidator = new DataValueValidator( new CompositeValidator(
-                       array( $textValidator, $languageValidator )
-               ) );
+               $topValidator = new DataValueValidator(
+                       new CompositeValidator( $validators ) //Note: each 
validator is fatal
+               );
 
                return new DataType( $id, 'monolingualtext', array( new 
TypeValidator( 'DataValues\DataValue' ), $topValidator ) );
        }
@@ -229,16 +231,11 @@
                $validators = array();
                $validators[] = new TypeValidator( 'array' );
 
-               // calendar model field
-               $calendarIdValidators = array();
                // Expected to be a short IRI, see TimeFormatter and TimeParser.
-               $calendarIdValidators[] = $urlValidator = 
$this->buildUrlValidator( array( 'http', 'https' ), 255 );
+               $urlValidator = $this->buildUrlValidator( array( 'http', 
'https' ), 255 );
                //TODO: enforce well known calendar models from config
 
-               $validators[] = new DataFieldValidator(
-                       'calendarmodel',
-                       new CompositeValidator( $calendarIdValidators ) //Note: 
each validator is fatal
-               );
+               $validators[] = new DataFieldValidator( 'calendarmodel', 
$urlValidator );
 
                // time string field
                $timeStringValidators = array();
@@ -284,23 +281,13 @@
                $validators = array();
                $validators[] = new TypeValidator( 'array' );
 
-               $globeIdValidators = array();
                // Expected to be a short IRI, see GlobeCoordinateValue and 
GlobeCoordinateParser.
-               $globeIdValidators[] = $urlValidator = 
$this->buildUrlValidator( array( 'http', 'https' ), 255 );
+               $urlValidator = $this->buildUrlValidator( array( 'http', 
'https' ), 255 );
                //TODO: enforce well known reference globes from config
 
-               $precisionValidators = array();
-               $precisionValidators[] = new NumberValidator();
+               $validators[] = new DataFieldValidator( 'precision', new 
NumberValidator() );
 
-               $validators[] = new DataFieldValidator(
-                       'precision',
-                       new CompositeValidator( $precisionValidators )
-               );
-
-               $validators[] = new DataFieldValidator(
-                       'globe',
-                       new CompositeValidator( $globeIdValidators ) //Note: 
each validator is fatal
-               );
+               $validators[] = new DataFieldValidator( 'globe', $urlValidator 
);
 
                $topValidator = new DataValueValidator(
                        new CompositeValidator( $validators ) //Note: each 
validator is fatal
@@ -318,6 +305,7 @@
         * @return CompositeValidator
         */
        public function buildUrlValidator( $urlSchemes, $maxLength = 500 ) {
+               $validators = array();
                $validators[] = new TypeValidator( 'string' );
                $validators[] = new StringLengthValidator( 2, $maxLength );
 
@@ -355,16 +343,14 @@
                // the 'amount' field is already validated by QuantityValue's 
constructor
                // the 'digits' field is already validated by QuantityValue's 
constructor
 
-               $validators[] = new DataFieldValidator(
-                       'unit',
-                       new AlternativeValidator( array (
-                               // NOTE: "1" is always considered legal for 
historical reasons,
-                               // since we use it to represent "unitless" 
quantities. We could also use
-                               // http://qudt.org/vocab/unit#Unitless or 
https://www.wikidata.org/entity/Q199
-                               new MembershipValidator( array( '1' ) ),
-                               $this->buildUrlValidator( array( 'http', 
'https' ), 255 ),
-                       ) )
-               );
+               $unitValidators = new AlternativeValidator( array(
+                       // NOTE: "1" is always considered legal for historical 
reasons,
+                       // since we use it to represent "unitless" quantities. 
We could also use
+                       // http://qudt.org/vocab/unit#Unitless or 
https://www.wikidata.org/entity/Q199
+                       new MembershipValidator( array( '1' ) ),
+                       $this->buildUrlValidator( array( 'http', 'https' ), 255 
),
+               ) );
+               $validators[] = new DataFieldValidator( 'unit', $unitValidators 
);
 
                $topValidator = new DataValueValidator(
                        new CompositeValidator( $validators ) //Note: each 
validator is fatal

-- 
To view, visit https://gerrit.wikimedia.org/r/178967
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia42f7022d495bd89fa5ab407ffaed14147eee073
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to