]> git.immae.eu Git - github/wallabag/wallabag.git/blob - inc/3rdparty/htmlpurifier/HTMLPurifier/AttrTransform/EnumToCSS.php
[add] HTML Purifier added to clean code
[github/wallabag/wallabag.git] / inc / 3rdparty / htmlpurifier / 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