Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 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
    // p stands for prototype
17
 
18
    /**
19
     * @type HTMLPurifier_Token_Start
20
     */
21
    private $p_start;
22
 
23
    /**
24
     * @type HTMLPurifier_Token_End
25
     */
26
    private $p_end;
27
 
28
    /**
29
     * @type HTMLPurifier_Token_Empty
30
     */
31
    private $p_empty;
32
 
33
    /**
34
     * @type HTMLPurifier_Token_Text
35
     */
36
    private $p_text;
37
 
38
    /**
39
     * @type HTMLPurifier_Token_Comment
40
     */
41
    private $p_comment;
42
 
43
    /**
44
     * Generates blank prototypes for cloning.
45
     */
46
    public function __construct()
47
    {
48
        $this->p_start = new HTMLPurifier_Token_Start('', array());
49
        $this->p_end = new HTMLPurifier_Token_End('');
50
        $this->p_empty = new HTMLPurifier_Token_Empty('', array());
51
        $this->p_text = new HTMLPurifier_Token_Text('');
52
        $this->p_comment = new HTMLPurifier_Token_Comment('');
53
    }
54
 
55
    /**
56
     * Creates a HTMLPurifier_Token_Start.
57
     * @param string $name Tag name
58
     * @param array $attr Associative array of attributes
59
     * @return HTMLPurifier_Token_Start Generated HTMLPurifier_Token_Start
60
     */
61
    public function createStart($name, $attr = array())
62
    {
63
        $p = clone $this->p_start;
64
        $p->__construct($name, $attr);
65
        return $p;
66
    }
67
 
68
    /**
69
     * Creates a HTMLPurifier_Token_End.
70
     * @param string $name Tag name
71
     * @return HTMLPurifier_Token_End Generated HTMLPurifier_Token_End
72
     */
73
    public function createEnd($name)
74
    {
75
        $p = clone $this->p_end;
76
        $p->__construct($name);
77
        return $p;
78
    }
79
 
80
    /**
81
     * Creates a HTMLPurifier_Token_Empty.
82
     * @param string $name Tag name
83
     * @param array $attr Associative array of attributes
84
     * @return HTMLPurifier_Token_Empty Generated HTMLPurifier_Token_Empty
85
     */
86
    public function createEmpty($name, $attr = array())
87
    {
88
        $p = clone $this->p_empty;
89
        $p->__construct($name, $attr);
90
        return $p;
91
    }
92
 
93
    /**
94
     * Creates a HTMLPurifier_Token_Text.
95
     * @param string $data Data of text token
96
     * @return HTMLPurifier_Token_Text Generated HTMLPurifier_Token_Text
97
     */
98
    public function createText($data)
99
    {
100
        $p = clone $this->p_text;
101
        $p->__construct($data);
102
        return $p;
103
    }
104
 
105
    /**
106
     * Creates a HTMLPurifier_Token_Comment.
107
     * @param string $data Data of comment token
108
     * @return HTMLPurifier_Token_Comment Generated HTMLPurifier_Token_Comment
109
     */
110
    public function createComment($data)
111
    {
112
        $p = clone $this->p_comment;
113
        $p->__construct($data);
114
        return $p;
115
    }
116
}
117
 
118
// vim: et sw=4 sts=4