mirror of
https://github.com/renbaoshuo/S2OJ.git
synced 2024-11-10 16:58:42 +00:00
96d4a3ecf7
Due to historical reasons, the code is in subfolder "1". With SVN removal, we place the code back and remove the annoying "1" folder.
78 lines
1.9 KiB
PHP
78 lines
1.9 KiB
PHP
<?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
|