diff --git a/classes/kohana/kostache.php b/classes/kohana/kostache.php new file mode 100644 index 0000000..0caf5e4 --- /dev/null +++ b/classes/kohana/kostache.php @@ -0,0 +1,126 @@ + $class)); + + return new $class($template, $view, $partials); + } + + /** + * KOstache class constructor. + * + * This method accepts a $template string and a $view object. Optionally, pass an associative + * array of partials as well. + * + * @access public + * @param string $template (default: null) + * @param mixed $view (default: null) + * @param array $partials (default: null) + * @return void + */ + public function __construct($template = null, $view = null, $partials = null) + { + parent::__construct($template, $view, $partials); + + $this->_charset = Kohana::$charset; + + // Override the template location to match kohana's conventions + if ( ! $this->_template) + { + $foo = explode('_', get_class($this)); + array_shift($foo); + $view_location = strtolower(implode('/', $foo)); + } + else + { + $view_location = $this->_template; + } + + $template = Kohana::find_file('templates', $view_location, 'mustache'); + + if ($template) + $this->_template = file_get_contents($template); + else + throw new Kohana_Exception('Template file not found: templates/'.$view_location); + + // Convert partials to expanded template strings + foreach ($this->_partials as $key => $partial_template) + { + if ($location = Kohana::find_file('templates', $partial_template, 'mustache')) + { + $this->_partials[$key] = file_get_contents($location); + } + } + } + + /** + * Assigns a variable by name. + * + * // This value can be accessed as {{foo}} within the template + * $view->set('foo', 'my value'); + * + * You can also use an array to set several values at once: + * + * // Create the values {{food}} and {{beverage}} in the template + * $view->set(array('food' => 'bread', 'beverage' => 'water')); + * + * @param string variable name or an array of variables + * @param mixed value + * @return $this + */ + public function set($key, $value = NULL) + { + if (is_array($key)) + { + foreach ($key as $name => $value) + { + $this->{$name} = $value; + } + } + else + { + $this->{$key} = $value; + } + + return $this; + } + + /** + * Assigns a value by reference. The benefit of binding is that values can + * be altered without re-setting them. It is also possible to bind variables + * before they have values. Assigned values will be available as a + * variable within the template file: + * + * // This reference can be accessed as {{ref}} within the template + * $view->bind('ref', $bar); + * + * @param string variable name + * @param mixed referenced variable + * @return $this + */ + public function bind($key, & $value) + { + $this->{$key} =& $value; + + return $this; + } +} diff --git a/classes/kostache.php b/classes/kostache.php index 6c3f2dd..5303c22 100644 --- a/classes/kostache.php +++ b/classes/kostache.php @@ -1,144 +1,2 @@ $class)); - - return new $class($template, $view, $partials); - } - - /** - * KOstache class constructor. - * - * This method accepts a $template string and a $view object. Optionally, pass an associative - * array of partials as well. - * - * @access public - * @param string $template (default: null) - * @param mixed $view (default: null) - * @param array $partials (default: null) - * @return void - */ - public function __construct($template = null, $view = null, $partials = null) - { - parent::__construct($template, $view, $partials); - - $this->_charset = Kohana::$charset; - - // Override the template location to match kohana's conventions - if ( ! $this->_template) - { - $foo = explode('_', get_class($this)); - array_shift($foo); - $view_location = strtolower(implode('/', $foo)); - } - else - { - $view_location = $this->_template; - } - - $template = Kohana::find_file('templates', $view_location, 'mustache'); - - if ($template) - $this->_template = file_get_contents($template); - else - throw new Kohana_Exception('Template file not found: templates/'.$view_location); - - // Convert partials to expanded template strings - foreach ($this->_partials as $key => $partial_template) - { - if ($location = Kohana::find_file('templates', $partial_template, 'mustache')) - { - $this->_partials[$key] = file_get_contents($location); - } - } - } - - /** - * Assigns a variable by name. - * - * // This value can be accessed as {{foo}} within the template - * $view->set('foo', 'my value'); - * - * You can also use an array to set several values at once: - * - * // Create the values {{food}} and {{beverage}} in the template - * $view->set(array('food' => 'bread', 'beverage' => 'water')); - * - * @param string variable name or an array of variables - * @param mixed value - * @return $this - */ - public function set($key, $value = NULL) - { - if (is_array($key)) - { - foreach ($key as $name => $value) - { - $this->{$name} = $value; - } - } - else - { - $this->{$key} = $value; - } - - return $this; - } - - /** - * Assigns a value by reference. The benefit of binding is that values can - * be altered without re-setting them. It is also possible to bind variables - * before they have values. Assigned values will be available as a - * variable within the template file: - * - * // This reference can be accessed as {{ref}} within the template - * $view->bind('ref', $bar); - * - * @param string variable name - * @param mixed referenced variable - * @return $this - */ - public function bind($key, & $value) - { - $this->{$key} =& $value; - - return $this; - } - - /** - * Overriding __toString to use Kohana's exception handler - * - * @return string - */ - public function __toString() - { - try - { - $result = $this->render(); - return $result; - } - catch (Exception $e) { - Kohana::exception_handler($e); - return ''; - } - } -} +class Kostache extends Kohana_Kostache {} \ No newline at end of file