|
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
|