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