Skip to content

Commit

Permalink
Refactoring. Pass the $collection object by default to the static fun…
Browse files Browse the repository at this point in the history
…ction returned by the Operation object. Rename Operation::on() in Operation::__invoke().
  • Loading branch information
drupol committed May 30, 2020
1 parent 17af0b2 commit c1b3f91
Show file tree
Hide file tree
Showing 114 changed files with 343 additions and 198 deletions.
13 changes: 7 additions & 6 deletions spec/loophp/collection/CollectionSpec.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use ArrayObject;
use Closure;
use Exception;
use Generator;
use Iterator;
use loophp\collection\Collection;
use loophp\collection\Contract\Operation;
Expand Down Expand Up @@ -1061,9 +1062,9 @@ public function it_can_rsample(): void
public function it_can_run_an_operation(Operation $operation): void
{
$square = new class() implements Operation {
public function on(iterable $collection): Closure
public function __invoke(): Closure
{
return static function () use ($collection) {
return static function ($collection): Generator {
foreach ($collection as $item) {
yield $item ** 2;
}
Expand All @@ -1072,9 +1073,9 @@ public function on(iterable $collection): Closure
};

$sqrt = new class() implements Operation {
public function on(iterable $collection): Closure
public function __invoke(): Closure
{
return static function () use ($collection) {
return static function ($collection) {
foreach ($collection as $item) {
yield $item ** .5;
}
Expand All @@ -1083,9 +1084,9 @@ public function on(iterable $collection): Closure
};

$map = new class() implements Operation {
public function on(iterable $collection): Closure
public function __invoke(): Closure
{
return static function () use ($collection) {
return static function ($collection) {
foreach ($collection as $item) {
yield (int) $item;
}
Expand Down
4 changes: 2 additions & 2 deletions src/Base.php
Original file line number Diff line number Diff line change
Expand Up @@ -108,14 +108,14 @@ public function getIterator(): ClosureIterator
*/
public function run(Operation ...$operations)
{
return new static((new Run(...$operations))->on($this));
return new static((new Run(...$operations))($this));
}

/**
* {@inheritdoc}
*/
public function transform(Transformation ...$transformers)
{
return (new Transform(...$transformers))->on($this);
return (new Transform(...$transformers))($this);
}
}
2 changes: 2 additions & 0 deletions src/Contract/Base.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
namespace loophp\collection\Contract;

use IteratorAggregate;
use loophp\collection\Contract\Transformation\Runable;
use loophp\collection\Contract\Transformation\Transformable;

/**
* Interface Base.
Expand Down
51 changes: 51 additions & 0 deletions src/Contract/Collection.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,57 @@

namespace loophp\collection\Contract;

use loophp\collection\Contract\Operation\Appendable;
use loophp\collection\Contract\Operation\Applyable;
use loophp\collection\Contract\Operation\Chunkable;
use loophp\collection\Contract\Operation\Collapseable;
use loophp\collection\Contract\Operation\Combinateable;
use loophp\collection\Contract\Operation\Combineable;
use loophp\collection\Contract\Operation\Cycleable;
use loophp\collection\Contract\Operation\Distinctable;
use loophp\collection\Contract\Operation\Explodeable;
use loophp\collection\Contract\Operation\Filterable;
use loophp\collection\Contract\Operation\Flattenable;
use loophp\collection\Contract\Operation\Flipable;
use loophp\collection\Contract\Operation\Forgetable;
use loophp\collection\Contract\Operation\Intersperseable;
use loophp\collection\Contract\Operation\Keysable;
use loophp\collection\Contract\Operation\Limitable;
use loophp\collection\Contract\Operation\Loopable;
use loophp\collection\Contract\Operation\Mapable;
use loophp\collection\Contract\Operation\Mergeable;
use loophp\collection\Contract\Operation\Normalizeable;
use loophp\collection\Contract\Operation\Nthable;
use loophp\collection\Contract\Operation\Onlyable;
use loophp\collection\Contract\Operation\Padable;
use loophp\collection\Contract\Operation\Permutateable;
use loophp\collection\Contract\Operation\Pluckable;
use loophp\collection\Contract\Operation\Prependable;
use loophp\collection\Contract\Operation\Productable;
use loophp\collection\Contract\Operation\Reductionable;
use loophp\collection\Contract\Operation\Reverseable;
use loophp\collection\Contract\Operation\RSampleable;
use loophp\collection\Contract\Operation\Scaleable;
use loophp\collection\Contract\Operation\Shuffleable;
use loophp\collection\Contract\Operation\Skipable;
use loophp\collection\Contract\Operation\Sliceable;
use loophp\collection\Contract\Operation\Sortable;
use loophp\collection\Contract\Operation\Splitable;
use loophp\collection\Contract\Operation\Tailable;
use loophp\collection\Contract\Operation\Untilable;
use loophp\collection\Contract\Operation\Walkable;
use loophp\collection\Contract\Operation\Windowable;
use loophp\collection\Contract\Operation\Zipable;
use loophp\collection\Contract\Transformation\Allable;
use loophp\collection\Contract\Transformation\Containsable;
use loophp\collection\Contract\Transformation\Firstable;
use loophp\collection\Contract\Transformation\FoldLeftable;
use loophp\collection\Contract\Transformation\FoldRightable;
use loophp\collection\Contract\Transformation\Getable;
use loophp\collection\Contract\Transformation\Implodeable;
use loophp\collection\Contract\Transformation\Lastable;
use loophp\collection\Contract\Transformation\Reduceable;

use const INF;

/**
Expand Down
6 changes: 2 additions & 4 deletions src/Contract/Operation.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,10 @@
/**
* Interface Operation.
*/
interface Operation extends Transformation
interface Operation
{
/**
* @param iterable<mixed> $collection
*
* @return Closure
*/
public function on(iterable $collection): Closure;
public function __invoke(): Closure;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Appendable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Applyable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Chunkable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Collapseable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Combinateable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Combineable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Cycleable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Distinctable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Explodeable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Filterable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

use const PHP_INT_MAX;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Flipable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Forgetable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Intersperseable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Keysable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Limitable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Loopable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Mapable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Mergeable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Normalizeable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Nthable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Onlyable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

declare(strict_types=1);

namespace loophp\collection\Contract;
namespace loophp\collection\Contract\Operation;

use loophp\collection\Contract\Base;

/**
* Interface Padable.
Expand Down

0 comments on commit c1b3f91

Please sign in to comment.