diff --git a/composer.json b/composer.json index df1849b4..212bec9a 100755 --- a/composer.json +++ b/composer.json @@ -70,9 +70,8 @@ "src/flextype" ], "files": [ - "src/flextype/Support/Helpers/FinderHelper.php", - "src/flextype/Support/Helpers/FinderFilterHelper.php", - "src/flextype/Support/Helpers/ArraysFilterHelper.php", + "src/flextype/Support/Helpers/FindHelper.php", + "src/flextype/Support/Helpers/FilterHelper.php", "src/flextype/Foundation/Helpers/FlextypeHelper.php" ] }, diff --git a/src/flextype/Support/Helpers/ArraysFilterHelper.php b/src/flextype/Support/Helpers/FilterHelper.php similarity index 94% rename from src/flextype/Support/Helpers/ArraysFilterHelper.php rename to src/flextype/Support/Helpers/FilterHelper.php index e77db4b6..db53debe 100644 --- a/src/flextype/Support/Helpers/ArraysFilterHelper.php +++ b/src/flextype/Support/Helpers/FilterHelper.php @@ -7,18 +7,16 @@ declare(strict_types=1); * Founded by Sergey Romanenko and maintained by Flextype Community. */ -use Atomastic\Arrays\Arrays; - -if (! function_exists('arrays_filter')) { +if (! function_exists('filter')) { /** * Create a collection from the given value and filter it. * * @param mixed $items Items. - * @param array $filter Filters array. + * @param array $filter Filters params array. * * @return array|bool|int */ - function arrays_filter($items = [], array $filter = []) + function filter($items = [], array $filter = []) { $collection = arrays($items); diff --git a/src/flextype/Support/Helpers/FinderFilterHelper.php b/src/flextype/Support/Helpers/FindHelper.php similarity index 65% rename from src/flextype/Support/Helpers/FinderFilterHelper.php rename to src/flextype/Support/Helpers/FindHelper.php index 8618e6d0..64283767 100644 --- a/src/flextype/Support/Helpers/FinderFilterHelper.php +++ b/src/flextype/Support/Helpers/FindHelper.php @@ -9,13 +9,19 @@ declare(strict_types=1); use Symfony\Component\Finder\Finder; -if (! function_exists('find_filter')) { - /** - * Create a Finder filter instance. - */ - function find_filter(string $path, array $filter = [], $search_in = 'files') +if (! function_exists('find')) { + /** + * Create a Finder instance with predefined filter params or without them. + * + * @param string $path Path. + * @param array $filter Filters params array. + * @param string $search_in Search in 'files' or 'directories'. Default is 'files'. + * + * @return Symfony\Component\Finder + */ + function find(string $path = '', array $filter = [], string $search_in = 'files'): Finder { - $find = find()->in($path); + $find = filesystem()->find()->in($path); isset($filter['depth']) and $find->depth($filter['depth']) or $find->depth(1); isset($filter['date']) and $find->date($filter['date']); @@ -30,6 +36,6 @@ if (! function_exists('find_filter')) { isset($filter['sort_by']) && $filter['sort_by'] === 'mtime' and $find->sortByModifiedTime(); isset($filter['sort_by']) && $filter['sort_by'] === 'ctime' and $find->sortByChangedTime(); - return $search_in === 'files' ? $find->files() : $find->directories(); + return $search_in === 'directories' ? $find->directories() : $find->files(); } } diff --git a/src/flextype/Support/Helpers/FinderHelper.php b/src/flextype/Support/Helpers/FinderHelper.php deleted file mode 100644 index d2d55b21..00000000 --- a/src/flextype/Support/Helpers/FinderHelper.php +++ /dev/null @@ -1,20 +0,0 @@ -assertEquals([], arrays_filter()); - $this->assertEquals([], arrays_filter([])); - $this->assertEquals([], arrays_filter([], [])); - $this->assertEquals(['foo', 'bar'], arrays_filter(['foo', 'bar'], [])); +test('test filter() method', function () { + $this->assertEquals([], filter()); + $this->assertEquals([], filter([])); + $this->assertEquals([], filter([], [])); + $this->assertEquals(['foo', 'bar'], filter(['foo', 'bar'], [])); $data = ['home' => ['title' => 'Home'], 'about' => ['title' => 'About'], 'blog' => ['title' => 'Blog']]; // return: first - $this->assertEquals(['title' => 'Home'], arrays_filter($data, ['return' => 'first'])); + $this->assertEquals(['title' => 'Home'], filter($data, ['return' => 'first'])); // return: last - $this->assertEquals(['title' => 'Blog'], arrays_filter($data, ['return' => 'last'])); + $this->assertEquals(['title' => 'Blog'], filter($data, ['return' => 'last'])); // return: next - $this->assertEquals(['title' => 'About'], arrays_filter($data, ['return' => 'next'])); + $this->assertEquals(['title' => 'About'], filter($data, ['return' => 'next'])); // return: random - $random = arrays_filter($data, ['return' => 'random']); + $random = filter($data, ['return' => 'random']); $this->assertContains($random, $data); - $random = arrays_filter($data, ['return' => 'random', 'random' => 0]); + $random = filter($data, ['return' => 'random', 'random' => 0]); $this->assertIsArray($random); $this->assertCount(0, $random); - $random = arrays_filter($data, ['return' => 'random', 'random' => 1]); + $random = filter($data, ['return' => 'random', 'random' => 1]); $this->assertIsArray($random); $this->assertCount(1, $random); - $this->assertContains(arrays_filter($data, ['return' => 'first']), $data); + $this->assertContains(filter($data, ['return' => 'first']), $data); - $random = arrays_filter($data, ['return' => 'random', 'random' => 2]); + $random = filter($data, ['return' => 'random', 'random' => 2]); $this->assertIsArray($random); $this->assertCount(2, $random); - $this->assertContains(arrays_filter($random, ['return' => 'first']), $data); - $this->assertContains(arrays_filter($random, ['return' => 'last']), $data); + $this->assertContains(filter($random, ['return' => 'first']), $data); + $this->assertContains(filter($random, ['return' => 'last']), $data); // return: exists - $this->assertTrue(arrays_filter($data, ['return' => 'exists'])); + $this->assertTrue(filter($data, ['return' => 'exists'])); // return: shuffle $this->assertTrue( - is_array(arrays_filter($data, ['return' => 'shuffle'])) && - is_array(arrays_filter($data, ['return' => 'shuffle'])) + is_array(filter($data, ['return' => 'shuffle'])) && + is_array(filter($data, ['return' => 'shuffle'])) ); // return: count - $this->assertEquals(3, arrays_filter($data, ['return' => 'count'])); + $this->assertEquals(3, filter($data, ['return' => 'count'])); // param: limit and return: all - $this->assertEquals(['home' => ['title' => 'Home']], arrays_filter($data, ['return' => 'all', 'limit' => 1])); + $this->assertEquals(['home' => ['title' => 'Home']], filter($data, ['return' => 'all', 'limit' => 1])); // param: offset and return: all $this->assertEquals(['about' => ['title' => 'About'], - 'blog' => ['title' => 'Blog']], arrays_filter($data, ['return' => 'all', 'offset' => 1])); + 'blog' => ['title' => 'Blog']], filter($data, ['return' => 'all', 'offset' => 1])); // param: slice_offset slice_limit and return: all - $this->assertEquals(['about' => ['title' => 'About']], arrays_filter($data, ['return' => 'all', 'slice_offset' => 1, 'slice_limit' => 1])); + $this->assertEquals(['about' => ['title' => 'About']], filter($data, ['return' => 'all', 'slice_offset' => 1, 'slice_limit' => 1])); // param: sort_by and return: all $this->assertEquals(['about' => ['title' => 'About'], 'blog' => ['title' => 'Blog'], 'home' => ['title' => 'Home']], - arrays_filter($data, ['return' => 'all', + filter($data, ['return' => 'all', 'sort_by' => ['key' => 'title', 'direction' => 'ASC']])); $this->assertEquals(['home' => ['title' => 'Home'], 'blog' => ['title' => 'Blog'], 'about' => ['title' => 'About']], - arrays_filter($data, ['return' => 'all', + filter($data, ['return' => 'all', 'sort_by' => ['key' => 'title', 'direction' => 'DESC']])); $this->assertEquals(['Home' => [0 => ['title' => 'Home']], 'About' => [0 => ['title' => 'About']], 'Blog' => [0 => ['title' => 'Blog']]], - arrays_filter($data, ['return' => 'all', + filter($data, ['return' => 'all', 'group_by' => 'title'])); // param: where and return: all $this->assertEquals(['about' => ['title' => 'About']], - arrays_filter($data, ['return' => 'all', + filter($data, ['return' => 'all', 'where' => [['key' => 'title', 'operator' => '=', 'value' => 'About']]])); }); diff --git a/tests/Support/Helpers/FinderHelperTest.php b/tests/Support/Helpers/FindHelperTest.php similarity index 54% rename from tests/Support/Helpers/FinderHelperTest.php rename to tests/Support/Helpers/FindHelperTest.php index 4787b38e..11a742d4 100644 --- a/tests/Support/Helpers/FinderHelperTest.php +++ b/tests/Support/Helpers/FindHelperTest.php @@ -14,5 +14,8 @@ afterEach(function (): void { }); test('test find() method', function () { - $this->assertInstanceOf(Finder::class, find()); + $this->assertTrue(find(PATH['project'] . '/entries')->hasResults()); + $this->assertTrue(find(PATH['project'] . '/entries', [])->hasResults()); + $this->assertTrue(find(PATH['project'] . '/entries', [], 'files')->hasResults()); + $this->assertTrue(find(PATH['project'], [], 'directories')->hasResults()); }); diff --git a/tests/Support/Helpers/FinderFilterHelperTest.php b/tests/Support/Helpers/FinderFilterHelperTest.php deleted file mode 100644 index 5336b83d..00000000 --- a/tests/Support/Helpers/FinderFilterHelperTest.php +++ /dev/null @@ -1,21 +0,0 @@ -directory(PATH['project'] . '/entries')->create(0755, true); - flextype('entries')->create('foo', []); -}); - -afterEach(function (): void { - filesystem()->directory(PATH['project'] . '/entries')->delete(); -}); - -test('test find_filter() method', function () { - $this->assertTrue(find_filter(PATH['project'] . '/entries')->hasResults()); - $this->assertTrue(find_filter(PATH['project'] . '/entries', [])->hasResults()); - $this->assertTrue(find_filter(PATH['project'] . '/entries', [], 'files')->hasResults()); - $this->assertTrue(find_filter(PATH['project'], [], 'directories')->hasResults()); -});