Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
ZObjectContentDifferenceEngine
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 1
 generateContentDiffBody
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2/**
3 * WikiLambda ZObjectContentDifferenceEngine
4 *
5 * @file
6 * @ingroup Extensions
7 * @copyright 2020– Abstract Wikipedia team; see AUTHORS.txt
8 * @license MIT
9 */
10
11namespace MediaWiki\Extension\WikiLambda\Diff;
12
13use MediaWiki\Content\Content;
14use MediaWiki\Context\RequestContext;
15use MediaWiki\Diff\DifferenceEngine;
16use MediaWiki\Diff\TextSlotDiffRenderer;
17use MediaWiki\Extension\WikiLambda\ZObjectContent;
18use MediaWiki\Extension\WikiLambda\ZObjectContentHandler;
19
20class ZObjectContentDifferenceEngine extends DifferenceEngine {
21
22    /**
23     * @inheritDoc
24     */
25    public function generateContentDiffBody( Content $oldContent, Content $newContent ) {
26        if ( !( $oldContent instanceof ZObjectContent && $newContent instanceof ZObjectContent ) ) {
27            $this->getOutput()->showErrorPage( 'errorpagetitle', 'wikilambda-diff-incompatible' );
28            return '';
29        }
30
31        // TODO (T284473): Instead of this text diff, generate and return html body of the diff page
32        // $slotRenderer = new ZObjectSlotDiffRenderer();
33        // $diffObject = $slotRenderer->getDiff( $oldContent, $newContent );
34
35        // HACK (T339348): For now, provide users with the raw JSON diff
36        $oldText = $oldContent->getText();
37        $newText = $newContent->getText();
38
39        $zObjectContentHandler = $newContent->getContentHandler();
40        '@phan-var ZObjectContentHandler $zObjectContentHandler';
41
42        $slotDiffRenderer = $zObjectContentHandler
43            ->getSlotDiffRendererWithOptions( RequestContext::getMain() );
44        '@phan-var TextSlotDiffRenderer $slotDiffRenderer';
45
46        return $slotDiffRenderer->getTextDiff( $oldText, $newText );
47    }
48}