Blame view

vendor/ezyang/htmlpurifier/library/HTMLPurifier/TokenFactory.php 3.03 KB
abf1649b   andryeyev   Чистая установка ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
  <?php
  
  /**
   * Factory for token generation.
   *
   * @note Doing some benchmarking indicates that the new operator is much
   *       slower than the clone operator (even discounting the cost of the
   *       constructor).  This class is for that optimization.
   *       Other then that, there's not much point as we don't
   *       maintain parallel HTMLPurifier_Token hierarchies (the main reason why
   *       you'd want to use an abstract factory).
   * @todo Port DirectLex to use this
   */
  class HTMLPurifier_TokenFactory
  {
      // p stands for prototype
  
      /**
       * @type HTMLPurifier_Token_Start
       */
      private $p_start;
  
      /**
       * @type HTMLPurifier_Token_End
       */
      private $p_end;
  
      /**
       * @type HTMLPurifier_Token_Empty
       */
      private $p_empty;
  
      /**
       * @type HTMLPurifier_Token_Text
       */
      private $p_text;
  
      /**
       * @type HTMLPurifier_Token_Comment
       */
      private $p_comment;
  
      /**
       * Generates blank prototypes for cloning.
       */
      public function __construct()
      {
          $this->p_start = new HTMLPurifier_Token_Start('', array());
          $this->p_end = new HTMLPurifier_Token_End('');
          $this->p_empty = new HTMLPurifier_Token_Empty('', array());
          $this->p_text = new HTMLPurifier_Token_Text('');
          $this->p_comment = new HTMLPurifier_Token_Comment('');
      }
  
      /**
       * Creates a HTMLPurifier_Token_Start.
       * @param string $name Tag name
       * @param array $attr Associative array of attributes
       * @return HTMLPurifier_Token_Start Generated HTMLPurifier_Token_Start
       */
      public function createStart($name, $attr = array())
      {
          $p = clone $this->p_start;
          $p->__construct($name, $attr);
          return $p;
      }
  
      /**
       * Creates a HTMLPurifier_Token_End.
       * @param string $name Tag name
       * @return HTMLPurifier_Token_End Generated HTMLPurifier_Token_End
       */
      public function createEnd($name)
      {
          $p = clone $this->p_end;
          $p->__construct($name);
          return $p;
      }
  
      /**
       * Creates a HTMLPurifier_Token_Empty.
       * @param string $name Tag name
       * @param array $attr Associative array of attributes
       * @return HTMLPurifier_Token_Empty Generated HTMLPurifier_Token_Empty
       */
      public function createEmpty($name, $attr = array())
      {
          $p = clone $this->p_empty;
          $p->__construct($name, $attr);
          return $p;
      }
  
      /**
       * Creates a HTMLPurifier_Token_Text.
       * @param string $data Data of text token
       * @return HTMLPurifier_Token_Text Generated HTMLPurifier_Token_Text
       */
      public function createText($data)
      {
          $p = clone $this->p_text;
          $p->__construct($data);
          return $p;
      }
  
      /**
       * Creates a HTMLPurifier_Token_Comment.
       * @param string $data Data of comment token
       * @return HTMLPurifier_Token_Comment Generated HTMLPurifier_Token_Comment
       */
      public function createComment($data)
      {
          $p = clone $this->p_comment;
          $p->__construct($data);
          return $p;
      }
  }
  
  // vim: et sw=4 sts=4