diff --git a/README.md b/README.md index b28c0dd..bb9702f 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,9 @@ # IDE Helper Generator for Laravel -[![Tests](https://github.com/barryvdh/laravel-ide-helper/actions/workflows/run-tests.yml/badge.svg)](https://github.com/barryvdh/laravel-ide-helper/actions) +[![Tests](https://github.com/scrumble-nl/laravel-ide-helper/actions/workflows/run-tests.yml/badge.svg)](https://github.com/scrumble-nl/laravel-ide-helper/actions) [![Packagist License](https://poser.pugx.org/barryvdh/laravel-ide-helper/license.png)](http://choosealicense.com/licenses/mit/) [![Latest Stable Version](https://poser.pugx.org/barryvdh/laravel-ide-helper/version.png)](https://packagist.org/packages/barryvdh/laravel-ide-helper) [![Total Downloads](https://poser.pugx.org/barryvdh/laravel-ide-helper/d/total.png)](https://packagist.org/packages/barryvdh/laravel-ide-helper) -[![Fruitcake](https://img.shields.io/badge/Powered%20By-Fruitcake-b2bc35.svg)](https://fruitcake.nl/) **Complete PHPDocs, directly from the source** diff --git a/src/helpers/PhpDocTypeParser.php b/src/helpers/PhpDocTypeParser.php index ed1aa7a..b7913d7 100644 --- a/src/helpers/PhpDocTypeParser.php +++ b/src/helpers/PhpDocTypeParser.php @@ -9,12 +9,12 @@ class PhpDocTypeParser /** * @var string */ - private $typeAlias; + private string $typeAlias; /** * @var array */ - private $namespaceAliases; + private array $namespaceAliases; /** * @param string $typeAlias @@ -29,7 +29,7 @@ class PhpDocTypeParser /** * @return string|null */ - public function parse() + public function parse(): string|null { $matches = []; preg_match('/(\w+)(<.*>)/', $this->typeAlias, $matches); @@ -56,16 +56,25 @@ class PhpDocTypeParser return ''; } - $matches = []; - preg_match_all('/\w+/', $template, $matches); - $types = array_unique($matches[0]); - foreach ($types as $type) { - $typeAlias = $this->namespaceAliases[$type] ?? $type; + $type = ''; + $result = ''; - dump($this->namespaceAliases, $typeAlias); - $template = preg_replace("/\W$type\W/", $typeAlias, $template); + foreach (str_split($template) as $char) { + $match = preg_match('/[A-z]/', $char); + + if (!$match) { + $type = $this->namespaceAliases[$type] ?? $type; + $result .= $type; + $result .= $char; + $type = ''; + + + continue; + } + + $type .= $char; } - return $template; + return $result; } } diff --git a/tests/Console/ModelsCommand/GenerateMixinCollection/Models/WithCollection.php b/tests/Console/ModelsCommand/GenerateMixinCollection/Models/WithCollection.php index e0b5882..7f4a53d 100644 --- a/tests/Console/ModelsCommand/GenerateMixinCollection/Models/WithCollection.php +++ b/tests/Console/ModelsCommand/GenerateMixinCollection/Models/WithCollection.php @@ -12,35 +12,35 @@ use Illuminate\Support\Collection as IntCollection; class WithCollection extends Model { - // /** - // * @return Collection - // */ - // public function getCollectionAttribute(): Collection - // { - // return new Collection(); - // } - // - // /** - // * @return Collection - // */ - // public function getCollectionWithoutTemplateAttribute(): Collection - // { - // return new Collection(); - // } - // - // public function getCollectionWithoutDocBlockAttribute(): Collection - // { - // return new Collection(); - // } - // - // /** - // * @return Collection - // */ - // public function getCollectionWithNonModelTemplateAttribute(): Collection - // { - // return new Collection(); - // } - // + /** + * @return Collection + */ + public function getCollectionAttribute(): Collection + { + return new Collection(); + } + + /** + * @return Collection + */ + public function getCollectionWithoutTemplateAttribute(): Collection + { + return new Collection(); + } + + public function getCollectionWithoutDocBlockAttribute(): Collection + { + return new Collection(); + } + + /** + * @return Collection + */ + public function getCollectionWithNonModelTemplateAttribute(): Collection + { + return new Collection(); + } + /** * @return Collection>> */ diff --git a/tests/Console/ModelsCommand/GenerateMixinCollection/__snapshots__/Test__test__1.php b/tests/Console/ModelsCommand/GenerateMixinCollection/__snapshots__/Test__test__1.php index 37c065a..d7d64f4 100644 --- a/tests/Console/ModelsCommand/GenerateMixinCollection/__snapshots__/Test__test__1.php +++ b/tests/Console/ModelsCommand/GenerateMixinCollection/__snapshots__/Test__test__1.php @@ -15,42 +15,41 @@ use Illuminate\Support\Collection as IntCollection; */ class WithCollection extends Model { -// /** -// * @return Collection -// */ -// public function getCollectionAttribute(): Collection -// { -// return new Collection(); -// } -// -// /** -// * @return Collection -// */ -// public function getCollectionWithoutTemplateAttribute(): Collection -// { -// return new Collection(); -// } -// -// public function getCollectionWithoutDocBlockAttribute(): Collection -// { -// return new Collection(); -// } -// -// /** -// * @return Collection -// */ -// public function getCollectionWithNonModelTemplateAttribute(): Collection -// { -// return new Collection(); -// } -// + /** + * @return Collection + */ + public function getCollectionAttribute(): Collection + { + return new Collection(); + } + + /** + * @return Collection + */ + public function getCollectionWithoutTemplateAttribute(): Collection + { + return new Collection(); + } + + public function getCollectionWithoutDocBlockAttribute(): Collection + { + return new Collection(); + } + + /** + * @return Collection + */ + public function getCollectionWithNonModelTemplateAttribute(): Collection + { + return new Collection(); + } + /** * @return Collection>> */ public function getCollectionWithNestedTemplateAttribute(): Collection { return new Collection(); - } } > $collection_with_nested_template + * @property-read \Illuminate\Support\Collection $collection + * @property-read \Illuminate\Support\Collection<\Illuminate\Support\Collection, \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\CollectionModel<\Illuminate\Support\Collection, \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\CollectionModel>> $collection_with_nested_template + * @property-read \Illuminate\Support\Collection $collection_with_non_model_template + * @property-read \Illuminate\Support\Collection $collection_without_doc_block + * @property-read \Illuminate\Support\Collection $collection_without_template * @method static \Illuminate\Database\Eloquent\Builder|WithCollection newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|WithCollection newQuery() * @method static \Illuminate\Database\Eloquent\Builder|WithCollection query()