|
6 | 6 |
|
7 | 7 | use a9f\Fractor\Application\ValueObject\File;
|
8 | 8 | use a9f\Fractor\ValueObject\Indent;
|
| 9 | +use a9f\FractorTypoScript\ValueObject\TypoScriptPrettyPrinterFormatConfiguration; |
9 | 10 | use Helmich\TypoScriptParser\Parser\Printer\PrettyPrinterConfiguration;
|
10 | 11 |
|
11 | 12 | final class PrettyPrinterConfigurationFactory
|
12 | 13 | {
|
13 |
| - public function createPrettyPrinterConfiguration(File $file): PrettyPrinterConfiguration |
14 |
| - { |
15 |
| - // keep original TypoScript format |
16 |
| - $indent = Indent::fromFile($file); |
17 |
| - |
| 14 | + public function createPrettyPrinterConfiguration( |
| 15 | + File $file, |
| 16 | + TypoScriptPrettyPrinterFormatConfiguration $prettyPrinterFormatConfiguration |
| 17 | + ): PrettyPrinterConfiguration { |
18 | 18 | $prettyPrinterConfiguration = PrettyPrinterConfiguration::create();
|
19 | 19 |
|
20 |
| - if ($indent->isSpace()) { |
21 |
| - $prettyPrinterConfiguration = $prettyPrinterConfiguration->withSpaceIndentation($indent->length()); |
22 |
| - } else { |
| 20 | + if ($prettyPrinterFormatConfiguration->getStyle() === 'auto') { |
| 21 | + // keep original TypoScript format |
| 22 | + $indent = Indent::fromFile($file); |
| 23 | + |
| 24 | + if ($indent->isSpace()) { |
| 25 | + $prettyPrinterConfiguration = $prettyPrinterConfiguration->withSpaceIndentation($indent->length()); |
| 26 | + } else { |
| 27 | + $prettyPrinterConfiguration = $prettyPrinterConfiguration->withTabs(); |
| 28 | + } |
| 29 | + } elseif ($prettyPrinterFormatConfiguration->getStyle() === PrettyPrinterConfiguration::INDENTATION_STYLE_TABS) { |
23 | 30 | $prettyPrinterConfiguration = $prettyPrinterConfiguration->withTabs();
|
| 31 | + } else { |
| 32 | + $prettyPrinterConfiguration = $prettyPrinterConfiguration->withSpaceIndentation( |
| 33 | + $prettyPrinterFormatConfiguration->getSize() |
| 34 | + ); |
| 35 | + } |
| 36 | + |
| 37 | + if ($prettyPrinterFormatConfiguration->shouldIndentConditions()) { |
| 38 | + $prettyPrinterConfiguration = $prettyPrinterConfiguration->withIndentConditions(); |
| 39 | + } |
| 40 | + |
| 41 | + if ($prettyPrinterFormatConfiguration->shouldAddClosingGlobal()) { |
| 42 | + $prettyPrinterConfiguration = $prettyPrinterConfiguration->withClosingGlobalStatement(); |
| 43 | + } |
| 44 | + |
| 45 | + if ($prettyPrinterFormatConfiguration->shouldIncludeEmptyLineBreaks()) { |
| 46 | + return $prettyPrinterConfiguration->withEmptyLineBreaks(); |
24 | 47 | }
|
25 | 48 |
|
26 |
| - return $prettyPrinterConfiguration->withEmptyLineBreaks(); |
| 49 | + return $prettyPrinterConfiguration; |
27 | 50 | }
|
28 | 51 | }
|
0 commit comments