* @ingroup DifferenceEngine
*/
abstract class DiffFormatter {
+
/** @var int Number of leading context "lines" to preserve.
*
* This should be left at zero for this class, but subclasses
/**
* Format a diff.
*
- * @param $diff Diff A Diff object.
+ * @param Diff $diff
+ *
* @return string The formatted output.
*/
public function format( $diff ) {
- wfProfileIn( __METHOD__ );
$xi = $yi = 1;
$block = false;
}
$end = $this->endDiff();
- wfProfileOut( __METHOD__ );
return $end;
}
* @param int $xlen
* @param int $ybeg
* @param int $ylen
- * @param $edits
- * @throws MWException
+ * @param array $edits
+ *
+ * @throws MWException If the edit type is not known.
*/
protected function block( $xbeg, $xlen, $ybeg, $ylen, &$edits ) {
- wfProfileIn( __METHOD__ );
$this->startBlock( $this->blockHeader( $xbeg, $xlen, $ybeg, $ylen ) );
foreach ( $edits as $edit ) {
if ( $edit->type == 'copy' ) {
}
}
$this->endBlock();
- wfProfileOut( __METHOD__ );
}
protected function startDiff() {
}
/**
- * @param $xbeg
- * @param $xlen
- * @param $ybeg
- * @param $ylen
+ * @param int $xbeg
+ * @param int $xlen
+ * @param int $ybeg
+ * @param int $ylen
+ *
* @return string
*/
protected function blockHeader( $xbeg, $xlen, $ybeg, $ylen ) {
return $xbeg . ( $xlen ? ( $ylen ? 'c' : 'd' ) : 'a' ) . $ybeg;
}
+ /**
+ * Called at the start of a block of connected edits.
+ * This default implementation writes the header and a newline to the output buffer.
+ *
+ * @param string $header
+ */
protected function startBlock( $header ) {
echo $header . "\n";
}
+ /**
+ * Called at the end of a block of connected edits.
+ * This default implementation does nothing.
+ */
protected function endBlock() {
}
/**
- * @param $lines
- * @param $prefix string
+ * Writes all (optionally prefixed) lines to the output buffer, separated by newlines.
+ *
+ * @param string[] $lines
+ * @param string $prefix
*/
protected function lines( $lines, $prefix = ' ' ) {
foreach ( $lines as $line ) {
}
/**
- * @param $lines
+ * @param string[] $lines
*/
protected function context( $lines ) {
$this->lines( $lines );
}
/**
- * @param $lines
+ * @param string[] $lines
*/
protected function added( $lines ) {
$this->lines( $lines, '>' );
}
/**
- * @param $lines
+ * @param string[] $lines
*/
protected function deleted( $lines ) {
$this->lines( $lines, '<' );
}
/**
- * @param $orig
- * @param $closing
+ * Writes the two sets of lines to the output buffer, separated by "---" and a newline.
+ *
+ * @param string[] $orig
+ * @param string[] $closing
*/
protected function changed( $orig, $closing ) {
$this->deleted( $orig );
echo "---\n";
$this->added( $closing );
}
+
}