for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Wikibase\DataModel\Services\Diff;
use Diff\Differ\MapDiffer;
use Diff\DiffOp\Diff\Diff;
use UnexpectedValueException;
use Wikibase\DataModel\Statement\Statement;
use Wikibase\DataModel\Statement\StatementList;
/**
* @since 3.6
*
* @license GPL-2.0+
* @author Jeroen De Dauw < [email protected] >
*/
class StatementListDiffer {
* @since 1.0
* @param StatementList $fromStatements
* @param StatementList $toStatements
* @return Diff
* @throws UnexpectedValueException
public function getDiff( StatementList $fromStatements, StatementList $toStatements ) {
return new Diff(
$this->newDiffer()->doDiff(
$this->toDiffArray( $fromStatements ),
$this->toDiffArray( $toStatements )
),
true
);
}
private function newDiffer() {
$differ = new MapDiffer();
$differ->setComparisonCallback( function( Statement $fromStatement, Statement $toStatement ) {
return $fromStatement->equals( $toStatement );
} );
return $differ;
private function toDiffArray( StatementList $statementList ) {
$statementArray = array();
* @var Statement $statement
foreach ( $statementList as $statement ) {
$statementArray[$statement->getGuid()] = $statement;
return $statementArray;