Viewing file: EnumToCSS.php (1.68 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/** * Generic pre-transform that converts an attribute with a fixed number of * values (enumerated) to CSS. */ class HTMLPurifier_AttrTransform_EnumToCSS extends HTMLPurifier_AttrTransform { /** * Name of attribute to transform from. * @type string */ protected $attr;
/** * Lookup array of attribute values to CSS. * @type array */ protected $enumToCSS = array();
/** * Case sensitivity of the matching. * @type bool * @warning Currently can only be guaranteed to work with ASCII * values. */ protected $caseSensitive = false;
/** * @param string $attr Attribute name to transform from * @param array $enum_to_css Lookup array of attribute values to CSS * @param bool $case_sensitive Case sensitivity indicator, default false */ public function __construct($attr, $enum_to_css, $case_sensitive = false) { $this->attr = $attr; $this->enumToCSS = $enum_to_css; $this->caseSensitive = (bool)$case_sensitive; }
/** * @param array $attr * @param HTMLPurifier_Config $config * @param HTMLPurifier_Context $context * @return array */ public function transform($attr, $config, $context) { if (!isset($attr[$this->attr])) { return $attr; }
$value = trim($attr[$this->attr]); unset($attr[$this->attr]);
if (!$this->caseSensitive) { $value = strtolower($value); }
if (!isset($this->enumToCSS[$value])) { return $attr; } $this->prependCSS($attr, $this->enumToCSS[$value]); return $attr; } }
// vim: et sw=4 sts=4
|