Skip to content

Commit

Permalink
feat: EntityWithDescriptionInterface and some fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
darkdarin committed Feb 1, 2024
1 parent b0c8f2f commit 301264a
Show file tree
Hide file tree
Showing 22 changed files with 45 additions and 34 deletions.
8 changes: 8 additions & 0 deletions src/Contracts/EntityWithDescriptionInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?php

namespace DarkDarin\PhpEntityRenderer\Contracts;

interface EntityWithDescriptionInterface
{
public function setDescription(string $description): self;
}
2 changes: 1 addition & 1 deletion src/Helpers/HasAttributes.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function addAttribute(AttributeRenderer $attribute): self
private function renderAttributes(EntityAliases $entityAliases, bool $inline = false): string
{
$attributes = array_map(
fn (AttributeRenderer $attribute) => $attribute->render($entityAliases),
fn(AttributeRenderer $attribute) => $attribute->render($entityAliases),
$this->attributes
);

Expand Down
2 changes: 1 addition & 1 deletion src/Helpers/HasConstants.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function addConstant(ConstantRenderer $constant): self
private function renderConstants(EntityAliases $entityAliases): string
{
$constants = array_map(
fn (ConstantRenderer $constant) => $constant->render($entityAliases),
fn(ConstantRenderer $constant) => $constant->render($entityAliases),
$this->constants
);

Expand Down
2 changes: 1 addition & 1 deletion src/Helpers/HasMethods.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function addMethod(MethodRenderer $method): self
protected function renderMethods(EntityAliases $entityAliases, bool $withoutBody = false): string
{
$methods = array_map(
fn (MethodRenderer $method) => $method->render($entityAliases, $withoutBody),
fn(MethodRenderer $method) => $method->render($entityAliases, $withoutBody),
$this->methods
);

Expand Down
2 changes: 1 addition & 1 deletion src/Helpers/HasProperties.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public function addDynamicProperty(PropertyRenderer $property): self
protected function renderProperties(EntityAliases $entityAliases): string
{
$properties = array_map(
fn (PropertyRenderer $property) => $property->render($entityAliases),
fn(PropertyRenderer $property) => $property->render($entityAliases),
$this->properties
);

Expand Down
2 changes: 1 addition & 1 deletion src/Helpers/HasTraits.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public function addTraits(EntityAliases $entityAliases, string ...$classNames):
private function renderTraits(): string
{
$traits = array_map(
fn (string $trait) => 'use ' . $trait . ';',
fn(string $trait) => 'use ' . $trait . ';',
$this->traits
);

Expand Down
2 changes: 1 addition & 1 deletion src/Helpers/IndentsHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ public static function preLine(string $content, string $fill): string
{
$lines = explode(PHP_EOL, $content);

return implode(PHP_EOL, array_map(fn (string $line) => $fill . $line, $lines));
return implode(PHP_EOL, array_map(fn(string $line) => $fill . $line, $lines));
}
}
3 changes: 2 additions & 1 deletion src/Renderers/AbstractEntityRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
namespace DarkDarin\PhpEntityRenderer\Renderers;

use DarkDarin\PhpEntityRenderer\Contracts\EntityRendererInterface;
use DarkDarin\PhpEntityRenderer\Contracts\EntityWithDescriptionInterface;
use DarkDarin\PhpEntityRenderer\EntityAliases;
use DarkDarin\PhpEntityRenderer\Helpers\ClassNameHelper;
use DarkDarin\PhpEntityRenderer\Helpers\HasAttributes;
use DarkDarin\PhpEntityRenderer\Helpers\HasDocBlock;
use DarkDarin\PhpEntityRenderer\Helpers\HasNamespaces;
use DarkDarin\PhpEntityRenderer\Helpers\IndentsHelper;

abstract class AbstractEntityRenderer implements EntityRendererInterface
abstract class AbstractEntityRenderer implements EntityRendererInterface, EntityWithDescriptionInterface
{
use HasAttributes;
use HasDocBlock;
Expand Down
3 changes: 1 addition & 2 deletions src/Renderers/AttributeRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@ class AttributeRenderer implements EntityRendererInterface
public function __construct(
private readonly string $className,
private readonly array $arguments = [],
) {
}
) {}

public function getName(): string
{
Expand Down
1 change: 0 additions & 1 deletion src/Renderers/ClassRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
namespace DarkDarin\PhpEntityRenderer\Renderers;

use DarkDarin\PhpEntityRenderer\EntityAliases;
use DarkDarin\PhpEntityRenderer\Helpers\ClassNameHelper;
use DarkDarin\PhpEntityRenderer\Helpers\HasConstants;
use DarkDarin\PhpEntityRenderer\Helpers\HasExtends;
use DarkDarin\PhpEntityRenderer\Helpers\HasImplements;
Expand Down
4 changes: 2 additions & 2 deletions src/Renderers/EnumCaseRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

namespace DarkDarin\PhpEntityRenderer\Renderers;

use DarkDarin\PhpEntityRenderer\Contracts\DocBlockRendererInterface;
use DarkDarin\PhpEntityRenderer\Contracts\EntityRendererInterface;
use DarkDarin\PhpEntityRenderer\Contracts\EntityWithDescriptionInterface;
use DarkDarin\PhpEntityRenderer\EntityAliases;
use DarkDarin\PhpEntityRenderer\Helpers\HasDocBlock;

class EnumCaseRenderer implements EntityRendererInterface
class EnumCaseRenderer implements EntityRendererInterface, EntityWithDescriptionInterface
{
use HasDocBlock;

Expand Down
2 changes: 1 addition & 1 deletion src/Renderers/EnumRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ protected function renderBody(EntityAliases $entityAliases): string
protected function renderCases(EntityAliases $entityAliases): string
{
$cases = array_map(
fn (EnumCaseRenderer $case) => $case->render($entityAliases),
fn(EnumCaseRenderer $case) => $case->render($entityAliases),
$this->cases
);

Expand Down
1 change: 0 additions & 1 deletion src/Renderers/InterfaceRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
namespace DarkDarin\PhpEntityRenderer\Renderers;

use DarkDarin\PhpEntityRenderer\EntityAliases;
use DarkDarin\PhpEntityRenderer\Helpers\HasAttributes;
use DarkDarin\PhpEntityRenderer\Helpers\HasConstants;
use DarkDarin\PhpEntityRenderer\Helpers\HasExtends;
use DarkDarin\PhpEntityRenderer\Helpers\HasMethods;
Expand Down
6 changes: 3 additions & 3 deletions src/Renderers/MethodRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace DarkDarin\PhpEntityRenderer\Renderers;

use DarkDarin\PhpEntityRenderer\Contracts\EntityRendererInterface;
use DarkDarin\PhpEntityRenderer\Contracts\EntityWithDescriptionInterface;
use DarkDarin\PhpEntityRenderer\Contracts\TypeRendererInterface;
use DarkDarin\PhpEntityRenderer\EntityAliases;
use DarkDarin\PhpEntityRenderer\Helpers\HasAttributes;
Expand All @@ -11,9 +12,8 @@
use DarkDarin\PhpEntityRenderer\Helpers\HasModifierStatic;
use DarkDarin\PhpEntityRenderer\Helpers\HasModifierVisibility;
use DarkDarin\PhpEntityRenderer\Helpers\IndentsHelper;
use DarkDarin\PhpEntityRenderer\Renderers\Types\BuiltinTypeRenderer;

class MethodRenderer implements EntityRendererInterface
class MethodRenderer implements EntityRendererInterface, EntityWithDescriptionInterface
{
use HasAttributes;
use HasDocBlock;
Expand Down Expand Up @@ -124,7 +124,7 @@ protected function renderMethod(EntityAliases $entityAliases, string $methodBody
return implode(' ', $result) . $signature . $method;
}

protected function renderSignatureInline(EntityAliases $entityAliases,): string
protected function renderSignatureInline(EntityAliases $entityAliases): string
{
$parameters = [];
foreach ($this->parameters as $parameter) {
Expand Down
10 changes: 6 additions & 4 deletions src/Renderers/ParameterRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@

use DarkDarin\PhpEntityRenderer\Contracts\DocBlockRendererInterface;
use DarkDarin\PhpEntityRenderer\Contracts\EntityRendererInterface;
use DarkDarin\PhpEntityRenderer\Contracts\EntityWithDescriptionInterface;
use DarkDarin\PhpEntityRenderer\Contracts\TypeRendererInterface;
use DarkDarin\PhpEntityRenderer\EntityAliases;
use DarkDarin\PhpEntityRenderer\Helpers\HasAttributes;
use DarkDarin\PhpEntityRenderer\Helpers\HasModifierReadonly;
use DarkDarin\PhpEntityRenderer\Helpers\HasModifierVisibility;

class ParameterRenderer implements EntityRendererInterface, DocBlockRendererInterface
class ParameterRenderer implements EntityRendererInterface, DocBlockRendererInterface, EntityWithDescriptionInterface
{
use HasAttributes;
use HasModifierReadonly;
Expand All @@ -22,8 +23,7 @@ class ParameterRenderer implements EntityRendererInterface, DocBlockRendererInte
public function __construct(
private readonly string $name,
private readonly TypeRendererInterface $type,
) {
}
) {}

public function getName(): string
{
Expand All @@ -35,9 +35,11 @@ public function getType(): TypeRendererInterface
return $this->type;
}

public function setDescription(string $description): void
public function setDescription(string $description): self
{
$this->description = $description;

return $this;
}

public function getDescription(): ?string
Expand Down
7 changes: 5 additions & 2 deletions src/Renderers/PropertyRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use DarkDarin\PhpEntityRenderer\Contracts\DocBlockRendererInterface;
use DarkDarin\PhpEntityRenderer\Contracts\EntityRendererInterface;
use DarkDarin\PhpEntityRenderer\Contracts\EntityWithDescriptionInterface;
use DarkDarin\PhpEntityRenderer\Contracts\TypeRendererInterface;
use DarkDarin\PhpEntityRenderer\EntityAliases;
use DarkDarin\PhpEntityRenderer\Enums\VisibilityModifierEnum;
Expand All @@ -13,7 +14,7 @@
use DarkDarin\PhpEntityRenderer\Helpers\HasModifierVisibility;
use DarkDarin\PhpEntityRenderer\Renderers\Types\ArrayTypeRenderer;

class PropertyRenderer implements EntityRendererInterface, DocBlockRendererInterface
class PropertyRenderer implements EntityRendererInterface, DocBlockRendererInterface, EntityWithDescriptionInterface
{
use HasAttributes;
use HasDocBlock;
Expand Down Expand Up @@ -41,9 +42,11 @@ public function getType(): TypeRendererInterface
return $this->type;
}

public function setDescription(string $description): void
public function setDescription(string $description): self
{
$this->description = $description;

return $this;
}

public function getDescription(): ?string
Expand Down
3 changes: 1 addition & 2 deletions src/Renderers/Types/ArrayTypeRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@
public function __construct(
public TypeRendererInterface $valueType = BuiltinTypeRenderer::Mixed,
public ?BuiltinTypeRenderer $keyType = null,
) {
}
) {}

public function renderDocBlock(EntityAliases $entityAliases): string
{
Expand Down
3 changes: 1 addition & 2 deletions src/Renderers/Types/ClassTypeRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@
{
public function __construct(
public string $className
) {
}
) {}

public function renderDocBlock(EntityAliases $entityAliases): string
{
Expand Down
2 changes: 1 addition & 1 deletion src/Renderers/Types/IntersectTypeRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function render(EntityAliases $entityAliases): string
return implode(
'&',
array_map(
fn (TypeRendererInterface $type) => $type instanceof UnionTypeRenderer ? '(' . $type->render($entityAliases) . ')' : $type->render($entityAliases),
fn(TypeRendererInterface $type) => $type instanceof UnionTypeRenderer ? '(' . $type->render($entityAliases) . ')' : $type->render($entityAliases),
$this->types
)
);
Expand Down
3 changes: 1 addition & 2 deletions src/Renderers/Types/NullableTypeRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@
{
public function __construct(
public TypeRendererInterface $type
) {
}
) {}

public function renderDocBlock(EntityAliases $entityAliases): string
{
Expand Down
4 changes: 2 additions & 2 deletions src/Renderers/Types/UnionTypeRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public function render(EntityAliases $entityAliases): string
return implode(
'|',
array_map(
fn (TypeRendererInterface $type) => $type instanceof IntersectTypeRenderer
fn(TypeRendererInterface $type) => $type instanceof IntersectTypeRenderer
? '(' . $type->render($entityAliases) . ')'
: $type->render($entityAliases),
$this->types
Expand Down Expand Up @@ -84,7 +84,7 @@ private function hasNullableTypes(array $types): bool
{
return array_reduce(
$types,
fn (bool $carry, TypeRendererInterface $item) => $carry || $item->isNullable(),
fn(bool $carry, TypeRendererInterface $item) => $carry || $item->isNullable(),
false
);
}
Expand Down
7 changes: 5 additions & 2 deletions src/Renderers/ValueRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ class ValueRenderer implements EntityRendererInterface
{
public function __construct(
private readonly mixed $value,
) {
}
) {}

public function getValue(): mixed
{
Expand All @@ -26,6 +25,10 @@ public function render(EntityAliases $entityAliases): string
"/^([ ]*)\)(,?)$/m" => '$1]$2',
"/=>[ ]?\n[ ]+\[/" => '=> [',
"/([ ]*)(\'[^\']+\') => ([\[\'])/" => '$1$2 => $3',
"/NULL/" => "null",
"/FALSE/" => "false",
"/TRUE/" => "true",
"/\[\n\]/" => "[]"
];

return preg_replace(array_keys($patterns), array_values($patterns), $export);
Expand Down

0 comments on commit 301264a

Please sign in to comment.