Blame view

vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Chameleon.php 1.85 KB
abf1649b   andryeyev   Чистая установка ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
  <?php
  
  /**
   * Definition that uses different definitions depending on context.
   *
   * The del and ins tags are notable because they allow different types of
   * elements depending on whether or not they're in a block or inline context.
   * Chameleon allows this behavior to happen by using two different
   * definitions depending on context.  While this somewhat generalized,
   * it is specifically intended for those two tags.
   */
  class HTMLPurifier_ChildDef_Chameleon extends HTMLPurifier_ChildDef
  {
  
      /**
       * Instance of the definition object to use when inline. Usually stricter.
       * @type HTMLPurifier_ChildDef_Optional
       */
      public $inline;
  
      /**
       * Instance of the definition object to use when block.
       * @type HTMLPurifier_ChildDef_Optional
       */
      public $block;
  
      /**
       * @type string
       */
      public $type = 'chameleon';
  
      /**
       * @param array $inline List of elements to allow when inline.
       * @param array $block List of elements to allow when block.
       */
      public function __construct($inline, $block)
      {
          $this->inline = new HTMLPurifier_ChildDef_Optional($inline);
          $this->block = new HTMLPurifier_ChildDef_Optional($block);
          $this->elements = $this->block->elements;
      }
  
      /**
       * @param HTMLPurifier_Node[] $children
       * @param HTMLPurifier_Config $config
       * @param HTMLPurifier_Context $context
       * @return bool
       */
      public function validateChildren($children, $config, $context)
      {
          if ($context->get('IsInline') === false) {
              return $this->block->validateChildren(
                  $children,
                  $config,
                  $context
              );
          } else {
              return $this->inline->validateChildren(
                  $children,
                  $config,
                  $context
              );
          }
      }
  }
  
  // vim: et sw=4 sts=4