|
ILIAS
release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
|
A zipper is a purely-functional data structure which contains a focus that can be efficiently manipulated. More...
Collaboration diagram for HTMLPurifier_Zipper:Public Member Functions | |
| __construct ($front, $back) | |
| toArray ($t=NULL) | |
| Convert zipper back into a normal array, optionally filling in the hole with a value. More... | |
| next ($t) | |
| Move hole to the next element. More... | |
| advance ($t, $n) | |
| Iterated hole advancement. More... | |
| prev ($t) | |
| Move hole to the previous element. More... | |
| delete () | |
| Delete contents of current hole, shifting hole to next element. More... | |
| done () | |
| Returns true if we are at the end of the list. More... | |
| insertBefore ($t) | |
| Insert element before hole. More... | |
| insertAfter ($t) | |
| Insert element after hole. More... | |
| splice ($t, $delete, $replacement) | |
| Splice in multiple elements at hole. More... | |
Static Public Member Functions | |
| static | fromArray ($array) |
| Creates a zipper from an array, with a hole in the 0-index position. More... | |
Data Fields | |
| $front | |
| $back | |
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.
Definition at line 21 of file Zipper.php.
| HTMLPurifier_Zipper::__construct | ( | $front, | |
| $back | |||
| ) |
Definition at line 25 of file Zipper.php.
| HTMLPurifier_Zipper::advance | ( | $t, | |
| $n | |||
| ) |
Iterated hole advancement.
| $t | Element to fill hole with |
| $i | How many forward to advance hole |
Definition at line 72 of file Zipper.php.
References $n, $t, and next().
Here is the call graph for this function:| HTMLPurifier_Zipper::delete | ( | ) |
Delete contents of current hole, shifting hole to next element.
Definition at line 94 of file Zipper.php.
| HTMLPurifier_Zipper::done | ( | ) |
Returns true if we are at the end of the list.
Definition at line 102 of file Zipper.php.
|
static |
Creates a zipper from an array, with a hole in the 0-index position.
| Array | to zipper-ify. |
Definition at line 36 of file Zipper.php.
References $t.
Referenced by HTMLPurifier_Strategy_MakeWellFormed\execute().
Here is the caller graph for this function:| HTMLPurifier_Zipper::insertAfter | ( | $t | ) |
| HTMLPurifier_Zipper::insertBefore | ( | $t | ) |
Insert element before hole.
| Element | to insert |
Definition at line 110 of file Zipper.php.
References $t.
| HTMLPurifier_Zipper::next | ( | $t | ) |
Move hole to the next element.
| $t | Element to fill hole with |
Definition at line 61 of file Zipper.php.
References $t.
Referenced by advance().
Here is the caller graph for this function:| HTMLPurifier_Zipper::prev | ( | $t | ) |
Move hole to the previous element.
| $t | Element to fill hole with |
Definition at line 84 of file Zipper.php.
References $t.
| HTMLPurifier_Zipper::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!
| Current | contents of hole. |
Definition at line 142 of file Zipper.php.
References $r, $t, and insertAfter().
Here is the call graph for this function:| HTMLPurifier_Zipper::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.)
Definition at line 47 of file Zipper.php.
| HTMLPurifier_Zipper::$back |
Definition at line 23 of file Zipper.php.
Referenced by __construct().
| HTMLPurifier_Zipper::$front |
Definition at line 23 of file Zipper.php.
Referenced by __construct(), and toArray().