API - XOOPS 2.5.11 Beta 2
By monxoops.fr
HTMLPurifier_Zipper Class Reference

Public Member Functions

 __construct ($front, $back)
 
 toArray ($t=NULL)
 
 next ($t)
 
 advance ($t, $n)
 
 prev ($t)
 
 delete ()
 
 done ()
 
 insertBefore ($t)
 
 insertAfter ($t)
 
 splice ($t, $delete, $replacement)
 

Static Public Member Functions

static fromArray ($array)
 

Data Fields

 $front
 
 $back
 

Detailed Description

A zipper is a purely-functional data structure which contains a focus that can be efficiently manipulated. It is known as a "one-hole context". This mutable variant implements a zipper for a list as a pair of two arrays, laid out as follows:

 Base list: 1 2 3 4 [ ] 6 7 8 9
 Front list: 1 2 3 4
 Back list: 9 8 7 6

User is expected to keep track of the "current element" and properly fill it back in as necessary. (ToDo: Maybe it's more user friendly to implicitly track the current element?)

Nota bene: the current class gets confused if you try to store NULLs in the list.

Constructor & Destructor Documentation

◆ __construct()

__construct (   $front,
  $back 
)

Member Function Documentation

◆ advance()

advance (   $t,
  $n 
)

Iterated hole advancement.

Parameters
$tElement to fill hole with
$iHow many forward to advance hole
Returns
Original contents of new hole, i away
Here is the call graph for this function:

◆ delete()

delete ( )

Delete contents of current hole, shifting hole to next element.

Returns
Original contents of new hole.

◆ done()

done ( )

Returns true if we are at the end of the list.

Returns
bool

◆ fromArray()

static fromArray (   $array)
static

Creates a zipper from an array, with a hole in the 0-index position.

Parameters
Arrayto zipper-ify.
Returns
Tuple of zipper and element of first position.
Here is the caller graph for this function:

◆ insertAfter()

insertAfter (   $t)

Insert element after hole.

Parameters
Elementto insert
Here is the caller graph for this function:

◆ insertBefore()

insertBefore (   $t)

Insert element before hole.

Parameters
Elementto insert

◆ next()

next (   $t)

Move hole to the next element.

Parameters
$tElement to fill hole with
Returns
Original contents of new hole.
Here is the caller graph for this function:

◆ prev()

prev (   $t)

Move hole to the previous element

Parameters
$tElement to fill hole with
Returns
Original contents of new hole.

◆ splice()

splice (   $t,
  $delete,
  $replacement 
)

Splice in multiple elements at hole. Functional specification in terms of array_splice:

 $arr1 = $arr;
 $old1 = array_splice($arr1, $i, $delete, $replacement);

 list($z, $t) = HTMLPurifier_Zipper::fromArray($arr);
 $t = $z->advance($t, $i);
 list($old2, $t) = $z->splice($t, $delete, $replacement);
 $arr2 = $z->toArray($t);

 assert($old1 === $old2);
 assert($arr1 === $arr2);

NB: the absolute index location after this operation is unchanged!

Parameters
Currentcontents of hole.
Here is the call graph for this function:

◆ toArray()

toArray (   $t = NULL)

Convert zipper back into a normal array, optionally filling in the hole with a value. (Usually you should supply a $t, unless you are at the end of the array.)

Field Documentation

◆ $back

$back

◆ $front

$front

The documentation for this class was generated from the following file: