| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | <?php/** * Represents a Length as defined by CSS. */class HTMLPurifier_AttrDef_CSS_Length extends HTMLPurifier_AttrDef{    /**     * @type HTMLPurifier_Length|string     */    protected $min;    /**     * @type HTMLPurifier_Length|string     */    protected $max;    /**     * @param HTMLPurifier_Length|string $min Minimum length, or null for no bound. String is also acceptable.     * @param HTMLPurifier_Length|string $max Maximum length, or null for no bound. String is also acceptable.     */    public function __construct($min = null, $max = null)    {        $this->min = $min !== null ? HTMLPurifier_Length::make($min) : null;        $this->max = $max !== null ? HTMLPurifier_Length::make($max) : null;    }    /**     * @param string $string     * @param HTMLPurifier_Config $config     * @param HTMLPurifier_Context $context     * @return bool|string     */    public function validate($string, $config, $context)    {        $string = $this->parseCDATA($string);        // Optimizations        if ($string === '') {            return false;        }        if ($string === '0') {            return '0';        }        if (strlen($string) === 1) {            return false;        }        $length = HTMLPurifier_Length::make($string);        if (!$length->isValid()) {            return false;        }        if ($this->min) {            $c = $length->compareTo($this->min);            if ($c === false) {                return false;            }            if ($c < 0) {                return false;            }        }        if ($this->max) {            $c = $length->compareTo($this->max);            if ($c === false) {                return false;            }            if ($c > 0) {                return false;            }        }        return $length->toString();    }}// vim: et sw=4 sts=4
 |