summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticMediaWiki/src/Services/DataValueServices.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/src/Services/DataValueServices.php')
-rw-r--r--www/wiki/extensions/SemanticMediaWiki/src/Services/DataValueServices.php310
1 files changed, 310 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/src/Services/DataValueServices.php b/www/wiki/extensions/SemanticMediaWiki/src/Services/DataValueServices.php
new file mode 100644
index 00000000..99b399b9
--- /dev/null
+++ b/www/wiki/extensions/SemanticMediaWiki/src/Services/DataValueServices.php
@@ -0,0 +1,310 @@
+<?php
+
+namespace SMW\Services;
+
+use SMW\DataValues\AllowsListValue;
+use SMW\DataValues\AllowsPatternValue;
+use SMW\DataValues\ImportValue;
+use SMW\DataValues\MonolingualTextValue;
+use SMW\DataValues\ReferenceValue;
+use SMW\DataValues\StringValue;
+use SMW\DataValues\ValueFormatters\CodeStringValueFormatter;
+use SMW\DataValues\ValueFormatters\MonolingualTextValueFormatter;
+use SMW\DataValues\ValueFormatters\NumberValueFormatter;
+use SMW\DataValues\ValueFormatters\PropertyValueFormatter;
+use SMW\DataValues\ValueFormatters\ReferenceValueFormatter;
+use SMW\DataValues\ValueFormatters\StringValueFormatter;
+use SMW\DataValues\ValueFormatters\TimeValueFormatter;
+use SMW\DataValues\ValueParsers\AllowsListValueParser;
+use SMW\DataValues\ValueParsers\AllowsPatternValueParser;
+use SMW\DataValues\ValueParsers\ImportValueParser;
+use SMW\DataValues\ValueParsers\MonolingualTextValueParser;
+use SMW\DataValues\ValueParsers\PropertyValueParser;
+use SMW\DataValues\ValueParsers\TimeValueParser;
+use SMW\DataValues\ValueValidators\AllowsListConstraintValueValidator;
+use SMW\DataValues\ValueValidators\CompoundConstraintValueValidator;
+use SMW\DataValues\ValueValidators\PatternConstraintValueValidator;
+use SMW\DataValues\ValueValidators\PropertySpecificationConstraintValueValidator;
+use SMW\DataValues\ValueValidators\UniquenessConstraintValueValidator;
+use SMWNumberValue as NumberValue;
+use SMWPropertyValue as PropertyValue;
+use SMWQuantityValue as QuantityValue;
+use SMWTimeValue as TimeValue;
+use SMW\Site;
+
+/**
+ * @codeCoverageIgnore
+ *
+ * Services defined in this file SHOULD only be accessed via DataValueServiceFactory
+ * with services being expected to require a prefix to match each individual instance
+ * to a specific DataValue.
+ *
+ * @license GNU GPL v2+
+ * @since 2.5
+ *
+ * @author mwjames
+ */
+return [
+
+ /**
+ * PropertyValueParser
+ *
+ * @return callable
+ */
+ DataValueServiceFactory::TYPE_PARSER . PropertyValue::TYPE_ID => function( $containerBuilder ) {
+
+ $containerBuilder->registerExpectedReturnType(
+ DataValueServiceFactory::TYPE_PARSER . PropertyValue::TYPE_ID,
+ PropertyValueParser::class
+ );
+
+ $propertyValueParser = new PropertyValueParser();
+
+ $propertyValueParser->setInvalidCharacterList(
+ $containerBuilder->singleton( 'Settings' )->get( 'smwgPropertyInvalidCharacterList' )
+ );
+
+ $propertyValueParser->isCapitalLinks(
+ Site::isCapitalLinks()
+ );
+
+ return $propertyValueParser;
+ },
+
+ /**
+ * PropertyValueFormatter
+ *
+ * @return callable
+ */
+ DataValueServiceFactory::TYPE_FORMATTER . PropertyValue::TYPE_ID => function( $containerBuilder ) {
+
+ $containerBuilder->registerExpectedReturnType(
+ DataValueServiceFactory::TYPE_FORMATTER . PropertyValue::TYPE_ID,
+ PropertyValueFormatter::class
+ );
+
+ return new PropertyValueFormatter( $containerBuilder->singleton( 'PropertySpecificationLookup' ) );
+ },
+
+ /**
+ * AllowsPatternValueParser
+ *
+ * @return callable
+ */
+ DataValueServiceFactory::TYPE_PARSER . AllowsPatternValue::TYPE_ID => function( $containerBuilder ) {
+
+ $containerBuilder->registerExpectedReturnType(
+ DataValueServiceFactory::TYPE_PARSER . AllowsPatternValue::TYPE_ID,
+ AllowsPatternValueParser::class
+ );
+
+ return new AllowsPatternValueParser( $containerBuilder->singleton( 'MediaWikiNsContentReader' ) );
+ },
+
+ /**
+ * AllowsListValueParser
+ *
+ * @return callable
+ */
+ DataValueServiceFactory::TYPE_PARSER . AllowsListValue::TYPE_ID => function( $containerBuilder ) {
+
+ $containerBuilder->registerExpectedReturnType(
+ DataValueServiceFactory::TYPE_PARSER . AllowsListValue::TYPE_ID,
+ AllowsListValueParser::class
+ );
+
+ return new AllowsListValueParser( $containerBuilder->singleton( 'MediaWikiNsContentReader' ) );
+ },
+
+ /**
+ * CompoundConstraintValueValidator
+ *
+ * @return callable
+ */
+ DataValueServiceFactory::TYPE_VALIDATOR . 'CompoundConstraintValueValidator' => function( $containerBuilder ) {
+
+ $containerBuilder->registerExpectedReturnType(
+ DataValueServiceFactory::TYPE_VALIDATOR . 'CompoundConstraintValueValidator',
+ CompoundConstraintValueValidator::class
+ );
+
+ $compoundConstraintValueValidator = new CompoundConstraintValueValidator();
+
+ // Any registered ConstraintValueValidator becomes weaker(diminished) in the context
+ // of a preceding validator
+ $compoundConstraintValueValidator->registerConstraintValueValidator(
+ new UniquenessConstraintValueValidator(
+ $containerBuilder->singleton( 'Store' ),
+ $containerBuilder->singleton( 'PropertySpecificationLookup' )
+ )
+ );
+
+ $patternConstraintValueValidator = new PatternConstraintValueValidator(
+ $containerBuilder->create( DataValueServiceFactory::TYPE_PARSER . AllowsPatternValue::TYPE_ID )
+ );
+
+ $compoundConstraintValueValidator->registerConstraintValueValidator(
+ $patternConstraintValueValidator
+ );
+
+ $allowsListConstraintValueValidator = new AllowsListConstraintValueValidator(
+ $containerBuilder->create( DataValueServiceFactory::TYPE_PARSER . AllowsListValue::TYPE_ID ),
+ $containerBuilder->singleton( 'PropertySpecificationLookup' )
+ );
+
+ $compoundConstraintValueValidator->registerConstraintValueValidator(
+ $allowsListConstraintValueValidator
+ );
+
+ $compoundConstraintValueValidator->registerConstraintValueValidator(
+ new PropertySpecificationConstraintValueValidator()
+ );
+
+ return $compoundConstraintValueValidator;
+ },
+
+ /**
+ * ImportValueParser
+ *
+ * @return callable
+ */
+ DataValueServiceFactory::TYPE_PARSER . ImportValue::TYPE_ID => function( $containerBuilder ) {
+
+ $containerBuilder->registerExpectedReturnType(
+ DataValueServiceFactory::TYPE_PARSER . ImportValue::TYPE_ID,
+ ImportValueParser::class
+ );
+
+ return new ImportValueParser( $containerBuilder->singleton( 'MediaWikiNsContentReader' ) );
+ },
+
+ /**
+ * StringValueFormatter
+ *
+ * @return callable
+ */
+ DataValueServiceFactory::TYPE_FORMATTER . StringValue::TYPE_ID => function( $containerBuilder ) {
+
+ $containerBuilder->registerExpectedReturnType(
+ DataValueServiceFactory::TYPE_FORMATTER . StringValue::TYPE_ID,
+ StringValueFormatter::class
+ );
+
+ $containerBuilder->registerAlias(
+ DataValueServiceFactory::TYPE_FORMATTER . StringValue::TYPE_ID,
+ DataValueServiceFactory::TYPE_FORMATTER . StringValue::TYPE_LEGACY_ID
+ );
+
+ return new StringValueFormatter();
+ },
+
+ /**
+ * CodeStringValueFormatter
+ *
+ * @return callable
+ */
+ DataValueServiceFactory::TYPE_FORMATTER . StringValue::TYPE_COD_ID => function( $containerBuilder ) {
+
+ $containerBuilder->registerExpectedReturnType(
+ DataValueServiceFactory::TYPE_FORMATTER . StringValue::TYPE_COD_ID,
+ CodeStringValueFormatter::class
+ );
+
+ return new CodeStringValueFormatter();
+ },
+
+ /**
+ * ReferenceValueFormatter
+ *
+ * @return callable
+ */
+ DataValueServiceFactory::TYPE_FORMATTER . ReferenceValue::TYPE_ID => function( $containerBuilder ) {
+
+ $containerBuilder->registerExpectedReturnType(
+ DataValueServiceFactory::TYPE_FORMATTER . ReferenceValue::TYPE_ID,
+ ReferenceValueFormatter::class
+ );
+
+ return new ReferenceValueFormatter();
+ },
+
+ /**
+ * MonolingualTextValueParser
+ *
+ * @return callable
+ */
+ DataValueServiceFactory::TYPE_PARSER . MonolingualTextValue::TYPE_ID => function( $containerBuilder ) {
+
+ $containerBuilder->registerExpectedReturnType(
+ DataValueServiceFactory::TYPE_PARSER . MonolingualTextValue::TYPE_ID,
+ MonolingualTextValueParser::class
+ );
+
+ return new MonolingualTextValueParser();
+ },
+
+ /**
+ * MonolingualTextValueFormatter
+ *
+ * @return callable
+ */
+ DataValueServiceFactory::TYPE_FORMATTER . MonolingualTextValue::TYPE_ID => function( $containerBuilder ) {
+
+ $containerBuilder->registerExpectedReturnType(
+ DataValueServiceFactory::TYPE_FORMATTER . MonolingualTextValue::TYPE_ID,
+ MonolingualTextValueFormatter::class
+ );
+
+ return new MonolingualTextValueFormatter();
+ },
+
+ /**
+ * NumberValueFormatter
+ *
+ * @return callable
+ */
+ DataValueServiceFactory::TYPE_FORMATTER . QuantityValue::TYPE_ID => function( $containerBuilder ) {
+ return $containerBuilder->create( DataValueServiceFactory::TYPE_FORMATTER . NumberValue::TYPE_ID );
+ },
+
+ DataValueServiceFactory::TYPE_FORMATTER . NumberValue::TYPE_ID => function( $containerBuilder ) {
+
+ $containerBuilder->registerExpectedReturnType(
+ DataValueServiceFactory::TYPE_FORMATTER . NumberValue::TYPE_ID,
+ NumberValueFormatter::class
+ );
+
+ return new NumberValueFormatter();
+ },
+
+ /**
+ * TimeValueFormatter
+ *
+ * @return callable
+ */
+ DataValueServiceFactory::TYPE_FORMATTER . TimeValue::TYPE_ID => function( $containerBuilder ) {
+
+ $containerBuilder->registerExpectedReturnType(
+ DataValueServiceFactory::TYPE_FORMATTER . TimeValue::TYPE_ID,
+ TimeValueFormatter::class
+ );
+
+ return new TimeValueFormatter();
+ },
+
+ /**
+ * TimeValueParser
+ *
+ * @return callable
+ */
+ DataValueServiceFactory::TYPE_PARSER . TimeValue::TYPE_ID => function( $containerBuilder ) {
+
+ $containerBuilder->registerExpectedReturnType(
+ DataValueServiceFactory::TYPE_PARSER . TimeValue::TYPE_ID,
+ TimeValueParser::class
+ );
+
+ return new TimeValueParser();
+ },
+
+];