code: function handleTemplateCache (options, str) {
    var key = options.filename;
    if (options.cache && exports.cache[key]) {
      return exports.cache[key];
    } else {
      if (str === undefined) str = fs.readFileSync(options.filename, 'utf8');
      var templ = exports.compileStreaming(str, options);
      if (options.cache) exports.cache[key] = templ;
      return templ;
    }
  }
docs: Get the template from a string or a file, either compiled on-the-fly or
  read from cache (if enabled), and cache the template if needed.
  
  If `str` is not set, the file specified in `options.filename` will be read.
  
  If `options.cache` is true, this function reads the file from
  `options.filename` so it must be set prior to calling this function.
  
  @param {Object} options
  @param {String=} str
  @return {Function}
  @api private