Patcher

A Unified Diff Format Patcher class

link

This has been derived from the PhpPatcher version 0.1.1 written by Giuseppe Mazzotta

since

1.0

Methods

__construct

Constructor

__construct() 

The constructor is protected to force the use of Patcher::getInstance()

since

1.0

add

Add a unified diff string to the patcher

add(string $udiff, string $root = JPATH_ROOT, integer $strip) : \Joomla\Filesystem\Patcher
since

1.0

Arguments

$udiff

stringUnified diff input string

$root

stringThe files root path

$strip

integerThe number of '/' to strip

Response

\Joomla\Filesystem\Patcher$this for chaining

addFile

Add a unified diff file to the patcher

addFile(string $filename, string $root = JPATH_ROOT, integer $strip) : \Joomla\Filesystem\Patcher
since

1.0

Arguments

$filename

stringPath to the unified diff file

$root

stringThe files root path

$strip

integerThe number of '/' to strip

Response

\Joomla\Filesystem\Patcher$this for chaining

apply

Apply the patches

apply() : integer
since

1.0

throws

\RuntimeException

Response

integerThe number of files patched

applyHunk

Apply the patch

applyHunk(array &$lines, string $src, string $dst, string $srcLine, string $srcSize, string $dstLine, string $dstSize) : void
since

1.0

throws

\RuntimeException

Arguments

$lines

arrayThe udiff array of lines

$src

stringThe source file

$dst

stringThe destination file

$srcLine

stringThe beginning of the patch for the source file

$srcSize

stringThe size of the patch for the source file

$dstLine

stringThe beginning of the patch for the destination file

$dstSize

stringThe size of the patch for the destination file

findHeader

Find the diff header

findHeader(array &$lines, string &$src, string &$dst) : boolean
static

The internal array pointer of $lines is on the next line after the finding

since

1.0

throws

\RuntimeException

Arguments

$lines

arrayThe udiff array of lines

$src

stringThe source file

$dst

stringThe destination file

Response

booleanTRUE in case of success, FALSE in case of failure

findHunk

Find the next hunk of difference

findHunk(array &$lines, string &$srcLine, string &$srcSize, string &$dstLine, string &$dstSize) : boolean
static

The internal array pointer of $lines is on the next line after the finding

since

1.0

throws

\RuntimeException

Arguments

$lines

arrayThe udiff array of lines

$srcLine

stringThe beginning of the patch for the source file

$srcSize

stringThe size of the patch for the source file

$dstLine

stringThe beginning of the patch for the destination file

$dstSize

stringThe size of the patch for the destination file

Response

booleanTRUE in case of success, false in case of failure

getDestination

Get the lines of a destination file

getDestination(string $dst, string $src) : array
since

1.0

Arguments

$dst

stringThe path of a destination file

$src

stringThe path of a source file

Response

arrayThe lines of the destination file

getInstance

Method to get a patcher

getInstance() : \Joomla\Filesystem\Patcher
static
since

1.0

Response

\Joomla\Filesystem\Patcheran instance of the patcher

getSource

Get the lines of a source file

getSource(string $src) : array
since

1.0

Arguments

$src

stringThe path of a file

Response

arrayThe lines of the source file

reset

Reset the pacher

reset() : \Joomla\Filesystem\Patcher
since

1.0

Response

\Joomla\Filesystem\PatcherThis object for chaining

splitLines

Separate CR or CRLF lines

splitLines(string $data) : array
static
since

1.0

Arguments

$data

stringInput string

Response

arrayThe lines of the input destination file

Constants

SRC_FILE

Regular expression for searching source files

Value '/^---\\s+(\\S+)\s+\\d{1,4}-\\d{1,2}-\\d{1,2}\\s+\\d{1,2}:\\d{1,2}:\\d{1,2}(\\.\\d+)?\\s+(\+|-)\\d{4}/A'

Type(s)

DST_FILE

Regular expression for searching destination files

Value '/^\\+\\+\\+\\s+(\\S+)\s+\\d{1,4}-\\d{1,2}-\\d{1,2}\\s+\\d{1,2}:\\d{1,2}:\\d{1,2}(\\.\\d+)?\\s+(\+|-)\\d{4}/A'

Type(s)

HUNK

Regular expression for searching hunks of differences

Value '/@@ -(\\d+)(,(\\d+))?\\s+\\+(\\d+)(,(\\d+))?\\s+@@($)/A'

Type(s)

SPLIT

Regular expression for splitting lines

Value '/(\r\n)|(\r)|(\n)/'

Type(s)

Properties

sources

sources files

since

1.0

Type(s)

array

destinations

destination files

since

1.0

Type(s)

array

removals

removal files

since

1.0

Type(s)

array

patches

patches

since

1.0

Type(s)

array

instance

instance of this class

static
since

1.0

Type(s)

array