| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | <?php/** * Decorator that, depending on a token, switches between two definitions. */class HTMLPurifier_AttrDef_Switch{    /**     * @type string     */    protected $tag;    /**     * @type HTMLPurifier_AttrDef     */    protected $withTag;    /**     * @type HTMLPurifier_AttrDef     */    protected $withoutTag;    /**     * @param string $tag Tag name to switch upon     * @param HTMLPurifier_AttrDef $with_tag Call if token matches tag     * @param HTMLPurifier_AttrDef $without_tag Call if token doesn't match, or there is no token     */    public function __construct($tag, $with_tag, $without_tag)    {        $this->tag = $tag;        $this->withTag = $with_tag;        $this->withoutTag = $without_tag;    }    /**     * @param string $string     * @param HTMLPurifier_Config $config     * @param HTMLPurifier_Context $context     * @return bool|string     */    public function validate($string, $config, $context)    {        $token = $context->get('CurrentToken', true);        if (!$token || $token->name !== $this->tag) {            return $this->withoutTag->validate($string, $config, $context);        } else {            return $this->withTag->validate($string, $config, $context);        }    }}// vim: et sw=4 sts=4
 |