share('vendorName', 'ja s.r.o.'); // extend Blade "@extends" macro - with this macro allows to use "hierarchy" in templates Blade::extend(function ($view) { $pattern = $this->createPattern('extendVisitor'); $code = '@extends(\App\Helpers\Template::name($2))'; return preg_replace($pattern, $code, $view); }); // register extension for rendering widget areas Blade::extend(function ($view) { $pattern = $this->createPattern('widgetArea'); return preg_replace($pattern, '', $view); }); // register extension for preview of widget Blade::extend(function ($view) { $pattern = $this->createPattern('widgetPreview'); $code = ' widget_type_handler; $presenter = call_user_func([$handler, "getPresenter"]); echo call_user_func([$presenter, "render"], json_decode($2->settings)); } ?> '; return preg_replace($pattern, $code, $view); }); } /** * Creates pattern for matching Blade directives * * @param $function * * @return string */ private function createPattern($function) { return '/(?