Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4126120
Diff.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
Diff.php
View Options
<?php
/**
* A PHP diff engine for phpwiki. (Taken from phpwiki-1.3.3)
*
* Copyright © 2000, 2001 Geoffrey T. Dairiki <dairiki@dairiki.org>
* You may copy this code freely under the conditions of the GPL.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
* @ingroup DifferenceEngine
*/
namespace
Wikimedia\Diff
;
/**
* Class representing a 'diff' between two sequences of strings.
* @newable
* @ingroup DifferenceEngine
*/
class
Diff
{
/**
* @var DiffOp[]
*/
public
$edits
;
/**
* @var int If this diff complexity is exceeded, a ComplexityException is thrown
* 0 means no limit.
*/
protected
$bailoutComplexity
=
0
;
/**
* Computes diff between sequences of strings.
*
* @stable to call
* @todo Don't do work in the constructor, use a service to create diffs instead (T257472).
*
* @param string[] $from_lines An array of strings.
* Typically these are lines from a file.
* @param string[] $to_lines An array of strings.
* @throws ComplexityException
*/
public
function
__construct
(
$from_lines
,
$to_lines
)
{
$eng
=
new
DiffEngine
;
$eng
->
setBailoutComplexity
(
$this
->
bailoutComplexity
);
$this
->
edits
=
$eng
->
diff
(
$from_lines
,
$to_lines
);
}
/**
* @return DiffOp[]
*/
public
function
getEdits
()
{
return
$this
->
edits
;
}
/**
* Compute reversed Diff.
*
* SYNOPSIS:
*
* $diff = new Diff($lines1, $lines2);
* $rev = $diff->reverse();
*
* @return self A Diff object representing the inverse of the
* original diff.
*/
public
function
reverse
()
{
$rev
=
$this
;
$rev
->
edits
=
[];
/** @var DiffOp $edit */
foreach
(
$this
->
edits
as
$edit
)
{
$rev
->
edits
[]
=
$edit
->
reverse
();
}
return
$rev
;
}
/**
* Check for empty diff.
*
* @return bool True if two sequences were identical.
*/
public
function
isEmpty
()
{
foreach
(
$this
->
edits
as
$edit
)
{
if
(
$edit
->
type
!=
'copy'
)
{
return
false
;
}
}
return
true
;
}
/**
* Compute the length of the Longest Common Subsequence (LCS).
*
* This is mostly for diagnostic purposed.
*
* @return int The length of the LCS.
*/
public
function
lcs
()
{
$lcs
=
0
;
foreach
(
$this
->
edits
as
$edit
)
{
if
(
$edit
->
type
==
'copy'
)
{
$lcs
+=
count
(
$edit
->
orig
);
}
}
return
$lcs
;
}
/**
* Get the original set of lines.
*
* This reconstructs the $from_lines parameter passed to the
* constructor.
*
* @return string[] The original sequence of strings.
*/
public
function
orig
()
{
$lines
=
[];
foreach
(
$this
->
edits
as
$edit
)
{
if
(
$edit
->
orig
)
{
array_splice
(
$lines
,
count
(
$lines
),
0
,
$edit
->
orig
);
}
}
return
$lines
;
}
/**
* Get the closing set of lines.
*
* This reconstructs the $to_lines parameter passed to the
* constructor.
*
* @return string[] The sequence of strings.
*/
public
function
closing
()
{
$lines
=
[];
foreach
(
$this
->
edits
as
$edit
)
{
if
(
$edit
->
closing
)
{
array_splice
(
$lines
,
count
(
$lines
),
0
,
$edit
->
closing
);
}
}
return
$lines
;
}
}
/** @deprecated class alias since 1.41 */
class_alias
(
Diff
::
class
,
'Diff'
);
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Wed, Aug 19, 07:55 (2 w, 3 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
dd/6c/cc34492bd45fe34b882caaadcc81
Default Alt Text
Diff.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment