Ejemplo n.º 1
0
/**
 * @param callable $callable
 * @return \Closure
 */
function bulkPool(callable $callable)
{
    return function ($value) use($callable) {
        if (!is_array($value) && !$value instanceof \Traversable) {
            return false;
        }
        $args = func_get_args();
        foreach ($value as $item) {
            $args[0] = $item;
            if (variadicCallBoolVal($callable, $args)) {
                return true;
            }
        }
        return false;
    };
}
Ejemplo n.º 2
0
/**
 * @param string   $key
 * @param callable $callback
 * @return \Closure
 */
function keyApply($key, callable $callback)
{
    if (!is_string($key)) {
        return never();
    }
    return combine(hasKey($key), function ($item) use($key, $callback) {
        $args = func_get_args();
        $args[0] = polymorphicKeyValue($item, $key);
        return variadicCallBoolVal($callback, $args);
    });
}
Ejemplo n.º 3
0
/**
 * @param callable[] $callbacks
 * @return \Closure
 */
function poolMap(array $callbacks)
{
    $callbacks = array_filter($callbacks, 'is_callable');
    if (empty($callbacks)) {
        return never();
    }
    return function ($item) use($callbacks) {
        if (!is_array($item) && !is_object($item)) {
            return false;
        }
        foreach ($callbacks as $key => $callback) {
            if (variadicCallBoolVal(keyApply($key, $callback), func_get_args())) {
                return true;
            }
        }
        return false;
    };
}