root/afridex/plugins/Flutter/purifier_lib/HTMLPurifier/TokenFactory.php @ 21

Revision 21, 2.7 kB (checked in by admin, 18 years ago)
Line 
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 */
14class 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
Note: See TracBrowser for help on using the browser.