<?php

namespace WPDesk\View\Resolver;

use WPDesk\View\Renderer\Renderer;
use WPDesk\View\Resolver\Exception\CanNotResolve;

/**
 * Class should resolve name by standard wp theme resolve
 *
 * @package WPDesk\View\Resolver
 */
class WPThemeResolver implements Resolver {

	/** @var string */
	private $template_base_path;


	/**
	 * Base path for templates ie. subdir
	 *
	 * @param $template_base_path
	 */
	public function __construct( $template_base_path ) {
		$this->template_base_path = $template_base_path;
	}

	/**
	 * Resolve name to full path
	 *
	 * @param string $name
	 * @param Renderer|null $renderer
	 *
	 * @return string
	 */
	public function resolve( $name, Renderer $renderer = null ) {
		$templateFile = locate_template(
			[
				trailingslashit( $this->template_base_path ) . $name,
			]
		);
		if ( ! $templateFile ) {
			throw new CanNotResolve( "Cannot resolve {$name}" );
		}

		return $templateFile;
	}
}