Jonas Kress (WMDE) has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/363582 )
Change subject: Override datatype VT:wikibase-entityid and inject fake formatter ...................................................................... Override datatype VT:wikibase-entityid and inject fake formatter Overrides datatype for entityid and inject a fake formatter when formatting HTML, so we can replace entity HTML link with fake one Change-Id: If4268c52f8d8b76be57e102e95becb8edd7a2f25 --- M WikibaseLexeme.datatypes.php 1 file changed, 50 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseLexeme refs/changes/82/363582/1 diff --git a/WikibaseLexeme.datatypes.php b/WikibaseLexeme.datatypes.php index 7d27897..5887c73 100644 --- a/WikibaseLexeme.datatypes.php +++ b/WikibaseLexeme.datatypes.php @@ -16,17 +16,64 @@ * * @license GPL-2.0+ */ - +use ValueFormatters\FormatterOptions; +use ValueFormatters\ValueFormatter; use Wikibase\Lexeme\DataModel\Lexeme; +use Wikibase\Lib\SnakFormatter; +use Wikibase\Rdf\DedupeBag; +use Wikibase\Rdf\EntityMentionListener; +use Wikibase\Rdf\RdfVocabulary; +use Wikibase\Rdf\Values\EntityIdRdfBuilder; use Wikibase\Repo\WikibaseRepo; +use Wikibase\Repo\Parsers\EntityIdValueParser; +use Wikimedia\Purtle\RdfWriter; + +$newEntityIdParser = function ( ParserOptions $options ) { + $repo = WikibaseRepo::getDefaultInstance(); + return new EntityIdValueParser( $repo->getEntityIdParser() ); +}; + +class FakeEntityIdFormatter implements ValueFormatter { + private $formatter; + + public function __construct( ValueFormatter $formatter ) { + $this->formatter = $formatter; + } + + public function format( $value ) { + $html = $this->formatter->format( $value ); + return preg_replace( '/href="(.*?)"/', 'href="./Lexeme:L11#F1"', $html ); + } +} return [ 'PT:wikibase-lexeme' => [ 'expert-module' => 'wikibase.experts.Lexeme', - 'validator-factory-callback' => function() { + 'validator-factory-callback' => function () { $factory = WikibaseRepo::getDefaultValidatorBuilders(); return $factory->getEntityValidators( Lexeme::ENTITY_TYPE ); }, - 'value-type' => 'wikibase-entityid', + 'value-type' => 'wikibase-entityid' ], + 'VT:wikibase-entityid' => [ // TODO: remove this section + 'validator-factory-callback' => function () { + $factory = WikibaseRepo::getDefaultValidatorBuilders(); + return $factory->buildEntityValidators(); + }, + 'parser-factory-callback' => $newEntityIdParser, + 'formatter-factory-callback' => function ( $format, FormatterOptions $options ) { + $factory = WikibaseRepo::getDefaultValueFormatterBuilders(); + + if ( $format === SnakFormatter::FORMAT_HTML ) { + return new FakeEntityIdFormatter( + $factory->newEntityIdFormatter( $format, $options ) ); + } + + return $factory->newEntityIdFormatter( $format, $options ); + }, + 'rdf-builder-factory-callback' => function ( $flags, RdfVocabulary $vocab, RdfWriter $writer, + EntityMentionListener $tracker, DedupeBag $dedupe ) { + return new EntityIdRdfBuilder( $vocab, $tracker ); + } + ] ]; -- To view, visit https://gerrit.wikimedia.org/r/363582 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If4268c52f8d8b76be57e102e95becb8edd7a2f25 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/WikibaseLexeme Gerrit-Branch: master Gerrit-Owner: Jonas Kress (WMDE) <jonas.kr...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits