Skip to content

Commit b8b08e0

Browse files
committed
FunctionLike: chops parameters when are longer than WRAP_LENGTH [Closes #28]
1 parent cc94efc commit b8b08e0

File tree

3 files changed

+44
-3
lines changed

3 files changed

+44
-3
lines changed

src/PhpGenerator/Method.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,14 @@ public function __toString(): string
6767
. 'function '
6868
. ($this->returnReference ? '&' : '')
6969
. $this->name
70-
. $this->parametersToString()
70+
. ($params = $this->parametersToString())
7171
. $this->returnTypeToString()
7272
. ($this->abstract || $this->body === null
7373
? ';'
74-
: "\n{\n" . Nette\Utils\Strings::indent(ltrim(rtrim($this->body) . "\n"), 1) . '}');
74+
: (strpos($params, "\n") === false ? "\n" : ' ')
75+
. "{\n"
76+
. Nette\Utils\Strings::indent(ltrim(rtrim($this->body) . "\n"), 1)
77+
. '}');
7578
}
7679

7780

src/PhpGenerator/Traits/FunctionLike.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,10 @@ protected function parametersToString(): string
193193
. '$' . $param->getName()
194194
. ($param->hasDefaultValue() && !$variadic ? ' = ' . Helpers::dump($param->getDefaultValue()) : '');
195195
}
196-
return '(' . implode(', ', $params) . ')';
196+
197+
return strlen($tmp = implode(', ', $params)) > Helpers::WRAP_LENGTH
198+
? "(\n\t" . implode(",\n\t", $params) . "\n)"
199+
: "($tmp)";
197200
}
198201

199202

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Nette\PhpGenerator\Method;
6+
use Tester\Assert;
7+
8+
require __DIR__ . '/../bootstrap.php';
9+
10+
11+
$method = (new Method('create'))
12+
->setBody('return null;');
13+
14+
for ($name = 'a'; $name < 'm'; $name++) {
15+
$method->addParameter($name)->setTypeHint('string');
16+
}
17+
18+
Assert::match(
19+
'function create(
20+
string $a,
21+
string $b,
22+
string $c,
23+
string $d,
24+
string $e,
25+
string $f,
26+
string $g,
27+
string $h,
28+
string $i,
29+
string $j,
30+
string $k,
31+
string $l
32+
) {
33+
return null;
34+
}
35+
', (string) $method);

0 commit comments

Comments
 (0)