From 33ceb3e9156e52f3588c5254fe399db527e29065 Mon Sep 17 00:00:00 2001 From: Carlos Granados Date: Sat, 17 Feb 2024 08:17:55 +0100 Subject: [PATCH] Add the PropertyRead and PropertyWrite attributes --- README.md | 17 +++++---- composer.json | 2 +- ...tic-analysis-annotations-to-attributes.php | 4 ++ src/AnnotationsToAttributesRector.php | 3 +- .../Fixture/PropertyReadAttributeTest.php.inc | 37 +++++++++++++++++++ .../PropertyWriteAttributeTest.php.inc | 37 +++++++++++++++++++ 6 files changed, 91 insertions(+), 9 deletions(-) create mode 100644 tests/Fixture/PropertyReadAttributeTest.php.inc create mode 100644 tests/Fixture/PropertyWriteAttributeTest.php.inc diff --git a/README.md b/README.md index 6431159..ce367db 100644 --- a/README.md +++ b/README.md @@ -110,13 +110,16 @@ return RectorConfig::configure() These are the available attributes and their corresponding PHPDoc annotations: -| Attribute | PHPDoc Annotation | -|---------------------------------------------------------------------------------------------|-------------------| -| [IsReadOnly](https://github.com/php-static-analysis/attributes/blob/main/doc/IsReadOnly.md) | `@readonly` | -| [Param](https://github.com/php-static-analysis/attributes/blob/main/doc/Param.md) | `@param` | -| [Returns](https://github.com/php-static-analysis/attributes/blob/main/doc/Returns.md) | `@return` | -| [Template](https://github.com/php-static-analysis/attributes/blob/main/doc/Template.md) | `@template` | -| [Type](https://github.com/php-static-analysis/attributes/blob/main/doc/Type.md) | `@var` | +| Attribute | PHPDoc Annotations | +|---------------------------------------------------------------------------------------------------|--------------------| +| [IsReadOnly](https://github.com/php-static-analysis/attributes/blob/main/doc/IsReadOnly.md) | `@readonly` | +| [Param](https://github.com/php-static-analysis/attributes/blob/main/doc/Param.md) | `@param` | +| [Property](https://github.com/php-static-analysis/attributes/blob/main/doc/Property.md) | `@property` `@var` | +| [PropertyRead](https://github.com/php-static-analysis/attributes/blob/main/doc/PropertyRead.md) | `@property-read` | +| [PropertyWrite](https://github.com/php-static-analysis/attributes/blob/main/doc/PropertyWrite.md) | `@property-write` | +| [Returns](https://github.com/php-static-analysis/attributes/blob/main/doc/Returns.md) | `@return` | +| [Template](https://github.com/php-static-analysis/attributes/blob/main/doc/Template.md) | `@template` | +| [Type](https://github.com/php-static-analysis/attributes/blob/main/doc/Type.md) | `@var` `@return` | ### Location of Param attributes diff --git a/composer.json b/composer.json index df49b05..97e6079 100644 --- a/composer.json +++ b/composer.json @@ -24,7 +24,7 @@ "prefer-stable": true, "require": { "php": ">=8.0", - "php-static-analysis/attributes": "^0.1.3 || dev-main", + "php-static-analysis/attributes": "^0.1.4 || dev-main", "rector/rector": "^0.19 || ^1.0" }, "require-dev": { diff --git a/config/sets/php-static-analysis-annotations-to-attributes.php b/config/sets/php-static-analysis-annotations-to-attributes.php index 8f5a55d..738d3ff 100644 --- a/config/sets/php-static-analysis-annotations-to-attributes.php +++ b/config/sets/php-static-analysis-annotations-to-attributes.php @@ -2,6 +2,8 @@ declare(strict_types=1); +use PhpStaticAnalysis\Attributes\PropertyRead; +use PhpStaticAnalysis\Attributes\PropertyWrite; use Rector\Config\RectorConfig; use Rector\Php80\ValueObject\AnnotationToAttribute; use PhpStaticAnalysis\Attributes\IsReadOnly; @@ -18,6 +20,8 @@ [ new AnnotationToAttribute('param', Param::class), new AnnotationToAttribute('property', Property::class), + new AnnotationToAttribute('property_read', PropertyRead::class), + new AnnotationToAttribute('property_write', PropertyWrite::class), new AnnotationToAttribute('readonly', IsReadOnly::class), new AnnotationToAttribute('return', Returns::class), new AnnotationToAttribute('template', Template::class), diff --git a/src/AnnotationsToAttributesRector.php b/src/AnnotationsToAttributesRector.php index b0695f7..41c8e32 100644 --- a/src/AnnotationsToAttributesRector.php +++ b/src/AnnotationsToAttributesRector.php @@ -116,7 +116,8 @@ public function configure(array $configuration): void { foreach ($configuration as $key => $value) { if ($value instanceof AnnotationToAttribute) { - $this->annotationsToAttributes[$value->getTag()] = $value; + $tag = str_replace('_', '-', $value->getTag()); + $this->annotationsToAttributes[$tag] = $value; } elseif ($key == 'addParamAttributeOnParameters') { $this->addParamAttributeOnParameters = $value; } elseif ($key == 'useTypeAttributeForReturnAnnotation') { diff --git a/tests/Fixture/PropertyReadAttributeTest.php.inc b/tests/Fixture/PropertyReadAttributeTest.php.inc new file mode 100644 index 0000000..d286667 --- /dev/null +++ b/tests/Fixture/PropertyReadAttributeTest.php.inc @@ -0,0 +1,37 @@ + +----- + diff --git a/tests/Fixture/PropertyWriteAttributeTest.php.inc b/tests/Fixture/PropertyWriteAttributeTest.php.inc new file mode 100644 index 0000000..6bbfe05 --- /dev/null +++ b/tests/Fixture/PropertyWriteAttributeTest.php.inc @@ -0,0 +1,37 @@ + +----- +