Blame view

mustache/js/classes/autoload-hogan.js 1.05 KB
5a739853   patrick.he   commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  //override the function that loads a new template, to make it load partials dynamically based on their path
  var autoload = require('./autoload-path');
  var fs = require('fs');
  
  module.exports = function(hogan, paths) {
   var $page_name , $layout_name;
   this.set_params = function(page_name , layout_name) {
  	$page_name = page_name || 'index';
  	$layout_name = layout_name || 'default';
   }
  
   hogan.Template.prototype.rp = function(symbol, context, partials, indent) {
  	var partial = this.ep(symbol, partials);
  	
  	if (!partial) {
  	  var partial_name = symbol.replace(/^([^\w\d])/ , '').replace(/(\d)?(\d{1,})$/, '$1');
  	  //convert something like: "<page.style_32" to "page.style_3"
  
  	  var partial_path = autoload(partial_name , {'page_name' : $page_name , 'layout_name' : $layout_name} , paths);
  	  if(partial_path != '') partial = fs.readFileSync(partial_path, 'utf-8');
  	}
  	if (!partial) {
          return '';
      }
  	
  	if (this.c && typeof partial == 'string') {
  		partial = this.c.compile(partial, this.options);
      }
  	
      return partial.ri(context, partials, indent);
   }
  }