]> git.wh0rd.org - tt-rss.git/blame - lib/htmlpurifier/library/HTMLPurifier/TokenFactory.php
quickAddFeed: remove oauth notice, mention you can paste site URL
[tt-rss.git] / lib / htmlpurifier / library / HTMLPurifier / TokenFactory.php
CommitLineData
010efc9b
AD
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
94// vim: et sw=4 sts=4