bound($abstract) ? $container->makeWith($abstract, $parameters) : $container->makeWith("sage.{$abstract}", $parameters); } /** * Get / set the specified configuration value. * * If an array is passed as the key, we will assume you want to set an array of values. * * @param array|string $key * @param mixed $default * @return mixed|\Roots\Sage\Config * @copyright Taylor Otwell * @link https://github.com/laravel/framework/blob/c0970285/src/Illuminate/Foundation/helpers.php#L254-L265 */ function config($key = null, $default = null) { if (is_null($key)) { return sage('config'); } if (is_array($key)) { return sage('config')->set($key); } return sage('config')->get($key, $default); } /** * @param string $file * @param array $data * @return string */ function template($file, $data = []) { if (remove_action('wp_head', 'wp_enqueue_scripts', 1)) { wp_enqueue_scripts(); } return sage('blade')->render($file, $data); } /** * Retrieve path to a compiled blade view * @param $file * @param array $data * @return string */ function template_path($file, $data = []) { return sage('blade')->compiledPath($file, $data); } /** * @param $asset * @return string */ function asset_path($asset) { return sage('assets')->getUri($asset); } /** * @param $asset * @return string */ function svg_path($asset) { return sage('assets')->get($asset); } /** * @param string|string[] $templates Possible template files * @return array */ function filter_templates($templates) { $paths = apply_filters('sage/filter_templates/paths', [ 'views', 'resources/views' ]); $paths_pattern = "#^(" . implode('|', $paths) . ")/#"; return collect($templates) ->map(function ($template) use ($paths_pattern) { /** Remove .blade.php/.blade/.php from template names */ $template = preg_replace('#\.(blade\.?)?(php)?$#', '', ltrim($template)); /** Remove partial $paths from the beginning of template names */ if (strpos($template, '/')) { $template = preg_replace($paths_pattern, '', $template); } return $template; }) ->flatMap(function ($template) use ($paths) { return collect($paths) ->flatMap(function ($path) use ($template) { return [ "{$path}/{$template}.blade.php", "{$path}/{$template}.php", "{$template}.blade.php", "{$template}.php", ]; }); }) ->filter() ->unique() ->all(); } /** * @param string|string[] $templates Relative path to possible template files * @return string Location of the template */ function locate_template($templates) { return \locate_template(filter_templates($templates)); }