55namespace Tempest \View \Renderers ;
66
77use Stringable ;
8+ use Tempest \Container \Container ;
89use Tempest \Support \Html \HtmlString ;
910use Tempest \View \Exceptions \ViewCompilationError ;
1011use Tempest \View \Exceptions \ViewVariableIsReserved ;
1112use Tempest \View \GenericView ;
1213use Tempest \View \View ;
1314use Tempest \View \ViewCache ;
15+ use Tempest \View \ViewConfig ;
1416use Tempest \View \ViewRenderer ;
1517use Throwable ;
1618
@@ -24,6 +26,8 @@ final class TempestViewRenderer implements ViewRenderer
2426 public function __construct (
2527 private readonly TempestViewCompiler $ compiler ,
2628 private readonly ViewCache $ viewCache ,
29+ private readonly ViewConfig $ viewConfig ,
30+ private readonly Container $ container ,
2731 ) {
2832 }
2933
@@ -48,6 +52,8 @@ public function render(string|View $view): string
4852 compiledView: fn () => $ this ->cleanupCompiled ($ this ->compiler ->compile ($ view )),
4953 );
5054
55+ $ view = $ this ->processView ($ view );
56+
5157 return $ this ->renderCompiled ($ view , $ path );
5258 }
5359
@@ -80,6 +86,18 @@ private function cleanupCompiled(string $compiled): string
8086 return $ compiled ->toString ();
8187 }
8288
89+ private function processView (View $ view ): View
90+ {
91+ foreach ($ this ->viewConfig ->viewProcessors as $ viewProcessorClass ) {
92+ /** @var \Tempest\View\ViewProcessor $viewProcessor */
93+ $ viewProcessor = $ this ->container ->get ($ viewProcessorClass );
94+
95+ $ view = $ viewProcessor ->process ($ view );
96+ }
97+
98+ return $ view ;
99+ }
100+
83101 private function renderCompiled (View $ _view , string $ _path ): string
84102 {
85103 $ this ->currentView = $ _view ;
0 commit comments