/** * @param ... $values * @return mixed */ function tuple_max($values) { $args = array_filter_key(func_get_args(), not_dg(eq_dg(tuple_get(), return_dg(null)))); $argsCount = count($args); if ($argsCount < 1) { $ret = null; } elseif ($argsCount === 1) { $ret = array_shift($args); } else { $ret = call_user_func_array('max', $args); } return $ret; }
/** * @param callable $iterator * @return callable */ function array_filter_key_dg($iterator) { return function ($array) use($iterator) { return array_filter_key($array, $iterator); }; }
/** * @param array $list * @param callable $filter * @return array */ function list_filter_key($list, $filter) { return array_values(array_filter_key($list, $filter)); }
/** * @param object $config * @param callable $callable * @return object */ function object_filter_val($config, $callable) { return (object) array_filter_key((array) $config, function () use($callable) { return call_user_func_array($callable, func_get_args()); }); }
/** * @param string $name * @param mixed $value * @return string */ function mime_header_entry_map($value, $name) { if (debug_assert(is_string($name), "Invalid parameters ")) { switch ($name) { case 'Content-Type': arrayize($value); $value = mime_header_contenttype_map($value[0], array_filter_key($value, tuple_get(1, 'is_string'))); break; case 'Content-Disposition': $value['name'] = mime_header_encode($value['name']); $value = mime_header_contenttype_map($value[0], array_filter_key($value, tuple_get(1, 'is_string'))); break; default: $dump = var_dump_human_compact($value); debug_enforce(is_string($value), "Could not map '{$name}'=>'{$dump}'"); break; } return "{$name}: {$value}\r\n"; } else { return ''; } }
/** * @override * @return array */ public function getColumns() { $alias = $this->getAlias(); $fields = $this->getSelect()->getFields(); $fieldsSet = array_filter_key($fields, function () { $isSet = func_get_arg(0); return $isSet; }); $ret = array_map_val($fieldsSet, function () use($alias) { $name = func_get_arg(1); return array($alias, $name, null); }); return $ret; }