mirror of
https://github.com/renbaoshuo/S2OJ.git
synced 2024-12-25 04:11:52 +00:00
96d4a3ecf7
Due to historical reasons, the code is in subfolder "1". With SVN removal, we place the code back and remove the annoying "1" folder.
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
|