Added the Search API Synonym module to deal specifically with licence and license...
[yaffs-website] / vendor / ezyang / htmlpurifier / library / HTMLPurifier / AttrTransform / EnumToCSS.php
1 <?php
2
3 /**
4  * Generic pre-transform that converts an attribute with a fixed number of
5  * values (enumerated) to CSS.
6  */
7 class HTMLPurifier_AttrTransform_EnumToCSS extends HTMLPurifier_AttrTransform
8 {
9     /**
10      * Name of attribute to transform from.
11      * @type string
12      */
13     protected $attr;
14
15     /**
16      * Lookup array of attribute values to CSS.
17      * @type array
18      */
19     protected $enumToCSS = array();
20
21     /**
22      * Case sensitivity of the matching.
23      * @type bool
24      * @warning Currently can only be guaranteed to work with ASCII
25      *          values.
26      */
27     protected $caseSensitive = false;
28
29     /**
30      * @param string $attr Attribute name to transform from
31      * @param array $enum_to_css Lookup array of attribute values to CSS
32      * @param bool $case_sensitive Case sensitivity indicator, default false
33      */
34     public function __construct($attr, $enum_to_css, $case_sensitive = false)
35     {
36         $this->attr = $attr;
37         $this->enumToCSS = $enum_to_css;
38         $this->caseSensitive = (bool)$case_sensitive;
39     }
40
41     /**
42      * @param array $attr
43      * @param HTMLPurifier_Config $config
44      * @param HTMLPurifier_Context $context
45      * @return array
46      */
47     public function transform($attr, $config, $context)
48     {
49         if (!isset($attr[$this->attr])) {
50             return $attr;
51         }
52
53         $value = trim($attr[$this->attr]);
54         unset($attr[$this->attr]);
55
56         if (!$this->caseSensitive) {
57             $value = strtolower($value);
58         }
59
60         if (!isset($this->enumToCSS[$value])) {
61             return $attr;
62         }
63         $this->prependCSS($attr, $this->enumToCSS[$value]);
64         return $attr;
65     }
66 }
67
68 // vim: et sw=4 sts=4