119 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			119 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?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
							 |