]> git.wh0rd.org - tt-rss.git/blob - lib/htmlpurifier/library/HTMLPurifier/ChildDef/Chameleon.php
Revert "remove htmlpurifier"
[tt-rss.git] / lib / htmlpurifier / library / HTMLPurifier / ChildDef / Chameleon.php
1 <?php
2
3 /**
4 * Definition that uses different definitions depending on context.
5 *
6 * The del and ins tags are notable because they allow different types of
7 * elements depending on whether or not they're in a block or inline context.
8 * Chameleon allows this behavior to happen by using two different
9 * definitions depending on context. While this somewhat generalized,
10 * it is specifically intended for those two tags.
11 */
12 class HTMLPurifier_ChildDef_Chameleon extends HTMLPurifier_ChildDef
13 {
14
15 /**
16 * Instance of the definition object to use when inline. Usually stricter.
17 */
18 public $inline;
19
20 /**
21 * Instance of the definition object to use when block.
22 */
23 public $block;
24
25 public $type = 'chameleon';
26
27 /**
28 * @param $inline List of elements to allow when inline.
29 * @param $block List of elements to allow when block.
30 */
31 public function __construct($inline, $block) {
32 $this->inline = new HTMLPurifier_ChildDef_Optional($inline);
33 $this->block = new HTMLPurifier_ChildDef_Optional($block);
34 $this->elements = $this->block->elements;
35 }
36
37 public function validateChildren($tokens_of_children, $config, $context) {
38 if ($context->get('IsInline') === false) {
39 return $this->block->validateChildren(
40 $tokens_of_children, $config, $context);
41 } else {
42 return $this->inline->validateChildren(
43 $tokens_of_children, $config, $context);
44 }
45 }
46 }
47
48 // vim: et sw=4 sts=4