55 public function validate($string, $config, $context) {
57 $bits = explode(
' ', $string);
60 $keywords[
'h'] =
false;
61 $keywords[
'v'] =
false;
62 $keywords[
'ch'] =
false;
63 $keywords[
'cv'] =
false;
76 foreach ($bits as $bit) {
77 if ($bit ===
'')
continue;
80 $lbit = ctype_lower($bit) ? $bit : strtolower($bit);
81 if (isset($lookup[$lbit])) {
82 $status = $lookup[$lbit];
90 $keywords[$status] = $lbit;
95 $r = $this->length->validate($bit, $config, $context);
102 $r = $this->percentage->validate($bit, $config, $context);
110 if (!$i)
return false;
115 if ($keywords[
'h'])
$ret[] = $keywords[
'h'];
116 elseif ($keywords[
'ch']) {
117 $ret[] = $keywords[
'ch'];
118 $keywords[
'cv'] =
false;
120 elseif (count($measures))
$ret[] = array_shift($measures);
122 if ($keywords[
'v'])
$ret[] = $keywords[
'v'];
123 elseif ($keywords[
'cv'])
$ret[] = $keywords[
'cv'];
124 elseif (count($measures))
$ret[] = array_shift($measures);
126 if (empty(
$ret))
return false;
127 return implode(
' ',
$ret);