HTMLPurifier_AttrTransform_EnumToCSS   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 17
dl 0
loc 58
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A transform() 0 18 4
A __construct() 0 5 1
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
69