Example #1
0
 /**
  * For Regex
  * 
  * @param Regex $rule
  * @return callable|null
  */
 public static function regex(Regex $rule)
 {
     $filters = array();
     $is_multiple = !$rule->types(Regex::TYPE_NORMAL);
     $is_multiple and $filters[] = Cast::explode($rule);
     if ($rule->types(Regex::TYPE_RANGE)) {
         $filters[] = Cast::fillSide($rule);
         $filters[] = Check::greaterThanOrEqual();
         $rule->info('is_datetime') and $filters[] = Cast::datetime($rule);
     }
     if ($rule->info('is_number')) {
         $filters[] = $is_multiple ? Check::numberMultiple($rule) : Check::number($rule);
     }
     $count = count($filters);
     if (!$count) {
         return null;
     }
     if ($count === 1) {
         return $filters[0];
     }
     return function ($input) use($filters) {
         foreach ($filters as $filter) {
             $input = $filter($input);
             if ($input === null) {
                 return null;
             }
         }
         return $input;
     };
 }
Example #2
0
File: Sets.php Project: nnssn/straw
 /**
  * Validate enum
  * 
  * @param string|string[] $value
  * @return string|null
  */
 protected function validateEnum($value)
 {
     $enum = Check::enum($this->candidates);
     return $enum($value);
 }