Skip to content

Commit e80ea22

Browse files
author
Andrew Mischenko
committed
Refactor lines
1 parent 65d6e55 commit e80ea22

File tree

9 files changed

+52
-166
lines changed

9 files changed

+52
-166
lines changed

src/Line/ContentLineInterface.php

Lines changed: 0 additions & 20 deletions
This file was deleted.

src/Line/EmptyLine.php

Lines changed: 0 additions & 37 deletions
This file was deleted.

src/Line/IndentLine.php

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/Line/Line.php

Lines changed: 0 additions & 48 deletions
This file was deleted.

src/Line/LineInterface.php

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/LineableInterface.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace Krlove\Generator;
4+
5+
/**
6+
* Interface ArrayableInterface
7+
* @package Krlove\Generator
8+
*/
9+
interface LineableInterface
10+
{
11+
/**
12+
* @return string|string[]
13+
*/
14+
public function toLines();
15+
}

src/Model/ArgumentModel.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
namespace Krlove\Generator\Model;
44

5-
use Krlove\Generator\RenderableInterface;
5+
use Krlove\Generator\RenderableModel;
66

77
/**
88
* Class Argument
99
* @package Krlove\Generator\Model
1010
*/
11-
class ArgumentModel implements RenderableInterface
11+
class ArgumentModel extends RenderableModel
1212
{
1313
/**
1414
* @var string
@@ -41,7 +41,7 @@ public function __construct($name, $type = null, $default = null)
4141
/**
4242
* {@inheritDoc}
4343
*/
44-
public function render()
44+
public function toLines()
4545
{
4646
if ($this->type !== null) {
4747
return $this->type . ' ' . $this->name;

src/RenderableInterface.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22

33
namespace Krlove\Generator;
44

5-
use Krlove\Generator\Line\LineInterface;
6-
75
/**
86
* Interface RenderableInterface
97
* @package Krlove\Generator
108
*/
119
interface RenderableInterface
1210
{
1311
/**
14-
* @return LineInterface $line
12+
* @param int $indent
13+
*
14+
* @return string
1515
*/
16-
public function render();
16+
public function render($indent = 0);
1717
}

src/RenderableModel.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace Krlove\Generator;
4+
5+
/**
6+
* Class RenderableModel
7+
* @package Krlove\Generator
8+
*/
9+
abstract class RenderableModel implements RenderableInterface, LineableInterface
10+
{
11+
/**
12+
* {@inheritDoc}
13+
*/
14+
final public function render($indent = 0)
15+
{
16+
$lines = $this->toLines();
17+
18+
if (!is_array($lines)) {
19+
$lines = [$lines];
20+
}
21+
22+
if ($indent > 0) {
23+
array_walk($lines, function (&$item) use ($indent) {
24+
$item = str_repeat(' ', $indent) . $item;
25+
});
26+
}
27+
28+
return implode(PHP_EOL, $lines);
29+
}
30+
}

0 commit comments

Comments
 (0)