]> git.mxchange.org Git - friendica.git/blob - library/HTMLPurifier/TokenFactory.php
more friend suggestions
[friendica.git] / library / HTMLPurifier / TokenFactory.php
1 <?php
2
3 /**
4  * Factory for token generation.
5  *
6  * @note Doing some benchmarking indicates that the new operator is much
7  *       slower than the clone operator (even discounting the cost of the
8  *       constructor).  This class is for that optimization.
9  *       Other then that, there's not much point as we don't
10  *       maintain parallel HTMLPurifier_Token hierarchies (the main reason why
11  *       you'd want to use an abstract factory).
12  * @todo Port DirectLex to use this
13  */
14 class HTMLPurifier_TokenFactory
15 {
16
17     /**
18      * Prototypes that will be cloned.
19      * @private
20      */
21     // p stands for prototype
22     private $p_start, $p_end, $p_empty, $p_text, $p_comment;
23
24     /**
25      * Generates blank prototypes for cloning.
26      */
27     public function __construct() {
28         $this->p_start  = new HTMLPurifier_Token_Start('', array());
29         $this->p_end    = new HTMLPurifier_Token_End('');
30         $this->p_empty  = new HTMLPurifier_Token_Empty('', array());
31         $this->p_text   = new HTMLPurifier_Token_Text('');
32         $this->p_comment= new HTMLPurifier_Token_Comment('');
33     }
34
35     /**
36      * Creates a HTMLPurifier_Token_Start.
37      * @param $name Tag name
38      * @param $attr Associative array of attributes
39      * @return Generated HTMLPurifier_Token_Start
40      */
41     public function createStart($name, $attr = array()) {
42         $p = clone $this->p_start;
43         $p->__construct($name, $attr);
44         return $p;
45     }
46
47     /**
48      * Creates a HTMLPurifier_Token_End.
49      * @param $name Tag name
50      * @return Generated HTMLPurifier_Token_End
51      */
52     public function createEnd($name) {
53         $p = clone $this->p_end;
54         $p->__construct($name);
55         return $p;
56     }
57
58     /**
59      * Creates a HTMLPurifier_Token_Empty.
60      * @param $name Tag name
61      * @param $attr Associative array of attributes
62      * @return Generated HTMLPurifier_Token_Empty
63      */
64     public function createEmpty($name, $attr = array()) {
65         $p = clone $this->p_empty;
66         $p->__construct($name, $attr);
67         return $p;
68     }
69
70     /**
71      * Creates a HTMLPurifier_Token_Text.
72      * @param $data Data of text token
73      * @return Generated HTMLPurifier_Token_Text
74      */
75     public function createText($data) {
76         $p = clone $this->p_text;
77         $p->__construct($data);
78         return $p;
79     }
80
81     /**
82      * Creates a HTMLPurifier_Token_Comment.
83      * @param $data Data of comment token
84      * @return Generated HTMLPurifier_Token_Comment
85      */
86     public function createComment($data) {
87         $p = clone $this->p_comment;
88         $p->__construct($data);
89         return $p;
90     }
91
92 }
93
94 // vim: et sw=4 sts=4