Source

Ray / Ray / View / Mustache.php

<?php

namespace Ray\View;

use Ray;

class Mustache implements Ray\View{
    
    private $options = array(
        'ext' => '.mustache',
        'layout' => 'default',
        'actionDir' => 'action',
        'action' => 'error404',
        'params' => array()
    );
    
    private $config;
    
    private $instance;
    
    public function __construct(array $response, $config){
        
        $this->instance = new Ray\View\Mustache\Compiler();
        
        $this->options = array_merge($this->options, $response);
        
        $this->config = $config;
        
    }
    
    public function render(){
        
        $layout = $this->config['templates'] . DS . $this->options['layout'] . $this->options['ext'];
        
        $action = $this->config['templates'] . DS . $this->options['actionDir'] . DS . $this->options['action'] . $this->options['ext'];
        
        if(file_exists($layout)){
            $template = file_get_contents($layout);
            
            $params = is_array($this->options['params']) ? $this->options['params'] : array();
            
            if(file_exists($action)){
                $partial = array(
                    'action' => file_get_contents($action)
                );
                
                return $this->instance->render($template, $params, $partial);
            }else{
                throw new Ray\Exception\View\Mustache('Action template file not found. Path: '. $action);
            }
            
        }else{
            throw new Ray\Exception\Mustache('Template file not found. Path: ' . $layout);
        }
        
        return;
    }
    
}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.