fix Render

This commit is contained in:
Nikita 2013-07-04 03:13:29 +04:00
parent 30e492ee09
commit c283154fe4

View File

@ -8,19 +8,21 @@
* file that was distributed with this source code.
*/
namespace Fenom;
use Fenom;
/**
* Primitive template
* @author Ivan Shalganov <a.cobest@gmail.com>
* @author Ivan Shalganov <a.cobest@gmail.com>
*/
class Render extends \ArrayObject {
class Render extends \ArrayObject
{
private static $_props = array(
"name" => "runtime",
"name" => "runtime",
"base_name" => "",
"scm" => false,
"time" => 0,
"depends" => array()
"scm" => false,
"time" => 0,
"depends" => array()
);
/**
* @var \Closure
@ -50,17 +52,14 @@ class Render extends \ArrayObject {
* @var float
*/
protected $_time = 0.0;
/**
* @var array depends list
*/
protected $_depends = array();
/**
* @var int tempalte options (see Fenom options)
*/
protected $_options = 0;
/**
* Template provider
* @var ProviderInterface
@ -68,53 +67,61 @@ class Render extends \ArrayObject {
protected $_provider;
/**
* @param Fenom $fenom
* @param Fenom $fenom
* @param callable $code template body
* @param array $props
* @param array $props
*/
public function __construct(Fenom $fenom, \Closure $code, $props = array()) {
public function __construct(Fenom $fenom, \Closure $code, $props = array())
{
$this->_fenom = $fenom;
$props += self::$_props;
$this->_name = $props["name"];
$this->_name = $props["name"];
$this->_provider = $this->_fenom->getProvider($props["scm"]);
$this->_scm = $props["scm"];
$this->_time = $props["time"];
$this->_depends = $props["depends"];
$this->_code = $code;
$this->_scm = $props["scm"];
$this->_time = $props["time"];
$this->_depends = $props["depends"];
$this->_code = $code;
}
/**
* Get template storage
* @return Fenom
*/
public function getStorage() {
public function getStorage()
{
return $this->_fenom;
}
public function getDepends() {
public function getDepends()
{
return $this->_depends;
}
public function getScm() {
public function getScm()
{
return $this->_scm;
}
public function getProvider() {
public function getProvider()
{
return $this->_provider;
}
public function getBaseName() {
public function getBaseName()
{
return $this->_base_name;
}
public function getOptions() {
public function getOptions()
{
return $this->_options;
}
/**
* @return string
*/
public function __toString() {
public function __toString()
{
return $this->_name;
}
@ -122,29 +129,32 @@ class Render extends \ArrayObject {
* Get template name
* @return string
*/
public function getName() {
public function getName()
{
return $this->_name;
}
public function getTime() {
public function getTime()
{
return $this->_time;
}
/**
* Validate template
* @return bool
*/
public function isValid() {
public function isValid()
{
$provider = $this->_fenom->getProvider(strstr($this->_name, ":"), true);
if($provider->getLastModified($this->_name) >= $this->_time) {
if ($provider->getLastModified($this->_name) >= $this->_time) {
return false;
}
foreach($this->_depends as $tpl => $time) {
if($this->_fenom->getTemplate($tpl)->getTime() !== $time) {
foreach ($this->_depends as $tpl => $time) {
if ($this->_fenom->getTemplate($tpl)->getTime() !== $time) {
return false;
}
}
return true;
}
@ -153,9 +163,11 @@ class Render extends \ArrayObject {
* @param array $values for template
* @return Render
*/
public function display(array $values) {
public function display(array $values)
{
$this->exchangeArray($values);
$this->_code->__invoke($this);
return $this;
}
@ -165,10 +177,12 @@ class Render extends \ArrayObject {
* @return string
* @throws \Exception
*/
public function fetch(array $values) {
public function fetch(array $values)
{
ob_start();
try {
$this->display($values);
return ob_get_clean();
} catch (\Exception $e) {
ob_end_clean();
@ -182,7 +196,8 @@ class Render extends \ArrayObject {
* @param $args
* @throws \BadMethodCallException
*/
public function __call($method, $args) {
throw new \BadMethodCallException("Unknown method ".$method);
public function __call($method, $args)
{
throw new \BadMethodCallException("Unknown method " . $method);
}
}