/** * Gets all entries of a given repeatable, that satisfy a given predicate. * * @param array|\Traversable $repeatable * The given repeatable. * @param PredicateInterface $predicate * The given predicate. * @throws \InvalidArgumentException * @return array|\Traversable */ public static final function filter($repeatable, PredicateInterface $predicate) { if (self::isRepeatable($repeatable)) { if (Arrays::isArray($repeatable)) { return Arrays::filter($repeatable, $predicate); } if (Traversables::isTraversable($repeatable)) { return Traversables::filter($repeatable, $predicate); } } throw new \InvalidArgumentException(self::$MSG_ARGUMENT1_NOT_REPATABLE); }