Skip to content

Commit

Permalink
fix: gitattributes and psalm 1 level
Browse files Browse the repository at this point in the history
  • Loading branch information
darkdarin committed Feb 1, 2024
1 parent d5bd286 commit 428b3d1
Show file tree
Hide file tree
Showing 43 changed files with 395 additions and 24 deletions.
8 changes: 8 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/.github export-ignore
/vendor export-ignore
.editorconfig export-ignore
/.gitignore export-ignore
/composer.lock export-ignore
/phpunit.xml export-ignore
/pint.json export-ignore
/psalm.xml export-ignore
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
},
"require-dev": {
"laravel/pint": "^1.1",
"roave/security-advisories": "dev-latest"
"roave/security-advisories": "dev-latest",
"vimeo/psalm": "^5.6"
}
}
15 changes: 15 additions & 0 deletions psalm.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0"?>
<psalm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://getpsalm.org/schema/config"
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
errorLevel="1"
findUnusedBaselineEntry="true"
findUnusedCode="true"
>
<projectFiles>
<directory name="src" />
<ignoreFiles>
<directory name="vendor" />
</ignoreFiles>
</projectFiles>
</psalm>
3 changes: 3 additions & 0 deletions src/Contracts/DocBlockRendererInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

use DarkDarin\PhpEntityRenderer\EntityAliases;

/**
* @psalm-api
*/
interface DocBlockRendererInterface
{
public function renderDocBlock(EntityAliases $entityAliases): string;
Expand Down
3 changes: 3 additions & 0 deletions src/Contracts/EntityRendererInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

use DarkDarin\PhpEntityRenderer\EntityAliases;

/**
* @psalm-api
*/
interface EntityRendererInterface
{
public function render(EntityAliases $entityAliases): string;
Expand Down
3 changes: 3 additions & 0 deletions src/Contracts/EntityWithDescriptionInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

namespace DarkDarin\PhpEntityRenderer\Contracts;

/**
* @psalm-api
*/
interface EntityWithDescriptionInterface
{
public function setDescription(string $description): self;
Expand Down
14 changes: 14 additions & 0 deletions src/Contracts/HasAttributesInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace DarkDarin\PhpEntityRenderer\Contracts;

use DarkDarin\PhpEntityRenderer\Renderers\AttributeRenderer;

/**
* @psalm-api
*/
interface HasAttributesInterface
{
public function getAttributes(): array;
public function addAttribute(AttributeRenderer $attribute): self;
}
15 changes: 15 additions & 0 deletions src/Contracts/HasConstantsInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace DarkDarin\PhpEntityRenderer\Contracts;

use DarkDarin\PhpEntityRenderer\Renderers\ConstantRenderer;

/**
* @psalm-api
*/
interface HasConstantsInterface
{
public function getConstants(): array;

public function addConstant(ConstantRenderer $constant): self;
}
17 changes: 17 additions & 0 deletions src/Contracts/HasDocBlockInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?php

namespace DarkDarin\PhpEntityRenderer\Contracts;

use DarkDarin\PhpEntityRenderer\Renderers\DocBlockRenderer;

/**
* @psalm-api
*/
interface HasDocBlockInterface
{
public function getDocBlock(): DocBlockRenderer;

public function addComment(string $comment = ''): self;

public function setDocBlock(DocBlockRenderer $docBlock): self;
}
20 changes: 20 additions & 0 deletions src/Contracts/HasExtendsInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace DarkDarin\PhpEntityRenderer\Contracts;

use DarkDarin\PhpEntityRenderer\EntityAliases;

/**
* @psalm-api
*/
interface HasExtendsInterface
{
public function getExtends(): ?string;

/**
* @param EntityAliases $entityAliases
* @param class-string $className
* @return $this
*/
public function setExtends(EntityAliases $entityAliases, string $className): self;
}
20 changes: 20 additions & 0 deletions src/Contracts/HasImplementsInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace DarkDarin\PhpEntityRenderer\Contracts;

use DarkDarin\PhpEntityRenderer\EntityAliases;

/**
* @psalm-api
*/
interface HasImplementsInterface
{
public function getImplements(): array;

/**
* @param EntityAliases $entityAliases
* @param class-string ...$classNames
* @return $this
*/
public function addImplements(EntityAliases $entityAliases, string ...$classNames): self;
}
15 changes: 15 additions & 0 deletions src/Contracts/HasMethodsInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace DarkDarin\PhpEntityRenderer\Contracts;

use DarkDarin\PhpEntityRenderer\Renderers\MethodRenderer;

/**
* @psalm-api
*/
interface HasMethodsInterface
{
public function getMethods(): array;

public function addMethod(MethodRenderer $method): self;
}
15 changes: 15 additions & 0 deletions src/Contracts/HasModifierInheritanceInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace DarkDarin\PhpEntityRenderer\Contracts;

use DarkDarin\PhpEntityRenderer\Enums\InheritanceModifierEnum;

/**
* @psalm-api
*/
interface HasModifierInheritanceInterface
{
public function getInheritanceModifier(): ?InheritanceModifierEnum;

public function setInheritanceModifier(InheritanceModifierEnum $inheritanceModifier): self;
}
13 changes: 13 additions & 0 deletions src/Contracts/HasModifierReadonlyInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace DarkDarin\PhpEntityRenderer\Contracts;

/**
* @psalm-api
*/
interface HasModifierReadonlyInterface
{
public function isReadonly(): bool;

public function setReadonly(bool $isReadonly = true): self;
}
13 changes: 13 additions & 0 deletions src/Contracts/HasModifierStaticInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace DarkDarin\PhpEntityRenderer\Contracts;

/**
* @psalm-api
*/
interface HasModifierStaticInterface
{
public function isStatic(): bool;

public function setStatic(bool $isStatic = true): self;
}
15 changes: 15 additions & 0 deletions src/Contracts/HasModifierVisibilityInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace DarkDarin\PhpEntityRenderer\Contracts;

use DarkDarin\PhpEntityRenderer\Enums\VisibilityModifierEnum;

/**
* @psalm-api
*/
interface HasModifierVisibilityInterface
{
public function getVisibilityModifier(): ?VisibilityModifierEnum;

public function setVisibilityModifier(?VisibilityModifierEnum $visibilityModifier = null): self;
}
19 changes: 19 additions & 0 deletions src/Contracts/HasPropertiesInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

namespace DarkDarin\PhpEntityRenderer\Contracts;

use DarkDarin\PhpEntityRenderer\Renderers\PropertyRenderer;

/**
* @psalm-api
*/
interface HasPropertiesInterface
{
public function getProperties(): array;

public function getDynamicProperties(): array;

public function addProperty(PropertyRenderer $property): self;

public function addDynamicProperty(PropertyRenderer $property): self;
}
20 changes: 20 additions & 0 deletions src/Contracts/HasTraitsInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace DarkDarin\PhpEntityRenderer\Contracts;

use DarkDarin\PhpEntityRenderer\EntityAliases;

/**
* @psalm-api
*/
interface HasTraitsInterface
{
public function getTraits(): array;

/**
* @param EntityAliases $entityAliases
* @param class-string ...$classNames
* @return $this
*/
public function addTraits(EntityAliases $entityAliases, string ...$classNames): self;
}
3 changes: 3 additions & 0 deletions src/Contracts/TypeRendererInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

namespace DarkDarin\PhpEntityRenderer\Contracts;

/**
* @psalm-api
*/
interface TypeRendererInterface extends EntityRendererInterface, DocBlockRendererInterface
{
public function setNullable(bool $nullable = true): TypeRendererInterface;
Expand Down
9 changes: 8 additions & 1 deletion src/EntityAliases.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,13 @@

class EntityAliases
{
/** @var array<string, class-string|null> */
/** @var array<string, class-string> */
private array $aliases = [];

/**
* @param class-string $type
* @return string
*/
public function addAlias(string $type): string
{
if ($this->isBuiltin($type)) {
Expand All @@ -27,6 +31,9 @@ public function addAlias(string $type): string
return $typeAlias;
}

/**
* @return array<string, class-string>
*/
public function getAliases(): array
{
return $this->aliases;
Expand Down
7 changes: 7 additions & 0 deletions src/Helpers/HasExtends.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
namespace DarkDarin\PhpEntityRenderer\Helpers;

use DarkDarin\PhpEntityRenderer\EntityAliases;
use DarkDarin\PhpEntityRenderer\Renderers\ClassRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\InterfaceRenderer;

trait HasExtends
{
Expand All @@ -13,6 +15,11 @@ public function getExtends(): ?string
return $this->extends;
}

/**
* @param EntityAliases $entityAliases
* @param class-string $className
* @return $this
*/
public function setExtends(EntityAliases $entityAliases, string $className): self
{
$this->extends = $entityAliases->addAlias($className);
Expand Down
5 changes: 5 additions & 0 deletions src/Helpers/HasImplements.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ public function getImplements(): array
return $this->implements;
}

/**
* @param EntityAliases $entityAliases
* @param class-string ...$classNames
* @return $this
*/
public function addImplements(EntityAliases $entityAliases, string ...$classNames): self
{
foreach ($classNames as $className) {
Expand Down
13 changes: 9 additions & 4 deletions src/Helpers/HasModifiers.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,38 @@

namespace DarkDarin\PhpEntityRenderer\Helpers;

use DarkDarin\PhpEntityRenderer\Contracts\HasModifierInheritanceInterface;
use DarkDarin\PhpEntityRenderer\Contracts\HasModifierReadonlyInterface;
use DarkDarin\PhpEntityRenderer\Contracts\HasModifierStaticInterface;
use DarkDarin\PhpEntityRenderer\Contracts\HasModifierVisibilityInterface;

trait HasModifiers
{
protected function renderModifiers(): string
{
$modifiers = [];

if (method_exists($this, 'getInheritanceModifier')) {
if ($this instanceof HasModifierInheritanceInterface) {
$inheritance = $this->getInheritanceModifier();
if ($inheritance !== null) {
$modifiers[] = $inheritance->value;
}
}

if (method_exists($this, 'getVisibilityModifier')) {
if ($this instanceof HasModifierVisibilityInterface) {
$visibility = $this->getVisibilityModifier();
if ($visibility !== null) {
$modifiers[] = $visibility->value;
}
}

if (method_exists($this, 'isStatic')) {
if ($this instanceof HasModifierStaticInterface) {
if ($this->isStatic()) {
$modifiers[] = 'static';
}
}

if (method_exists($this, 'isReadonly')) {
if ($this instanceof HasModifierReadonlyInterface) {
if ($this->isReadonly()) {
$modifiers[] = 'readonly';
}
Expand Down
5 changes: 5 additions & 0 deletions src/Helpers/HasTraits.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ public function getTraits(): array
return $this->traits;
}

/**
* @param EntityAliases $entityAliases
* @param class-string ...$classNames
* @return $this
*/
public function addTraits(EntityAliases $entityAliases, string ...$classNames): self
{
foreach ($classNames as $className) {
Expand Down
Loading

0 comments on commit 428b3d1

Please sign in to comment.