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) <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits