Skip to content

Commit

Permalink
Fixes issue tighten#92
Browse files Browse the repository at this point in the history
  • Loading branch information
mpociot committed Mar 16, 2018
1 parent df66d4a commit 7768bd9
Show file tree
Hide file tree
Showing 7 changed files with 210 additions and 200 deletions.
10 changes: 5 additions & 5 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 11 additions & 2 deletions src/Collect/Support/Arr.php
Original file line number Diff line number Diff line change
Expand Up @@ -541,11 +541,20 @@ public static function set(&$array, $key, $value)
* Shuffle the given array and return the result.
*
* @param array $array
* @param int|null $seed
* @return array
*/
public static function shuffle($array)
public static function shuffle($array, $seed = null)
{
shuffle($array);
if (is_null($seed)) {
shuffle($array);
} else {
srand($seed);

usort($array, function () {
return rand(-1, 1);
});
}

return $array;
}
Expand Down
14 changes: 1 addition & 13 deletions src/Collect/Support/Collection.php
Original file line number Diff line number Diff line change
Expand Up @@ -1360,19 +1360,7 @@ public function shift()
*/
public function shuffle($seed = null)
{
$items = $this->items;

if (is_null($seed)) {
shuffle($items);
} else {
srand($seed);

usort($items, function () {
return rand(-1, 1);
});
}

return new static($items);
return new static(Arr::shuffle($this->items, $seed));
}

/**
Expand Down
182 changes: 92 additions & 90 deletions src/Collect/Support/helpers.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,113 +4,115 @@
use Tightenco\Collect\Support\Collection;
use Tightenco\Collect\Support\Debug\Dumper;

if (! function_exists('array_wrap')) {
/**
* If the given value is not an array, wrap it in one.
*
* @param mixed $value
* @return array
*/
function array_wrap($value)
{
return ! is_array($value) ? [$value] : $value;
if (! class_exists(Illuminate\Support\Collection::class)) {
if (! function_exists('array_wrap')) {
/**
* If the given value is not an array, wrap it in one.
*
* @param mixed $value
* @return array
*/
function array_wrap($value)
{
return ! is_array($value) ? [$value] : $value;
}
}
}

if (! function_exists('collect')) {
/**
* Create a collection from the given value.
*
* @param mixed $value
* @return \Tightenco\Collect\Support\Collection
*/
function collect($value = null)
{
return new Collection($value);
if (! function_exists('collect')) {
/**
* Create a collection from the given value.
*
* @param mixed $value
* @return \Tightenco\Collect\Support\Collection
*/
function collect($value = null)
{
return new Collection($value);
}
}
}

if (! function_exists('value')) {
/**
* Return the default value of the given value.
*
* @param mixed $value
* @return mixed
*/
function value($value)
{
return $value instanceof Closure ? $value() : $value;
if (! function_exists('value')) {
/**
* Return the default value of the given value.
*
* @param mixed $value
* @return mixed
*/
function value($value)
{
return $value instanceof Closure ? $value() : $value;
}
}
}

if (! function_exists('data_get')) {
/**
* Get an item from an array or object using "dot" notation.
*
* @param mixed $target
* @param string|array $key
* @param mixed $default
* @return mixed
*/
function data_get($target, $key, $default = null)
{
if (is_null($key)) {
return $target;
}
if (! function_exists('data_get')) {
/**
* Get an item from an array or object using "dot" notation.
*
* @param mixed $target
* @param string|array $key
* @param mixed $default
* @return mixed
*/
function data_get($target, $key, $default = null)
{
if (is_null($key)) {
return $target;
}

$key = is_array($key) ? $key : explode('.', $key);
$key = is_array($key) ? $key : explode('.', $key);

while (($segment = array_shift($key)) !== null) {
if ($segment === '*') {
if ($target instanceof Collection) {
$target = $target->all();
} elseif (! is_array($target)) {
return value($default);
}
while (($segment = array_shift($key)) !== null) {
if ($segment === '*') {
if ($target instanceof Collection) {
$target = $target->all();
} elseif (! is_array($target)) {
return value($default);
}

$result = Arr::pluck($target, $key);
$result = Arr::pluck($target, $key);

return in_array('*', $key) ? Arr::collapse($result) : $result;
}
return in_array('*', $key) ? Arr::collapse($result) : $result;
}

if (Arr::accessible($target) && Arr::exists($target, $segment)) {
$target = $target[$segment];
} elseif (is_object($target) && isset($target->{$segment})) {
$target = $target->{$segment};
} else {
return value($default);
if (Arr::accessible($target) && Arr::exists($target, $segment)) {
$target = $target[$segment];
} elseif (is_object($target) && isset($target->{$segment})) {
$target = $target->{$segment};
} else {
return value($default);
}
}
}

return $target;
return $target;
}
}
}

if (! function_exists('with')) {
/**
* Return the given object. Useful for chaining.
*
* @param mixed $object
* @return mixed
*/
function with($object)
{
return $object;
if (! function_exists('with')) {
/**
* Return the given object. Useful for chaining.
*
* @param mixed $object
* @return mixed
*/
function with($object)
{
return $object;
}
}
}

if (! function_exists('dd')) {
/**
* Dump the passed variables and end the script.
*
* @param mixed
* @return void
*/
function dd(...$args)
{
foreach ($args as $x) {
(new Dumper)->dump($x);
if (! function_exists('dd')) {
/**
* Dump the passed variables and end the script.
*
* @param mixed
* @return void
*/
function dd(...$args)
{
foreach ($args as $x) {
(new Dumper)->dump($x);
}
die(1);
}
die(1);
}
}

0 comments on commit 7768bd9

Please sign in to comment.