Skip to content

Commit 38e0368

Browse files
committed
removed support for Latte 2
1 parent 580e8fc commit 38e0368

File tree

60 files changed

+21
-2050
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+21
-2050
lines changed

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"nette/forms": "^3.2",
3232
"nette/robot-loader": "^4.0",
3333
"nette/security": "^3.2",
34-
"latte/latte": "^2.10.2 || ^3.0.18",
34+
"latte/latte": "^3.0.18",
3535
"tracy/tracy": "^2.9",
3636
"mockery/mockery": "^1.6@stable",
3737
"phpstan/phpstan-nette": "^2.0@stable",
@@ -42,7 +42,7 @@
4242
"nette/di": "<3.2",
4343
"nette/forms": "<3.2",
4444
"nette/schema": "<1.3",
45-
"latte/latte": "<2.7.1 || >=3.0.0 <3.0.18 || >=3.1",
45+
"latte/latte": "<3.0.18",
4646
"tracy/tracy": "<2.9"
4747
},
4848
"autoload": {

src/Bridges/ApplicationDI/LatteExtension.php

Lines changed: 16 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
use Nette\DI\Definitions\Statement;
1616
use Nette\Schema\Expect;
1717
use Tracy;
18-
use function class_exists, explode, is_string, str_contains, version_compare;
18+
use function class_exists, is_string;
1919

2020

2121
/**
@@ -34,7 +34,6 @@ public function getConfigSchema(): Nette\Schema\Schema
3434
{
3535
return Expect::structure([
3636
'debugger' => Expect::anyOf(true, false, 'all'),
37-
'macros' => Expect::arrayOf('string'),
3837
'extensions' => Expect::arrayOf('string|Nette\DI\Definitions\Statement'),
3938
'templateClass' => Expect::string(),
4039
'strictTypes' => Expect::bool(false),
@@ -54,40 +53,30 @@ public function loadConfiguration(): void
5453
$config = $this->config;
5554
$builder = $this->getContainerBuilder();
5655

57-
$latteFactory = $builder->addFactoryDefinition($this->prefix('latteFactory'))
56+
$builder->addFactoryDefinition($this->prefix('latteFactory'))
5857
->setImplement(ApplicationLatte\LatteFactory::class)
5958
->getResultDefinition()
6059
->setFactory(Latte\Engine::class)
6160
->addSetup('setTempDirectory', [$this->tempDir])
6261
->addSetup('setAutoRefresh', [$this->debugMode])
63-
->addSetup('setStrictTypes', [$config->strictTypes]);
64-
65-
if (version_compare(Latte\Engine::VERSION, '3', '<')) {
66-
foreach ($config->macros as $macro) {
67-
$this->addMacro($macro);
68-
}
69-
} else {
70-
$latteFactory->addSetup('setStrictParsing', [$config->strictParsing])
62+
->addSetup('setStrictTypes', [$config->strictTypes])
63+
->addSetup('setStrictParsing', [$config->strictParsing])
7164
->addSetup('enablePhpLinter', [$config->phpLinter])
72-
->addSetup('setLocale', [$config->locale]);
73-
74-
$builder->getDefinition($this->prefix('latteFactory'))
75-
->getResultDefinition()
65+
->addSetup('setLocale', [$config->locale])
7666
->addSetup('?', [$builder::literal('func_num_args() && $service->addExtension(new Nette\Bridges\ApplicationLatte\UIExtension(func_get_arg(0)))')]);
7767

78-
if ($builder->getByType(Nette\Caching\Storage::class)) {
79-
$this->addExtension(new Statement(Nette\Bridges\CacheLatte\CacheExtension::class));
80-
}
81-
if (class_exists(Nette\Bridges\FormsLatte\FormsExtension::class)) {
82-
$this->addExtension(new Statement(Nette\Bridges\FormsLatte\FormsExtension::class));
83-
}
68+
if ($builder->getByType(Nette\Caching\Storage::class)) {
69+
$this->addExtension(new Statement(Nette\Bridges\CacheLatte\CacheExtension::class));
70+
}
71+
if (class_exists(Nette\Bridges\FormsLatte\FormsExtension::class)) {
72+
$this->addExtension(new Statement(Nette\Bridges\FormsLatte\FormsExtension::class));
73+
}
8474

85-
foreach ($config->extensions as $extension) {
86-
if ($extension === Latte\Essential\TranslatorExtension::class) {
87-
$extension = new Statement($extension, [new Nette\DI\Definitions\Reference(Nette\Localization\Translator::class)]);
88-
}
89-
$this->addExtension($extension);
75+
foreach ($config->extensions as $extension) {
76+
if ($extension === Latte\Essential\TranslatorExtension::class) {
77+
$extension = new Statement($extension, [new Nette\DI\Definitions\Reference(Nette\Localization\Translator::class)]);
9078
}
79+
$this->addExtension($extension);
9180
}
9281

9382
$builder->addDefinition($this->prefix('templateFactory'))
@@ -130,40 +119,12 @@ public static function initLattePanel(
130119
$control = $template->getLatte()->getProviders()['uiControl'] ?? null;
131120
if ($all || $control instanceof Nette\Application\UI\Presenter) {
132121
$name = $all && $control ? (new \ReflectionObject($control))->getShortName() : '';
133-
if (version_compare(Latte\Engine::VERSION, '3', '<')) {
134-
$bar->addPanel(new Latte\Bridges\Tracy\LattePanel($template->getLatte(), $name));
135-
} else {
136-
$template->getLatte()->addExtension(new Latte\Bridges\Tracy\TracyExtension($name));
137-
}
122+
$template->getLatte()->addExtension(new Latte\Bridges\Tracy\TracyExtension($name));
138123
}
139124
};
140125
}
141126

142127

143-
public function addMacro(string $macro): void
144-
{
145-
$builder = $this->getContainerBuilder();
146-
$definition = $builder->getDefinition($this->prefix('latteFactory'))->getResultDefinition();
147-
148-
if (($macro[0] ?? null) === '@') {
149-
if (str_contains($macro, '::')) {
150-
[$macro, $method] = explode('::', $macro);
151-
} else {
152-
$method = 'install';
153-
}
154-
155-
$definition->addSetup('?->onCompile[] = function ($engine) { ?->' . $method . '($engine->getCompiler()); }', ['@self', $macro]);
156-
157-
} else {
158-
if (!str_contains($macro, '::') && class_exists($macro)) {
159-
$macro .= '::install';
160-
}
161-
162-
$definition->addSetup('?->onCompile[] = function ($engine) { ' . $macro . '($engine->getCompiler()); }', ['@self']);
163-
}
164-
}
165-
166-
167128
public function addExtension(Statement|string $extension): void
168129
{
169130
$extension = is_string($extension)

src/Bridges/ApplicationLatte/SnippetBridge.php

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

src/Bridges/ApplicationLatte/Template.php

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
use Latte;
1313
use Nette;
14-
use function version_compare;
1514

1615

1716
/**
@@ -95,16 +94,7 @@ public function addFunction(string $name, callable $callback): static
9594
*/
9695
public function setTranslator(?Nette\Localization\Translator $translator, ?string $language = null): static
9796
{
98-
if (version_compare(Latte\Engine::VERSION, '3', '<')) {
99-
$this->latte->addFilter(
100-
'translate',
101-
fn(Latte\Runtime\FilterInfo $fi, ...$args): string => $translator === null
102-
? $args[0]
103-
: $translator->translate(...$args),
104-
);
105-
} else {
106-
$this->latte->addExtension(new Latte\Essential\TranslatorExtension($translator, $language));
107-
}
97+
$this->latte->addExtension(new Latte\Essential\TranslatorExtension($translator, $language));
10898
return $this;
10999
}
110100

src/Bridges/ApplicationLatte/TemplateFactory.php

Lines changed: 2 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@
99

1010
namespace Nette\Bridges\ApplicationLatte;
1111

12-
use Latte;
1312
use Nette;
1413
use Nette\Application\UI;
15-
use function array_unshift, class_exists, is_a, iterator_to_array, preg_match, preg_replace, property_exists, rtrim, version_compare;
14+
use function class_exists, is_a, preg_replace, property_exists, rtrim;
1615

1716

1817
/**
@@ -29,7 +28,6 @@ public function __construct(
2928
private readonly LatteFactory $latteFactory,
3029
private readonly ?Nette\Http\IRequest $httpRequest = null,
3130
private readonly ?Nette\Security\User $user = null,
32-
private readonly ?Nette\Caching\Storage $cacheStorage = null,
3331
$templateClass = null,
3432
) {
3533
if ($templateClass && (!class_exists($templateClass) || !is_a($templateClass, Template::class, true))) {
@@ -52,9 +50,7 @@ public function createTemplate(?UI\Control $control = null, ?string $class = nul
5250
$template = new $class($latte);
5351
$presenter = $control?->getPresenterIfExists();
5452

55-
if (version_compare(Latte\Engine::VERSION, '3', '<')) {
56-
$this->setupLatte2($latte, $control, $presenter, $template);
57-
} elseif (!Nette\Utils\Arrays::some($latte->getExtensions(), fn($e) => $e instanceof UIExtension)) {
53+
if (!Nette\Utils\Arrays::some($latte->getExtensions(), fn($e) => $e instanceof UIExtension)) {
5854
$latte->addExtension(new UIExtension($control));
5955
}
6056

@@ -85,55 +81,4 @@ public function createTemplate(?UI\Control $control = null, ?string $class = nul
8581

8682
return $template;
8783
}
88-
89-
90-
private function setupLatte2(
91-
Latte\Engine $latte,
92-
?UI\Control $control,
93-
?UI\Presenter $presenter,
94-
Template $template,
95-
): void
96-
{
97-
if ($latte->onCompile instanceof \Traversable) {
98-
$latte->onCompile = iterator_to_array($latte->onCompile);
99-
}
100-
101-
array_unshift($latte->onCompile, function (Latte\Engine $latte) use ($control, $template): void {
102-
if ($this->cacheStorage) {
103-
$latte->getCompiler()->addMacro('cache', new Nette\Bridges\CacheLatte\CacheMacro);
104-
}
105-
106-
UIMacros::install($latte->getCompiler());
107-
if (class_exists(Nette\Bridges\FormsLatte\FormMacros::class)) {
108-
Nette\Bridges\FormsLatte\FormMacros::install($latte->getCompiler());
109-
}
110-
111-
$control?->templatePrepareFilters($template);
112-
});
113-
114-
$latte->addProvider('cacheStorage', $this->cacheStorage);
115-
116-
if ($control) {
117-
$latte->addProvider('uiControl', $control);
118-
$latte->addProvider('uiPresenter', $presenter);
119-
$latte->addProvider('snippetBridge', new SnippetBridge($control));
120-
if ($presenter) {
121-
$header = $presenter->getHttpResponse()->getHeader('Content-Security-Policy')
122-
?: $presenter->getHttpResponse()->getHeader('Content-Security-Policy-Report-Only');
123-
}
124-
125-
$nonce = $presenter && preg_match('#\s\'nonce-([\w+/]+=*)\'#', (string) $header, $m) ? $m[1] : null;
126-
$latte->addProvider('uiNonce', $nonce);
127-
}
128-
129-
if ($presenter) {
130-
$latte->addFunction('isLinkCurrent', [$presenter, 'isLinkCurrent']);
131-
$latte->addFunction('isModuleCurrent', [$presenter, 'isModuleCurrent']);
132-
}
133-
134-
$latte->addFilter('modifyDate', fn($time, $delta, $unit = null) => $time
135-
? Nette\Utils\DateTime::from($time)->modify($delta . $unit)
136-
: null);
137-
138-
}
13984
}

0 commit comments

Comments
 (0)